From 8ee77e3548e7b15d676d2628f842ba51bf63b00f Mon Sep 17 00:00:00 2001 From: mowetentertainment1 <79593070+mowetentertainment1@users.noreply.github.com> Date: Sat, 6 Dec 2025 12:46:34 -0500 Subject: [PATCH] 12/6/2025 --- .github/CODEOWNERS | 3 + .github/FUNDING.yml | 13 + .github/ISSUE_TEMPLATE/bug_report.yml | 73 + .github/ISSUE_TEMPLATE/config.yml | 5 + .github/ISSUE_TEMPLATE/feature_request.yml | 34 + .../ISSUE_TEMPLATE/issue_pr_management.yml | 27 + .github/ISSUE_TEMPLATE/test_report.md | 41 + .github/actions/free_up_space/action.yaml | 50 + .github/dependabot.yml | 23 + .github/pull_request_template.md | 14 + .github/workflows/check_duplicates.yaml | 28 + .github/workflows/integrate.yaml | 103 + .github/workflows/main_deploy.yaml | 84 + .github/workflows/release.yaml | 216 + .github/workflows/versions.env | 2 + .gitignore | 73 + .mailmap | 20 + .metadata | 30 + CHANGELOG.md | 3419 ++++++++++++++++ CONTRIBUTING.md | 172 + Dockerfile | 21 + LICENSE | 661 ++++ PRIVACY.md | 113 + README.md | 122 + analysis_options.yaml | 54 + android/.gitignore | 13 + android/Gemfile | 3 + android/app/build.gradle.kts | 90 + android/app/proguard-rules.pro | 1 + .../release/baselineProfiles/0/app-release.dm | Bin 0 -> 2299 bytes .../release/baselineProfiles/1/app-release.dm | Bin 0 -> 2209 bytes android/app/release/output-metadata.json | 37 + android/app/src/main/AndroidManifest.xml | 138 + .../app/src/main/ic_launcher-playstore.png | Bin 0 -> 24734 bytes .../chat/smithtech/matrix/FcmPushService.kt | 28 + .../chat/smithtech/matrix/MainActivity.kt | 31 + .../notifications_icon.xml | 15 + .../res/drawable-hdpi/notifications_icon.png | Bin 0 -> 803 bytes .../app/src/main/res/drawable-hdpi/splash.png | Bin 0 -> 9166 bytes .../res/drawable-mdpi/notifications_icon.png | Bin 0 -> 579 bytes .../app/src/main/res/drawable-mdpi/splash.png | Bin 0 -> 5267 bytes .../res/drawable-night-v21/background.png | Bin 0 -> 70 bytes .../drawable-night-v21/launch_background.xml | 9 + .../main/res/drawable-night/background.png | Bin 0 -> 70 bytes .../res/drawable-night/launch_background.xml | 9 + .../src/main/res/drawable-v21/background.png | Bin 0 -> 68 bytes .../res/drawable-v21/launch_background.xml | 9 + .../res/drawable-xhdpi/notifications_icon.png | Bin 0 -> 1204 bytes .../src/main/res/drawable-xhdpi/splash.png | Bin 0 -> 14346 bytes .../drawable-xxhdpi/notifications_icon.png | Bin 0 -> 1651 bytes .../src/main/res/drawable-xxhdpi/splash.png | Bin 0 -> 25762 bytes .../drawable-xxxhdpi/notifications_icon.png | Bin 0 -> 2603 bytes .../src/main/res/drawable-xxxhdpi/splash.png | Bin 0 -> 28508 bytes .../app/src/main/res/drawable/background.png | Bin 0 -> 68 bytes .../res/drawable/ic_launcher_foreground.xml | 14 + .../res/drawable/ic_launcher_monochrome.xml | 11 + .../main/res/drawable/launch_background.xml | 9 + .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + .../src/main/res/mipmap-hdpi/ic_launcher.webp | Bin 0 -> 1476 bytes .../mipmap-hdpi/ic_launcher_foreground.webp | Bin 0 -> 1378 bytes .../res/mipmap-hdpi/ic_launcher_round.webp | Bin 0 -> 2992 bytes .../src/main/res/mipmap-mdpi/ic_launcher.webp | Bin 0 -> 948 bytes .../mipmap-mdpi/ic_launcher_foreground.webp | Bin 0 -> 976 bytes .../res/mipmap-mdpi/ic_launcher_round.webp | Bin 0 -> 1982 bytes .../main/res/mipmap-xhdpi/ic_launcher.webp | Bin 0 -> 2026 bytes .../mipmap-xhdpi/ic_launcher_foreground.webp | Bin 0 -> 1982 bytes .../res/mipmap-xhdpi/ic_launcher_round.webp | Bin 0 -> 4096 bytes .../main/res/mipmap-xxhdpi/ic_launcher.webp | Bin 0 -> 2980 bytes .../mipmap-xxhdpi/ic_launcher_foreground.webp | Bin 0 -> 3236 bytes .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 0 -> 6348 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.webp | Bin 0 -> 4112 bytes .../ic_launcher_foreground.webp | Bin 0 -> 4684 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 0 -> 9060 bytes .../app/src/main/res/values-night/styles.xml | 19 + .../res/values/ic_launcher_background.xml | 4 + android/app/src/main/res/values/styles.xml | 8 + .../src/main/res/xml/automotive_app_desc.xml | 3 + .../app/src/main/res/xml/locale_config.xml | 58 + android/build.gradle.kts | 21 + android/fastlane/Appfile | 2 + android/fastlane/Fastfile | 71 + android/fastlane/README.md | 56 + .../android/en-US/changelogs/default.txt | 3 + .../android/en-US/full_description.txt | 32 + .../android/en-US/images/featureGraphic.png | Bin 0 -> 238433 bytes .../metadata/android/en-US/images/icon.png | Bin 0 -> 32247 bytes .../android/en-US/short_description.txt | 1 + .../fastlane/metadata/android/en-US/title.txt | 1 + .../fastlane/metadata/android/en-US/video.txt | 0 android/fastlane/report.xml | 23 + android/gradle.properties | 4 + .../gradle/wrapper/gradle-wrapper.properties | 6 + android/settings.gradle.kts | 28 + assets/banner.png | Bin 0 -> 847289 bytes assets/banner_transparent.jpg | Bin 0 -> 119967 bytes assets/banner_transparent.png | Bin 0 -> 847289 bytes assets/favicon.png | Bin 0 -> 50100 bytes assets/info-logo.png | Bin 0 -> 674550 bytes assets/logo.png | Bin 0 -> 50100 bytes assets/logo.svg | 1 + assets/logo_transparent.png | Bin 0 -> 50100 bytes assets/sas-emoji.json | 2178 ++++++++++ assets/sounds/call.ogg | Bin 0 -> 22116 bytes assets/sounds/notification.ogg | Bin 0 -> 24143 bytes assets/sounds/phone.ogg | Bin 0 -> 297207 bytes assets/vodozemac/.gitignore | 1 + carkeys/key0 | Bin 0 -> 2724 bytes config.json | 29 + config.sample.json | 29 + devtools_options.yaml | 3 + docs/.well-known/org.flathub.VerifiedApps.txt | 2 + docs/index.html | 19 + integration_test/.gitignore | 6 + integration_test/app_test.dart | 187 + integration_test/dendrite/data/dendrite.yaml | 327 ++ .../extensions/default_flows.dart | 171 + integration_test/extensions/wait_for.dart | 49 + integration_test/synapse/data/homeserver.yaml | 2781 +++++++++++++ .../synapse/data/localhost.log.config | 27 + .../synapse/data/localhost.signing.key | 1 + integration_test/users.dart | 36 + ios/.gitignore | 33 + .../Base.lproj/MainInterface.storyboard | 24 + .../FluffyChat Share.entitlements | 10 + ios/FluffyChat Share/Info.plist | 52 + .../ShareViewController.swift | 14 + ios/Flutter/AppFrameworkInfo.plist | 26 + ios/Flutter/Debug.xcconfig | 2 + ios/Flutter/Release.xcconfig | 2 + ios/Flutter/ephemeral/flutter_lldb_helper.py | 32 + ios/Flutter/ephemeral/flutter_lldbinit | 5 + ios/Gemfile | 8 + ios/Gemfile.lock | 211 + ios/Localizable.xcstrings | 58 + ios/Notification Service Extension/Info.plist | 13 + ...otification Service Extension.entitlements | 10 + .../NotificationService.swift | 63 + ios/Podfile | 66 + ios/Runner.xcodeproj/project.pbxproj | 1100 ++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 94 + .../contents.xcworkspacedata | 10 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + ios/Runner/AppDelegate.swift | 16 + .../AppIcon.appiconset/Contents.json | 122 + .../Icon-App-1024x1024@1x.png | Bin 0 -> 70704 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 0 -> 1053 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 0 -> 1771 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 0 -> 2608 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 0 -> 1379 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 0 -> 2466 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 0 -> 3751 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 0 -> 1771 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 0 -> 3370 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 0 -> 4965 bytes .../AppIcon.appiconset/Icon-App-50x50@1x.png | Bin 0 -> 2201 bytes .../AppIcon.appiconset/Icon-App-50x50@2x.png | Bin 0 -> 4133 bytes .../AppIcon.appiconset/Icon-App-57x57@1x.png | Bin 0 -> 2483 bytes .../AppIcon.appiconset/Icon-App-57x57@2x.png | Bin 0 -> 4735 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 0 -> 4965 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 0 -> 7396 bytes .../AppIcon.appiconset/Icon-App-72x72@1x.png | Bin 0 -> 3081 bytes .../AppIcon.appiconset/Icon-App-72x72@2x.png | Bin 0 -> 5982 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 0 -> 3240 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 0 -> 6188 bytes .../Icon-App-83.5x83.5@2x.png | Bin 0 -> 6860 bytes .../LaunchBackground.imageset/Contents.json | 52 + .../LaunchBackground.imageset/background.png | Bin 0 -> 68 bytes .../darkbackground.png | Bin 0 -> 70 bytes .../LaunchImage.imageset/Contents.json | 23 + .../LaunchImage.imageset/LaunchImage.png | Bin 0 -> 5267 bytes .../LaunchImage.imageset/LaunchImage@2x.png | Bin 0 -> 14346 bytes .../LaunchImage.imageset/LaunchImage@3x.png | Bin 0 -> 25762 bytes .../LaunchImage.imageset/README.md | 5 + ios/Runner/Base.lproj/LaunchScreen.storyboard | 44 + ios/Runner/Base.lproj/Main.storyboard | 26 + ios/Runner/GoogleService-Info.plist | 34 + ios/Runner/Info.plist | 116 + ios/Runner/Runner-Bridging-Header.h | 1 + ios/Runner/Runner.entitlements | 16 + ios/Runner/ar.lproj/LaunchScreen.strings | 1 + ios/Runner/ar.lproj/Main.strings | 1 + ios/Runner/ca.lproj/LaunchScreen.strings | 1 + ios/Runner/ca.lproj/Main.strings | 1 + ios/Runner/cs.lproj/LaunchScreen.strings | 1 + ios/Runner/cs.lproj/Main.strings | 1 + ios/Runner/de.lproj/LaunchScreen.strings | 1 + ios/Runner/de.lproj/Main.strings | 1 + ios/Runner/eo.lproj/LaunchScreen.strings | 1 + ios/Runner/eo.lproj/Main.strings | 1 + ios/Runner/es.lproj/LaunchScreen.strings | 1 + ios/Runner/es.lproj/Main.strings | 1 + ios/Runner/et.lproj/LaunchScreen.strings | 1 + ios/Runner/et.lproj/Main.strings | 1 + ios/Runner/eu.lproj/LaunchScreen.strings | 1 + ios/Runner/eu.lproj/Main.strings | 1 + ios/Runner/fr.lproj/LaunchScreen.strings | 1 + ios/Runner/fr.lproj/Main.strings | 1 + ios/Runner/gl.lproj/LaunchScreen.strings | 1 + ios/Runner/gl.lproj/Main.strings | 1 + ios/Runner/hr-HR.lproj/LaunchScreen.strings | 1 + ios/Runner/hr-HR.lproj/Main.strings | 1 + ios/Runner/hu-HU.lproj/LaunchScreen.strings | 1 + ios/Runner/hu-HU.lproj/Main.strings | 1 + ios/Runner/hu.lproj/LaunchScreen.strings | 1 + ios/Runner/hu.lproj/Main.strings | 1 + ios/Runner/hy.lproj/LaunchScreen.strings | 1 + ios/Runner/hy.lproj/Main.strings | 1 + ios/Runner/it.lproj/LaunchScreen.strings | 1 + ios/Runner/it.lproj/Main.strings | 1 + ios/Runner/ja.lproj/LaunchScreen.strings | 1 + ios/Runner/ja.lproj/Main.strings | 1 + ios/Runner/nb-NO.lproj/LaunchScreen.strings | 1 + ios/Runner/nb-NO.lproj/Main.strings | 1 + ios/Runner/notification.caf | Bin 0 -> 178050 bytes ios/Runner/pl.lproj/LaunchScreen.strings | 1 + ios/Runner/pl.lproj/Main.strings | 1 + ios/Runner/pt.lproj/LaunchScreen.strings | 1 + ios/Runner/pt.lproj/Main.strings | 1 + ios/Runner/ru-RU.lproj/LaunchScreen.strings | 1 + ios/Runner/ru-RU.lproj/Main.strings | 1 + ios/Runner/sk-SK.lproj/LaunchScreen.strings | 1 + ios/Runner/sk-SK.lproj/Main.strings | 1 + ios/Runner/sv-SE.lproj/LaunchScreen.strings | 1 + ios/Runner/sv-SE.lproj/Main.strings | 1 + ios/Runner/tr.lproj/LaunchScreen.strings | 1 + ios/Runner/tr.lproj/Main.strings | 1 + ios/Runner/uk.lproj/LaunchScreen.strings | 1 + ios/Runner/uk.lproj/Main.strings | 1 + ios/Runner/vi-VN.lproj/LaunchScreen.strings | 1 + ios/Runner/vi-VN.lproj/Main.strings | 1 + ios/Runner/zh-Hans.lproj/LaunchScreen.strings | 1 + ios/Runner/zh-Hans.lproj/Main.strings | 1 + ios/fastlane/Appfile | 8 + ios/fastlane/Fastfile | 44 + ios/fastlane/README.md | 37 + ios/fastlane/report.xml | 28 + l10n.yaml | 7 + lib/config/app_config.dart | 62 + lib/config/app_emojis.dart | 30 + lib/config/isrg_x1.dart | 32 + lib/config/routes.dart | 505 +++ lib/config/setting_keys.dart | 193 + lib/config/themes.dart | 164 + lib/l10n/intl_ar.arb | 3187 +++++++++++++++ lib/l10n/intl_be.arb | 3478 ++++++++++++++++ lib/l10n/intl_bn.arb | 2107 ++++++++++ lib/l10n/intl_bo.arb | 2102 ++++++++++ lib/l10n/intl_ca.arb | 3339 ++++++++++++++++ lib/l10n/intl_cs.arb | 2673 +++++++++++++ lib/l10n/intl_da.arb | 35 + lib/l10n/intl_de.arb | 3498 +++++++++++++++++ lib/l10n/intl_el.arb | 435 ++ lib/l10n/intl_en.arb | 3456 ++++++++++++++++ lib/l10n/intl_eo.arb | 2077 ++++++++++ lib/l10n/intl_es.arb | 3396 ++++++++++++++++ lib/l10n/intl_et.arb | 3491 ++++++++++++++++ lib/l10n/intl_eu.arb | 3491 ++++++++++++++++ lib/l10n/intl_fa.arb | 3386 ++++++++++++++++ lib/l10n/intl_fi.arb | 3373 ++++++++++++++++ lib/l10n/intl_fil.arb | 1063 +++++ lib/l10n/intl_fr.arb | 3167 +++++++++++++++ lib/l10n/intl_ga.arb | 3496 ++++++++++++++++ lib/l10n/intl_gl.arb | 3491 ++++++++++++++++ lib/l10n/intl_he.arb | 1435 +++++++ lib/l10n/intl_hi.arb | 2109 ++++++++++ lib/l10n/intl_hr.arb | 2995 ++++++++++++++ lib/l10n/intl_hu.arb | 3377 ++++++++++++++++ lib/l10n/intl_ia.arb | 60 + lib/l10n/intl_id.arb | 3396 ++++++++++++++++ lib/l10n/intl_ie.arb | 2346 +++++++++++ lib/l10n/intl_it.arb | 3386 ++++++++++++++++ lib/l10n/intl_ja.arb | 2408 ++++++++++++ lib/l10n/intl_ka.arb | 832 ++++ lib/l10n/intl_ko.arb | 3295 ++++++++++++++++ lib/l10n/intl_lt.arb | 2417 ++++++++++++ lib/l10n/intl_lv.arb | 3474 ++++++++++++++++ lib/l10n/intl_nb.arb | 3248 +++++++++++++++ lib/l10n/intl_nl.arb | 3490 ++++++++++++++++ lib/l10n/intl_pl.arb | 3389 ++++++++++++++++ lib/l10n/intl_pt.arb | 146 + lib/l10n/intl_pt_BR.arb | 3388 ++++++++++++++++ lib/l10n/intl_pt_PT.arb | 1710 ++++++++ lib/l10n/intl_ro.arb | 2512 ++++++++++++ lib/l10n/intl_ru.arb | 3325 ++++++++++++++++ lib/l10n/intl_sk.arb | 1457 +++++++ lib/l10n/intl_sl.arb | 659 ++++ lib/l10n/intl_sr.arb | 1966 +++++++++ lib/l10n/intl_sv.arb | 2858 ++++++++++++++ lib/l10n/intl_ta.arb | 3380 ++++++++++++++++ lib/l10n/intl_te.arb | 15 + lib/l10n/intl_th.arb | 2152 ++++++++++ lib/l10n/intl_tr.arb | 3211 +++++++++++++++ lib/l10n/intl_uk.arb | 3389 ++++++++++++++++ lib/l10n/intl_uz.arb | 443 +++ lib/l10n/intl_vi.arb | 814 ++++ lib/l10n/intl_yue_Hant.arb | 337 ++ lib/l10n/intl_zh.arb | 3491 ++++++++++++++++ lib/l10n/intl_zh_Hant.arb | 3362 ++++++++++++++++ lib/main.dart | 122 + lib/pages/archive/archive.dart | 71 + lib/pages/archive/archive_view.dart | 74 + lib/pages/bootstrap/bootstrap_dialog.dart | 510 +++ lib/pages/chat/add_widget_tile.dart | 85 + lib/pages/chat/add_widget_tile_view.dart | 72 + lib/pages/chat/chat.dart | 1430 +++++++ lib/pages/chat/chat_app_bar_list_tile.dart | 65 + lib/pages/chat/chat_app_bar_title.dart | 141 + lib/pages/chat/chat_emoji_picker.dart | 113 + lib/pages/chat/chat_event_list.dart | 190 + lib/pages/chat/chat_input_row.dart | 438 +++ lib/pages/chat/chat_view.dart | 449 +++ lib/pages/chat/command_hints.dart | 90 + lib/pages/chat/encryption_button.dart | 65 + lib/pages/chat/event_info_dialog.dart | 113 + lib/pages/chat/events/audio_player.dart | 543 +++ lib/pages/chat/events/cute_events.dart | 194 + lib/pages/chat/events/html_message.dart | 584 +++ lib/pages/chat/events/image_bubble.dart | 161 + lib/pages/chat/events/map_bubble.dart | 90 + lib/pages/chat/events/message.dart | 1027 +++++ lib/pages/chat/events/message_content.dart | 410 ++ .../chat/events/message_download_content.dart | 114 + lib/pages/chat/events/message_reactions.dart | 234 ++ lib/pages/chat/events/poll.dart | 233 ++ lib/pages/chat/events/reply_content.dart | 103 + .../events/room_creation_state_event.dart | 59 + lib/pages/chat/events/state_message.dart | 85 + lib/pages/chat/events/video_player.dart | 158 + lib/pages/chat/input_bar.dart | 450 +++ lib/pages/chat/pinned_events.dart | 92 + lib/pages/chat/recording_input_row.dart | 89 + lib/pages/chat/recording_view_model.dart | 234 ++ lib/pages/chat/reply_display.dart | 86 + lib/pages/chat/seen_by_row.dart | 69 + lib/pages/chat/send_file_dialog.dart | 444 +++ lib/pages/chat/send_location_dialog.dart | 134 + lib/pages/chat/start_poll_bottom_sheet.dart | 171 + lib/pages/chat/sticker_picker_dialog.dart | 166 + lib/pages/chat/typing_indicators.dart | 164 + .../chat_access_settings_controller.dart | 359 ++ .../chat_access_settings_page.dart | 310 ++ lib/pages/chat_details/chat_details.dart | 168 + lib/pages/chat_details/chat_details_view.dart | 354 ++ .../chat_details/participant_list_item.dart | 102 + .../chat_encryption_settings.dart | 99 + .../chat_encryption_settings_view.dart | 200 + lib/pages/chat_list/chat_list.dart | 925 +++++ lib/pages/chat_list/chat_list_body.dart | 340 ++ lib/pages/chat_list/chat_list_header.dart | 140 + lib/pages/chat_list/chat_list_item.dart | 387 ++ lib/pages/chat_list/chat_list_view.dart | 71 + .../chat_list/client_chooser_button.dart | 248 ++ lib/pages/chat_list/dummy_chat_list_item.dart | 72 + lib/pages/chat_list/navi_rail_item.dart | 99 + lib/pages/chat_list/search_title.dart | 75 + lib/pages/chat_list/space_view.dart | 685 ++++ lib/pages/chat_list/status_msg_list.dart | 347 ++ lib/pages/chat_list/unread_bubble.dart | 56 + lib/pages/chat_members/chat_members.dart | 115 + lib/pages/chat_members/chat_members_view.dart | 197 + .../chat_permissions_settings.dart | 76 + .../chat_permissions_settings_view.dart | 145 + .../permission_list_tile.dart | 126 + .../chat_search/chat_search_files_tab.dart | 175 + .../chat_search/chat_search_images_tab.dart | 194 + .../chat_search/chat_search_message_tab.dart | 188 + lib/pages/chat_search/chat_search_page.dart | 196 + lib/pages/chat_search/chat_search_view.dart | 111 + .../device_settings/device_settings.dart | 175 + .../device_settings/device_settings_view.dart | 142 + .../user_device_list_item.dart | 154 + lib/pages/dialer/dialer.dart | 629 +++ lib/pages/dialer/pip/dismiss_keyboard.dart | 5 + lib/pages/dialer/pip/pip_view.dart | 342 ++ .../homeserver_picker/homeserver_picker.dart | 221 ++ .../homeserver_picker_view.dart | 225 ++ lib/pages/image_viewer/image_viewer.dart | 122 + lib/pages/image_viewer/image_viewer_view.dart | 158 + lib/pages/image_viewer/video_player.dart | 191 + .../invitation_selection.dart | 116 + .../invitation_selection_view.dart | 197 + .../key_verification_dialog.dart | 411 ++ lib/pages/login/login.dart | 248 ++ lib/pages/login/login_view.dart | 141 + lib/pages/new_group/new_group.dart | 151 + lib/pages/new_group/new_group_view.dart | 195 + .../new_private_chat/new_private_chat.dart | 108 + .../new_private_chat_view.dart | 292 ++ .../new_private_chat/qr_scanner_modal.dart | 76 + lib/pages/settings/settings.dart | 216 + lib/pages/settings/settings_view.dart | 269 ++ lib/pages/settings_3pid/settings_3pid.dart | 92 + .../settings_3pid/settings_3pid_view.dart | 112 + lib/pages/settings_chat/settings_chat.dart | 15 + .../settings_chat/settings_chat_view.dart | 103 + .../import_archive_dialog.dart | 360 ++ .../settings_emotes/settings_emotes.dart | 338 ++ .../settings_emotes/settings_emotes_view.dart | 282 ++ .../settings_homeserver.dart | 58 + .../settings_homeserver_view.dart | 303 ++ .../settings_ignore_list.dart | 57 + .../settings_ignore_list_view.dart | 98 + .../settings_multiple_emotes.dart | 19 + .../settings_multiple_emotes_view.dart | 64 + .../push_rule_extensions.dart | 122 + .../settings_notifications.dart | 206 + .../settings_notifications_view.dart | 169 + .../settings_password/settings_password.dart | 83 + .../settings_password_view.dart | 91 + .../settings_security/settings_security.dart | 123 + .../settings_security_view.dart | 197 + lib/pages/settings_style/settings_style.dart | 172 + .../settings_style/settings_style_view.dart | 369 ++ lib/utils/account_bundles.dart | 102 + lib/utils/account_config.dart | 70 + lib/utils/adaptive_bottom_sheet.dart | 64 + lib/utils/background_push.dart | 495 +++ lib/utils/beautify_string_extension.dart | 15 + .../client_download_content_extension.dart | 103 + lib/utils/client_manager.dart | 182 + lib/utils/color_value.dart | 14 + lib/utils/custom_http_client.dart | 40 + lib/utils/custom_image_resizer.dart | 97 + lib/utils/custom_scroll_behaviour.dart | 10 + lib/utils/date_time_extension.dart | 95 + lib/utils/error_reporter.dart | 74 + lib/utils/event_checkbox_extension.dart | 27 + lib/utils/file_description.dart | 19 + lib/utils/file_selector.dart | 131 + lib/utils/fluffy_share.dart | 46 + lib/utils/init_with_restore.dart | 149 + lib/utils/localized_exception_extension.dart | 108 + lib/utils/markdown_context_builder.dart | 125 + .../device_extension.dart | 45 + .../event_extension.dart | 61 + .../filtered_timeline_extension.dart | 61 + .../builder.dart | 147 + .../cipher.dart | 65 + .../sqlcipher_stub.dart | 1 + .../matrix_file_extension.dart | 96 + .../matrix_sdk_extensions/matrix_locals.dart | 372 ++ .../notification_background_handler.dart | 260 ++ lib/utils/other_party_can_receive.dart | 21 + lib/utils/platform_infos.dart | 95 + lib/utils/push_helper.dart | 371 ++ lib/utils/resize_video.dart | 51 + lib/utils/room_status_extension.dart | 57 + lib/utils/show_scaffold_dialog.dart | 37 + lib/utils/show_update_snackbar.dart | 36 + lib/utils/size_string.dart | 21 + lib/utils/stream_extension.dart | 48 + lib/utils/string_color.dart | 34 + lib/utils/sync_status_localization.dart | 27 + lib/utils/uia_request_manager.dart | 132 + lib/utils/url_launcher.dart | 240 ++ lib/utils/voip/user_media_manager.dart | 28 + lib/utils/voip/video_renderer.dart | 86 + lib/utils/voip_plugin.dart | 177 + .../adaptive_dialog_action.dart | 83 + .../adaptive_dialogs/dialog_text_field.dart | 99 + .../adaptive_dialogs/public_room_dialog.dart | 237 ++ .../show_modal_action_popup.dart | 116 + .../show_ok_cancel_alert_dialog.dart | 103 + .../show_text_input_dialog.dart | 108 + lib/widgets/adaptive_dialogs/user_dialog.dart | 213 + lib/widgets/app_lock.dart | 113 + lib/widgets/avatar.dart | 156 + lib/widgets/avatar_page_header.dart | 100 + lib/widgets/blur_hash.dart | 104 + lib/widgets/chat_settings_popup_menu.dart | 193 + lib/widgets/config_viewer.dart | 104 + lib/widgets/error_widget.dart | 45 + lib/widgets/fluffy_chat_app.dart | 69 + lib/widgets/future_loading_dialog.dart | 161 + lib/widgets/hover_builder.dart | 29 + lib/widgets/layouts/empty_page.dart | 32 + lib/widgets/layouts/login_scaffold.dart | 129 + lib/widgets/layouts/max_width_body.dart | 63 + lib/widgets/layouts/two_column_layout.dart | 42 + .../local_notifications_extension.dart | 159 + lib/widgets/lock_screen.dart | 120 + lib/widgets/log_view.dart | 96 + lib/widgets/matrix.dart | 432 ++ .../member_actions_popup_menu_button.dart | 316 ++ lib/widgets/mxc_image.dart | 178 + lib/widgets/mxc_image_viewer.dart | 59 + lib/widgets/navigation_rail.dart | 137 + lib/widgets/permission_slider_dialog.dart | 83 + lib/widgets/presence_builder.dart | 57 + lib/widgets/qr_code_viewer.dart | 138 + lib/widgets/settings_switch_list_tile.dart | 38 + lib/widgets/share_scaffold_dialog.dart | 191 + lib/widgets/theme_builder.dart | 104 + lib/widgets/unread_rooms_badge.dart | 52 + licenses.yaml | 41 + linux/.gitignore | 1 + linux/CMakeLists.txt | 147 + linux/flutter/CMakeLists.txt | 88 + linux/flutter/generated_plugin_registrant.cc | 75 + linux/flutter/generated_plugin_registrant.h | 15 + linux/flutter/generated_plugins.cmake | 40 + linux/main.cc | 6 + linux/my_application.cc | 137 + linux/my_application.h | 18 + macos/.gitignore | 7 + macos/Flutter/Flutter-Debug.xcconfig | 2 + macos/Flutter/Flutter-Release.xcconfig | 2 + macos/Flutter/GeneratedPluginRegistrant.swift | 72 + macos/Podfile | 43 + macos/Podfile.lock | 217 + macos/Runner.xcodeproj/project.pbxproj | 657 ++++ .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 99 + .../contents.xcworkspacedata | 10 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + macos/Runner/AppDelegate.swift | 13 + .../AppIcon.appiconset/1024-mac.png | Bin 0 -> 21100 bytes .../AppIcon.appiconset/128-mac.png | Bin 0 -> 2868 bytes .../AppIcon.appiconset/16-mac.png | Bin 0 -> 316 bytes .../AppIcon.appiconset/256-mac.png | Bin 0 -> 5382 bytes .../AppIcon.appiconset/32-mac.png | Bin 0 -> 878 bytes .../AppIcon.appiconset/512-mac.png | Bin 0 -> 10898 bytes .../AppIcon.appiconset/64-mac.png | Bin 0 -> 1462 bytes .../AppIcon.appiconset/Contents.json | 1 + macos/Runner/Base.lproj/MainMenu.xib | 343 ++ macos/Runner/Configs/AppInfo.xcconfig | 14 + macos/Runner/Configs/Debug.xcconfig | 2 + macos/Runner/Configs/Release.xcconfig | 2 + macos/Runner/Configs/Warnings.xcconfig | 13 + macos/Runner/DebugProfile.entitlements | 26 + macos/Runner/Info.plist | 32 + macos/Runner/MainFlutterWindow.swift | 15 + macos/Runner/Release.entitlements | 22 + pubspec.lock | 2334 +++++++++++ pubspec.yaml | 125 + scripts/add-firebase-messaging.sh | 12 + scripts/build-ios.sh | 78 + scripts/build-macos.sh | 33 + scripts/build-windows.ps1 | 7 + scripts/create_fdroid_repos.sh | 67 + scripts/generate-locale-config.sh | 31 + scripts/generate_command_hints_glue.sh | 30 + scripts/integration-check-release-build.sh | 26 + ...ntegration-create-environment-variables.sh | 6 + scripts/integration-prepare-homeserver.sh | 60 + scripts/integration-prepare-host.sh | 6 + scripts/integration-server-conduit.sh | 12 + scripts/integration-server-dendrite.sh | 14 + scripts/integration-server-synapse.sh | 5 + scripts/integration-start-avd.sh | 4 + scripts/package-windows.ps1 | 5 + scripts/prepare-android-release.sh | 13 + scripts/prepare-fdroid.sh | 12 + scripts/prepare-web.sh | 20 + scripts/prepare-windows.ps1 | 5 + scripts/release-ios-testflight.sh | 16 + scripts/update-dependencies.sh | 6 + snap/gui/fluffychat.desktop | 9 + snap/gui/fluffychat.png | Bin 0 -> 32675 bytes snap/snapcraft.yaml | 131 + test/archive_test.dart | 10 + test/command_hint_test.dart | 25 + test/homeserver_picker_test.dart | 17 + test/utils/test_client.dart | 43 + test/widget_test.dart | 20 + web/auth.html | 13 + web/favicon.png | Bin 0 -> 1995 bytes web/icons/Icon-192.png | Bin 0 -> 24004 bytes web/icons/Icon-512.png | Bin 0 -> 50420 bytes web/index.html | 71 + web/manifest.json | 23 + web/splash/img/dark-1x.png | Bin 0 -> 5267 bytes web/splash/img/dark-2x.png | Bin 0 -> 14346 bytes web/splash/img/dark-3x.png | Bin 0 -> 25762 bytes web/splash/img/dark-4x.png | Bin 0 -> 28508 bytes web/splash/img/light-1x.png | Bin 0 -> 5267 bytes web/splash/img/light-2x.png | Bin 0 -> 14346 bytes web/splash/img/light-3x.png | Bin 0 -> 25762 bytes web/splash/img/light-4x.png | Bin 0 -> 28508 bytes web/splash/style.css | 45 + windows/.gitignore | 17 + windows/CMakeLists.txt | 101 + windows/flutter/CMakeLists.txt | 109 + .../flutter/generated_plugin_registrant.cc | 68 + windows/flutter/generated_plugin_registrant.h | 15 + windows/flutter/generated_plugins.cmake | 44 + windows/runner/CMakeLists.txt | 39 + windows/runner/Runner.rc | 121 + windows/runner/flutter_window.cpp | 61 + windows/runner/flutter_window.h | 33 + windows/runner/main.cpp | 43 + windows/runner/resource.h | 16 + windows/runner/resources/app_icon.ico | Bin 0 -> 12383 bytes windows/runner/runner.exe.manifest | 20 + windows/runner/utils.cpp | 64 + windows/runner/utils.h | 19 + windows/runner/win32_window.cpp | 245 ++ windows/runner/win32_window.h | 98 + 603 files changed, 191033 insertions(+) create mode 100644 .github/CODEOWNERS create mode 100644 .github/FUNDING.yml create mode 100644 .github/ISSUE_TEMPLATE/bug_report.yml create mode 100644 .github/ISSUE_TEMPLATE/config.yml create mode 100644 .github/ISSUE_TEMPLATE/feature_request.yml create mode 100644 .github/ISSUE_TEMPLATE/issue_pr_management.yml create mode 100644 .github/ISSUE_TEMPLATE/test_report.md create mode 100644 .github/actions/free_up_space/action.yaml create mode 100644 .github/dependabot.yml create mode 100644 .github/pull_request_template.md create mode 100644 .github/workflows/check_duplicates.yaml create mode 100644 .github/workflows/integrate.yaml create mode 100644 .github/workflows/main_deploy.yaml create mode 100644 .github/workflows/release.yaml create mode 100644 .github/workflows/versions.env create mode 100644 .gitignore create mode 100644 .mailmap create mode 100644 .metadata create mode 100644 CHANGELOG.md create mode 100644 CONTRIBUTING.md create mode 100644 Dockerfile create mode 100644 LICENSE create mode 100644 PRIVACY.md create mode 100644 README.md create mode 100644 analysis_options.yaml create mode 100644 android/.gitignore create mode 100644 android/Gemfile create mode 100644 android/app/build.gradle.kts create mode 100644 android/app/proguard-rules.pro create mode 100644 android/app/release/baselineProfiles/0/app-release.dm create mode 100644 android/app/release/baselineProfiles/1/app-release.dm create mode 100644 android/app/release/output-metadata.json create mode 100644 android/app/src/main/AndroidManifest.xml create mode 100644 android/app/src/main/ic_launcher-playstore.png create mode 100644 android/app/src/main/kotlin/chat/smithtech/matrix/FcmPushService.kt create mode 100644 android/app/src/main/kotlin/chat/smithtech/matrix/MainActivity.kt create mode 100644 android/app/src/main/res/drawable-anydpi-v24/notifications_icon.xml create mode 100644 android/app/src/main/res/drawable-hdpi/notifications_icon.png create mode 100644 android/app/src/main/res/drawable-hdpi/splash.png create mode 100644 android/app/src/main/res/drawable-mdpi/notifications_icon.png create mode 100644 android/app/src/main/res/drawable-mdpi/splash.png create mode 100644 android/app/src/main/res/drawable-night-v21/background.png create mode 100644 android/app/src/main/res/drawable-night-v21/launch_background.xml create mode 100644 android/app/src/main/res/drawable-night/background.png create mode 100644 android/app/src/main/res/drawable-night/launch_background.xml create mode 100644 android/app/src/main/res/drawable-v21/background.png create mode 100644 android/app/src/main/res/drawable-v21/launch_background.xml create mode 100644 android/app/src/main/res/drawable-xhdpi/notifications_icon.png create mode 100644 android/app/src/main/res/drawable-xhdpi/splash.png create mode 100644 android/app/src/main/res/drawable-xxhdpi/notifications_icon.png create mode 100644 android/app/src/main/res/drawable-xxhdpi/splash.png create mode 100644 android/app/src/main/res/drawable-xxxhdpi/notifications_icon.png create mode 100644 android/app/src/main/res/drawable-xxxhdpi/splash.png create mode 100644 android/app/src/main/res/drawable/background.png create mode 100644 android/app/src/main/res/drawable/ic_launcher_foreground.xml create mode 100644 android/app/src/main/res/drawable/ic_launcher_monochrome.xml create mode 100644 android/app/src/main/res/drawable/launch_background.xml create mode 100644 android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher.webp create mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp create mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp create mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher.webp create mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp create mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp create mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp create mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp create mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp create mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp create mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp create mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp create mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp create mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp create mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp create mode 100644 android/app/src/main/res/values-night/styles.xml create mode 100644 android/app/src/main/res/values/ic_launcher_background.xml create mode 100644 android/app/src/main/res/values/styles.xml create mode 100644 android/app/src/main/res/xml/automotive_app_desc.xml create mode 100644 android/app/src/main/res/xml/locale_config.xml create mode 100644 android/build.gradle.kts create mode 100644 android/fastlane/Appfile create mode 100644 android/fastlane/Fastfile create mode 100644 android/fastlane/README.md create mode 100644 android/fastlane/metadata/android/en-US/changelogs/default.txt create mode 100644 android/fastlane/metadata/android/en-US/full_description.txt create mode 100644 android/fastlane/metadata/android/en-US/images/featureGraphic.png create mode 100644 android/fastlane/metadata/android/en-US/images/icon.png create mode 100644 android/fastlane/metadata/android/en-US/short_description.txt create mode 100644 android/fastlane/metadata/android/en-US/title.txt create mode 100644 android/fastlane/metadata/android/en-US/video.txt create mode 100644 android/fastlane/report.xml create mode 100644 android/gradle.properties create mode 100644 android/gradle/wrapper/gradle-wrapper.properties create mode 100644 android/settings.gradle.kts create mode 100644 assets/banner.png create mode 100644 assets/banner_transparent.jpg create mode 100644 assets/banner_transparent.png create mode 100644 assets/favicon.png create mode 100644 assets/info-logo.png create mode 100644 assets/logo.png create mode 100644 assets/logo.svg create mode 100644 assets/logo_transparent.png create mode 100644 assets/sas-emoji.json create mode 100644 assets/sounds/call.ogg create mode 100644 assets/sounds/notification.ogg create mode 100644 assets/sounds/phone.ogg create mode 100644 assets/vodozemac/.gitignore create mode 100644 carkeys/key0 create mode 100644 config.json create mode 100644 config.sample.json create mode 100644 devtools_options.yaml create mode 100644 docs/.well-known/org.flathub.VerifiedApps.txt create mode 100644 docs/index.html create mode 100644 integration_test/.gitignore create mode 100644 integration_test/app_test.dart create mode 100644 integration_test/dendrite/data/dendrite.yaml create mode 100644 integration_test/extensions/default_flows.dart create mode 100644 integration_test/extensions/wait_for.dart create mode 100644 integration_test/synapse/data/homeserver.yaml create mode 100644 integration_test/synapse/data/localhost.log.config create mode 100644 integration_test/synapse/data/localhost.signing.key create mode 100644 integration_test/users.dart create mode 100644 ios/.gitignore create mode 100644 ios/FluffyChat Share/Base.lproj/MainInterface.storyboard create mode 100644 ios/FluffyChat Share/FluffyChat Share.entitlements create mode 100644 ios/FluffyChat Share/Info.plist create mode 100644 ios/FluffyChat Share/ShareViewController.swift create mode 100644 ios/Flutter/AppFrameworkInfo.plist create mode 100644 ios/Flutter/Debug.xcconfig create mode 100644 ios/Flutter/Release.xcconfig create mode 100644 ios/Flutter/ephemeral/flutter_lldb_helper.py create mode 100644 ios/Flutter/ephemeral/flutter_lldbinit create mode 100644 ios/Gemfile create mode 100644 ios/Gemfile.lock create mode 100644 ios/Localizable.xcstrings create mode 100644 ios/Notification Service Extension/Info.plist create mode 100644 ios/Notification Service Extension/Notification Service Extension.entitlements create mode 100644 ios/Notification Service Extension/NotificationService.swift create mode 100644 ios/Podfile create mode 100644 ios/Runner.xcodeproj/project.pbxproj create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 ios/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 ios/Runner/AppDelegate.swift create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png create mode 100644 ios/Runner/Assets.xcassets/LaunchBackground.imageset/Contents.json create mode 100644 ios/Runner/Assets.xcassets/LaunchBackground.imageset/background.png create mode 100644 ios/Runner/Assets.xcassets/LaunchBackground.imageset/darkbackground.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md create mode 100644 ios/Runner/Base.lproj/LaunchScreen.storyboard create mode 100644 ios/Runner/Base.lproj/Main.storyboard create mode 100644 ios/Runner/GoogleService-Info.plist create mode 100644 ios/Runner/Info.plist create mode 100644 ios/Runner/Runner-Bridging-Header.h create mode 100644 ios/Runner/Runner.entitlements create mode 100644 ios/Runner/ar.lproj/LaunchScreen.strings create mode 100644 ios/Runner/ar.lproj/Main.strings create mode 100644 ios/Runner/ca.lproj/LaunchScreen.strings create mode 100644 ios/Runner/ca.lproj/Main.strings create mode 100644 ios/Runner/cs.lproj/LaunchScreen.strings create mode 100644 ios/Runner/cs.lproj/Main.strings create mode 100644 ios/Runner/de.lproj/LaunchScreen.strings create mode 100644 ios/Runner/de.lproj/Main.strings create mode 100644 ios/Runner/eo.lproj/LaunchScreen.strings create mode 100644 ios/Runner/eo.lproj/Main.strings create mode 100644 ios/Runner/es.lproj/LaunchScreen.strings create mode 100644 ios/Runner/es.lproj/Main.strings create mode 100644 ios/Runner/et.lproj/LaunchScreen.strings create mode 100644 ios/Runner/et.lproj/Main.strings create mode 100644 ios/Runner/eu.lproj/LaunchScreen.strings create mode 100644 ios/Runner/eu.lproj/Main.strings create mode 100644 ios/Runner/fr.lproj/LaunchScreen.strings create mode 100644 ios/Runner/fr.lproj/Main.strings create mode 100644 ios/Runner/gl.lproj/LaunchScreen.strings create mode 100644 ios/Runner/gl.lproj/Main.strings create mode 100644 ios/Runner/hr-HR.lproj/LaunchScreen.strings create mode 100644 ios/Runner/hr-HR.lproj/Main.strings create mode 100644 ios/Runner/hu-HU.lproj/LaunchScreen.strings create mode 100644 ios/Runner/hu-HU.lproj/Main.strings create mode 100644 ios/Runner/hu.lproj/LaunchScreen.strings create mode 100644 ios/Runner/hu.lproj/Main.strings create mode 100644 ios/Runner/hy.lproj/LaunchScreen.strings create mode 100644 ios/Runner/hy.lproj/Main.strings create mode 100644 ios/Runner/it.lproj/LaunchScreen.strings create mode 100644 ios/Runner/it.lproj/Main.strings create mode 100644 ios/Runner/ja.lproj/LaunchScreen.strings create mode 100644 ios/Runner/ja.lproj/Main.strings create mode 100644 ios/Runner/nb-NO.lproj/LaunchScreen.strings create mode 100644 ios/Runner/nb-NO.lproj/Main.strings create mode 100644 ios/Runner/notification.caf create mode 100644 ios/Runner/pl.lproj/LaunchScreen.strings create mode 100644 ios/Runner/pl.lproj/Main.strings create mode 100644 ios/Runner/pt.lproj/LaunchScreen.strings create mode 100644 ios/Runner/pt.lproj/Main.strings create mode 100644 ios/Runner/ru-RU.lproj/LaunchScreen.strings create mode 100644 ios/Runner/ru-RU.lproj/Main.strings create mode 100644 ios/Runner/sk-SK.lproj/LaunchScreen.strings create mode 100644 ios/Runner/sk-SK.lproj/Main.strings create mode 100644 ios/Runner/sv-SE.lproj/LaunchScreen.strings create mode 100644 ios/Runner/sv-SE.lproj/Main.strings create mode 100644 ios/Runner/tr.lproj/LaunchScreen.strings create mode 100644 ios/Runner/tr.lproj/Main.strings create mode 100644 ios/Runner/uk.lproj/LaunchScreen.strings create mode 100644 ios/Runner/uk.lproj/Main.strings create mode 100644 ios/Runner/vi-VN.lproj/LaunchScreen.strings create mode 100644 ios/Runner/vi-VN.lproj/Main.strings create mode 100644 ios/Runner/zh-Hans.lproj/LaunchScreen.strings create mode 100644 ios/Runner/zh-Hans.lproj/Main.strings create mode 100644 ios/fastlane/Appfile create mode 100644 ios/fastlane/Fastfile create mode 100644 ios/fastlane/README.md create mode 100644 ios/fastlane/report.xml create mode 100644 l10n.yaml create mode 100644 lib/config/app_config.dart create mode 100644 lib/config/app_emojis.dart create mode 100644 lib/config/isrg_x1.dart create mode 100644 lib/config/routes.dart create mode 100644 lib/config/setting_keys.dart create mode 100644 lib/config/themes.dart create mode 100644 lib/l10n/intl_ar.arb create mode 100644 lib/l10n/intl_be.arb create mode 100644 lib/l10n/intl_bn.arb create mode 100644 lib/l10n/intl_bo.arb create mode 100644 lib/l10n/intl_ca.arb create mode 100644 lib/l10n/intl_cs.arb create mode 100644 lib/l10n/intl_da.arb create mode 100644 lib/l10n/intl_de.arb create mode 100644 lib/l10n/intl_el.arb create mode 100644 lib/l10n/intl_en.arb create mode 100644 lib/l10n/intl_eo.arb create mode 100644 lib/l10n/intl_es.arb create mode 100644 lib/l10n/intl_et.arb create mode 100644 lib/l10n/intl_eu.arb create mode 100644 lib/l10n/intl_fa.arb create mode 100644 lib/l10n/intl_fi.arb create mode 100644 lib/l10n/intl_fil.arb create mode 100644 lib/l10n/intl_fr.arb create mode 100644 lib/l10n/intl_ga.arb create mode 100644 lib/l10n/intl_gl.arb create mode 100644 lib/l10n/intl_he.arb create mode 100644 lib/l10n/intl_hi.arb create mode 100644 lib/l10n/intl_hr.arb create mode 100644 lib/l10n/intl_hu.arb create mode 100644 lib/l10n/intl_ia.arb create mode 100644 lib/l10n/intl_id.arb create mode 100644 lib/l10n/intl_ie.arb create mode 100644 lib/l10n/intl_it.arb create mode 100644 lib/l10n/intl_ja.arb create mode 100644 lib/l10n/intl_ka.arb create mode 100644 lib/l10n/intl_ko.arb create mode 100644 lib/l10n/intl_lt.arb create mode 100644 lib/l10n/intl_lv.arb create mode 100644 lib/l10n/intl_nb.arb create mode 100644 lib/l10n/intl_nl.arb create mode 100644 lib/l10n/intl_pl.arb create mode 100644 lib/l10n/intl_pt.arb create mode 100644 lib/l10n/intl_pt_BR.arb create mode 100644 lib/l10n/intl_pt_PT.arb create mode 100644 lib/l10n/intl_ro.arb create mode 100644 lib/l10n/intl_ru.arb create mode 100644 lib/l10n/intl_sk.arb create mode 100644 lib/l10n/intl_sl.arb create mode 100644 lib/l10n/intl_sr.arb create mode 100644 lib/l10n/intl_sv.arb create mode 100644 lib/l10n/intl_ta.arb create mode 100644 lib/l10n/intl_te.arb create mode 100644 lib/l10n/intl_th.arb create mode 100644 lib/l10n/intl_tr.arb create mode 100644 lib/l10n/intl_uk.arb create mode 100644 lib/l10n/intl_uz.arb create mode 100644 lib/l10n/intl_vi.arb create mode 100644 lib/l10n/intl_yue_Hant.arb create mode 100644 lib/l10n/intl_zh.arb create mode 100644 lib/l10n/intl_zh_Hant.arb create mode 100644 lib/main.dart create mode 100644 lib/pages/archive/archive.dart create mode 100644 lib/pages/archive/archive_view.dart create mode 100644 lib/pages/bootstrap/bootstrap_dialog.dart create mode 100644 lib/pages/chat/add_widget_tile.dart create mode 100644 lib/pages/chat/add_widget_tile_view.dart create mode 100644 lib/pages/chat/chat.dart create mode 100644 lib/pages/chat/chat_app_bar_list_tile.dart create mode 100644 lib/pages/chat/chat_app_bar_title.dart create mode 100644 lib/pages/chat/chat_emoji_picker.dart create mode 100644 lib/pages/chat/chat_event_list.dart create mode 100644 lib/pages/chat/chat_input_row.dart create mode 100644 lib/pages/chat/chat_view.dart create mode 100644 lib/pages/chat/command_hints.dart create mode 100644 lib/pages/chat/encryption_button.dart create mode 100644 lib/pages/chat/event_info_dialog.dart create mode 100644 lib/pages/chat/events/audio_player.dart create mode 100644 lib/pages/chat/events/cute_events.dart create mode 100644 lib/pages/chat/events/html_message.dart create mode 100644 lib/pages/chat/events/image_bubble.dart create mode 100644 lib/pages/chat/events/map_bubble.dart create mode 100644 lib/pages/chat/events/message.dart create mode 100644 lib/pages/chat/events/message_content.dart create mode 100644 lib/pages/chat/events/message_download_content.dart create mode 100644 lib/pages/chat/events/message_reactions.dart create mode 100644 lib/pages/chat/events/poll.dart create mode 100644 lib/pages/chat/events/reply_content.dart create mode 100644 lib/pages/chat/events/room_creation_state_event.dart create mode 100644 lib/pages/chat/events/state_message.dart create mode 100644 lib/pages/chat/events/video_player.dart create mode 100644 lib/pages/chat/input_bar.dart create mode 100644 lib/pages/chat/pinned_events.dart create mode 100644 lib/pages/chat/recording_input_row.dart create mode 100644 lib/pages/chat/recording_view_model.dart create mode 100644 lib/pages/chat/reply_display.dart create mode 100644 lib/pages/chat/seen_by_row.dart create mode 100644 lib/pages/chat/send_file_dialog.dart create mode 100644 lib/pages/chat/send_location_dialog.dart create mode 100644 lib/pages/chat/start_poll_bottom_sheet.dart create mode 100644 lib/pages/chat/sticker_picker_dialog.dart create mode 100644 lib/pages/chat/typing_indicators.dart create mode 100644 lib/pages/chat_access_settings/chat_access_settings_controller.dart create mode 100644 lib/pages/chat_access_settings/chat_access_settings_page.dart create mode 100644 lib/pages/chat_details/chat_details.dart create mode 100644 lib/pages/chat_details/chat_details_view.dart create mode 100644 lib/pages/chat_details/participant_list_item.dart create mode 100644 lib/pages/chat_encryption_settings/chat_encryption_settings.dart create mode 100644 lib/pages/chat_encryption_settings/chat_encryption_settings_view.dart create mode 100644 lib/pages/chat_list/chat_list.dart create mode 100644 lib/pages/chat_list/chat_list_body.dart create mode 100644 lib/pages/chat_list/chat_list_header.dart create mode 100644 lib/pages/chat_list/chat_list_item.dart create mode 100644 lib/pages/chat_list/chat_list_view.dart create mode 100644 lib/pages/chat_list/client_chooser_button.dart create mode 100644 lib/pages/chat_list/dummy_chat_list_item.dart create mode 100644 lib/pages/chat_list/navi_rail_item.dart create mode 100644 lib/pages/chat_list/search_title.dart create mode 100644 lib/pages/chat_list/space_view.dart create mode 100644 lib/pages/chat_list/status_msg_list.dart create mode 100644 lib/pages/chat_list/unread_bubble.dart create mode 100644 lib/pages/chat_members/chat_members.dart create mode 100644 lib/pages/chat_members/chat_members_view.dart create mode 100644 lib/pages/chat_permissions_settings/chat_permissions_settings.dart create mode 100644 lib/pages/chat_permissions_settings/chat_permissions_settings_view.dart create mode 100644 lib/pages/chat_permissions_settings/permission_list_tile.dart create mode 100644 lib/pages/chat_search/chat_search_files_tab.dart create mode 100644 lib/pages/chat_search/chat_search_images_tab.dart create mode 100644 lib/pages/chat_search/chat_search_message_tab.dart create mode 100644 lib/pages/chat_search/chat_search_page.dart create mode 100644 lib/pages/chat_search/chat_search_view.dart create mode 100644 lib/pages/device_settings/device_settings.dart create mode 100644 lib/pages/device_settings/device_settings_view.dart create mode 100644 lib/pages/device_settings/user_device_list_item.dart create mode 100644 lib/pages/dialer/dialer.dart create mode 100644 lib/pages/dialer/pip/dismiss_keyboard.dart create mode 100644 lib/pages/dialer/pip/pip_view.dart create mode 100644 lib/pages/homeserver_picker/homeserver_picker.dart create mode 100644 lib/pages/homeserver_picker/homeserver_picker_view.dart create mode 100644 lib/pages/image_viewer/image_viewer.dart create mode 100644 lib/pages/image_viewer/image_viewer_view.dart create mode 100644 lib/pages/image_viewer/video_player.dart create mode 100644 lib/pages/invitation_selection/invitation_selection.dart create mode 100644 lib/pages/invitation_selection/invitation_selection_view.dart create mode 100644 lib/pages/key_verification/key_verification_dialog.dart create mode 100644 lib/pages/login/login.dart create mode 100644 lib/pages/login/login_view.dart create mode 100644 lib/pages/new_group/new_group.dart create mode 100644 lib/pages/new_group/new_group_view.dart create mode 100644 lib/pages/new_private_chat/new_private_chat.dart create mode 100644 lib/pages/new_private_chat/new_private_chat_view.dart create mode 100644 lib/pages/new_private_chat/qr_scanner_modal.dart create mode 100644 lib/pages/settings/settings.dart create mode 100644 lib/pages/settings/settings_view.dart create mode 100644 lib/pages/settings_3pid/settings_3pid.dart create mode 100644 lib/pages/settings_3pid/settings_3pid_view.dart create mode 100644 lib/pages/settings_chat/settings_chat.dart create mode 100644 lib/pages/settings_chat/settings_chat_view.dart create mode 100644 lib/pages/settings_emotes/import_archive_dialog.dart create mode 100644 lib/pages/settings_emotes/settings_emotes.dart create mode 100644 lib/pages/settings_emotes/settings_emotes_view.dart create mode 100644 lib/pages/settings_homeserver/settings_homeserver.dart create mode 100644 lib/pages/settings_homeserver/settings_homeserver_view.dart create mode 100644 lib/pages/settings_ignore_list/settings_ignore_list.dart create mode 100644 lib/pages/settings_ignore_list/settings_ignore_list_view.dart create mode 100644 lib/pages/settings_multiple_emotes/settings_multiple_emotes.dart create mode 100644 lib/pages/settings_multiple_emotes/settings_multiple_emotes_view.dart create mode 100644 lib/pages/settings_notifications/push_rule_extensions.dart create mode 100644 lib/pages/settings_notifications/settings_notifications.dart create mode 100644 lib/pages/settings_notifications/settings_notifications_view.dart create mode 100644 lib/pages/settings_password/settings_password.dart create mode 100644 lib/pages/settings_password/settings_password_view.dart create mode 100644 lib/pages/settings_security/settings_security.dart create mode 100644 lib/pages/settings_security/settings_security_view.dart create mode 100644 lib/pages/settings_style/settings_style.dart create mode 100644 lib/pages/settings_style/settings_style_view.dart create mode 100644 lib/utils/account_bundles.dart create mode 100644 lib/utils/account_config.dart create mode 100644 lib/utils/adaptive_bottom_sheet.dart create mode 100644 lib/utils/background_push.dart create mode 100644 lib/utils/beautify_string_extension.dart create mode 100644 lib/utils/client_download_content_extension.dart create mode 100644 lib/utils/client_manager.dart create mode 100644 lib/utils/color_value.dart create mode 100644 lib/utils/custom_http_client.dart create mode 100644 lib/utils/custom_image_resizer.dart create mode 100644 lib/utils/custom_scroll_behaviour.dart create mode 100644 lib/utils/date_time_extension.dart create mode 100644 lib/utils/error_reporter.dart create mode 100644 lib/utils/event_checkbox_extension.dart create mode 100644 lib/utils/file_description.dart create mode 100644 lib/utils/file_selector.dart create mode 100644 lib/utils/fluffy_share.dart create mode 100644 lib/utils/init_with_restore.dart create mode 100644 lib/utils/localized_exception_extension.dart create mode 100644 lib/utils/markdown_context_builder.dart create mode 100644 lib/utils/matrix_sdk_extensions/device_extension.dart create mode 100644 lib/utils/matrix_sdk_extensions/event_extension.dart create mode 100644 lib/utils/matrix_sdk_extensions/filtered_timeline_extension.dart create mode 100644 lib/utils/matrix_sdk_extensions/flutter_matrix_dart_sdk_database/builder.dart create mode 100644 lib/utils/matrix_sdk_extensions/flutter_matrix_dart_sdk_database/cipher.dart create mode 100644 lib/utils/matrix_sdk_extensions/flutter_matrix_dart_sdk_database/sqlcipher_stub.dart create mode 100644 lib/utils/matrix_sdk_extensions/matrix_file_extension.dart create mode 100644 lib/utils/matrix_sdk_extensions/matrix_locals.dart create mode 100644 lib/utils/notification_background_handler.dart create mode 100644 lib/utils/other_party_can_receive.dart create mode 100644 lib/utils/platform_infos.dart create mode 100644 lib/utils/push_helper.dart create mode 100644 lib/utils/resize_video.dart create mode 100644 lib/utils/room_status_extension.dart create mode 100644 lib/utils/show_scaffold_dialog.dart create mode 100644 lib/utils/show_update_snackbar.dart create mode 100644 lib/utils/size_string.dart create mode 100644 lib/utils/stream_extension.dart create mode 100644 lib/utils/string_color.dart create mode 100644 lib/utils/sync_status_localization.dart create mode 100644 lib/utils/uia_request_manager.dart create mode 100644 lib/utils/url_launcher.dart create mode 100644 lib/utils/voip/user_media_manager.dart create mode 100644 lib/utils/voip/video_renderer.dart create mode 100644 lib/utils/voip_plugin.dart create mode 100644 lib/widgets/adaptive_dialogs/adaptive_dialog_action.dart create mode 100644 lib/widgets/adaptive_dialogs/dialog_text_field.dart create mode 100644 lib/widgets/adaptive_dialogs/public_room_dialog.dart create mode 100644 lib/widgets/adaptive_dialogs/show_modal_action_popup.dart create mode 100644 lib/widgets/adaptive_dialogs/show_ok_cancel_alert_dialog.dart create mode 100644 lib/widgets/adaptive_dialogs/show_text_input_dialog.dart create mode 100644 lib/widgets/adaptive_dialogs/user_dialog.dart create mode 100644 lib/widgets/app_lock.dart create mode 100644 lib/widgets/avatar.dart create mode 100644 lib/widgets/avatar_page_header.dart create mode 100644 lib/widgets/blur_hash.dart create mode 100644 lib/widgets/chat_settings_popup_menu.dart create mode 100644 lib/widgets/config_viewer.dart create mode 100644 lib/widgets/error_widget.dart create mode 100644 lib/widgets/fluffy_chat_app.dart create mode 100644 lib/widgets/future_loading_dialog.dart create mode 100644 lib/widgets/hover_builder.dart create mode 100644 lib/widgets/layouts/empty_page.dart create mode 100644 lib/widgets/layouts/login_scaffold.dart create mode 100644 lib/widgets/layouts/max_width_body.dart create mode 100644 lib/widgets/layouts/two_column_layout.dart create mode 100644 lib/widgets/local_notifications_extension.dart create mode 100644 lib/widgets/lock_screen.dart create mode 100644 lib/widgets/log_view.dart create mode 100644 lib/widgets/matrix.dart create mode 100644 lib/widgets/member_actions_popup_menu_button.dart create mode 100644 lib/widgets/mxc_image.dart create mode 100644 lib/widgets/mxc_image_viewer.dart create mode 100644 lib/widgets/navigation_rail.dart create mode 100644 lib/widgets/permission_slider_dialog.dart create mode 100644 lib/widgets/presence_builder.dart create mode 100644 lib/widgets/qr_code_viewer.dart create mode 100644 lib/widgets/settings_switch_list_tile.dart create mode 100644 lib/widgets/share_scaffold_dialog.dart create mode 100644 lib/widgets/theme_builder.dart create mode 100644 lib/widgets/unread_rooms_badge.dart create mode 100644 licenses.yaml create mode 100644 linux/.gitignore create mode 100644 linux/CMakeLists.txt create mode 100644 linux/flutter/CMakeLists.txt create mode 100644 linux/flutter/generated_plugin_registrant.cc create mode 100644 linux/flutter/generated_plugin_registrant.h create mode 100644 linux/flutter/generated_plugins.cmake create mode 100644 linux/main.cc create mode 100644 linux/my_application.cc create mode 100644 linux/my_application.h create mode 100644 macos/.gitignore create mode 100644 macos/Flutter/Flutter-Debug.xcconfig create mode 100644 macos/Flutter/Flutter-Release.xcconfig create mode 100644 macos/Flutter/GeneratedPluginRegistrant.swift create mode 100644 macos/Podfile create mode 100644 macos/Podfile.lock create mode 100644 macos/Runner.xcodeproj/project.pbxproj create mode 100644 macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 macos/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 macos/Runner/AppDelegate.swift create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/1024-mac.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/128-mac.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/16-mac.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/256-mac.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/32-mac.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/512-mac.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/64-mac.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 macos/Runner/Base.lproj/MainMenu.xib create mode 100644 macos/Runner/Configs/AppInfo.xcconfig create mode 100644 macos/Runner/Configs/Debug.xcconfig create mode 100644 macos/Runner/Configs/Release.xcconfig create mode 100644 macos/Runner/Configs/Warnings.xcconfig create mode 100644 macos/Runner/DebugProfile.entitlements create mode 100644 macos/Runner/Info.plist create mode 100644 macos/Runner/MainFlutterWindow.swift create mode 100644 macos/Runner/Release.entitlements create mode 100644 pubspec.lock create mode 100644 pubspec.yaml create mode 100644 scripts/add-firebase-messaging.sh create mode 100644 scripts/build-ios.sh create mode 100644 scripts/build-macos.sh create mode 100644 scripts/build-windows.ps1 create mode 100644 scripts/create_fdroid_repos.sh create mode 100644 scripts/generate-locale-config.sh create mode 100644 scripts/generate_command_hints_glue.sh create mode 100644 scripts/integration-check-release-build.sh create mode 100644 scripts/integration-create-environment-variables.sh create mode 100644 scripts/integration-prepare-homeserver.sh create mode 100644 scripts/integration-prepare-host.sh create mode 100644 scripts/integration-server-conduit.sh create mode 100644 scripts/integration-server-dendrite.sh create mode 100644 scripts/integration-server-synapse.sh create mode 100644 scripts/integration-start-avd.sh create mode 100644 scripts/package-windows.ps1 create mode 100644 scripts/prepare-android-release.sh create mode 100644 scripts/prepare-fdroid.sh create mode 100644 scripts/prepare-web.sh create mode 100644 scripts/prepare-windows.ps1 create mode 100644 scripts/release-ios-testflight.sh create mode 100644 scripts/update-dependencies.sh create mode 100644 snap/gui/fluffychat.desktop create mode 100644 snap/gui/fluffychat.png create mode 100644 snap/snapcraft.yaml create mode 100644 test/archive_test.dart create mode 100644 test/command_hint_test.dart create mode 100644 test/homeserver_picker_test.dart create mode 100644 test/utils/test_client.dart create mode 100644 test/widget_test.dart create mode 100644 web/auth.html create mode 100644 web/favicon.png create mode 100644 web/icons/Icon-192.png create mode 100644 web/icons/Icon-512.png create mode 100644 web/index.html create mode 100644 web/manifest.json create mode 100644 web/splash/img/dark-1x.png create mode 100644 web/splash/img/dark-2x.png create mode 100644 web/splash/img/dark-3x.png create mode 100644 web/splash/img/dark-4x.png create mode 100644 web/splash/img/light-1x.png create mode 100644 web/splash/img/light-2x.png create mode 100644 web/splash/img/light-3x.png create mode 100644 web/splash/img/light-4x.png create mode 100644 web/splash/style.css create mode 100644 windows/.gitignore create mode 100644 windows/CMakeLists.txt create mode 100644 windows/flutter/CMakeLists.txt create mode 100644 windows/flutter/generated_plugin_registrant.cc create mode 100644 windows/flutter/generated_plugin_registrant.h create mode 100644 windows/flutter/generated_plugins.cmake create mode 100644 windows/runner/CMakeLists.txt create mode 100644 windows/runner/Runner.rc create mode 100644 windows/runner/flutter_window.cpp create mode 100644 windows/runner/flutter_window.h create mode 100644 windows/runner/main.cpp create mode 100644 windows/runner/resource.h create mode 100644 windows/runner/resources/app_icon.ico create mode 100644 windows/runner/runner.exe.manifest create mode 100644 windows/runner/utils.cpp create mode 100644 windows/runner/utils.h create mode 100644 windows/runner/win32_window.cpp create mode 100644 windows/runner/win32_window.h diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000..6ab0888 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,3 @@ +* @krille-chan +pubspec.* @dependabot +lib/l10n/*.arb @weblate \ No newline at end of file diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..402c3c7 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,13 @@ +# These are supported funding model platforms + +github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: krille +tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: KrilleChritzelius +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry +custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 0000000..d241cf9 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,73 @@ +name: 🐛 Bug report +description: Create a report to help us improve +labels: bug +body: + - type: textarea + id: bug-description + attributes: + label: "Bug Description" + description: "A clear and concise description of what the bug is. Please add screenshots if you have as they usually help us a lot." + placeholder: "Describe the bug here..." + validations: + required: true + - type: textarea + id: reproduce-steps + attributes: + label: "Steps to Reproduce" + description: "Steps to reproduce the behavior:" + placeholder: "1. Go to '...'\n2. Click on '...'\n3. Scroll down to '...'\n4. See error" + validations: + required: true + - type: textarea + id: expected-behavior + attributes: + label: "Expected Behavior" + description: "A clear and concise description of what you expected to happen." + placeholder: "Describe what you expected to happen here..." + validations: + required: true + - type: input + id: app-version + attributes: + label: "App Version" + description: "Please provide the version of the app you are using." + placeholder: "e.g. 1.12.0" + validations: + required: true + - type: dropdown + id: platform + attributes: + label: "Platform" + description: "Select the platform where the bug occurs." + options: + - Android (PlayStore) + - Android (F-Droid) + - Android (Other) + - iOS (iPhone) + - iOS (iPad) + - Web (Chrome(ium)) + - Web (Firefox) + - Web (Safari) + - Linux (Snap) + - Linux (Flatpak) + - Linux (Other) + - macOS (iOS/iPadOS version) + - macOS (Self-compiled) + - Windows (Self-compiled) + validations: + required: true + - type: input + id: platform-info + attributes: + label: "Additional Platform Information" + description: "Please provide the following information:" + placeholder: "Device: [e.g. iPhone6, PC, Pixel 3]\nOS: [e.g. iOS, Android, Windows, Linux, macOS]\nBrowser (if applicable): [e.g. Chrome, Safari]" + validations: + required: true + - type: textarea + id: additional-context + attributes: + label: "Additional Context" + description: "Add any other context about the problem here." + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..ddcf8ed --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,5 @@ +blank_issues_enabled: false +contact_links: + - name: 👬 FluffyChat Community + url: https://matrix.to/#/#fluffy-space:matrix.org + about: Please ask and answer questions here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 0000000..4007c88 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,34 @@ +name: 💡 Feature Request +description: Suggest an idea for this project +labels: enhancement +body: + - type: textarea + id: feature-description + attributes: + label: "Feature Description" + description: "Provide a clear and concise description of the feature." + placeholder: "Describe the feature here..." + validations: + required: true + - type: textarea + id: rationale + attributes: + label: "Rationale" + description: "Explain why this feature should be added." + placeholder: "Describe the rationale for the feature here..." + validations: + required: true + - type: textarea + id: mockup + attributes: + label: "Mockup" + description: "If applicable, add any visual mock-ups of the feature." + validations: + required: false + - type: textarea + id: additional-context + attributes: + label: "Additional Context" + description: "Add any other context or screenshots about the feature request here." + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/issue_pr_management.yml b/.github/ISSUE_TEMPLATE/issue_pr_management.yml new file mode 100644 index 0000000..3a75092 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/issue_pr_management.yml @@ -0,0 +1,27 @@ +name: Close Inactive Issues And PRs +on: + schedule: + - cron: "30 1 * * *" + +jobs: + close-issues: + runs-on: ubuntu-latest + permissions: + issues: write + pull-requests: write + steps: + - uses: actions/stale@v9 + with: + days-before-issue-stale: 365 + days-before-issue-close: 14 + stale-issue-label: "stale" + stale-issue-message: "This issue is stale because it has been open for 365 days with no activity." + close-issue-message: "This issue was closed because it has been inactive for 14 days since being marked as stale." + stale-pr-message: "This pull request is stale because it has been open for 365 days with no activity." + close-pr-message: "This pull request was closed because it has been inactive for 14 days since being marked as stale." + days-before-pr-stale: 365 + days-before-pr-close: 14 + exempt-milestones: true + exempt-assignees: krille-chan + operations-per-run: 500 + repo-token: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/test_report.md b/.github/ISSUE_TEMPLATE/test_report.md new file mode 100644 index 0000000..9a7ed70 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/test_report.md @@ -0,0 +1,41 @@ +--- +name: 📝 Test +about: A detailed protocol for testing all features +title: 'Test Report' +labels: test +--- + +1. App receives push notifications over Firebase Cloud Messaging when it is in background/terminated: + - [ ] Android + - [ ] iOS +2. App receives push notifications over Unified Push when it is in background/terminated: + - [ ] Android +3. Notifications for rooms, which are not in foreground, are working: + - [ ] Web + - [ ] Linux +4. QR Code scanner can still scan links to start a new chat: + - [ ] Android + - [ ] iOS +5. Recording and playing voice messages works: + - [ ] Android + - [ ] iOS + - [ ] Web (play only) +6. Sending and downloading files/images works: + - [ ] Android + - [ ] iOS + - [ ] Web + - [ ] Linux +7. Sharing texts/files/images from other apps to FluffyChat works: + - [ ] Android + - [ ] iOS +8. Login with single sign on works: + - [ ] Android + - [ ] iOS + - [ ] Web + - [ ] Linux +9. Test if the app lock works as intended and appears on opening/resuming the app: + - [ ] Android + - [ ] iOS +10. Drag&Drop to send a file into a chat still works: + - [ ] Web + - [ ] Linux diff --git a/.github/actions/free_up_space/action.yaml b/.github/actions/free_up_space/action.yaml new file mode 100644 index 0000000..abe2c4b --- /dev/null +++ b/.github/actions/free_up_space/action.yaml @@ -0,0 +1,50 @@ +name: "Free up space" + +inputs: + target: + required: true + +runs: + using: "composite" + steps: + - name: Free up space + shell: bash + run: | + sudo rm -rf /usr/share/dotnet + sudo rm -rf /usr/local/share/boost + sudo rm -rf /usr/local/share/chromium + sudo rm -rf /usr/local/share/powershell + sudo rm -rf /usr/local/share/vcpkg + sudo rm -rf /usr/local/share/miniconda + sudo rm -rf /opt/ghc + sudo rm -rf /opt/hostedtoolcache/CodeQL + sudo rm -rf /opt/hostedtoolcache/go + sudo rm -rf /opt/hostedtoolcache/Python + sudo rm -rf /opt/hostedtoolcache/node + sudo rm -rf /opt/hostedtoolcache/R + sudo rm -rf /opt/hostedtoolcache/Java + sudo rm -rf /opt/hostedtoolcache/LLVM + sudo rm -rf /opt/hostedtoolcache/Swift + sudo rm -rf /opt/hostedtoolcache/Php + sudo rm -rf /opt/hostedtoolcache/Perl + sudo rm -rf /opt/hostedtoolcache/Scala + sudo rm -rf /opt/hostedtoolcache/Julia + sudo rm -rf /opt/hostedtoolcache/Mono + sudo rm -rf /opt/hostedtoolcache/PowerShell + sudo rm -rf /opt/hostedtoolcache/Crystal + sudo rm -rf /opt/hostedtoolcache/Elixir + sudo rm -rf /opt/hostedtoolcache/Erlang + sudo rm -rf /opt/hostedtoolcache/FSharp + sudo rm -rf /opt/hostedtoolcache/Haskell + sudo rm -rf /opt/hostedtoolcache/OCaml + sudo rm -rf /opt/hostedtoolcache/Sbt + sudo rm -rf /opt/hostedtoolcache/Solidity + sudo rm -rf /opt/hostedtoolcache/VisualStudio + sudo rm -rf /opt/hostedtoolcache/WinAppDriver + sudo rm -rf /opt/hostedtoolcache/Xamarin + sudo rm -rf /opt/hostedtoolcache/Yarn + sudo rm -rf /opt/hostedtoolcache/Zephyr + sudo rm -rf /opt/hostedtoolcache/zig + sudo rm -rf /opt/hostedtoolcache/zulu + sudo rm -rf /opt/hostedtoolcache/azcopy + echo "export CARGO_BUILD_JOBS=1" >> $GITHUB_ENV diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..37557f7 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,23 @@ +version: 2 +updates: + - package-ecosystem: "pub" + directory: "/" + schedule: + interval: "daily" + allow: + - dependency-name: "*" + commit-message: + prefix: "build: " + include: "scope" + assignees: + - "krille-chan" + open-pull-requests-limit: 5 + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "daily" + allow: + - dependency-name: "*" + commit-message: + prefix: "build: " + include: "scope" diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000..7f4e66e --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,14 @@ +*Thank you so much for your contribution to FluffyChat ❤️❤️❤️* + +- [ ] I have read and understood the [contributing guidelines](https://github.com/krille-chan/fluffychat/blob/main/CONTRIBUTING.md). + +### Pull Request has been tested on: + +- [ ] Android +- [ ] iOS +- [ ] Browser (Chromium based) +- [ ] Browser (Firefox based) +- [ ] Browser (WebKit based) +- [ ] Desktop Linux +- [ ] Desktop Windows +- [ ] Desktop macOS \ No newline at end of file diff --git a/.github/workflows/check_duplicates.yaml b/.github/workflows/check_duplicates.yaml new file mode 100644 index 0000000..cc59758 --- /dev/null +++ b/.github/workflows/check_duplicates.yaml @@ -0,0 +1,28 @@ +name: Check duplicates + +on: + issues: + types: [opened] + +jobs: + check_duplicates: + runs-on: ubuntu-latest + env: + title: ${{ github.event.issue.title }} + author: ${{ github.event.issue.user.login }} + number: ${{ github.event.issue.number }} + GH_TOKEN: ${{ github.token }} + steps: + - uses: actions/checkout@v5 + - name: Check duplicates + run: | + issues=$(gh issue list --search '${{ env.title }}' --json number,title,url) + number=${{ env.number }} + issues_filtered=$(echo "$issues" | jq --arg num "$number" 'map(select(.number != ($num | tonumber)))') + if [ "$(echo "$issues_filtered" | jq length)" -eq 0 ]; then + echo "No duplicates found." + else + issues_markdown=$(echo "$issues_filtered" | jq -r '.[] | "- [" + .title + "](" + .url + ")"') + formatted_body=$(echo -e "@${{ env.author }}\nPossible duplication of:\n$issues_markdown") + gh issue comment ${{ github.event.issue.number }} --body "$formatted_body" + fi \ No newline at end of file diff --git a/.github/workflows/integrate.yaml b/.github/workflows/integrate.yaml new file mode 100644 index 0000000..c21bda7 --- /dev/null +++ b/.github/workflows/integrate.yaml @@ -0,0 +1,103 @@ +name: Pull Request Workflow + +on: + pull_request: + merge_group: + +jobs: + code_tests: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + - run: ./scripts/generate-locale-config.sh + - run: git diff --exit-code + - run: cat .github/workflows/versions.env >> $GITHUB_ENV + - uses: subosito/flutter-action@v2 + with: + flutter-version: ${{ env.FLUTTER_VERSION }} + cache: true + - run: flutter pub get + - run: flutter gen-l10n + - name: Check formatting + run: dart format lib/ test/ --set-exit-if-changed + - name: Check import formatting + run: dart run import_sorter:main --no-comments --exit-if-changed + - name: Check license compliance + run: dart run license_checker check-licenses -c licenses.yaml --problematic + - run: flutter analyze + - name: Add Firebase Messaging + run: ./scripts/add-firebase-messaging.sh + - run: flutter analyze + - run: flutter test + + build_debug_apk: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + - run: cat .github/workflows/versions.env >> $GITHUB_ENV + - uses: actions/setup-java@v5 + with: + java-version: ${{ env.JAVA_VERSION }} + distribution: "zulu" + - uses: subosito/flutter-action@v2 + with: + flutter-version: ${{ env.FLUTTER_VERSION }} + cache: true + - uses: ./.github/actions/free_up_space + - uses: moonrepo/setup-rust@v1 + - run: flutter pub get + - run: flutter build apk --debug --target-platform android-arm64 + + build_debug_web: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + - run: cat .github/workflows/versions.env >> $GITHUB_ENV + - uses: subosito/flutter-action@v2 + with: + flutter-version: ${{ env.FLUTTER_VERSION }} + cache: true + - uses: moonrepo/setup-rust@v1 + - run: rustup component add rust-src --toolchain nightly-x86_64-unknown-linux-gnu + - run: flutter pub get + - name: Prepare web + run: ./scripts/prepare-web.sh + - run: flutter build web + + build_debug_linux: + strategy: + matrix: + arch: [ x64, arm64 ] + runs-on: ${{ matrix.arch == 'arm64' && 'ubuntu-24.04-arm' || 'ubuntu-latest'}} + steps: + - uses: actions/checkout@v5 + - run: cat .github/workflows/versions.env >> $GITHUB_ENV + - name: Install dependencies + run: sudo apt-get update && sudo apt-get install git wget curl clang cmake ninja-build pkg-config libgtk-3-dev libblkid-dev liblzma-dev libjsoncpp-dev cmake-data libsecret-1-dev libsecret-1-0 librhash0 libssl-dev libwebkit2gtk-4.1-dev -y + - name: Install Flutter + run: | + git clone --branch ${{ env.FLUTTER_VERSION }} https://github.com/flutter/flutter.git + ./flutter/bin/flutter doctor + - uses: moonrepo/setup-rust@v1 + - run: ./flutter/bin/flutter pub get + - run: ./flutter/bin/flutter build linux --target-platform linux-${{ matrix.arch }} + + build_debug_ios: + runs-on: macos-15 + steps: + - uses: actions/checkout@v5 + - run: cat .github/workflows/versions.env >> $GITHUB_ENV + - uses: subosito/flutter-action@v2 + with: + flutter-version: ${{ env.FLUTTER_VERSION }} + cache: true + - name: Use Xcode 16.4 + run: sudo xcode-select --switch /Applications/Xcode_16.4.app + - run: brew install sqlcipher + - uses: moonrepo/setup-rust@v1 + - name: Add Firebase Messaging + run: | + flutter pub add fcm_shared_isolate:0.1.0 + sed -i '' 's,//,,g' lib/utils/background_push.dart + - run: flutter pub get + - run: flutter build ios --no-codesign diff --git a/.github/workflows/main_deploy.yaml b/.github/workflows/main_deploy.yaml new file mode 100644 index 0000000..4cd67bf --- /dev/null +++ b/.github/workflows/main_deploy.yaml @@ -0,0 +1,84 @@ +name: Main Deploy Workflow + +on: + push: + branches: + - main + workflow_dispatch: + +concurrency: + group: main_deploy + cancel-in-progress: true + +jobs: + deploy_web: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + - run: cat .github/workflows/versions.env >> $GITHUB_ENV + - uses: subosito/flutter-action@v2 + with: + flutter-version: ${{ env.FLUTTER_VERSION }} + - uses: moonrepo/setup-rust@v1 + - run: rustup component add rust-src --toolchain nightly-x86_64-unknown-linux-gnu + - name: Prepare web + run: ./scripts/prepare-web.sh + - run: rm ./assets/vodozemac/.gitignore + - run: flutter pub get + - name: Build Release Web + run: flutter build web --dart-define=FLUTTER_WEB_CANVASKIT_URL=canvaskit/ --release --source-maps --base-href "/nightly/" + - run: mv build/web/ public + - name: Deploy to GitHub Pages + uses: peaceiris/actions-gh-pages@v4 + with: + personal_token: ${{ secrets.PAGES_DEPLOY_TOKEN }} + publish_dir: ./public + publish_branch: gh-pages + destination_dir: nightly + + deploy_playstore_internal: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + - run: cat .github/workflows/versions.env >> $GITHUB_ENV + - uses: actions/setup-java@v5 + with: + java-version: ${{ env.JAVA_VERSION }} + distribution: 'zulu' + - uses: subosito/flutter-action@v2 + with: + flutter-version: ${{ env.FLUTTER_VERSION }} + cache: true + - name: Set up Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: '3.3' + - uses: ./.github/actions/free_up_space + - uses: moonrepo/setup-rust@v1 + - name: Install Fastlane + run: gem install fastlane -NV + - name: Add Firebase Messaging + run: | + echo '${{secrets.GOOGLE_SERVICES_JSON}}' | base64 -d > android/app/google-services.json + ./scripts/add-firebase-messaging.sh + - run: flutter pub get + - name: Prepare Android Release Build + env: + FDROID_KEY: ${{ secrets.FDROID_KEY }} + FDROID_KEY_PASS: ${{ secrets.FDROID_KEY_PASS }} + PLAYSTORE_DEPLOY_KEY: ${{ secrets.PLAYSTORE_DEPLOY_KEY }} + run: ./scripts/prepare-android-release.sh + - name: Build Android Release + run: flutter build appbundle --target-platform android-arm,android-arm64 + - name: Set changelog + working-directory: android/fastlane/metadata/android/en-US/changelogs + run: git log --no-merges -1 --pretty=%B > default.txt + - name: Deploy Android Release + run: | + mkdir -p build/android + cp build/app/outputs/bundle/release/app-release.aab build/android/ + cd android + bundle install + bundle update fastlane + bundle exec fastlane deploy_internal_test + cd .. diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 0000000..6737d5b --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,216 @@ +name: Release Workflow + +on: + release: + types: + - created + +concurrency: + group: release_workflow + cancel-in-progress: true + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + +jobs: + build_web: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + - run: cat .github/workflows/versions.env >> $GITHUB_ENV + - uses: subosito/flutter-action@v2 + with: + flutter-version: ${{ env.FLUTTER_VERSION }} + cache: true + - name: Install dependencies + run: sudo apt-get update && sudo apt-get install nodejs -y + - uses: moonrepo/setup-rust@v1 + - run: rustup component add rust-src --toolchain nightly-x86_64-unknown-linux-gnu + - run: flutter pub get + - name: Prepare web + run: ./scripts/prepare-web.sh + - run: rm ./assets/vodozemac/.gitignore + - name: Build Release Web + run: flutter build web --dart-define=FLUTTER_WEB_CANVASKIT_URL=canvaskit/ --release --source-maps --base-href "/web/" + - name: Create archive + run: tar -czf fluffychat-web.tar.gz build/web/ + - name: Upload Web Build + uses: actions/upload-artifact@v5 + with: + name: Web Build + path: fluffychat-web.tar.gz + - name: Upload to release + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.PAGES_DEPLOY_TOKEN }} + with: + upload_url: ${{ github.event.release.upload_url }} + asset_path: fluffychat-web.tar.gz + asset_name: fluffychat-web.tar.gz + asset_content_type: application/gzip + - name: Install and build tailwindcss + working-directory: docs + run: | + npm install tailwindcss @tailwindcss/cli + npx tailwindcss -o ./tailwind.css + - name: Build Website + run: | + mv docs public + mv repo public || true + mv build/web/ public/web + cp public/web -r public/nightly + - name: Deploy to GitHub Pages + if: startsWith(github.ref, 'refs/tags/v') + uses: peaceiris/actions-gh-pages@v4 + with: + personal_token: ${{ secrets.PAGES_DEPLOY_TOKEN }} + publish_dir: ./public + publish_branch: gh-pages + cname: fluffychat.im + + build_apk: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + - run: cat .github/workflows/versions.env >> $GITHUB_ENV + - uses: actions/setup-java@v5 + with: + java-version: ${{ env.JAVA_VERSION }} + distribution: 'zulu' + - uses: subosito/flutter-action@v2 + with: + flutter-version: ${{ env.FLUTTER_VERSION }} + cache: true + - name: Add Firebase Messaging + run: | + echo '${{secrets.GOOGLE_SERVICES_JSON}}' | base64 -d > android/app/google-services.json + ./scripts/add-firebase-messaging.sh + - uses: ./.github/actions/free_up_space + - uses: moonrepo/setup-rust@v1 + - run: flutter pub get + - name: Prepare Android Release Build + env: + FDROID_KEY: ${{ secrets.FDROID_KEY }} + FDROID_KEY_PASS: ${{ secrets.FDROID_KEY_PASS }} + PLAYSTORE_DEPLOY_KEY: ${{ secrets.PLAYSTORE_DEPLOY_KEY }} + run: ./scripts/prepare-android-release.sh + - run: flutter build apk --release --target-platform android-arm,android-arm64 + - name: Upload to release + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.PAGES_DEPLOY_TOKEN }} + with: + upload_url: ${{ github.event.release.upload_url }} + asset_path: build/app/outputs/apk/release/app-release.apk + asset_name: fluffychat.apk + asset_content_type: application/vnd.android.package-archive + + build_linux: + strategy: + matrix: + arch: [ x64, arm64 ] + runs-on: ${{ matrix.arch == 'arm64' && 'ubuntu-24.04-arm' || 'ubuntu-latest'}} + steps: + - uses: actions/checkout@v5 + - run: cat .github/workflows/versions.env >> $GITHUB_ENV + - name: Install dependencies + run: sudo apt-get update && sudo apt-get install curl clang cmake ninja-build pkg-config libgtk-3-dev libblkid-dev liblzma-dev libjsoncpp-dev cmake-data libsecret-1-dev libsecret-1-0 librhash0 libssl-dev libwebkit2gtk-4.1-dev -y + - name: Install Flutter + run: | + git clone --branch ${{ env.FLUTTER_VERSION }} https://github.com/flutter/flutter.git + ./flutter/bin/flutter doctor + - uses: moonrepo/setup-rust@v1 + - run: ./flutter/bin/flutter pub get + - run: ./flutter/bin/flutter build linux --target-platform linux-${{ matrix.arch }} + - name: Create archive + run: tar -czf fluffychat-linux-${{ matrix.arch }}.tar.gz -C build/linux/${{ matrix.arch }}/release/bundle/ . + - name: Upload to release + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.PAGES_DEPLOY_TOKEN }} + with: + upload_url: ${{ github.event.release.upload_url }} + asset_path: fluffychat-linux-${{ matrix.arch }}.tar.gz + asset_name: fluffychat-linux-${{ matrix.arch }}.tar.gz + asset_content_type: application/gzip + + deploy_playstore: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + - run: cat .github/workflows/versions.env >> $GITHUB_ENV + - uses: actions/setup-java@v5 + with: + java-version: ${{ env.JAVA_VERSION }} + distribution: 'zulu' + - uses: subosito/flutter-action@v2 + with: + flutter-version: ${{ env.FLUTTER_VERSION }} + cache: true + - name: Set up Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: '3.3' + - uses: ./.github/actions/free_up_space + - uses: moonrepo/setup-rust@v1 + - name: Install Fastlane + working-directory: android + run: gem install fastlane -NV + - name: Add Firebase Messaging + run: | + echo '${{secrets.GOOGLE_SERVICES_JSON}}' | base64 -d > android/app/google-services.json + ./scripts/add-firebase-messaging.sh + - run: flutter pub get + - name: Prepare Android Release Build + env: + FDROID_KEY: ${{ secrets.FDROID_KEY }} + FDROID_KEY_PASS: ${{ secrets.FDROID_KEY_PASS }} + PLAYSTORE_DEPLOY_KEY: ${{ secrets.PLAYSTORE_DEPLOY_KEY }} + run: ./scripts/prepare-android-release.sh + - name: Build Android Release + run: flutter build appbundle --target-platform android-arm,android-arm64 + - name: Get Tag Name + id: tag_name + run: echo "::set-output name=tag::$(echo ${GITHUB_REF#refs/tags/})" + - name: Deploy Android Release + run: | + mkdir -p build/android + cp build/app/outputs/bundle/release/app-release.aab build/android/ + cd android + bundle install + bundle update fastlane + bundle exec fastlane deploy_internal_test + if [[ $GITHUB_REF_NAME == rc* ]]; then + bundle exec fastlane deploy_candidate + else + bundle exec fastlane deploy_release + fi + cd .. + + deploy_docker: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + steps: + - name: Check out Git repository + uses: actions/checkout@v5 + - name: Log in to the Container registry + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + - name: Build and push Docker image + uses: docker/build-push-action@v6 + with: + context: . + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} diff --git a/.github/workflows/versions.env b/.github/workflows/versions.env new file mode 100644 index 0000000..71fae15 --- /dev/null +++ b/.github/workflows/versions.env @@ -0,0 +1,2 @@ +FLUTTER_VERSION=3.38.1 +JAVA_VERSION=17 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7ed5bfe --- /dev/null +++ b/.gitignore @@ -0,0 +1,73 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +*.snap +.DS_Store +.local/ +.atom/ +.buildlog/ +.history +.svn/ +prime + +# libolm package +web/Imaging.js +web/Imaging.wasm + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.packages +.pub-cache/ +.pub/ +/build/ + +# Web related +docs/tailwind.css + +# Exceptions to above rules. +!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages + + +/key.jks +/android/key.properties +**/android/app/.cxx +android/key.jks +android/keys.json +android/Gemfile.lock +lib/l10n/*.dart +ios/Flutter/.last_build_id +ios/Podfile.lock +ios/Runner.ipa +ios/Runner/GoogleServices-Info.plist + +/windows/out +/winuwp/out +/linux/out +/macos/out +.vs +olm +docs/node_modules +rust + +libcrypto.3.dylib +android/app/src/main/jniLibs/** +android/app/google-services.json +web/pkg/package.json +web/pkg/vodozemac_bindings_dart_bg.wasm +web/pkg/vodozemac_bindings_dart.js diff --git a/.mailmap b/.mailmap new file mode 100644 index 0000000..b26a9d5 --- /dev/null +++ b/.mailmap @@ -0,0 +1,20 @@ +Aminda Suomalainen Mikaela Suomalainen +Aminda Suomalainen Mikaela Suomalainen +Aminda Suomalainen Mikaela Suomalainen +Anne Onyme 017 Anne017 +Brendan Abolivier Brendan Abolivier +Christian Pauly Christian +Christian Pauly Christian Pauly +Christian Pauly Christian Pauly +Christian Pauly Christian Pauly +Christian Pauly Christian Pauly +Christian Pauly Christian Pauly +Christian Pauly Christian Pauly +Christian Pauly Krille Fear +CuteTadpole <61086561+CuteTadpole@users.noreply.github.com> CuteTadpole +Drews Clausen Drews Clausen +Jelv Jelv +Kateřina Churanová Kateřina Churanová +Kateřina Churanová Katerina +NN708 NN708 +S1m S1m diff --git a/.metadata b/.metadata new file mode 100644 index 0000000..ab6d41f --- /dev/null +++ b/.metadata @@ -0,0 +1,30 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled and should not be manually edited. + +version: + revision: "fcf2c11572af6f390246c056bc905eca609533a0" + channel: "stable" + +project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: fcf2c11572af6f390246c056bc905eca609533a0 + base_revision: fcf2c11572af6f390246c056bc905eca609533a0 + - platform: android + create_revision: fcf2c11572af6f390246c056bc905eca609533a0 + base_revision: fcf2c11572af6f390246c056bc905eca609533a0 + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..86437bc --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,3419 @@ +## v2.3.0 + +FluffyChat v2.3.0 fixes a possible database corruption bug on Android, also fixes a +major performance leak and introduces polls and threads. + +- feat: Implement polls (Christian Kußowski) +- feat: Implement threads (krille-chan) +- fix: Database corruption because notification tab isolate starts too late (Christian Kußowski) +- fix: Import sticker packs (Christian Kußowski) +- refactor: Improved UIA support for OIDC and SSO (Christian Kußowski) +- refactor: Invite users when upgrading private room (Christian Kußowski) +- build: (deps): bump cross_file from 0.3.4+2 to 0.3.5 (dependabot[bot]) +- build: (deps): bump file_picker from 10.3.3 to 10.3.6 (dependabot[bot]) +- build: (deps): bump go_router from 16.3.0 to 17.0.0 (dependabot[bot]) +- build: (deps): bump http from 1.5.0 to 1.6.0 (dependabot[bot]) +- build: (deps): bump image_picker from 1.2.0 to 1.2.1 (dependabot[bot]) +- build: (deps): bump qr_code_scanner_plus from 2.0.13 to 2.0.14 (dependabot[bot]) +- build: (deps): bump video_player from 2.10.0 to 2.10.1 (dependabot[bot]) +- build: Switch back to stable web auth package (krille-chan) +- build: Use matrix sdk 4.0.0 (Christian Kußowski) +- build: Use secure storage from pub.dev again (krille-chan) +- chore: Remove Notification actions when using UnifiedPush (Christian Kußowski) +- chore(translations): Added translation using Weblate (Uzbek) (bahrom04) +- chore(translations): Translated using Weblate (Basque) (xabirequejo) +- chore(translations): Translated using Weblate (Belarusian) (Alex Katon) +- chore(translations): Translated using Weblate (Chinese (Simplified Han script)) (大王叫我来巡山) +- chore(translations): Translated using Weblate (Dutch) (Jelv) +- chore(translations): Translated using Weblate (Estonian) (Priit Jõerüüt) +- chore(translations): Translated using Weblate (Finnish) (Priit Jõerüüt) +- chore(translations): Translated using Weblate (Finnish) (Ricky Tigg) +- chore(translations): Translated using Weblate (French) (luneth) +- chore(translations): Translated using Weblate (Galician) (josé m.) +- chore(translations): Translated using Weblate (Irish) (Aindriú Mac Giolla Eoin) +- chore(translations): Translated using Weblate (Latvian) (Edgars Andersons) +- chore(translations): Translated using Weblate (Norwegian Bokmål) (Frank Paul Silye) +- chore(translations): Translated using Weblate (Uzbek) (bahrom04) +- chore(translations): Translated using Weblate (Uzbek) (BeMeritus) + +## v2.2.0 + +FluffyChat 2.2.0 introduces a new UX for spaces and adds support for restricted +join rules. + +The app also now has a new design for recording voice messages including a new +pause button. + +You also now see the progress when downloading files. + +On web the performance for image compressing has been drastically improved. Also +the config.json file loading has finally been fixed. Please be aware that the format +has changed as the available configs are now generated automatically. + +Did you know that you can set a lot of additional configs in the new config viewer +inside the app? This now supports much more options but please use with care! + +On Android FluffyChat now supports notification actions (reply and mark as read) and +also now supports Android Auto integration. Please do not cause an accident when using +the app while driving! + +On iOS the notifications are now localized. Stay tuned for more improvements on iOS +notifications in the next releases! + +Besides that this release brings a ton of bug fixes and performance improvements and +of course updated translations. Big thanks to all the volunteers who have helped on weblate! + +- feat: Add donation buttons except for PlayStore&AppStore version (Christian Kußowski) +- feat: Add iOS Notification Service Extension for localizable push notifications (Christian Kußowski) +- feat: Add notification actions (krille-chan) +- feat: Add support for restricted join rule (Christian Kußowski) +- feat: Display progress for downloading content (Christian Kußowski) +- feat: Display progress on redact events and clear archive dialogs (Christian Kußowski) +- feat: Enable native imaging for web (Christian Kußowski) +- feat: Forward notifications to Android Auto (Christian Kußowski) +- feat: Nicer record voice message UI with pause function (Christian Kußowski) +- feat: Notification actions on android (krille-chan) +- design: Improved spaces UX (Christian Kußowski) +- fix: Correctly pass through obscure text (Christian Kußowski) +- fix: Create a subdirectory in the tmp directory (Inex Code) +- fix: Cupertino text dialogs (Christian Kußowski) +- fix: Null pointer crash in chat list item (Christian Kußowski) +- chore(translations): Translated using Weblate (Arabic) (jamazi) +- chore(translations): Translated using Weblate (Basque) (xabirequejo) +- chore(translations): Translated using Weblate (Belarusian) (Alex Katon) +- chore(translations): Translated using Weblate (Chinese (Simplified Han script)) (大王叫我来巡山) +- chore(translations): Translated using Weblate (Croatian) (Milo Ivir) +- chore(translations): Translated using Weblate (Czech) (Flibble) +- chore(translations): Translated using Weblate (Dutch) (Jelv) +- chore(translations): Translated using Weblate (Esperanto) (Anonymous) +- chore(translations): Translated using Weblate (Estonian) (Priit Jõerüüt) +- chore(translations): Translated using Weblate (Finnish) (Aminda Suomalainen) +- chore(translations): Translated using Weblate (Galician) (josé m) +- chore(translations): Translated using Weblate (German) (Alex Katon) +- chore(translations): Translated using Weblate (German) (cheese1) +- chore(translations): Translated using Weblate (German) (Christian) +- chore(translations): Translated using Weblate (German) (Jana) +- chore(translations): Translated using Weblate (Greek) (Λευτέρης Τ) +- chore(translations): Translated using Weblate (Hebrew) (Anonymous) +- chore(translations): Translated using Weblate (Hungarian) (Balázs Meskó) +- chore(translations): Translated using Weblate (Indonesian) (Linerly) +- chore(translations): Translated using Weblate (Irish) (Aindriú Mac Giolla Eoin) +- chore(translations): Translated using Weblate (Japanese) (Allan Nordhøy) +- chore(translations): Translated using Weblate (Korean) (loyedison92) +- chore(translations): Translated using Weblate (Latvian) (Edgars Andersons) +- chore(translations): Translated using Weblate (Latvian) (ℂ𝕠𝕠𝕠𝕝 (𝕘𝕚𝕥𝕙𝕦𝕓.𝕔𝕠𝕞/ℂ𝕠𝕠𝕠𝕝)) +- chore(translations): Translated using Weblate (Lithuanian) (Anonymous) +- chore(translations): Translated using Weblate (Norwegian Bokmål) (Frank Paul Silye) +- chore(translations): Translated using Weblate (Norwegian Bokmål) (sunniva) +- chore(translations): Translated using Weblate (Polish) (Paweł Gronowski) +- chore(translations): Translated using Weblate (Portuguese (Brazil)) (LucasMZ) +- chore(translations): Translated using Weblate (Portuguese (Portugal)) (Anonymous) +- chore(translations): Translated using Weblate (Romanian) (Anonymous) +- chore(translations): Translated using Weblate (Russian) (Christian) +- chore(translations): Translated using Weblate (Russian) (Дмитрий Михирев) +- chore(translations): Translated using Weblate (Russian) (Жора Змейкин) +- chore(translations): Translated using Weblate (Serbian) (Anonymous) +- chore(translations): Translated using Weblate (Slovak) (Anonymous) +- chore(translations): Translated using Weblate (Spanish) (Kimby) +- chore(translations): Translated using Weblate (Spanish) (LucasMZ) +- chore(translations): Translated using Weblate (Turkish) (Christian) +- chore(translations): Translated using Weblate (Turkish) (Ufuk Karal) +- chore(translations): Translated using Weblate (Vietnamese) (desperadohp) +- chore: add a link to the platforms' different behaviors for the 24h format (kaanelloed) +- chore: Add ActionsPadding in column mode (Christian Kußowski) +- chore: Add close icon to snackbar in column mode (Christian Kußowski) +- chore: Adjust chat details button design (Christian Kußowski) +- chore: Adjust encryption page design (Christian Kußowski) +- chore: Adjust input bar button design (Christian Kußowski) +- chore: Adjust material dialog button design (krille-chan) +- chore: Adjust padding for status msg list (Christian Kußowski) +- chore: Adjust status header design (krille-chan) +- chore: Better display rooms without known messages (Christian Kußowski) +- chore: Better routing to space id (Christian Kußowski) +- chore: Correctly remove knockRestricted from possible join rules (Christian Kußowski) +- chore: Fix load config.json (Christian Kußowski) +- chore: Go back to pub.dev matrix dep (Christian Kußowski) +- chore: Hide restricted and knock restricted for unsupported room versions (Christian Kußowski) +- chore: Hide topic if empty and cannot be changed (Christian Kußowski) +- chore: Improve chat details icon color design (Christian Kußowski) +- chore: Improve ignore list UX (Christian Kußowski) +- chore: Leave invites and DM rooms when blocking a user (Christian Kußowski) +- chore: Make privacy url not configurable (Christian Kußowski) +- chore: Make progress indicators rounder (Christian Kußowski) +- chore: Mention rebases (Christian Kußowski) +- chore: Move emote settings button to chat popup menu (Christian Kußowski) +- chore: Move encryption button to input row (Christian Kußowski) +- chore: Revert "refactor: Make ChatListItem cache lasteventbody for better performance" (Christian Kußowski) +- chore: Translate iOS notifications into german (Christian Kußowski) +- chore: Try out refactored user device keys update method (Christian Kußowski) +- chore: Update matrix dart sdk (Christian Kußowski) +- chore: use time format based on system settings (kaanelloed) +- ci: Build only for arm64 (Christian Kußowski) +- refactor: Make ChatListItem cache lasteventbody for better performance (Christian Kußowski) +- refactor: Remove unused directories (Christian Kußowski) +- refactor: Rename models for matrix spec 1.16 (Christian Kußowski) +- refactor: Replace flutter typeahead with autocomplete to fix (Christian Kußowski) +- refactor: Use AppSettings enum based configuration everywhere and fix load from json on web (Christian Kußowski) +- build: Flutter upgrade 3.35.5 (Christian Kußowski) +- build: Matrix version 3.0.0 (Christian Kußowski) +- build: Remove dependency for telephony (Christian Kußowski) +- build: Remove openssl dependency (Christian Kußowski) +- build: Use correct fcm_shared_isolate version (Christian Kußowski) +- build: Use correct version of vodozemac for web build (Christian Kußowski) + +## v2.1.1 +Bugfix release to trigger flatpak arm64 release again. + +- build: (deps): bump actions/checkout from 4 to 5 (dependabot[bot]) +- build: (deps): bump app_links from 6.4.0 to 6.4.1 (dependabot[bot]) +- build: (deps): bump file_picker from 10.2.3 to 10.3.1 (dependabot[bot]) +- build: (deps): bump msix from 3.16.10 to 3.16.12 (dependabot[bot]) +- build: (deps): bump package_info_plus from 8.3.0 to 8.3.1 (dependabot[bot]) +- build: (deps): bump share_plus from 11.0.0 to 11.1.0 (dependabot[bot]) +- build: Also build linux on github runners (Christian Kußowski) +- build: Update macos podfile (Christian Kußowski) +- chore: Follow up subtitle font style (Christian Kußowski) +- chore: Slightly adjust font sizes and design (Christian Kußowski) +- chore(translations): Translated using Weblate (Chinese (Traditional Han script)) (miullu) +- chore(translations): Translated using Weblate (Norwegian Bokmål) (Frank Paul Silye) +- chore(translations): Translated using Weblate (Polish) (Piotr Orzechowski) +- feat: support xdp selector for linux (ShootingStarDragons) +- fix: Follow up fix rectangle avatars (Christian Kußowski) +- refactor: Remove broken push error reporter (Christian Kußowski) + +## v2.1.0 +FluffyChat 2.1.0 brings support for room version 12 and a lot of bugfixes, updated translations and performance improvements. Also chat state events are now collapsed by default. + +- feat: Collapse all state events by default (Christian Kußowski) +- feat(linux/notify): support avatar icon (ShootingStarDragons) +- build: (deps): bump archive from 3.6.1 to 4.0.7 (dependabot[bot]) +- build: (deps): bump chewie from 1.11.3 to 1.12.1 (dependabot[bot]) +- build: (deps): bump desktop_drop from 0.4.4 to 0.6.1 (dependabot[bot]) +- build: (deps): bump device_info_plus from 10.1.2 to 11.5.0 (dependabot[bot]) +- build: (deps): bump dynamic_color from 1.7.0 to 1.8.1 (dependabot[bot]) +- build: (deps): bump file_picker from 10.2.0 to 10.2.1 (dependabot[bot]) +- build: (deps): bump file_picker from 8.3.7 to 10.2.0 (dependabot[bot]) +- build: (deps): bump flutter_foreground_task from 6.5.0 to 9.1.0 (dependabot[bot]) +- build: (deps): bump flutter_local_notifications from 19.3.0 to 19.4.0 (dependabot[bot]) +- build: (deps): bump flutter_map from 6.2.1 to 8.1.1 (dependabot[bot]) +- build: (deps): bump flutter_map from 8.1.1 to 8.2.1 (dependabot[bot]) +- build: (deps): bump flutter_native_splash from 2.4.4 to 2.4.6 (dependabot[bot]) +- build: (deps): bump flutter_webrtc from 0.12.12+hotfix.1 to 1.0.0 (dependabot[bot]) +- build: (deps): bump geolocator from 13.0.4 to 14.0.2 (dependabot[bot]) +- build: (deps): bump go_router from 15.1.2 to 16.0.0 (dependabot[bot]) +- build: (deps): bump go_router from 16.0.0 to 16.1.0 (dependabot[bot]) +- build: (deps): bump just_audio from 0.9.46 to 0.10.4 (dependabot[bot]) +- build: (deps): bump matrix from 1.0.1 to 1.1.0 (dependabot[bot]) +- build: (deps): bump mime from 1.0.6 to 2.0.0 (dependabot[bot]) +- build: (deps): bump msix from 3.16.9 to 3.16.10 (dependabot[bot]) +- build: (deps): bump permission_handler from 11.4.0 to 12.0.1 (dependabot[bot]) +- build: (deps): bump pretty_qr_code from 3.4.0 to 3.5.0 (dependabot[bot]) +- build: (deps): bump share_plus from 10.1.4 to 11.0.0 (dependabot[bot]) +- build: (deps): bump sqflite_common_ffi from 2.3.5 to 2.3.6 (dependabot[bot]) +- build: (deps): bump sqlcipher_flutter_libs from 0.6.6 to 0.6.7 (dependabot[bot]) +- build: (deps): bump unifiedpush from 5.0.2 to 6.0.2 (dependabot[bot]) +- build: (deps): bump url_launcher from 6.3.1 to 6.3.2 (dependabot[bot]) +- build: Update Flutter 3.32.8 (Christian Kußowski) +- build: Upgrade emoji picker flutter (Christian Kußowski) +- build: Use gradle in kotlin (Christian Kußowski) +- build: Use macos-latest for debug ios job (Christian Kußowski) +- chore: Add CI workflow for thank you message after issue got completed (Christian Kußowski) +- chore: Add dependabot to code owners for pubspec (Christian Kußowski) +- chore: Add ISC as compatible license to aGPLv3 (Christian Kußowski) +- chore: Better error handling for push notifications (Christian Kußowski) +- chore: Bump Flutter version in pubspec.lock (Rafał Hirsch) +- chore: do format (ShootingStarDragons) +- chore: Fix snapcraft build (krille-chan) +- chore: Nicer own reaction color design (Christian Kußowski) +- chore: Remove double quotes from screenshot filenames (Christian Kußowski) +- chore: Remove lifecyclestate logs (Christian Kußowski) +- chore: Remove unused workflow (krille-chan) +- chore: Set height for screenshots in readme (krille-chan) +- chore: Set text message max length to 16384 but make it configurable (Christian Kußowski) +- chore: Update height for screenshots in readme (krille-chan) +- chore: Update screenshots in readme (krille-chan) +- fix: Add flexible to file messages to prevent long name overflow (Kelrap) +- fix: Avoid using MediaQuery.of() (imnotlxy) +- fix: Config viewer not updating state (Christian Kußowski) +- fix: Delete database correctly after corruption (krille-chan) +- fix: Design glitches in sticker dialog (Christian Kußowski) +- fix: limit characters and lines so redact message can't be too long (avashilling) +- fix: LoadingSnackBar consistently remains visible until the upload is complete (JaWeee) +- fix: notification clicked still cannot jump (ShootingStarDragons) +- fix: open chat from notification (ShootingStarDragons) +- fix: Open database crashes on start (krille-chan) +- fix: Open external account management when trying to delete devices (Christian Kußowski) +- fix: Use retry http client (Christian Kußowski) +- fix: Workaround for reversed width and height of compressed videos sent from Android (Christian Kußowski) +- refactor: Add support for Room version 12 via matrix dart sdk update +- refactor: Better UX for accepting declining invite (krille-chan) +- refactor: ignore bubble gradient when using system high contrast mode (Christian Kußowski) +- refactor: Make notification avatars rounded (krille-chan) +- refactor: Remove unused dependencies (krille-chan) +- chore(translations): Translated using Weblate (Basque) (xabirequejo) +- chore(translations): Translated using Weblate (Belarusian) (Alex Katon) +- chore(translations): Translated using Weblate (German) (Christian) +- chore(translations): Translated using Weblate (Norwegian Bokmål) (Frank Paul Silye) +- chore(translations): Translated using Weblate (Portuguese (Brazil)) (LucasMZ) +- chore(translations): Translated using Weblate (Spanish) (Fuan200) +- chore(translations): Translated using Weblate (Tamil) (தமிழ்நேரம்) +- chore(translations): Translated using Weblate (Ukrainian) (Ihor Hordiichuk) +- Translated using Weblate (Arabic) (LucasMZ) +- Translated using Weblate (Basque) (xabirequejo) +- Translated using Weblate (Chinese (Simplified Han script)) (大王叫我来巡山) +- Translated using Weblate (Chinese (Traditional Han script)) (miullu) +- Translated using Weblate (Czech) (LucasMZ) +- Translated using Weblate (Dutch) (Jelv) +- Translated using Weblate (English) (LucasMZ) +- Translated using Weblate (Estonian) (Priit Jõerüüt) +- Translated using Weblate (Galician) (josé m) +- Translated using Weblate (German) (nautilusx) +- Translated using Weblate (Hebrew) (LucasMZ) +- Translated using Weblate (Hungarian) (LucasMZ) +- Translated using Weblate (Indonesian) (Linerly) +- Translated using Weblate (Irish) (Aindriú Mac Giolla Eoin) +- Translated using Weblate (Irish) (LucasMZ) +- Translated using Weblate (Italian) (Angelo Schirinzi) +- Translated using Weblate (Italian) (LucasMZ) +- Translated using Weblate (Latvian) (Edgars Andersons) +- Translated using Weblate (Latvian) (LucasMZ) +- Translated using Weblate (Norwegian Bokmål) (Christian) +- Translated using Weblate (Norwegian Bokmål) (Frank Paul Silye) +- Translated using Weblate (Persian) (Alireza Rashidi) +- Translated using Weblate (Polish) (Piotr Orzechowski) +- Translated using Weblate (Portuguese (Brazil)) (LucasMZ) +- Translated using Weblate (Portuguese) (Ana Elisa Ramos) +- Translated using Weblate (Portuguese) (LucasMZ) +- Translated using Weblate (Russian) (LucasMZ) +- Translated using Weblate (Tamil) (தமிழ்நேரம்) +- Translated using Weblate (Tamil) (LucasMZ) +- Translated using Weblate (Telugu) (LucasMZ) +- Translated using Weblate (Ukrainian) (Ihor Hordiichuk) +- Translated using Weblate (Ukrainian) (LucasMZ) +- Translated using Weblate (Vietnamese) (LucasMZ) + +## v2.0.0 + +This version migrates to Vodozemac and Matrix Dart SDK 1.0.0. This is a breaking +change. The user should not notice the migration at all but downgrading from +v2.0.0 to a previous version is not possible without losing the session. + +- fix: Do not set read markers for sending events (Christian Kußowski) +- fix: fix compile error related to MxcImage (gilice) +- fix: Forward last version of events when forwarding (Christian Kußowski) +- fix: Ban button displayed for already banned users (Christian Kußowski) +- fix: Route back to room list after leaving a chat (Christian Kußowski) +- build: Switch to matrix sdk 1.0.0 (Christian Kußowski) +- build: Upgrade flutter to 3.32.2 (krille-chan) +- build: Update to flutter 3.32.4 (Christian Kußowski) +- chore: Add missing mounted check (Christian Kußowski) +- chore: highlight select mode actions (Christian Kußowski) +- refactor: sdk 1.0 (Christian Kußowski) +- refactor: New message context menu (Christian Kußowski) +- refactor: Nicer popupmenus (Christian Kußowski) +- Translated using Weblate (Spanish) (Kimby) + +## v1.27.0 +- feat: Add confirmation dialog before accepting invite (krille-chan) +- feat: Add feature flag for refresh tokens (Christian Kußowski) +- feat: add setting for whether to show space navigation rail on mobile (ggurdin) +- feat: Background audio player (Christian Kußowski) +- feat: Check markdown checkboxes in messages (krille-chan) +- feat: Create lists with checkboxes via + menu (krille-chan) +- feat: Limit height of text messages and expand if selected (krille-chan) +- feat: Move videoplayer into multi image viewer (Christian Kußowski) +- feat: Show all supported image-/video-files when sending images or videos (MoonlightWave-12) +- feat: Show WebM-videos when choosing video-files for sending (MoonlightWave-12) +- fix: Add missing mounted check to mxcImage (Christian Kußowski) +- fix: App crash on page navigation with open popup menu (Christian Kußowski) +- fix: App crashes on window resize in chat (krille-chan) +- fix: Change `PNGs` to `PNG` for consistency in file-selector (MoonlightWave-12) +- fix: Crash when going to settings in desktop mode (krille-chan) +- Fix: Fix jagged avatar edges Use anti-alias Clipping allowing for round Avatar circles (martin) +- fix: Join new room after room upgrade (krille-chan) +- fix: Keep state of text input dialogs (Christian Kußowski) +- fix: Localizations (krille-chan) +- fix: No crash on logging out in client chooser button (Christian Kußowski) +- fix: Show WebP-images with a file-extension written in lower-case (MoonlightWave-12) +- build: Update matrix dart sdk 0.40.2 (Christian Kußowski) +- build: Update record package (Christian Kußowski) +- build: Update shared preferences android (krille-chan) +- build: Upgrade to flutter 3.32.1 (Christian Kußowski) +- build: Use workaround for flutter secure storage on linux (krille-chan) +- chore: Crop shortcut file on android and cache it (krille-chan) +- chore: Display loading dialog when preparing voice message (Christian Kußowski) +- chore: Format lib/utils/file_selector.dart (MoonlightWave-12) +- chore: Let users decide for the title in error reporter (Christian Kußowski) +- chore: make space nav bar narrower on mobile and ensure space nav bar matches user's theme (ggurdin) +- chore: Nicer checkboxes (Christian Kußowski) +- chore: Preload server file config before upload files (Christian Kußowski) +- chore: Remove custom errorwidgetbuilder (Christian Kußowski) +- chore: Remove unused translations (Christian Kußowski) +- chore: Simplify voiceMessage getter (Christian Kußowski) +- chore: Update voice message localization (Christian Kußowski) +- refactor: Always use HtmlMessage (krille-chan) +- refactor: Reduce notification avatar size to 128 (krille-chan) +- Added translation using Weblate (Cantonese (Traditional Han script)) (Mike Evans) +- Added translation using Weblate (Danish) (Øjvind Fritjof Arnfred) +- Added translation using Weblate (Yue (yue_HK)) (Mike Evans) +- Translated using Weblate (Arabic) (abdelbasset jabrane) +- Translated using Weblate (Basque) (xabirequejo) +- Translated using Weblate (Cantonese (Traditional Han script)) (Mike Evans) +- Translated using Weblate (Catalan) (Marc Pina Artigas) +- Translated using Weblate (Chinese (Simplified Han script)) (大王叫我来巡山) +- Translated using Weblate (Chinese (Simplified Han script)) (Mike Evans) +- Translated using Weblate (Chinese (Traditional Han script)) (Mike Evans) +- Translated using Weblate (Chinese (Traditional Han script)) (miullu) +- Translated using Weblate (Danish) (Øjvind Fritjof Arnfred) +- Translated using Weblate (Dutch) (Jelv) +- Translated using Weblate (Estonian) (Priit Jõerüüt) +- Translated using Weblate (Finnish) (sevonj) +- Translated using Weblate (Galician) (josé m) +- Translated using Weblate (German) (Christian) +- Translated using Weblate (German) (Jana) +- Translated using Weblate (German) (JSchmerling) +- Translated using Weblate (Hebrew) (DavidEl-Natan) +- Translated using Weblate (Hungarian) (H Tamás) +- Translated using Weblate (Indonesian) (Linerly) +- Translated using Weblate (Irish) (Aindriú Mac Giolla Eoin) +- Translated using Weblate (Italian) (Angelo Schirinzi) +- Translated using Weblate (Latvian) (ℂ𝕠𝕠𝕠𝕝 (𝕘𝕚𝕥𝕙𝕦𝕓.𝕔𝕠𝕞/ℂ𝕠𝕠𝕠𝕝)) +- Translated using Weblate (Latvian) (Edgars Andersons) +- Translated using Weblate (Polish) (Piotr Orzechowski) +- Translated using Weblate (Portuguese (Brazil)) (Pedro Alves) +- Translated using Weblate (Russian) (Yurt Page) +- Translated using Weblate (Ukrainian) (Bezruchenko Simon) +- Translated using Weblate (Ukrainian) (Ihor Hordiichuk) + +## v1.26.1 + +Updates the Matrix Dart SDK to fix multiple issues where messages can be missing in the timeline. + +- feat: Reenable archive feature after various fixes landed in sdk (krille-chan) +- build: Update matrix dart sdk to 0.40.0 (Christian Kußowski) +- chore: Adjust new chat page design (krille-chan) +- chore: Display count of invited in members page (krille-chan) +- chore: Do not load timeline while sync processing (Krille) +- chore: Do not store event from push in database (Krille) +- chore: Only show joined members in members list by default (Krille) +- chore: Remove matrix notification workflow (Krille) +- fix(docs): escape tag (Sophie L) +- fix: Crash when opening settings in column mode from popup menu (krille-chan) +- refactor: Display thread messages like replies as a thread fallback (Krille) + +## v1.26.0 + +- feat: Add advanced configuration page (Krille) +- feat: clearly mark when a video is to be downloaded (Rafał Hirsch) +- feat: Filter for room members page and easier approve knocking users (Krille) +- feat: Navigate in image viewer with keyboard keys (krille-chan) +- feat: New video file picker button (Krille) +- feat: Send optional message with images or files (Krille) +- feat: support inline video playback on macOS (Rafał Hirsch) +- build: Flutter 3.29.3 (Krille) +- build: Update gorouter package (Krille) +- build: Update kotlin gradle plugin (Krille) +- build: Update matrix dart sdk (Krille) +- build: Update openssl to 0.5.0 (Krille) +- build: use singleInstance as launchmode (krille-chan) +- chore: Add matrix notifications for issues (Krille) +- chore: Better error handling for image rendering (krille-chan) +- chore: Better no compression supported UX (Krille) +- chore: Correct availability of desktop builds (Lenni) +- chore: disable echoCancel for audio messages (Krille) +- chore: divider when scrolled up (krille-chan) +- chore: Improve avatar designg (Krille) +- chore: Make push gateway configurable (Krille) +- chore: Nicer colors for reactions (krille-chan) +- chore: Nicer scaffold dialog for column mode (Krille) +- chore: Simpler changing config variables (Krille) +- chore: Update locale config for localizations (Krille) +- chore: Update pubspec.lock (Krille) +- chore: upgrade chewie and video_player packages (Rafał Hirsch) +- chore: Use Cupertino Activity Indicator in ChatEventList (krille-chan) +- chore: Use other join endpoint for room upgrades (Krille) +- fix(macos): update dependencies to make the build work (Rafał Hirsch) +- fix: Add missing \ html tag to render (Krille) +- fix: Consistent element padding between server picker and login view (xegim) +- fix: Index of numbered lists are off (Krille) +- fix: never use a transition on the shell route (Rafał Hirsch) +- fix: Null error in ClientChooserButton (krille-chan) +- fix: prevent users from creating spaces with empty names (ggurdin) +- fix: properly dispose VideoPlayerController (Rafał Hirsch) +- fix: Remove too sensitive dismiss gesture on chat list items (Krille) +- fix: Text scale factor in Linkify widgets (Krille) +- fix: update condition in account deletion function to allow deletion to go through (ggurdin) +- refactor: Easier shift enter logic for text input (Krille) +- refactor: Formatting (Krille) +- refactor: Implement avatar image viewer and adjust design (Krille) +- refactor: Improved UX for room upgrades (Krille) +- refactor: Migrate more config options to config viewer (Krille) +- refactor: Move public room bottom sheet into dialog (Krille) +- refactor: Remove custom font and emoji font workaround (krille-chan) +- refactor: Replace user bottom sheet with menu and small dialog (Krille) +- Added translation using Weblate (Telugu) (katakam chakri) +- Translated using Weblate (Basque) (xabirequejo) +- Translated using Weblate (Chinese (Simplified Han script)) (Poesty Li) +- Translated using Weblate (Chinese (Simplified Han script)) (大王叫我来巡山) +- Translated using Weblate (Chinese (Traditional Han script)) (Mare JP) +- Translated using Weblate (Chinese (Traditional Han script)) (miullu) +- Translated using Weblate (Dutch) (Jelv) +- Translated using Weblate (Estonian) (Priit Jõerüüt) +- Translated using Weblate (Filipino) (searinminecraft) +- Translated using Weblate (French) (Antonin Del Fabbro) +- Translated using Weblate (Galician) (josé m) +- Translated using Weblate (German) (nautilusx) +- Translated using Weblate (German) (Very Able) +- Translated using Weblate (Indonesian) (Linerly) +- Translated using Weblate (Irish) (Aindriú Mac Giolla Eoin) +- Translated using Weblate (Italian) (Angelo Schirinzi) +- Translated using Weblate (Korean) (kdh8219) +- Translated using Weblate (Latvian) (Edgars Andersons) +- Translated using Weblate (Latvian) (ℂ𝕠𝕠𝕠𝕝 (𝕘𝕚𝕥𝕙𝕦𝕓.𝕔𝕠𝕞/ℂ𝕠𝕠𝕠𝕝)) +- Translated using Weblate (Polish) (Piotr Orzechowski) +- Translated using Weblate (Russian) (Yurt Page) +- Translated using Weblate (Spanish) (José Muñoz) +- Translated using Weblate (Spanish) (Kimby) +- Translated using Weblate (Telugu) (katakam chakri) +- Translated using Weblate (Ukrainian) (Ihor Hordiichuk) + +## v1.25.0 + +- feat: Display all push rules and allow to enable disable them (Krille) +- feat: Inspect and delete push rules (Krille) +- feat: Pick share keys with (Krille) +- feat: Select share keys with property in security settings (Krille) +- feat: Use dynamic gradient for chat bubbles (Krille) +- fix: Image search rendering problem (krille-chan) +- build: Add locale config for android (krille-chan) +- build: Add missing permissions (Krille) +- build: Automerge weblate PRs (Krille) +- build: Fix ios debug build (krille-chan) +- build: Follow up auto merge weblate (Krille) +- build: remove weblate auto merge (Krille) +- build: Switch to flutter_shortcuts_new (Krille) +- build: Update dependencies for flutter (Krille) +- build: Update dependencies to remove more flutter android v1 references (Krille) +- build: Update fcm_shared_isolate (Krille) +- build: Update flutter web uild (Krille) +- build: Update flutter_olm to 2.0.0 (Krille) +- build: Update gradle version (Krille) +- build: Update native_imaging (Krille) +- build: Update PAT (Krille) +- build: Update to flutter 3.27.4 (Krille) +- build: Update weblate auto merge (Krille) +- build: Upgrade gradle (Krille) +- chore: Add explanation for PlayStore Safety Standards (Krille) +- chore: Add medium font (Krille) +- chore: Add start to ordered list (Krille) +- chore: Add tooltip to links in html (Krille) +- chore: Adjust button icon colors (Krille) +- chore: Adjust design of adaptive dialogs (krille-chan) +- chore: Adjust navrail design (Krille) +- chore: Adjust share scaffold dialog design (Krille) +- chore: Better connection status indicator (Krille) +- chore: Design adjustments (krille-chan) +- chore: Make login with matrix id more prominent again (krille-chan) +- chore: Message bubble color follow up (krille-chan) +- chore: Remove gradle workaround (Krille) +- chore: Slightly adjust welcome screen (Krille) +- chore: Use UbuntuMono (Krille) +- docs: Fix snap store icon (krille-chan) +- refactor: Display navigationrail in settings page (krille-chan) +- refactor: Follow up fix types in localization files (Krille) +- refactor: Improve sso login UX on web (krille-chan) +- refactor: Migrate to maintained badge package (Krille) +- refactor: Migrate uni_links to app_links (Krille) +- refactor: New html rendering (Krille) +- refactor: Remove broken callkeep implementation (Krille) +- refactor: Remove unused class (krille-chan) +- refactor: Switch to maintained qr code package (Krille) +- refactor: Switch to ubuntu font (krille-chan) +- refactor: Update arb file types (Krille) +- Translated using Weblate (Arabic) (Rex_sa) +- Translated using Weblate (Basque) (xabirequejo) +- Translated using Weblate (Catalan) (fadelkon) +- Translated using Weblate (Chinese (Simplified Han script)) (玖然) +- Translated using Weblate (Chinese (Simplified Han script)) (大王叫我来巡山) +- Translated using Weblate (Chinese (Traditional Han script)) (玖然) +- Translated using Weblate (Croatian) (Milo Ivir) +- Translated using Weblate (Dutch) (Jelv) +- Translated using Weblate (Estonian) (Priit Jõerüüt) +- Translated using Weblate (Galician) (josé m) +- Translated using Weblate (German) (Christian) +- Translated using Weblate (German) (Ettore Atalan) +- Translated using Weblate (German) (Jana) +- Translated using Weblate (Indonesian) (Linerly) +- Translated using Weblate (Irish) (Aindriú Mac Giolla Eoin) +- Translated using Weblate (Italian) (Angelo Schirinzi) +- Translated using Weblate (Korean) (kdh8219) +- Translated using Weblate (Latvian) (Edgars Andersons) +- Translated using Weblate (Slovak) (Anonymous) +- Translated using Weblate (Spanish) (Alfredo Sola) +- Translated using Weblate (Ukrainian) (Bezruchenko Simon) +- Translated using Weblate (Ukrainian) (Ihor Hordiichuk) + +## v1.24.0 + +- build: Add missing libssl library (krille-chan) +- build: Update dart_webrtc package (Krille) +- build: Update matrix sdk and dependencies (Krille) +- build: Update to flutter 3.27 (Krille) +- chore: Better bottom sheets on desktop (krille-chan) +- chore: Check file size before loading (krille-chan) +- chore: Display normal Slider when no waveform provided in audioplayer (krille-chan) +- chore: Do not display sender prefix for DM rooms in notification ticker (krille-chan) +- chore: Enable share multiple files to app (krille-chan) +- chore: Improve alias UX in chat settings (Krille) +- chore: Improve join abandoned invite exception (Krille) +- chore: Improve UserBottomSheet UX (Krille) +- chore: Make message bubble color dark also in dark mode (krille-chan) +- chore: Remove conversationTitle if room is dm room in android notifications (krille-chan) +- feat: QR Code viewer for mxid sharing (Krille) +- fix: Do not set public visibility for private groups (Krille) +- fix: Use MB and KB instead of MiB and KiB for file sizes (Krille) +- refactor: Adjust chat list item UX (Krille) +- refactor: Better custom image resizer (Krille) +- refactor: Clean up android manifest (Krille) +- refactor: Implement own adaptive dialogs and remove package (krille-chan) +- refactor: Improve UX of user role in UserBottomSheet (Krille) +- refactor: Improved share / forward dialog (krille-chan) +- Translated using Weblate (Arabic) (Rex_sa) +- Translated using Weblate (Basque) (xabirequejo) +- Translated using Weblate (Catalan) (fadelkon) +- Translated using Weblate (Chinese (Simplified Han script)) (大王叫我来巡山) +- Translated using Weblate (Czech) (Erin) +- Translated using Weblate (Estonian) (Priit Jõerüüt) +- Translated using Weblate (Galician) (josé m) +- Translated using Weblate (German) (Christian) +- Translated using Weblate (Indonesian) (Linerly) +- Translated using Weblate (Irish) (Aindriú Mac Giolla Eoin) +- Translated using Weblate (Italian) (Angelo Schirinzi) +- Translated using Weblate (Latvian) (Edgars Andersons) +- Translated using Weblate (Polish) (Piotr Orzechowski) +- Translated using Weblate (Russian) (-) +- Translated using Weblate (Tamil) (Christian) +- Translated using Weblate (Tamil) (தமிழ்நேரம்) +- Translated using Weblate (Turkish) (goknarbahceli) +- Translated using Weblate (Ukrainian) (Bezruchenko Simon) +- Translated using Weblate (Vietnamese) (Tewuzij) + +## v1.23.0 + +- design: Highlight emoji only messages (Krille) +- design: New login design (Krille) +- docs: fix snapstore badge on website (Krille) +- feat: Add about server page (Krille) +- feat: Add default chat wallpaper (Krille) +- feat: Add markdown context actions for text input (krille-chan) +- feat: Better wallpapers with blur and opacity sliders and improved styles page (krille-chan) +- feat: Display warning banner on unverified devices (krille-chan) +- feat: New audio message design with displayed body (krille-chan) +- feat: Nicer room creation UI (krille-chan) +- feat: Open account manage url when using MAS (krille-chan) +- feat: Sending multiple files at once (krille-chan) +- feat: Swipe to archive rooms (Krille) +- fix: Bypass image compression in flutter_file_picker (q234rty) +- fix: dont use thumbnails for emoticons (Marek Vospěl) +- fix: Public rooms always publicly visible even when turned off on creation (krille-chan) +- fix: Wait for room invite before open in pushhelper (krille-chan) +- refactor: Better future loading dialog without flickering (krille-chan) +- refactor: Display two lines on new messages (krille-chan) +- refactor: Improve delete device UX flow (krille-chan) +- refactor: Load bytes from sending files later to not let app crash (krille-chan) +- refactor: Migrate to newer keyboard shortcuts package (Krille) +- refactor: Move to upstream geolocator (Krille) +- refactor: Performance boost for avatar widget (Krille) +- refactor: Remove duplicated navigator workaround (krille-chan) +- refactor: Remove keyboard shortcuts (Krille) +- refactor: Remove unnecessary builder widget (krille-chan) +- refactor: Reuse flutter local notifications object (krille-chan) +- refactor: Use adaptive dialog action (Krille) +- refactor: Use file selector on linux (krille-chan) +- refactor: Use non nullable localizations builder and lazy load on web (krille-chan) +- Revert "chore: Follow up new chat design" (Krille) +- Revert "feat: Add default chat wallpaper" (Krille) +- Revert "refactor: Performance boost for avatar widget" (krille-chan) +- Translated using Weblate (Arabic) (Rex_sa) +- Translated using Weblate (Basque) (xabirequejo) +- Translated using Weblate (Catalan) (fadelkon) +- Translated using Weblate (Chinese (Simplified Han script)) (大王叫我来巡山) +- Translated using Weblate (Czech) (Michal Bedáň) +- Translated using Weblate (Estonian) (Priit Jõerüüt) +- Translated using Weblate (Finnish) (Priit Jõerüüt) +- Translated using Weblate (Galician) (josé m) +- Translated using Weblate (German) (Christian) +- Translated using Weblate (German) (Ettore Atalan) +- Translated using Weblate (German) (Peter Wallerius) +- Translated using Weblate (Hungarian) (Zentropivity) +- Translated using Weblate (Indonesian) (Linerly) +- Translated using Weblate (Irish) (Aindriú Mac Giolla Eoin) +- Translated using Weblate (Irish) (Christian) +- Translated using Weblate (Italian) (Angelo Schirinzi) +- Translated using Weblate (Korean) (Bruno Roh) +- Translated using Weblate (Korean) (kdh8219) +- Translated using Weblate (Latvian) (Edgars Andersons) +- Translated using Weblate (Latvian) (GGLVXD) +- Translated using Weblate (Russian) (Pavel Kozhukhov) +- Translated using Weblate (Russian) (v1s7) +- Translated using Weblate (Spanish) (Kimby) +- Translated using Weblate (Turkish) (Oğuz Ersen) +- Translated using Weblate (Ukrainian) (Bezruchenko Simon) +- Translated using Weblate (Ukrainian) (Ihor Hordiichuk) + +## v1.22.0 + +FluffyChat v1.22.0 brings a new design for spaces, replaces the bottom navigation bar with filter +chips and makes it finally possible to play ogg audio messages on iOS. A lot of other fixes and +improvements have also been added to this release. + +FluffyChat also now uses the new authenticated media endpoints if the server supports Matrix v1.11 +or +mentions the msc with the key `org.matrix.msc3916.stable` in the `unstable_features`. + +- design: Add snackbar with link to changelog on new version (Krille) +- docs: Update privacy policy (krille-chan) +- feat: Support for matrix auth media endpoints +- feat: Convert opus to aac on iOS before playing (Krille) +- feat: New spaces and chat list design (krille-chan) +- feat: Record voice message with opus/ogg if supported (Krille) +- feat: Send voice messages from web (Krille) +- feat: Add about server page (Krille) +- feat: Add default chat wallpaper (Krille) +- feat: Add markdown context actions for text input (krille-chan) +- feat: Better wallpapers with blur and opacity sliders and improved styles page (krille-chan) +- feat: Display warning banner on unverified devices (krille-chan) +- feat: New audio message design with displayed body (krille-chan) +- feat: Nicer room creation UI (krille-chan) +- feat: Open account manage url when using MAS (krille-chan) +- feat: Sending multiple files at once (krille-chan) +- feat: Swipe to archive rooms (Krille) +- fix: Display only available join rules (Krille) +- fix: Path correct userId to ignore list (krille-chan) +- fix: Scroll to event missing the position (Krille) +- Fix web base url and privacy url configuration processing (dlyrsk) +- refactor: Clean up some widths (krille-chan) +- refactor: Design polishment and better user viewer (Krille) +- refactor: Migrate android gradle plugin (Krille) +- refactor: Only initialize FlutterLocalNotificationsPlugin once (krille-chan) +- refactor: Recording dialog (Krille) +- Refactor: Reduce .of(context) calls theme (Thomas Klein Langenhorst) +- refactor: Use cached network image for mxc image uris (Krille) +- Translated using Weblate (Arabic) (kdh8219) +- Translated using Weblate (Arabic) (Rex_sa) +- Translated using Weblate (Basque) (kdh8219) +- Translated using Weblate (Basque) (xabirequejo) +- Translated using Weblate (Chinese (Simplified)) (kdh8219) +- Translated using Weblate (Chinese (Simplified)) (大王叫我来巡山) +- Translated using Weblate (Chinese (Traditional)) (kdh8219) +- Translated using Weblate (Chinese (Traditional)) (Lukas) +- Translated using Weblate (Chinese (Traditional)) (Ricky From Hong Kong) +- Translated using Weblate (Chinese (Traditional)) (不知火 Shiranui) +- Translated using Weblate (Croatian) (Milo Ivir) +- Translated using Weblate (Czech) (Anonymous) +- Translated using Weblate (Czech) (Michal Bedáň) +- Translated using Weblate (Dutch) (Guacamolie) +- Translated using Weblate (Dutch) (Jelv) +- Translated using Weblate (Dutch) (Thomas Klein Langenhorst) +- Translated using Weblate (Esperanto) (Anonymous) +- Translated using Weblate (Estonian) (kdh8219) +- Translated using Weblate (Estonian) (Priit Jõerüüt) +- Translated using Weblate (Finnish) (Anonymous) +- Translated using Weblate (French) (Sovkipyk) +- Translated using Weblate (Galician) (josé m) +- Translated using Weblate (German) (Christian) +- Translated using Weblate (German) (Pixelcode) +- Translated using Weblate (German) (tct123) +- Translated using Weblate (Hebrew) (Anonymous) +- Translated using Weblate (Indonesian) (Linerly) +- Translated using Weblate (Irish) (Anonymous) +- Translated using Weblate (Japanese) (Anonymous) +- Translated using Weblate (Korean) (kdh8219) +- Translated using Weblate (Lithuanian) (Anonymous) +- Translated using Weblate (Norwegian Bokmål) (Anonymous) +- Translated using Weblate (Persian) (Anonymous) +- Translated using Weblate (Portuguese (Portugal)) (Anonymous) +- Translated using Weblate (Romanian) (Anonymous) +- Translated using Weblate (Russian) (-) +- Translated using Weblate (Serbian) (Anonymous) +- Translated using Weblate (Slovenian) (Anonymous) +- Translated using Weblate (Spanish) (Anonymous) +- Translated using Weblate (Turkish) (kdh8219) +- Translated using Weblate (Turkish) (Oğuz Ersen) +- Translated using Weblate (Ukrainian) (Bezruchenko Simon) +- Translated using Weblate (Ukrainian) (Ihor Hordiichuk) + +## v1.21.2 + +Updates the Matrix Dart SDK to fix some minor bugs. + +- Added translation using Weblate (Lojban) (Zig-Rust-Odin) +- build: Update matrix dart sdk (Krille) +- chore: Update last event after decryption (Krille) +- fix: Correctly localize time of date (Krille) +- refactor: Omit local types (Krille) +- Translated using Weblate (Arabic) (Rex_sa) +- Translated using Weblate (Basque) (xabirequejo) +- Translated using Weblate (Chinese (Simplified)) (大王叫我来巡山) +- Translated using Weblate (Croatian) (Milo Ivir) +- Translated using Weblate (Estonian) (Priit Jõerüüt) +- Translated using Weblate (Galician) (josé m) +- Translated using Weblate (Hungarian) (H Tamás) +- Translated using Weblate (Korean) (kdh8219) +- Translated using Weblate (Latvian) (Edgars Andersons) +- Translated using Weblate (Polish) (Eryk Michalak) +- Translated using Weblate (Portuguese (Brazil)) (lucasmz-dev) +- Translated using Weblate (Russian) (Nicholas Winterhalter) +- Translated using Weblate (Turkish) (Oğuz Ersen) + +## v1.21.1 + +- build: Update Matrix Dart SDK (Krille) +- build: Update to Flutter 3.22.2 (krille-chan) +- feat: add option to configure reply swipe direction (MrSpoony) +- fix: Add missing unlock button to lockscreen textfield (Krille) +- fix: Auto unlock lock screen (krille-chan) +- Translated using Weblate (Chinese (Simplified)) (大王叫我来巡山) +- Translated using Weblate (Estonian) (Priit Jõerüüt) +- Translated using Weblate (Estonian) (Rauno Ots) +- Translated using Weblate (Galician) (josé m) +- Translated using Weblate (Turkish) (Oğuz Ersen) +- Translated using Weblate (Vietnamese) (Karo) + +## v1.21.0 + +FluffyChat v1.21.0 introduces the new search feature which also includes a gallery and files list +for each chat. Several performance improvements have been added under the hood, leading to a much +nicer user experience. + +- feat: Enable download images on iOS, not only share images (krille-chan) +- feat: Search feature (krille-chan) +- build: Update record package (krille-chan) +- build: Use correct pubspec.yaml format for hosted dependency (krille-chan) +- build: Use matrix sdk main branch (krille-chan) +- chore: Change default timeout to 30 min (krille-chan) +- chore: Go back to pub.dev matrix sdk (Krille) +- chore: Hotfix create missing objectbox (Krille) +- chore: Increase default network request timeout (Krille) +- chore: Make bottomnavbar labels always visible (krille-chan) +- chore: Nicer message animation (krille-chan) +- chore: Only load last event sender if necessary (Krille) +- chore: Set a maxsize for textfields (Krille) +- chore: upgrade flutter to 3.22.0 (lauren n. liberda) +- chore: upgrade flutter to 3.22.1 (lauren n. liberda) +- ci: run `flutter gen-l10n` on code_tests (lauren n. liberda) +- design: Improve design of Voice Messages and add 1.25 as speed (Krille) +- fastlane: i18n ru (Yurt Page) +- fastlane: improve full_description.txt (Yurt Page) +- fix: Broken localization with empty strings in it (krille-chan) +- fix: FakeMatrixApi check (krille-chan) +- fix: mxc reactions not rendered correctly (krille-chan) +- fix: Stickers from gboard have black background (Krille) +- fix: voip code breaking from 0.28 (td) +- refactor: Delete database file on failed app start (krille-chan) +- refactor: Display better command hints (Krille) +- refactor: Improve performance of chat list (krille-chan) +- refactor: Precache theme and directchatmatrixid to improve performance in chat list item ( + krille-chan) +- refactor: Update to Matrix Dart SDK 0.29.9 (Krille) +- Translated using Weblate (Croatian) (Milo Ivir) +- Translated using Weblate (Czech) (Jozef Mlich) +- Translated using Weblate (Georgian) (Nicholas Winterhalter) +- Translated using Weblate (German) (Gian Klug) +- Translated using Weblate (Korean) (kdh8219) +- Translated using Weblate (Latvian) (Edgars Andersons) +- Translated using Weblate (Norwegian Bokmål) (sunniva) +- Translated using Weblate (Turkish) (Oğuz Ersen) + +## v1.20.0 + +Design improvements and new advanced UI to manage rooms. + +- build: Fix google services patch (Krille) +- build: Update matrix dart sdk (krille-chan) +- build: Update to Flutter 3.19.6 (krille-chan) +- chore: Let error reporter fill out bug report (krille-chan) +- chore: More nicer event source display (krille-chan) +- chore: Update user has knocked localization with emoji (krille-chan) +- design: Adjust chat settings design (krille-chan) +- design: Adjust settings design (krille-chan) +- design: Fix color of invite button (krille-chan) +- design: Follow up chat settings design (krille-chan) +- design: Follow up settings design (krille-chan) +- design: Improve user permission settings (krille-chan) +- design: New chat access settings (krille-chan) +- design: Redesign permissions settings with dropdownbuttons (krille-chan) +- design: Remake UX of selecting messages and chats (krille-chan) +- refactor: Download on android and iOS with file_picker (krille-chan) +- Translated using Weblate (Arabic) (Rex_sa) +- Translated using Weblate (Basque) (xabirequejo) +- Translated using Weblate (Chinese (Simplified)) (大王叫我来巡山) +- Translated using Weblate (Dutch) (Anonymous) +- Translated using Weblate (Estonian) (Priit Jõerüüt) +- Translated using Weblate (Filipino) (searinminecraft) +- Translated using Weblate (Finnish) (Anonymous) +- Translated using Weblate (Galician) (josé m) +- Translated using Weblate (German) (Christian) +- Translated using Weblate (Hungarian) (Máté Menyhárt) +- Translated using Weblate (Indonesian) (Linerly) +- Translated using Weblate (Latvian) (Edgars Andersons) +- Translated using Weblate (Portuguese (Brazil)) (lucasmz) +- Translated using Weblate (Portuguese (Brazil)) (Rudah Ximenes Alvarenga) + +## v1.19.2 + +Bugfix release to mostly fix the new database encryption on Linux and update the translations. + +- build: (deps): bump peaceiris/actions-gh-pages from 3 to 4 (dependabot[bot]) +- build: Update all dependencies and remove vibrator package (krille-chan) +- build: Update emoji picker package (krille-chan) +- build: Update flutter_map package (krille-chan) +- docs: Fix typo in android app description (Krille) +- fix: Allow unencrypted database if gnome keyring not present or platform does not support it ( + krille-chan) +- fix: Background color of images with transparency (Krille) +- fix: Localizations from weblate confused by unknownEvent locale (Krille) +- fix: More logs when database fails to init and trycatch sendInitNotification (Krille) +- Added translation using Weblate (Filipino) (searinminecraft) +- Translated using Weblate (Arabic) (Rex_sa) +- Translated using Weblate (Basque) (xabirequejo) +- Translated using Weblate (Catalan) (fadelkon) +- Translated using Weblate (Chinese (Simplified)) (大王叫我来巡山) +- Translated using Weblate (Chinese (Traditional)) (D0735) +- Translated using Weblate (Chinese (Traditional)) (Kyanos Chiu) +- Translated using Weblate (Croatian) (v1s7) +- Translated using Weblate (English) (v1s7) +- Translated using Weblate (Estonian) (Priit Jõerüüt) +- Translated using Weblate (Estonian) (Priit Jõerüüt) +- Translated using Weblate (Filipino) (searinminecraft) +- Translated using Weblate (Galician) (josé m) +- Translated using Weblate (Indonesian) (Linerly) +- Translated using Weblate (Interlingua) (kdh8219) +- Translated using Weblate (Italian) (Krystian) +- Translated using Weblate (Korean) (kdh8219) +- Translated using Weblate (Persian) (EndermanXD) +- Translated using Weblate (Polish) (Adam Strączek) +- Translated using Weblate (Polish) (Krystian) +- Translated using Weblate (Russian) (v1s7) +- Translated using Weblate (Swedish) (Joaquim Homrighausen) +- Translated using Weblate (Turkish) (v1s7) +- Translated using Weblate (Ukrainian) (Ihor Hordiichuk) + +## v1.19.1 + +Minor bugfix release for login with SSO on web. + +- feat: Show/hide third column in chat view (krille-chan) +- design: Adjust some colors in inputbar (krille-chan) +- fix: Login with SSO on web (krille-chan) +- fix: Make chat permission settings null and type safe (krille-chan) +- chore: do not use static openssl (ShootingStarDragons) +- refactor: Move room headers into appbar bottom field (krille-chan) +- refactor: new flutter only typing animation (krille-chan) + +## v1.19.0 + +FluffyChat v1.19.0 features an improved design for message bubbles and a lot of fixes under the +hood. + +- build: Update matrix dart sdk (Krille) +- build: Update to flutter 3.19.5 (krille-chan) +- chore: Add missing command hints (krille-chan) +- chore: Add pagekey to custom page builder (Krille) +- chore: Adjust design of typing indicator (Krille) +- chore: Adjust ticker of notifications for Android (Krille) +- chore: Calc blurhash in other thread (Krille) +- chore: Mark muted unread rooms with bold text (krille-chan) +- chore: More minimal matrix pill (Krille) +- chore: Try out CupertinoPage instead of custom transition in router (krille-chan) +- ci: add a license compliance check (lauren n. liberda) +- design: Connect bubbles from same sender (krille-chan) +- design: Display images in correct ratio in timeline (krille-chan) +- design: Make appbar in material you design for mobile mode (krille-chan) +- design: New sticker picker next to emoji picker (krille-chan) +- design: Nicer QR Code design (krille-chan) +- design: Nicer reactions design with size animations (Krille) +- feat: Add insert content via gboard (krille-chan) +- feat: Reply with one button in desktop (krille-chan) +- fix: Do not sync in background mode (krille-chan) +- fix: FluffyChat should assume m.change_password capabilitiy is supported if not present per spec ( + krille-chan) +- fix: never use root navigator for bottom sheets (The one with the braid) +- fix: Remove pantalaimon message with normal error message (krille-chan) +- fix: Search in spaces view (krille-chan) +- fix: Set read marker on web (Krille) +- fix: Point to correct path for auth.html so completing sso login flow no longer 404s (Gavin Mogan) +- refactor: Better logic for removing outdated notifications (Krille) +- refactor: Enhance logic when to mark room as read (krille-chan) +- refactor: Remove old aliases workaround (Krille) +- refactor: Sticker widget code (Krille) +- refactor: Use dart blurhash (Krille) +- Translated using Weblate (Basque) (xabirequejo) +- Translated using Weblate (Interlingua) (Software In Interlingua) + +## v1.18.0 + +- feat: Add speed button for audioplayer (krille-chan) +- feat: enhanced send video functionality by adding toggle send original (Mubeen Rizvi) +- feat: add dialog to hide presence list with long-press (Marcus Hoffmann) +- feat: Add notification shortcuts to android (krille-chan) +- feat: make showing user presence info optional (Marcus Hoffmann) +- feat: Open chat on shortcut click on android (krille-chan) +- fix: BuildContext crash when joining room (krille-chan) +- fix: Export session (krille-chan) +- fix: Notifications open sometimes automatically on android (krille-chan) +- fix: Open room after join (krille-chan) +- fix: Open room by notification happened multiple times (krille-chan) +- fix: Open room links with event id (krille-chan) +- fix: properly initialize hideUnimportantStateEvents setting (Marcus Hoffmann) +- fix: Remove status msg not changeable from old cache (krille-chan) +- fix: use correct icons for chat pin/unpin (Marcus Hoffmann) +- fix: use correct icons for mark read/unread action (Marcus Hoffmann) +- build: Update Linux build files (krille-chan) +- build: Update to Flutter 3.19.1 (Krille) +- chore: Add more information to Person object in android notifications (krille-chan) +- chore: Thumbnail follow up for notifications (Krille) +- refactor: Better download UX with file picker for android and iOS (krille-chan) +- refactor: Use hashcode instead of string to id workaround for notifications (Krille) +- Added translation using Weblate (Belarusian) (kopatych) +- Added translation using Weblate (Interlingua) (Software In Interlingua) +- Translated using Weblate (Arabic) (Rex_sa) +- Translated using Weblate (Basque) (xabirequejo) +- Translated using Weblate (Chinese (Simplified)) (Poesty Li) +- Translated using Weblate (Chinese (Simplified)) (大王叫我来巡山) +- Translated using Weblate (Estonian) (Priit Jõerüüt) +- Translated using Weblate (Galician) (josé m) +- Translated using Weblate (German) (Benjamin Wagner) +- Translated using Weblate (Greek) (Benjamin Wagner) +- Translated using Weblate (Russian) (Benjamin Wagner) +- Translated using Weblate (Russian) (v1s7) +- Translated using Weblate (Ukrainian) (Ihor Hordiichuk) +- Translated using Weblate (Ukrainian) (Сергій) + +## v1.17.3 + +- feat: New account data based wallpaper feature (Krille) +- build: Update dependencies (Krille) +- build: Update flutter to 3.16.9 (Krille) +- build: Update matrix dart sdk to 0.25.7 (Krille) +- build: Update minor versions (Krille) +- chore: Adjust status msg design (krille-chan) +- chore: Improved error handling for recovery key (Krille) +- chore: Make stickers smaller (Krille) +- chore: Wait for device keys before ask bootstrap (Krille) +- fix: Missing null check in public room bottom sheet (Krille) +- fix: onDragDone crashes when no files found (Krille) +- fix: Render tg-forward html tags (Krille) +- fix: Use HapticFeedback.selectionClick() for long press on message (Krille) +- fix: whitespaces sometimes encoded in html message (Krille) +- fix: Share invite links of public rooms (Krille) + +## v1.17.2 + +Another minor bugfix release which also implements private read receipts. + +- feat: Implement private read receipts (krille-chan) +- feat: Join room by alias by tpying alias in searchbar (krille-chan) +- fix: Add cancel button to key request dialog (Krille) +- fix: Encode component for links correctly (Krille) +- fix: Forward arbitrary message content (krille-chan) +- fix: Open publicroombottomsheet by alias (krille-chan) +- docs: Add noto animated emojis link (krille-chan) +- docs: New website (krille-chan) +- build: Do not load emojis at initial start on web (krille-chan) +- build: Update flutter to 3.16.8 (krille-chan) +- build: Update sdk to 0.25.6 (Krille) +- chore: Add more explaining text for key verification (krille-chan) +- chore: Resort settings and add more description text (krille-chan) +- refactor: Dialog BuildContext (krille-chan) +- refactor: Use popupmenudivider instead of workaround (krille-chan) +- Translated using Weblate (Arabic) (Rex_sa) +- Translated using Weblate (Basque) (xabirequejo) +- Translated using Weblate (Chinese (Simplified)) (Poesty Li) +- Translated using Weblate (Estonian) (Priit Jõerüüt) +- Translated using Weblate (Galician) (josé m) +- Translated using Weblate (German) (nautilusx) +- Translated using Weblate (Russian) (v1s7) +- Translated using Weblate (Swedish) (Flat) +- Translated using Weblate (Ukrainian) (Ihor Hordiichuk) +- Translated using Weblate (Ukrainian) (Сергій) + +## v1.17.1 + +Minor bugfix release. + +- build: Update matrix sdk 0.25.5 (Krille) +- build: Update to flutter 3.16.7 (Krille) +- chore: Remove vibration on iOS for long press (Krille) +- design: Better paddings in tablet mode (krille-chan) +- docs: Fix typo in readme (Krille) +- Fix dependency. missing yq when invoking setup-web. also ensure updated config.json copied in ( + Isaac Johnson) +- fix: text nodes with multiple links crash the timeline (Krille) +- fix: URL too long when reporting bug (Krille) +- fix: Wait for user device keys before start verification (Krille) + +## v1.17.0 + +FluffyChat v1.17.0 refreshes the overall user experience, changes some design and fixes a lot of +bugs. It also replaces the stories feature with matrix presences, introduces a new kind of database +to store the messages locally and improves the performance and app stability. + +- change: Remove wallpaper feature (krille-chan) +- design: Adjust login page design (krille-chan) +- design: Adjust new chat page design (Krille) +- design: Adjust reply design (krille-chan) +- design: New design for login page (krille-chan) +- feat: Add registration buttons for servers with public registration url (krille-chan) +- feat: Animate in new events in timeline (krille-chan) +- feat: Block users who sent invites (krille-chan) +- feat: Display migration notification (Krille) +- feat: Hovermenu for messages for mouse (krille-chan) +- feat: New change password page with server capabilities check (krille-chan) +- feat: Search for public spaces (krille-chan) +- feat: Try out FluffyBox 2 database (Krille) +- fix: Add 3pid email for password reset (krille-chan) +- fix: Audiomessage break app (Krille) +- fix: Cannot change send on enter on desktop (krille-chan) +- fix: Darktheme contrast fixes with primary color (krille-chan) +- fix: Join public rooms (krille-chan) +- fix: Make user admin (krille-chan) +- fix: New json url for homeserver list (krille-chan) +- fix: Open notification for invite crashes app (krille-chan) +- fix: Remove web background (Krille) +- fix: Some links not clickable in messages (Krille) +- fix: Update manual endpoints (Krille) +- fix: Web SSO (Krille) +- refactor: More stable scroll to event (krille-chan) +- refactor: Reinvite other part instead of reopen dm (Krille) +- refactor: Remove todo list feature (krille-chan) +- refactor: Remove unnecessary setState in ChatPage for better performance (krille-chan) +- refactor: Remove unused code (krille-chan) +- refactor: Remove unused localization strings and add ci check (krille-chan) +- refactor: Replace stories feature with presence status msg (Krille) +- refactor: Spaces UX improvements (krille-chan) +- Translated using Weblate (Arabic) (Rex_sa) +- Translated using Weblate (Basque) (xabirequejo) +- Translated using Weblate (Chinese (Simplified)) (Eric) +- Translated using Weblate (Chinese (Simplified)) (Poesty Li) +- Translated using Weblate (Croatian) (Milo Ivir) +- Translated using Weblate (Estonian) (Priit Jõerüüt) +- Translated using Weblate (Galician) (josé m) +- Translated using Weblate (German) (Christian) +- Translated using Weblate (German) (nautilusx) +- Translated using Weblate (Hindi) (immodded) +- Translated using Weblate (Italian) (Claudio Maradonna) +- Translated using Weblate (Italian) (Timothy Redaelli) +- Translated using Weblate (Portuguese (Brazil)) (Hermógenes Oliveira) +- Translated using Weblate (Russian) (v1s7) +- Translated using Weblate (Spanish) (José Muñoz) +- Translated using Weblate (Turkish) (Oğuz Ersen) +- Translated using Weblate (Ukrainian) (Ihor Hordiichuk) + +## v1.16.1 + +Test candidate for the new database. + +## v1.16.0 + +- build: Set olm to 1.3.2 to fix android build (krille-chan) +- build: Update dependencies (krille-chan) +- build: Update flutter_olm (Krille) +- build: Update matrix dart sdk to 0.23.0 (Krille) +- build: Update Matrix Dart SDK to 0.24.0 (Krille) +- build: Update openssl crypto (Krille) +- build: Update to flutter 3.16.2 (krille-chan) +- build: Workaround for broken flutter secure storage on linux (krille-chan) +- chore: Add error report for incorrect recovery key (Krille) +- chore: Always show notification popup on android (krille-chan) +- chore: Do not ship unused emoji font for android and iOS (krille-chan) +- chore: Fetch cached presence (Krille) +- chore: Update pubspec.lock (Krille) +- chore: upgrade flutter to 3.16.0 (lauren n. liberda) +- docs: Fix links to GitHub (Jérémie Roquet) +- feat: Display presences in the app (krille-chan) +- feat: Enable experimental suport for dehydrated devices (Krille) +- feat: Improved UX design for new chat page (krille-chan) +- feat: New UX design for create group chat (krille-chan) +- fix: Block users (krille-chan) +- fix: Blurhash crashes on height 0 (krille-chan) +- fix: Do not hide push if app romm in foreground but is in background (krille-chan) +- fix: Do not scroll up on enter chat (Krille) +- fix: emoji import from ZIP file (The one with the braid) +- fix: Encryption dialog crashes in column mode (krille-chan) +- fix: Error widget spamming with dialogs (Krille) +- fix: fcm patch (lauren n. liberda) +- fix: Glitch in event info dialog (krille-chan) +- fix: message bubble position on desktop devices (The one with the braid) +- fix: navigating back from full screen video (Aryan Arora) +- fix: Only load first pinned event (krille-chan) +- fix: Userbottomsheet crash on some edge cases (krille-chan) +- fix: whatever happens with android native libraries since flutter 3.16 (lauren n. liberda) +- refactor: Check if app is in foreground on pushhelper (krille-chan) +- refactor: Event list (krille-chan) +- refactor: Migrate for Flutter 3.16.0 (Krille) +- refactor: Remove copy dialog before opening links (krille-chan) +- Translated using Weblate (Arabic) (Rex_sa) +- Translated using Weblate (Basque) (xabirequejo) +- Translated using Weblate (Bengali) (Allan Nordhøy) +- Translated using Weblate (Bengali) (Anonymous) +- Translated using Weblate (Bengali) (Graeme Power) +- Translated using Weblate (Bengali) (Joaquim Homrighausen) +- Translated using Weblate (Bengali) (Raatty) +- Translated using Weblate (Bengali) (Sorunome) +- Translated using Weblate (Catalan) (Adolfo Jayme Barrientos) +- Translated using Weblate (Catalan) (Anonymous) +- Translated using Weblate (Catalan) (Auri B.P) +- Translated using Weblate (Catalan) (Joaquim Homrighausen) +- Translated using Weblate (Catalan) (Raatty) +- Translated using Weblate (Chinese (Simplified)) (Anonymous) +- Translated using Weblate (Chinese (Simplified)) (Eric) +- Translated using Weblate (Chinese (Traditional)) (Anonymous) +- Translated using Weblate (Chinese (Traditional)) (Joaquim Homrighausen) +- Translated using Weblate (Chinese (Traditional)) (Raatty) +- Translated using Weblate (Chinese (Traditional)) (SuperSonic) +- Translated using Weblate (Croatian) (Anonymous) +- Translated using Weblate (Czech) (Anonymous) +- Translated using Weblate (Czech) (Tomkoid) +- Translated using Weblate (Esperanto) (Anonymous) +- Translated using Weblate (Esperanto) (Joaquim Homrighausen) +- Translated using Weblate (Esperanto) (Raatty) +- Translated using Weblate (Esperanto) (Tirifto) +- Translated using Weblate (Finnish) (Anonymous) +- Translated using Weblate (French) (Anonymous) +- Translated using Weblate (French) (Mæve Rey) +- Translated using Weblate (Galician) (Anonymous) +- Translated using Weblate (Galician) (josé m) +- Translated using Weblate (German) (Bella) +- Translated using Weblate (German) (Christian) +- Translated using Weblate (Greek) (Anonymous) +- Translated using Weblate (Hebrew) (Anonymous) +- Translated using Weblate (Hebrew) (Joaquim Homrighausen) +- Translated using Weblate (Hebrew) (Raatty) +- Translated using Weblate (Hebrew) (Sorunome) +- Translated using Weblate (Hebrew) (y batvinik) +- Translated using Weblate (Hindi) (Anonymous) +- Translated using Weblate (Hungarian) (Anonymous) +- Translated using Weblate (Hungarian) (Joaquim Homrighausen) +- Translated using Weblate (Hungarian) (notramo) +- Translated using Weblate (Hungarian) (Raatty) +- Translated using Weblate (Indonesian) (Anonymous) +- Translated using Weblate (Irish) (Anonymous) +- Translated using Weblate (Irish) (Graeme Power) +- Translated using Weblate (Irish) (Joaquim Homrighausen) +- Translated using Weblate (Irish) (Raatty) +- Translated using Weblate (Italian) (Anonymous) +- Translated using Weblate (Italian) (J. Lavoie) +- Translated using Weblate (Italian) (Joaquim Homrighausen) +- Translated using Weblate (Italian) (Raatty) +- Translated using Weblate (Japanese) (Anonymous) +- Translated using Weblate (Japanese) (cPidx) +- Translated using Weblate (Korean) (Anonymous) +- Translated using Weblate (Korean) (Kim Tae Kyeong) +- Translated using Weblate (Korean) (Raatty) +- Translated using Weblate (Latvian) (Anonymous) +- Translated using Weblate (Lithuanian) (Anonymous) +- Translated using Weblate (Lithuanian) (Mind) +- Translated using Weblate (Norwegian Bokmål) (Allan Nordhøy) +- Translated using Weblate (Norwegian Bokmål) (Anonymous) +- Translated using Weblate (Norwegian Bokmål) (Joaquim Homrighausen) +- Translated using Weblate (Norwegian Bokmål) (Raatty) +- Translated using Weblate (Occidental) (Anonymous) +- Translated using Weblate (Occidental) (OIS) +- Translated using Weblate (Persian) (Anonymous) +- Translated using Weblate (Polish) (Anonymous) +- Translated using Weblate (Portuguese (Brazil)) (Anonymous) +- Translated using Weblate (Portuguese (Portugal)) (Anonymous) +- Translated using Weblate (Portuguese (Portugal)) (Joaquim Homrighausen) +- Translated using Weblate (Portuguese (Portugal)) (Raatty) +- Translated using Weblate (Portuguese (Portugal)) (Tmpod) +- Translated using Weblate (Portuguese) (Allan Nordhøy) +- Translated using Weblate (Portuguese) (Anonymous) +- Translated using Weblate (Portuguese) (Christian) +- Translated using Weblate (Portuguese) (Graeme Power) +- Translated using Weblate (Portuguese) (Joaquim Homrighausen) +- Translated using Weblate (Portuguese) (Raatty) +- Translated using Weblate (Portuguese) (Sorunome) +- Translated using Weblate (Romanian) (Anonymous) +- Translated using Weblate (Russian) (Anonymous) +- Translated using Weblate (Serbian) (Anonymous) +- Translated using Weblate (Serbian) (Joaquim Homrighausen) +- Translated using Weblate (Serbian) (Raatty) +- Translated using Weblate (Serbian) (Слободан Симић(Slobodan Simić)) +- Translated using Weblate (Slovak) (Allan Nordhøy) +- Translated using Weblate (Slovak) (Anonymous) +- Translated using Weblate (Slovak) (Graeme Power) +- Translated using Weblate (Slovak) (Joaquim Homrighausen) +- Translated using Weblate (Slovak) (Raatty) +- Translated using Weblate (Slovenian) (Anonymous) +- Translated using Weblate (Slovenian) (Joaquim Homrighausen) +- Translated using Weblate (Slovenian) (Raatty) +- Translated using Weblate (Spanish) (Anonymous) +- Translated using Weblate (Spanish) (Joaquim Homrighausen) +- Translated using Weblate (Spanish) (José Muñoz) +- Translated using Weblate (Spanish) (Mæve Rey) +- Translated using Weblate (Spanish) (programmerpony) +- Translated using Weblate (Spanish) (Raatty) +- Translated using Weblate (Swedish) (Anonymous) +- Translated using Weblate (Swedish) (Dennis) +- Translated using Weblate (Swedish) (Fredrik Lindqvist) +- Translated using Weblate (Swedish) (paintwithblue) +- Translated using Weblate (Tamil) (Anonymous) +- Translated using Weblate (Tamil) (Graeme Power) +- Translated using Weblate (Tamil) (Joaquim Homrighausen) +- Translated using Weblate (Tamil) (Raatty) +- Translated using Weblate (Tamil) (Sorunome) +- Translated using Weblate (Thai) (Anonymous) +- Translated using Weblate (Tibetan) (Anonymous) +- Translated using Weblate (Turkish) (Anonymous) +- Translated using Weblate (Turkish) (Yourredyknowwhoitisss) +- Translated using Weblate (Vietnamese) (Allan Nordhøy) +- Translated using Weblate (Vietnamese) (Anonymous) +- Translated using Weblate (Vietnamese) (Christian) +- Translated using Weblate (Vietnamese) (Graeme Power) +- Translated using Weblate (Vietnamese) (Joaquim Homrighausen) +- Translated using Weblate (Vietnamese) (Raatty) +- Translated using Weblate (Vietnamese) (Sorunome) + +## v1.15.1 + +- feat: Make all text in chat selectable on desktop (krille-chan) +- chore: Add border to images in timeline (krille-chan) +- chore: added android audio sharing intent (Aryan Arora) +- fix: Dockerfile: install jq in the builder image (David Douard) +- fix: Cannot pin messages of other users (Krille) +- fix: Emojipicker flickering because noRecent (krille-chan) +- fix: LoadProfileBottomSheet accessing disposed outerContext (Aryan Arora) +- fix: More stable scroll up to event (krille-chan) +- fix: Properly capitalize Linux window title (kramo) +- fix: Remove failed to sent events (krille-chan) +- fix: Routing glitch when using SSO on desktop (krille-chan) +- fix: SSO with no identity providers (krille-chan) +- refactor: Do not init client in background mode on Android (krille-chan) +- refactor: Store and fix missing persistence of some values (krille-chan) +- Translated using Weblate (Arabic) (Rex_sa) +- Translated using Weblate (Basque) (xabirequejo) +- Translated using Weblate (Chinese (Simplified)) (Eric) +- Translated using Weblate (Czech) (Vojtěch Fošnár) +- Translated using Weblate (Dutch) (Jelv) +- Translated using Weblate (Estonian) (Priit Jõerüüt) +- Translated using Weblate (Finnish) (Aminda Suomalainen) +- Translated using Weblate (German) (Haui) +- Translated using Weblate (Ukrainian) (Ihor Hordiichuk) + +## v1.15.0 + +- feat: Add experimental todo list for rooms (krille-chan) +- feat: better scroll to last read message handling (krille-chan) +- build: Add appid suffix to android debug builds (krille-chan) +- build: Download canvaskit on build for flutter web (krille-chan) +- build: Update to Flutter 3.13.9 (krille-chan) +- chore: Add descriptions in the areYouSure dialogs for better UX (krille-chan) +- chore: Adjust bitrate for smaller voice messages (krille-chan) +- chore: Change way how to seek in audioplayer (Krille) +- chore: Limit image file and video picker until we have a background service (krille-chan) +- chore: Minor design fixes (Krille) +- design: Make incoming messages color more light (krille-chan) +- design: Make key verification an adaptive dialog (krille-chan) +- design: Make own chat bubble primary color for better contrast (krille-chan) +- fix: Create chat dialog crashes sometimes and power level textfield does not validate input ( + krille-chan) +- fix: Remove uncompatible dependencies connectivity_plus and wakelock (Krille) +- fix: Use correct localization for redactedBy (krille-chan) +- fix: noFCM warning dialog (krille-chan) +- fix: render tg-forward as blockquote style (krille-chan) +- fix: Archive does not update its state +- refactor: Change audio codec to opus where supported to have better compatibility with Element ( + Krille) +- refactor: Make file dialog adaptive and adjust design (krille-chan) +- refactor: Preload notification sound on web (Krille) +- refactor: Remove unused config (krille-chan) +- refactor: Remove unused config params (krille-chan) +- refactor: Update FutureLoadingDialog (krille-chan) +- refactor: use locally hosted canvaskit instead of calling google (root) +- Translated using Weblate (Arabic) (Rex_sa) +- Translated using Weblate (Basque) (xabirequejo) +- Translated using Weblate (Chinese (Simplified)) (Eric) +- Translated using Weblate (Croatian) (Milo Ivir) +- Translated using Weblate (German) (Christian) +- Translated using Weblate (German) (Ettore Atalan) +- Translated using Weblate (Hungarian) (H Tamás) +- Translated using Weblate (Polish) (Tomasz W) +- Translated using Weblate (Russian) (v1s7) +- Translated using Weblate (Slovak) (Jozef Gaal) +- Translated using Weblate (Thai) (Amy/Atius) + +## v1.14.5 + +- Hotfix iOS crashes on start +- Hotfix cannot reset applock + +## v1.14.4 + +Minor bugfix release. Please note that because of a Flutter update FluffyChat is no longer +compatible with iOS 11. + +- Translated using Weblate (Spanish) (José Muñoz) +- Translated using Weblate (Spanish) (Yotta Mxt) +- build: Add custom iOS notification sound (Krille) +- build: Set minimum iOS version to 12 +- design: Hide Navigationbar labels (krille-chan) +- design: New notification sound (krille-chan) +- fix: Flutter warnings because of applock animation (krille-chan) +- fix: UIA requests with navigator (krille-chan) +- fix: open story from push notification (Krille-chan) +- refactor: Only preload client for GUI start (krille-chan) + +## v1.14.3 + +- hotfix app lock still displayed even when account is logged out +- Update to Flutter 3.13.6 + +## v1.14.2 + +- hotfix for broken applock screen + +## v1.14.1 + +- fix: Routing bug when adding second account via password login + +## v1.14.0 + +Release with a lot of bugfixes and refactorings under the hood. FluffyChat now uses go_router +instead of vrouter, works with the newest Flutter SDK and supports "reason" field for redactions. +For Android there is a new "background-fetch mode" for Push Notifications which should make +notifications in background faster and more reliable and reduce battery-usage. + +- feat: Background fetch mode on Android (krille-chan) +- feat: Improved mouse support for selecting events (krille-chan) +- feat: Write and display reason for redacting a message (krille-chan) +- build: Add curl to build packages (krille-chan) +- build: Re-add handywindow linux code lines (Krille) +- build: Update Matrix dart sdk to 0.22.3 (Krille) +- build: Update targetSdkVersion to 33 (Android 13) (Krille) +- build: Update to Flutter 3.13.1 (Krille) +- change: Remove widgets feature (Krille) +- chore: Add tailwind.css to gitignore (Krille) +- chore: Display username in userbottomsheet (krille-chan) +- chore: Make appbar buttons correct size (krille-chan) +- chore: Update file picker (krille-chan) +- ci: Build snap on snapcraft again and only promote from ci (krille-chan) +- ci: Test if app builds for iOS (krille-chan) +- design: Add scale animation hover effects on navrail and story buttons (Krille) +- design: Big redesign of three column mode to advanced two column mode (krille-chan) +- design: Chat list design adjustments (Krille) +- design: Display last story as tiny message bubble in chat list (krille-chan) +- design: Improve invite chat UX (krille-chan) +- design: Move chatbackup in adaptive bottom sheet (krille-chan) +- design: New three column layout for wide screens (krille-chan) +- design: Nicer user bottom sheet (krille-chan) +- design: Redesign style page (Krille) +- docs: Update readme (Krille) +- feat/ChatListItem: small changes (gilice) +- fix: Bootstrap on first try fails sometimes (krille-chan) +- fix: Cancel search on back button tap on android (Krille) +- fix: Do not allow empty search server (krille-chan) +- fix: First story appears to be unencrypted sometimes (krille-chan) +- fix: Remove mpv and zenity to fix linux snap builds (krille-chan) +- fix: Unable to send files from snap version (krille-chan) +- refactor: Change group description to chat description (krille-chan) +- refactor: Make router static (Krille) +- refactor: Migrate from pathsegment routing (Krille) +- refactor: Migrate routes to go router (krille-chan) +- refactor: Remove bubble size slider (Krille) +- refactor: Replace vrouter with gorouter (Krille) +- refactor: Space routes to normal room routes (Krille) +- refactor: Update badge (krille-chan) +- refactor: Update html build files (krille-chan) +- Added translation using Weblate (Toki Pona) (Sollee) +- Deleted translation using Weblate (Toki Pona) (Christian) +- Translated using Weblate (Arabic) (Rex_sa) +- Translated using Weblate (Basque) (xabirequejo) +- Translated using Weblate (Chinese (Simplified)) (Eric) +- Translated using Weblate (Chinese (Simplified)) (Poesty Li) +- Translated using Weblate (Croatian) (Milo Ivir) +- Translated using Weblate (Czech) (Flibble) +- Translated using Weblate (Czech) (Matyáš Caras) +- Translated using Weblate (Dutch) (Jelv) +- Translated using Weblate (Estonian) (Priit Jõerüüt) +- Translated using Weblate (Galician) (josé m) +- Translated using Weblate (German) (Christian) +- Translated using Weblate (German) (nautilusx) +- Translated using Weblate (Indonesian) (Linerly) +- Translated using Weblate (Japanese) (Christian) +- Translated using Weblate (Russian) (DarkCoder15) +- Translated using Weblate (Russian) (v1s7) +- Translated using Weblate (Turkish) (Oğuz Ersen) +- Translated using Weblate (Ukrainian) (Ihor Hordiichuk) +- Translated using Weblate (Ukrainian) (Skrripy) + +## v1.13.0 + +- feat: option to not send typing notifications (Bnyro) +- feat: small performance tweaks for Message (gilice) +- feat: New onboarding screen with SSO as first class feature +- feat: Import/Export emoji packs from/to zip file +- fix: Set iOS badge (Krille) +- refactor: Switch the dev hosting platform from GitLab to GitHub +- design: New more compact chat bubble design and other design tweaks +- design: Login now shows SSO more prominent and deprecates in-app registration in favor of SSO + registration +- Translated using Weblate (Arabic) (Rex_sa) +- Translated using Weblate (Chinese (Simplified)) (Poesty Li) +- Translated using Weblate (Estonian) (Priit Jõerüüt) +- Translated using Weblate (German) (nautilusx) +- Translated using Weblate (Indonesian) (Linerly) +- Translated using Weblate (Ukrainian) (Ihor Hordiichuk) + +## v1.12.0 + +- Added translation using Weblate (Toki Pona) (Mæve Rey) +- Translated using Weblate (Arabic) (Rex_sa) +- Translated using Weblate (Chinese (Simplified)) (Eric) +- Translated using Weblate (Croatian) (Milo Ivir) +- Translated using Weblate (Estonian) (Priit Jõerüüt) +- Translated using Weblate (Galician) (josé m) +- Translated using Weblate (Indonesian) (Linerly) +- Translated using Weblate (Polish) (lauren n. liberda) +- Translated using Weblate (Romanian) (Riley) +- Translated using Weblate (Russian) (DarkCoder15) +- Translated using Weblate (Spanish) (José Muñoz) +- Translated using Weblate (Ukrainian) (Ihor Hordiichuk) +- build: Remove dependency overwrite for ffi (Krille) +- build: Update dependencies (Krille) +- builds: Change minsdkversion of Android from 16 to 19 (Krille) +- builds: Do not allow failure for linux x86 (Krille) +- builds: Do not use verbose mode on building linux (Krille) +- builds: Linux with flutter 3.10 (Krille) +- builds: Remove workaround for building linux arm64 (Krille) +- builds: Update file_picker to 5.3.0 (Krille) +- builds: Update flutter table html (Krille) +- builds: Update flutter_html (Krille) +- builds: migrate to dart 3.0/flutter 3.10 (lauren n. liberda) +- chore: Add missing blockquote style (Krille) +- chore: Allow failure in build linux for now (Krille) +- chore: Ask for storage persistence (Krille) +- chore: Clean unused translations (Malin Errenst) +- chore: Enhance room pills (Krille) +- chore: Minor code clean up (Krille) +- chore: Update flutter webrtc (Krille) +- chore: Upgrade to Flutter 3.10.1 (Malin Errenst) +- chore: change release curl calls to use --fail-with-body (Tim Flink) +- chore: update macOS icons and add build script (TheOneWithTheBraid) +- design: Replace anime images with neutral cupertino icons (Krille) +- feat: Add toggle to mute notifications from chat groups (fbievan) +- feat: Allow ruby tags in html (Krille) +- feat: Display progress value for initial sync (Krille) +- feat: Implement new error reporting tool when critical features break like playing audio or video + messages or opening a chat (Krille) +- feat: clean up macOS build metadata (TheOneWithTheBraid) +- feat: set display information correctly (TheOneWithTheBraid) +- feat: update macOS build files (TheOneWithTheBraid) +- feat: update macOS build information for macOS Ventura (TheOneWithTheBraid) +- fix "Unhandled Exception: VRouter.of(context) was called with a context which does not contain a + VRouter." (Lauren N. Liberda) +- fix: Broken arb file (Krille) +- fix: Do not unnecessary request all members in public rooms (Krille) +- fix: Remove wrong rendered linebreak in html (Krille) +- fix: Scroll down button (Krille) +- fix: Scroll up and scroll down buttons in chat list (Krille) +- fix: Scrolldown button (Krille) +- fix: Too long file name cause a render overflow (Skying) +- fix: Try to reload timeline on IOException (Krille) +- fix: User pills (Krille) +- fix: broken CI artifact uploads (TheOneWithTheBraid) +- fix: custom emote placeholder (TheOneWithTheBraid) +- fix: path of libolm (TheOneWithTheBraid) +- fix: Quick account switching (JHansen) +- fix: read reciepts (JHansen) +- perf: Use valuenotifier to not rebuild chatlist (Krille) +- refactor: Reimplement flutter matrix html locally (Krille) +- refactor: Update Roboto and Noto Emoji (The one with the Braid) +- refactor: Use AnimatedSize for FAB (Krille) +- refactor: Use DateTime for weekday localization (Malin Errenst) + +## v1.11.2 + +- Translated using Weblate (Croatian) (Milo Ivir) +- Translated using Weblate (Dutch) (Jelv) +- Translated using Weblate (Estonian) (Priit Jõerüüt) +- Translated using Weblate (Galician) (josé m) +- Translated using Weblate (Polish) (Eryk Michalak) +- Translated using Weblate (Turkish) (Oğuz Ersen) +- Translated using Weblate (Ukrainian) (Ihor Hordiichuk) +- feat: Permission dialog before open link in browser (Krille) +- fix: Chats do not load (Krille) + +## v1.11.1 - 2023-04-20 + +- fix: Download files on web and iOS with correct mimetype + +## v1.11.0 - 2023-04-14 + +- feat: Add visual read marker (Krille) +- feat: Jump to last read event (Krille) +- feat: Use fragmented timeline to jump to event (Krille) +- feat: change to flutterwebauth2 (ShootingStarDragons) +- fix: Join public room (Krille) +- fix: Set fcm priority to max on android (Krille) +- refactor: CI scripts and old workarounds for build scripts (Krille) +- refactor: Client in ChatPage (Krille) +- refactor: Not nullable room in ChatPage (Krille) +- refactor: Switch to file_picker package and get rid of some dependency overrides (Krille) +- refactor: Use correct Matrix instance (Krille) +- style: Make emptypage logo bigger (Krille) +- style: Minor adjustments for modal bottom sheets (Krille) +- style: Move chats to top (Krille) +- style: Use SliverList for chatlist (Krille) +- refactor: Container -> SizedBox.shrink() (noob_tea) +- Translated using Weblate (Chinese (Simplified)) (Eric) +- Translated using Weblate (Dutch) (Jelv) +- Translated using Weblate (Estonian) (Priit Jõerüüt) +- Translated using Weblate (French) (Anne Onyme 017) +- Translated using Weblate (Galician) (josé m) +- Translated using Weblate (Indonesian) (Linerly) +- Translated using Weblate (Persian) (Parsa) +- Translated using Weblate (Persian) (Siavash) +- Translated using Weblate (Polish) (Luna) +- Translated using Weblate (Swedish) (Kristoffer Grundström) +- Translated using Weblate (Turkish) (Oğuz Ersen) +- Translated using Weblate (Ukrainian) (Ihor Hordiichuk) + +## v1.10.0 - 2023-02-25 + +- Added translation using Weblate (Thai) (Wphaoka) +- Added translation using Weblate (Tibetan) (Nathan Freitas) +- Default hardcoded message when l10n is not available (fabienli) +- Fix: The stable repo fingerprint (TODO the qr-code should be updated) (machiav3lli) +- Translated using Weblate (Basque) (xabirequejo) +- Translated using Weblate (Dutch) (Jelv) +- Translated using Weblate (Estonian) (Priit Jõerüüt) +- Translated using Weblate (French) (Anne Onyme 017) +- Translated using Weblate (Galician) (josé m) +- Translated using Weblate (Galician) (josé m) +- Translated using Weblate (Indonesian) (Linerly) +- Translated using Weblate (Japanese) (Suguru Hirahara) +- Translated using Weblate (Persian) (Farooq Karimi Zadeh) +- Translated using Weblate (Swedish) (Joaquim Homrighausen) +- Translated using Weblate (Turkish) (Oğuz Ersen) +- Translated using Weblate (Ukrainian) (Ihor Hordiichuk) +- chore: Disable stable for web until script is fixed (Krille) +- chore: Display warning when logout without backup (Krille) +- chore: Downgrade flutter CI version (Krille) +- chore: Follow up audioplayer on linux (Krille) +- chore: Follow up chat encryption desgin (Krille) +- chore: Follow up fix audioplayer on android (Christian Pauly) +- chore: Follow up formatting (Christian Pauly) +- chore: Follow up formatting (Krille) +- chore: Follow up remove hero animation (Krille) +- chore: Follow up secrity settings design (Krille) +- chore: Follow up settings page (Krille) +- chore: Follow up settings page design (Christian Pauly) +- chore: Follow up style adjustments (Krille) +- chore: Lookup l10n in pushhelper if null (Krille) +- chore: Update matrix package to 0.17.0 (Krille) +- chore: Update to Flutter 3.7.1 (Krille) +- docs/qr-stable.svg: update the QR code (Aminda Suomalainen) +- feat: Enable audioplayer for web and linux (Christian Pauly) +- fix: Display error when user tries to send too large file (Christian Pauly) +- refactor: Do only instantiate AudioPlayer() object when in use (Christian Pauly) +- refactor: Remove syncstatus verbose logs (Christian Pauly) +- refactor: Store cached files in tmp directory so OS will clear file cache from time to time ( + Krille) +- style: Adjust key verification dialog (Christian Pauly) +- style: Bootstrap design adjustments (Christian Pauly) +- style: Encryption page adjustments (Christian Pauly) +- style: Enhance user device settings design (Krille) +- style: Enhanced chat details design (Krille) +- style: Give chat list list tiles rounded corners (Krille) +- style: Link underline color (Christian Pauly) +- style: Make adaptive bottom sheets scrollable by default (Krille) +- style: Make invite page more pretty (Krille) +- style: New settings design (Krille) +- style: Nicer chips in encryption settings and icons showing device status (Krille) +- style: Use emojis on web as well (Christian Pauly) +- style: Use robotomono to display device keys (Christian Pauly) +- utils/url_launcher: force opening http(s) links in external browser (Marcus Hoffmann) + +## v1.9.0 - 2023-01-29 + +- Translated using Weblate (Czech) (Michal Bedáň) +- Translated using Weblate (Czech) (grreby) +- Translated using Weblate (Dutch) (Jelv) +- Translated using Weblate (Estonian) (Priit Jõerüüt) +- Translated using Weblate (Galician) (josé m) +- Translated using Weblate (German) (Christian) +- Translated using Weblate (German) (Vri 🌈) +- Translated using Weblate (Indonesian) (Linerly) +- Translated using Weblate (Korean) (Youngbin Han) +- Translated using Weblate (Polish) (Wiktor) +- Translated using Weblate (Turkish) (Oğuz Ersen) +- Translated using Weblate (Ukrainian) (Ihor Hordiichuk) +- chore: Change invite link textfield label (Krille) +- chore: Remove unused dependency (Krille) +- chore: Remove unused translations (Krille) +- chore: Update Matrix SDK and refactor (Krille) +- chore: Update dependencies (Krille) +- chore: Update flutter_map (Krille) +- chore: add integration tests (TheOneWithTheBraid) +- chore: add integration tests for spaces (TheOneWithTheBraid) +- design: More clear chat background and rounded popup menu (Krille) +- design: Nicer navigationrail (Krille) +- design: Upgrade to Flutter 3.7 +- feat: Bring back disabling the header bar on Linux desktop (q234rty) +- feat: Nicer design for abandonded DM rooms (Christian Pauly) +- fix: Archive (Krille) +- fix: Shared preferences package for flutter 3.7 (Christian Pauly) +- fix: permission of web builds (TheOneWithTheBraid) +- fix: Notification Settings (Krille) +- refactor: Migrate to Flutter 3.7.0 (Christian Pauly) +- refactor: Same animations everywhere in app (Krille) +- refactor: Stories header with futurebuilder (Krille) +- refactor: disable some redundant tests (TheOneWithTheBraid) +- style: Animate in out search results (Krille) +- style: New modal bottom sheets (Krille) +- style: Redesign public room bottomsheets (Krille) + +## v1.8.0 2022-12-30 + +- Added translation using Weblate (Yue (yue_HK)) (Raatty) +- Translated using Weblate (Chinese (Simplified)) (Mike Evans) +- Translated using Weblate (Estonian) (Priit Jõerüüt) +- Translated using Weblate (French) (Anne Onyme 017) +- Translated using Weblate (Indonesian) (Linerly) +- Translated using Weblate (Turkish) (Oğuz Ersen) +- Translated using Weblate (Ukrainian) (Ihor Hordiichuk) +- design: New encryption page (Krille Fear) +- feat: Add audio message support to linux (Krille Fear) +- feat: Use Android system accent color (Krille Fear) +- feat: include olm to Windows builds (TheOneWithTheBraid) +- feat: Store drafts (Krille) +- fix: Android push notification follow-up (TheOneWithTheBraid) +- fix: Content banner (Krille Fear) +- fix: Correct redacted by username (Krille Fear) +- fix: Do not setup push on every app resume (Krille Fear) +- fix: Encryption button is orange in public rooms (Krille Fear) +- fix: File event design (Krille Fear) +- fix: Hide google services warning after marked (Krille Fear) +- fix: Improve story page appearance (Reinhart Previano Koentjoro) +- fix: Libhandy windows (Krille Fear) +- fix: Monochromatic icon rendering for Android 13+ (Reinhart Previano Koentjoro) +- fix: homeserver error text not visible in app bar (TheOneWithTheBraid) +- fix: minor issues in room list (TheOneWithTheBraid) + +## v1.7.2 2022-12-19 + +Update dependencies and translations. + +## v1.7.1 2022-11-23 + +Minor bugfix release to retrigger build for FlatPak and Android. Fixes some style bugs and updates +some translations + +## v1.7.0 2022-11-17 + +FluffyChat 1.7.0 features a new way to work with spaces via a bottom navigation bar. A lot of work +has also been done under the hood to make the app faster and more stable. The main color has +slightly changed and the design got some finetuning. + +- chore: Add keys to roomlist and stories header (Christian Pauly) +- chore: Add unread badge to navigation rail and adjust design (Christian Pauly) +- chore: Adjust colors (Christian Pauly) +- chore: Better design chat list items (Christian Pauly) +- chore: Better load first client (Christian Pauly) +- design: Hide unimportant state events instead of folding (Christian Pauly) +- design: Improve login design (Krille Fear) +- design: Nicer display notification short texts (Christian Pauly) +- feat: background and terminated calls [android] (td) +- feat: New navigation design (Christian Pauly) +- fix: Hide password at login page (Krille Fear) +- fix: Import session on iOS (Christian Pauly) +- fix: incorrect setState inside setState in ChatListController (td) +- fix: Password not obscure for a second when submitting login textfield (Christian Pauly) +- fix: Popup menu without elevation (Christian Pauly) +- fix: Push error message (Christian Pauly) +- fix: Remove emoji picker workaround (Christian Pauly) +- fix: Set theme after start app (Christian Pauly) +- fix: Settings profile picture (Christian Pauly) +- fix: Share files (Christian Pauly) +- fix: UIA request handler (Christian Pauly) +- fix: Update emoji picker for web and desktop (Christian Pauly) +- improved (most) icons/image scaling, including avatar scaling (Mg138) +- Mention Element instead of Riot (Has been renamed about a year ago) (jooooscha) +- refactor: Chat list body code (Christian Pauly) +- refactor: Minor chatlist refactoring (Christian Pauly) +- refactor: No longer need selected of chat list tile (Christian Pauly) +- refactor: Remove unused dependencies (Krille Fear) +- Added translation using Weblate (Hindi) (Hemish) +- Added translation using Weblate (Occidental) (OIS) +- Translated using Weblate (Basque) (xabirequejo) +- Translated using Weblate (Chinese (Simplified)) (Eric) +- Translated using Weblate (Chinese (Simplified)) (Raatty) +- Translated using Weblate (Dutch) (Jelv) +- Translated using Weblate (English) (Raatty) +- Translated using Weblate (Estonian) (Priit Jõerüüt) +- Translated using Weblate (Estonian) (Raatty) +- Translated using Weblate (Finnish) (Aminda Suomalainen) +- Translated using Weblate (Finnish) (Raatty) +- Translated using Weblate (French) (Anne Onyme 017) +- Translated using Weblate (Galician) (Xosé M) +- Translated using Weblate (German) (Jana) +- Translated using Weblate (Indonesian) (Linerly) +- Translated using Weblate (Lithuanian) (Anonimas) +- Translated using Weblate (Occidental) (OIS) +- Translated using Weblate (Persian) (Anastázius Darián) +- Translated using Weblate (Persian) (Anastázius Kaejatídarján) +- Translated using Weblate (Persian) (Seyedmahdi Moosavyan) +- Translated using Weblate (Russian) (Nikita Epifanov) +- Translated using Weblate (Turkish) (Oğuz Ersen) +- Translated using Weblate (Turkish) (Raatty) +- Translated using Weblate (Ukrainian) (Ihor Hordiichuk) +- Translated using Weblate (Ukrainian) (Raatty) + +## v1.6.4 - 2022-09-08 + +- Translated using Weblate (Chinese (Simplified)) (Eric) +- Translated using Weblate (Estonian) (Priit Jõerüüt) +- Translated using Weblate (Galician) (Xosé M) +- Translated using Weblate (Indonesian) (Linerly) +- Translated using Weblate (Slovak) (Marek Ľach) +- Translated using Weblate (Turkish) (Oğuz Ersen) +- Translated using Weblate (Ukrainian) (Ihor Hordiichuk) +- chore: Adjust bubble color in dark mode (Christian Pauly) +- chore: Update matrix sdk (Christian Pauly) +- chore: Update to flutter 3.3.0 (Christian Pauly) +- feat: Automatic key requests and better key error dialog (Christian Pauly) +- fix: Styling and notification settings (Christian Pauly) +- fix: add missing command localizations (Christian Pauly) + +## v1.6.3 - 2022-08-25 + +- Translated using Weblate (Chinese (Simplified)) (Eric) +- Translated using Weblate (Estonian) (Priit Jõerüüt) +- Translated using Weblate (Finnish) (Aminda Suomalainen) +- Translated using Weblate (Russian) (Sergey Shavin) +- Translated using Weblate (Turkish) (Oğuz Ersen) +- Translated using Weblate (Ukrainian) (Ihor Hordiichuk) +- chore: Migrate back to flutter hive collections (Christian Pauly) +- chore: Update provider package and remove dep override (Christian Pauly) +- fix: Do not display push events for unknown event types (Christian Pauly) +- refactor: App widget (Christian Pauly) + +## v1.6.0 - 2022-07-31 + +FluffyChat 1.6.0 features a lot of bug fixes and improvements. The code base has been +simplified and the drawer on the chat list page got a come-back. Some new features like +the space hierarchy and session dump have been implemented. + +- feat: Added monochrome entry for themed icon support in Android 13 (James Reilly) +- feat: Display timeline of messages in android notification (Christian Pauly) +- feat: Emoji related fixes (TheOneWithTheBraid) +- feat: Implement deleting pushers in app (Christian Pauly) +- feat: New material 3 design (Christian Pauly) +- feat: Redesign bootsstrap and offer secure storage support (Christian Pauly) +- feat: Send multiple images at once (Christian Pauly) +- feat: implement session dump (TheOneWithTheBraid) +- feat: implement space hierarchy (TheOneWithTheBraid) +- feat: introduce extended integration tests (TheOneWithTheBraid) +- feat: libhandy integration (TheOneWithTheBraid) +- fix: Clearing push triggered when only one room got seen (Christian Pauly) +- fix: Dont display loading dialog when adding reaction (Christian Pauly) +- fix: Follow up for spaces hierarchy (TheOneWithTheBraid) +- fix: Missing null checks in chat details view (Christian Pauly) +- fix: Non FCM Android builds crash on start (Christian Pauly) +- fix: Permission chooser dialog on iOS (Christian Pauly) +- fix: Set avatar on only single action available (Christian Pauly) +- fix: Sharing on iOS and iPad (Christian Pauly) +- fix: Unread bubble is invisible in dark mode (Christian Pauly) +- fix: appimage builds (TheOneWithTheBraid) +- fix: only use custom http client on android (Jayesh Nirve) +- fix: pass isrg cert to http client (Jayesh Nirve) +- refactor: Chat view (Christian Pauly) +- refactor: Encryption button (Christian Pauly) +- refactor: Remove duplicated imports (Christian Pauly) +- refactor: Remove legacy store (Christian Pauly) +- refactor: Remove presence status feature (Christian Pauly) +- refactor: Simplify MxcImage and replace CachedNetworkImage (Christian Pauly) +- refactor: Switch to Hive Collections DB (Christian Pauly) +- refactor: move start chat FAB to implementation file (TheOneWithTheBraid) +- Translated using Weblate (Catalan) (Alfonso Montero López) +- Translated using Weblate (Catalan) (Auri B.P) +- Translated using Weblate (Chinese (Simplified)) (Eric) +- Translated using Weblate (Croatian) (Milo Ivir) +- Translated using Weblate (Dutch) (Jelv) +- Translated using Weblate (English) (Raatty) +- Translated using Weblate (Estonian) (Priit Jõerüüt) +- Translated using Weblate (Finnish) (Aminda Suomalainen) +- Translated using Weblate (Galician) (Xosé M) +- Translated using Weblate (Indonesian) (Linerly) +- Translated using Weblate (Persian) (Amir Hossein Maher) +- Translated using Weblate (Polish) (Przemysław Romanik) +- Translated using Weblate (Russian) (Nikita Epifanov) +- Translated using Weblate (Turkish) (Oğuz Ersen) +- Translated using Weblate (Ukrainian) (Ihor Hordiichuk) +- chore: Add border to avatars (Christian Pauly) +- chore: Add fancy hero animations (Christian Pauly) +- chore: Adjust appbar design (Christian Pauly) +- chore: Adjust design (Christian Pauly) +- chore: Adjust search bar design (Christian Pauly) +- chore: Always display header elevation in chat (Christian Pauly) +- chore: Design follow up fixes (Christian Pauly) +- chore: Design follow up fixes (Christian Pauly) +- chore: Disable integration tests without runners (Krille Fear) +- chore: Enhance invitiation UX (Christian Pauly) +- chore: Make push helper more fail safe (Christian Pauly) +- chore: Make push helper more stable (Christian Pauly) +- chore: Minor design improvements (Christian Pauly) +- chore: Pinned events design (Christian Pauly) +- chore: Remove permission handler dependency and increase compileSdkVersion (Christian Pauly) +- chore: Switch to flutter 3.0.5 (Krille Fear) +- chore: Update SDK (Christian Pauly) +- chore: remove snapping sheet (TheOneWithTheBraid) + +## v1.5.0 - 2022-06-03 + +- Translated using Weblate (Ukrainian) (Ihor Hordiichuk) +- feat: Better sign up UX and allow signup without password (Christian Pauly) +- feat: Initial material you support (Christian Pauly) +- feat: include Synapse into integration test (TheOneWithTheBraid) +- fix: Broken dynamic color palette (Christian Pauly) +- fix: Build on iOS emulator (Christian Pauly) +- fix: Missing bottom padding in text only stories (Christian Pauly) +- fix: Send sticker without blocking the UI (Christian Pauly) +- fix: Sentry switch being broken (Sorunome) +- fix: add new Play patch (TheOneWithTheBraid) +- fix: handle matrix.to prefix when starting chat (TheOneWithTheBraid) +- fix: minor design bugs (TheOneWithTheBraid) +- fix: privacy in sign up (TheOneWithTheBraid) +- fix: properly set app title in embedder (TheOneWithTheBraid) +- fix: proprietory classes included into build (TheOneWithTheBraid) +- fix: remove proprietary classes from build (TheOneWithTheBraid) +- refactor: Sharing intent (Christian Pauly) +- refactor: Stories header (Christian Pauly) +- refactor: Update Matrix SDK (Christian Pauly) +- refactor: Upgrade to Flutter 3.0.0 (Christian Pauly) +- Translated using Weblate (Basque) (—X—) +- Translated using Weblate (Chinese (Simplified)) (Eric) +- Translated using Weblate (Croatian) (Milo Ivir) +- Translated using Weblate (Czech) (Milan Korecky) +- Translated using Weblate (Dutch) (Jelv) +- Translated using Weblate (Estonian) (Priit Jõerüüt) +- Translated using Weblate (Galician) (Xosé M) +- Translated using Weblate (Indonesian) (Linerly) +- Translated using Weblate (Lithuanian) (Mind) +- Translated using Weblate (Portuguese (Brazil)) (Hermógenes Oliveira) +- Translated using Weblate (Portuguese (Brazil)) (mmagian) +- Translated using Weblate (Russian) (Nikita Epifanov) +- Translated using Weblate (Turkish) (Oğuz Ersen) + +## v1.4.0 - 2022-04-23 + +- design: Display icon for failed sent messages (Krille Fear) +- design: Display own stories at first place and combine with new stories button (Krille Fear) +- feat: Add "Show related DMs in spaces" settings (20kdc) +- feat: Better image sending experience (Krille Fear) +- feat: Display event timestamp if selected (Krille Fear) +- feat: Faster image resizing (Krille Fear) +- feat: Groups and Direct Chats virtual spaces option (20kdc) +- feat: New onboarding design (Krille Fear) +- feat: Onboarding with dynamic homeservers from joinmatrix.org (Krille Fear) +- feat: Play audio messages in stories (Krille Fear) +- feat: Use native imaging for much faster thumbnail calc on mobile (Krille Fear) +- feat: add Dockerfile for nginx/web builds (TheOneWithTheBraid) +- feat: allow to create widgets (TheOneWithTheBraid) +- feat: remove diacritics (henri2h) +- feat: irish language support (Graeme Power) +- feat: Enable screensharing on Mobile +- feat: support AppImage builds +- feat: Improve spaces design +- fix: Android theme is not auto updating when system theme changes (Krille Fear) +- fix: Chat view becomes gray for a second on sending reaction (Krille Fear) +- fix: Don't request new thumbnail resolution on every window resize (Samuel Mezger) +- fix: Dont display own failed-to-send events in stories (Krille Fear) +- fix: Hide markdown in chat list preview and local notifications (Krille Fear) +- fix: Hide pinned events if event is not accessable or loading (Krille Fear) +- fix: Image sending (Krille Fear) +- fix: Make audioplayer waveforms thinner and better clickable (Krille Fear) +- fix: Some story layout bugs (Krille Fear) +- fix: Widgets dialog crashes (Krille Fear) +- fix: login form supports switching fields via tab (Philip Molares) +- Added translation using Weblate (Lithuanian) (Mind) +- Translated using Weblate (Chinese (Simplified)) (Eric) +- Translated using Weblate (Croatian) (Milo Ivir) +- Translated using Weblate (Dutch) (Jelv) +- Translated using Weblate (Estonian) (Priit Jõerüüt) +- Translated using Weblate (Finnish) (Aminda Suomalainen) +- Translated using Weblate (French) (Anne Onyme 017) +- Translated using Weblate (Galician) (Xosé M) +- Translated using Weblate (German) (Krille) +- Translated using Weblate (German) (qwerty287) +- Translated using Weblate (Indonesian) (Linerly) +- Translated using Weblate (Japanese) (Krille) +- Translated using Weblate (Lithuanian) (Mind) +- Translated using Weblate (Portuguese (Brazil)) (Hermógenes Oliveira) +- Translated using Weblate (Russian) (Arbo_Leet) +- Translated using Weblate (Russian) (Nikita Epifanov) +- Translated using Weblate (Russian) (alekseishaklov) +- Translated using Weblate (Swedish) (Joaquim Homrighausen) +- Translated using Weblate (Turkish) (Oğuz Ersen) +- Translated using Weblate (Ukrainian) (Ihor Hordiichuk) +- Update TRANSLATORS_GUIDE.md to have improved punctuation, capitalization (Scott Anecito) +- chore: Add initial integration tests (Krille Fear) +- refactor: New push (Krille Fear) + +## v1.3.1 - 2022-03-20 + +- Allow app to be moved to external storage (Marcel) +- Translated using Weblate (Arabic) (Mads Louis) +- Translated using Weblate (Basque) (Sorunome) +- Translated using Weblate (Basque) (—X—) +- Translated using Weblate (Chinese (Simplified)) (Eric) +- Translated using Weblate (Czech) (Sorunome) +- Translated using Weblate (Dutch) (Jelv) +- Translated using Weblate (English) (Raatty) +- Translated using Weblate (French) (Anne Onyme 017) +- Translated using Weblate (Galician) (Xosé M) +- Translated using Weblate (German) (Maciej Krüger) +- Translated using Weblate (Indonesian) (Linerly) +- Translated using Weblate (Irish) (Graeme Power) +- Translated using Weblate (Persian) (Anastázius Darián) +- Translated using Weblate (Russian) (Nikita Epifanov) +- Translated using Weblate (Swedish) (Joaquim Homrighausen) +- Translated using Weblate (Turkish) (Oğuz Ersen) +- Translated using Weblate (Ukrainian) (Ihor Hordiichuk) +- Update proguard rules to a more modern setup (MTRNord) +- chore: Minor story viewer fixes (Krille Fear) +- chore: Remove story line count and make answering to stories online (Krille Fear) +- chore: Update dependencies (Dependency Update Bot) +- design: Make pinned events use less vertical space (Krille Fear) +- feat: Extended stories (Krille Fear) +- feat: Restrict map zoom to tile server capabilities (Marcel) +- feat: implement keyboard shortcuts (TheOneWithTheBraid) +- fix: Build on macOS (Krille Fear) +- fix: Emojipicker issues (Krille Fear) +- fix: Hide redacted stories (Krille Fear) +- fix: Mark story as read (Krille Fear) +- fix: Open room from notification click produces errors (Krille Fear) +- fix: SSO on Android 12 (Krille Fear) +- fix: Send read receipts on all taps (Krille Fear) +- fix: make fluffy usable at 720 px wide (Raatty) +- fix: Add forgotten sendOnEnter (Krille Fear) +- refactor: Switch to just audio for playing sounds (Krille Fear) + +## v1.3.0 - 2022-02-12 + +FluffyChat 1.3.0 makes it possible to report offensive users to server admins (not only messages). +It fixes +the video player, improves Linux desktop notifications, and the stories design. + +The button to create a new story is now in the app bar of the main page so that users who don't want +to use +this feature no longer have a whole list item pinned at the top of the chat list. + +FluffyChat 1.3.0 is the first release with full null safe dart code. While this is a huge change +under the +hood, it should improve the stability and performance of the app. It also builds now with Flutter +2.10. + +Thanks to all contributors and translators!! <3 + +- Translated using Weblate (Arabic) (abidin toumi) +- Translated using Weblate (Chinese (Simplified)) (Eric) +- Translated using Weblate (Croatian) (Milo Ivir) +- Translated using Weblate (Czech) (Milan Korecky) +- Translated using Weblate (Dutch) (Jelv) +- Translated using Weblate (Estonian) (Priit Jõerüüt) +- Translated using Weblate (French) (Anne Onyme 017) +- Translated using Weblate (Galician) (Xosé M) +- Translated using Weblate (German) (Krille) +- Translated using Weblate (Indonesian) (Linerly) +- Translated using Weblate (Russian) (Nikita Epifanov) +- Translated using Weblate (Swedish) (Joaquim Homrighausen) +- Translated using Weblate (Turkish) (Oğuz Ersen) +- Translated using Weblate (Ukrainian) (Ihor Hordiichuk) +- chore: Add missing link (Krille Fear) +- chore: Hide FAB story buttons on focus (Krille Fear) +- chore: Set compileSdkVersion to 31 (Krille Fear) +- chore: Update SDK (Krille Fear) +- chore: Update dependencies (Dependency Update Bot) +- chore: Update privacy (Krille Fear) +- chore: Upgrade to Flutter 2.10 (Krille Fear) +- ci: Update olm download link (Krille Fear) +- design: Improve create story page design (Krille Fear) +- design: Improve story header design (Krille Fear) +- design: Use IconButton instead of listTile for first story (Krille Fear) +- feat: Add button to report offensive users to server admins (Krille Fear) +- feat: Open chat button from Linux notification (Krille Fear) +- feat: implement retreiving widgets (TheOneWithTheBraid) +- fix: Set image width and height (Krille Fear) +- fix: Videoplayer filenames (Krille Fear) +- fix: cast error in html messages (Jayesh Nirve) +- fix: linux snap notification avatar (Krille Fear) +- fix: suggestions menu and use empty map in html messages null return (Jayesh Nirve) +- refactor: Migrate to null safety (Krille Fear) + +## v1.2.0 - 2022-01-27 + +FluffyChat 1.2.0 brings a new stories feature, a lot of bug fixes and improved +voice messages. + +- change: Set client ID in invite action link (Krille Fear) +- design: Improved animations in chat view when changing account (The one with the Braid) +- design: Remove redundant voice message button (S1m) +- design: Use more adaptive elements (Krille Fear) +- feat: Add button to record a video on Android (S1m) +- feat: Add static + button to pick reaction (S1m) +- feat: Better in app video player (Krille Fear) +- feat: Enable compression and thumbnails for videos (Krille Fear) +- feat: Nicer file event design (Krille Fear) +- feat: Recording dialog with displaying amplitude (Krille Fear) +- feat: Remember homeserver on search page (Krille Fear) +- feat: Save files images and videos (Krille Fear) +- feat: Settings for stories (Krille Fear) +- feat: Share to story (Krille Fear) +- feat: Stories (Krille Fear) +- fix: Add missing routes (Krille Fear) +- fix: Better thumbnails (Krille Fear) +- fix: Do not setup UP if init from an UP action (S1m) +- fix: linux notifications (Raatty) +- fix: Play video without thumbnail if none (S1m) +- fix: Show message bubble on download only video attachments (Drews Clausen) +- fix: Show scrollDownButton only if selectedEvents is empty (S1m) +- fix: Snapcraft image (Krille Fear) +- fix: Snapcraft.yaml (Krille Fear) +- fix: Use system fonts except for desktop (Krille Fear) +- fix: Video playback on iOS (John Francis Sukamto) +- fix: Videoplayer (Krille Fear) +- followup: Improve stories (Krille Fear) +- Improve website SEO tagging (Marcel) +- Increase font size granularity (S1m) +- refactor: /command hints add tooltips, test for missing hints, script to generate glue code, hints + for dm, create, clearcache, discardsession (Steef Hegeman) +- refactor: Make more files null safe (Krille Fear) +- refactor: Make style settings null safe (Krille Fear) +- systemNavigationBarColor ← appBar.backgroundColor (Steef Hegeman) +- Translated using Weblate (Chinese (Simplified)) (Eric) +- Translated using Weblate (Chinese (Simplified)) (Lynn Nakanishi Lin(林中西)) +- Translated using Weblate (Chinese (Traditional)) (Lynn Nakanishi Lin(林中西)) +- Translated using Weblate (Croatian) (Milo Ivir) +- Translated using Weblate (Czech) (Milan Korecky) +- Translated using Weblate (Dutch) (Jelv) +- Translated using Weblate (Estonian) (Priit Jõerüüt) +- Translated using Weblate (Finnish) (Aminda Suomalainen) +- Translated using Weblate (French) (Anne Onyme 017) +- Translated using Weblate (Galician) (Xosé M) +- Translated using Weblate (German) (Krille) +- Translated using Weblate (German) (Jana) +- Translated using Weblate (German) (TeemoCell) +- Translated using Weblate (Hebrew) (MusiCode1) +- Translated using Weblate (Hebrew) (y batvinik) +- Translated using Weblate (Hungarian) (Balázs Meskó) +- Translated using Weblate (Indonesian) (Linerly) +- Translated using Weblate (Korean) (Kim Tae Kyeong) +- Translated using Weblate (Polish) (KSP Atlas) +- Translated using Weblate (Russian) (Nikita Epifanov) +- Translated using Weblate (Slovenian) (John Jazbec) +- Translated using Weblate (Spanish) (Valentino) +- Translated using Weblate (Turkish) (Oğuz Ersen) +- Translated using Weblate (Ukrainian) (Ihor Hordiichuk) + +## v1.1.0 - 2021-12-08 + +- CI: Add candidate release pipeline (Krille Fear) +- Translated using Weblate (Dutch) (Jelv) +- Translated using Weblate (Estonian) (Priit Jõerüüt) +- Translated using Weblate (Finnish) (Mikaela Suomalainen) +- Translated using Weblate (Finnish) (Mikaela Suomalainen) +- Translated using Weblate (Indonesian) (Linerly) +- Translated using Weblate (Korean) (Kim Tae Kyeong) +- Translated using Weblate (Norwegian Bokmål) (Gigaa) +- Translated using Weblate (Norwegian Bokmål) (Raatty) +- change: Do not compress very small images (Krille Fear) +- chore: Update Matrix SDK (Krille Fear) +- design: Make not joined participants transparent in list (Krille Fear) +- docs: Fix screenshots on website (Krille Fear) +- fix: Update dependencies with flutter pub upgrade (Krille Fear) +- fix: Well known lookup at login (Krille Fear) +- refactor: Make most of the utils null safe (Krille Fear) +- refactor: Make send file dialog null safe (Krille Fear) +- refactor: Make user device list item null safe (Krille Fear) + +## v1.0.0 - 2021-11-29 + +- design: Chat backup dialog as a banner +- design: Encrypted by design, all users valid is normal not green +- design: Move video call button to menu +- design: Display edit marker in new bubbles +- design: Floating input bar +- design: Minor color changes +- design: Move device ID to menu +- design: Place share button under qr code +- design: Redesign and simplify bootstrap +- design: Remove cupertino icons +- feat: Display typing indicators with gif +- feat: Fancy chat list loading animation +- feat: New database backend with FluffyBox +- feat: Make the main color editable for users +- feat: Move styles one settings level up +- feat: Multiple mute, pin and mark unread +- feat: New chat design +- feat: New chat details design +- feat: New Public room bottom sheet +- feat: New settings design +- feat: Nicer images, stickers and videos +- feat: nicer loading bar +- feat: Open im.fluffychat uris +- feat: Redesign multiaccounts and spaces +- feat: Redesign start page +- feat: Send reactions to multiple events +- feat: Speed up app start +- feat: Use SalomonBottomBar +- feat: Drag&Drop to send multiple files on desktop and web +- fix: Adjust color +- fix: Automatic key requests +- fix: Bootstrap loop +- fix: Chat background +- fix: Chat list flickering +- fix: Contrast in dark mode +- fix: Crash when there is no prev message +- fix: Do display error image widget +- fix: Do not display bottombar in selectmode +- fix: Dont enable encryption with bots +- fix: Dont loose selected events +- fix: Dont rerun server checks +- fix: download path for saving files +- fix: Hide FAB in new chat page if textfield has focus +- fix: Let bottom space bar scroll +- fix: Load spaces on app start +- fix: Only mark unread if actually marked +- fix: Public room design +- fix: Remove avatar from room +- fix: Remove broken docker job +- fix: Report sync status error +- fix: Self sign while bootstrap +- fix: Sender name prefix in DM rooms +- fix: Set room avatar +- fix: Various multiaccount fixes +- fix: Wrong version in snap packages + +## v0.42.2 - 2021-11-04 + +Minor bugfix release which fixes signing up on matrix.org and make FluffyChats voice messages +playable in Element. + +- feat: Nicer registration form +- feat: Nicer audio message design and send duration +- fix: Signup on matrix.org +- fix: Mark voice messages with msc3245 +- fix: Play response voice messages +- fix: Crash on logout + +## v0.42.1 - 2021-10-26 + +Minor bugfix release. + +- feat: Ignore users directly from bottom sheet +- fix: Open an existing direct chat via invite link/QR scanning +- fix: Small fix for uia request +- fix: Enable E2EE by default in all start chat cases +- update: Translations - Thanks to all translators <3 +- design: Make homepicker page nicer + +## v0.42.0 - 2021-10-14 + +This release fixes several bugs and makes E2EE enabled by default. + +- feat: Enable E2EE by default for new rooms +- feat: Display all private rooms without encryption as red +- feat: New design for bootstrap +- feat: New design for emoji verification +- feat: Display own MXID in the settings +- feat: More finetuning for font sizes +- chore: Updated translations (Thanks to all translators!) +- fix: App crash on logout +- fix: Temporary disable sign-up for matrix.org (Currently gives "500: Internal Server Error" while + FluffyChat **should** send the same requests like Element) +- fix: Implement Roboto font to fix font issues on Linux Desktop and mobile +- fix: QR Code scanning + +## v0.41.3 - 2021-10-08 + +Minor bugfix release. + +- fix: Last space is not visible +- chore: Google services disabled by default for F-Droid + +## v0.41.1 - 2021-09-15 + +Minor bugfix release. + +- fix: Start up time waits for first sync +- fix: Registration -> matrix.org responses with 500 +- fix: Wellknown look up for multi accounts + +And some other minor bugs. + +## v0.41.0 - 2021-09-14 + +This release features a lot of bug fixes and the new multi account feature which also include +account bundles. + +- feat: Multiple accounts +- feat: New splash screen +- fix: Password reset +- fix: Dark text in cupertinodialogs +- fix: Voice messages on iOS +- fix: Emote settings +- chore: update flutter_matrix_html, Matrix Dart SDK and other libraries +- chore: Update to Flutter 2.5.1 +- chore: Updated translations + +## v0.40.1 - 2021-09-14 + +Minor bug fixes. + +## v0.40.0 - 2021-09-13 + +This release contains a security fix. Red more about it +here: https://matrix.org/blog/2021/09/13/vulnerability-disclosure-key-sharing + +- New in-app registration +- Design improvements +- Minor fixes + +## v0.39.0 - 2021-08-30 + +- Hotfix a bug which produces problems in downloading files and playing audios +- Hotfix a bug which breaks device management + +## v0.39.0 - 2021-08-28 + +This release fixes a bug which makes it impossible to send images in unencrypted rooms. It also +implements a complete new designed new chat page which now uses a QR code based workflow to start a +new chat. + +- feat: Dismiss keyboard on scroll in iOS +- feat: Implement QR code scanner +- feat: New design for new chat page +- feat: Use the stripped body for notifications and room previews +- feat: Send on enter configuration for mobile devices +- fix: Prefix of notification text +- fix: Display space as room if it contains unread events in timeline +- fix: missing null check +- fix: Open matrix.to urls +- fix: Padding and colors +- fix: Sharing invite link +- fix: Unread bubbles on iOS +- fix: Sending images in unencrypted rooms + +## v0.38.0 - 2021-08-22 + +This release adds more functionality for spaces, enhances the html viewer, adds a brand new video +player and brings some improvements for voice messages. Thanks to everyone involved! + +### All changes: + +- change: Nicer design for selecting items +- change: Placeholder at username login field should be just username +- chore: cleanup no longer used translation strings +- chore: switch image_picker back to upstream +- chore: update flutter_matrix_html +- chore: Update matrix sdk to 0.3.1 +- feat: Add option to not autoplay stickers and emotes +- feat: Add remove rooms to and from spaces +- feat: Add video player +- feat: Cupertino style record dialog +- feat: Display amplitude +- feat: Implement official emoji translations for emoji verification +- feat: Nicer displaying of verification requests in the timeline +- fix: Allow fallback to previous url if there is no homeserver on the mxid domain +- fix: Correctly size the unread bubble in the room list +- fix: Design of invite rooms +- fix: Disable autocorrect for the homeserver url field +- fix: Disable broken audioplayer for web +- fix: Display loading dialog on start DM +- fix: Dont add/remove DMs to space +- fix: Empty timelines crashing the room view +- fix: excessive CPU usage on Windows, as described + in https://github.com/flutter/flutter/issues/78517#issuecomment-846436695 +- fix: Joining room aliases not published into the room directory +- fix: Keep display alive while recording +- fix: Load space members to display DM rooms +- fix: Make translations use plural forms +- fix: Re-add login fixes with the new SDK +- fix: Reply with voice messages +- fix: Report content localizations +- fix: Requirements when to display report event button +- fix: too long file names +- fix: Try different directories on all kind of errors thrown for hive store +- fix: Use plural string in translation +- fix: use vrouter.toSegments +- fix: Wait for sync before enter a room a user has got invited +- fix: wallpaper on linux +- fix: Wrap login form into `AutofillGroup` + +## v0.37.0 - 2021-08-06 + +- Implement location sharing +- Updated translations +- Improved spaces support +- Minor bug fixes + +## v0.36.2 - 2021-08-03 + +Hotfix a routing problem on web and desktop + +## v0.36.1 - 2021-08-03 + +- Hotfix uploading to many OTKs +- Implement initial spaces UI + +## v0.36.0 - 2021-07-31 + +Minor design improvements and bug fixes. + +### All changes: + +* design: Make unread listtiles more visible +* design: Move pinned icon in title +* feat: Rate limit streams so that large accounts have a smoother UI +* feat: Display the room name in room pills +* feat: Increase the amount of suggestions for the input bar +* feat: Tapping on stickers shows the sticker body +* fix: Windows +* fix: Disable vrouter logs in release mode +* fix: No longer hide google services key file +* fix: Tests + +## v0.35.0 - 2021-07-24 + +This release introduces stickers and a lot of minor bug fixes and improvements. + +### All changes: + +### Feature + +* Add sticker picker [205d7e8] +* Also suggest username completions based on their slugs [3d980df] +* Nicer mentions [99bc819] +* Render stickers nicer [35523a5] +* Add download button to audio messages [bbb2f43] +* Android SSO in webview [befd8e1] + +### Fixes + +* Reset bootstrap on bad ssss [b78b654] +* Hide stickers button when there is not sticker pack [b71dd4b] +* Download files on iOS [a8201c4] +* Record voice messages on iOS [4c2e690] +* cropped sticker [a4ec2a0] +* busy loop due to CircularProgressIndicator [15856e1] +* Crash on timeline [a206f23] +* typo on webiste [00a693e] +* Make sure the aspect ratio of image bubbles stays the same [a4579a5] +* Linux failing on attempting to open hive [76e476e] +* Secure storage [0a52496] +* Make sure the textfield is unfocused before opening the camera [6821a42] +* Close safariviewcontroller on SSO [ba685b7] + +### Refactor + +* Rename store and allow storing custom values [b1c35e5] + +## v0.34.1 - 2021-07-14 + +Bugfix image picker on Android 11 + +## v0.34.0 - 2021-07-13 + +Mostly bugfixes and one new feature: Lottie file rendering. + +### All changes: + +* feat: Add rendering of lottie files +* fix: Check for jitsi server in well-known lookup also on login screen +* fix: show thumbnails in timeline on desktop +* feat: Add a proper file saver +* feat: Better detect the device type from the device name +* fix: Workaround for iOS not removing the app badge +* fix: Keyboard hides imagePicker buttons on iOS +* feat: Add rendering of lottie files +* fix: Don't allow backup of the android app + +## v0.33.3 - 2021-07-11 + +Another bugfixing release to solve some problems and republish the app on iOS. + +### Changes + +* Redesign SSO buttons +* Update dependencies +* Remove moor database (no migration from here possible) +* fix: Keyboard hides imagePicker buttons on iOS + +## v0.33.2 - 2021-06-29 + +* Fix Linux Flatpak persistent storing of data + +## v0.33.0 - 2021-06-26 + +Just a more minor bugfixing release with some design changes in the settings, updated missing +translations and for rebuilding the arm64 Linux Flatpak. + +### Features + +* redesigned settings +* Updated translations - thanks to all translators +* display progress bar in first sync +* changed Linux window default size +* update some dependencies + +### Fixes + +* Favicon on web +* Database not storing files correctly +* Linux builds for arm64 +* a lot of minor bugs + +## v0.32.2 - 2021-06-20 + +* fix: Broken hive keys + +## v0.32.1 - 2021-06-17 + +* fix: Hive breaks if room IDs contain emojis (yes there are users with hacked synapses out there + who needs this) +* feat: Also migrate inbound group sessions + +## v0.32.0 - 2021-06-16 + +FluffyChat 0.32.0 targets improved stability and a new onboarding flow where single sign on is now +the more prominent way to get new users into the app. This release also introduces a complete +rewritten database under the hood based on the key value store Hive instead of sqlite. This should +improve the overall stability and the performance of the web version. + +### Feat + +* Long-press reactions to see who sent this +* New login UI +* Shift+Enter makes a new line on web and desktop +* Updated translations - Thanks to all translators +* Brand new database backend +* Updated dependencies +* Minor design tweaks + +### Fixes + +* Single sign on on iOS and web +* Database corruptions +* Minor fixes + +## v0.31.3 - 2021-05-28 + +### Fixes + +* Build Linux +* Multiline keyboard on web and desktop + +## v0.31.2 - 2021-05-28 + +### Fixes + +* Setting up push was broken + +## v0.31.0 - 2021-05-26 + +### Chore + +* Format iOS stuff [584c873] +* LibOlm has been updated to 3.2.3 + +### Feature + +* Cute animation for hiding the + button in inputbar [37c40a2] +* Improved chat bubble design and splash animations [0b3734f] +* Zoom page transition on Android and Fuchsia [e6c20dd] + +### Fixes + +* "Pick an image" button in emote settings doesn't do anything [e6be684] +* Formatting and style [2540a6c] +* Emoji picker [e1bd4e1] +* Systemuioverlaystyle [c0d446b] +* Status bar and system navigation bar theme [d986986] +* Open URIs [6d7c52c] +* Status bar color [f347edd] +* add missing purpose string [3830b4b] +* Workaround for iOS not clearing notifications with fcm_shared_isolate [88a7e8d] +* Minor glitch in bootstrap [107a3aa] +* Send read markers [08dd2d7] + +### Docs + +* Update code style [3e7269d] + +### Refactor + +* Structure files in more directories [ebc598a] +* Rename UI to Views [e44de26] +* rename UI to View and MVC login page [cc113bb] +* Rename views to pages [a93165e] +* Move widgets to lib [56a2455] +* Move translations to assets [0526e66] +* Update SDK [4f13473] +* Use default systemUiOverlayStyle [8292ee7] + +## v0.30.2 - 2021-05-13 + +### Feature + +* Implement registration with email [19616f3] + +### Fixes + +* Android input after sending message [4488520] + +### Changes + +* Switch to tchncs.de as default homeserver + +### Refactor + +* UIA registering [48bf116] + +## v0.30.1 - 2021-05-07 + +### Chore + +* Update translations + +### Fixes + +* Record audio on iOS [cd1e9ae] + +## v0.30.0 - 2021-05-01 + +In this release we have mostly focused on bugfixing and stability. We have switched to the new +Flutter 2 framework and have done a lot of refactoring under the hood. The annoying freezing bug +should now be fixed. Voice messages now have a new backend which should improve the sound quality +and stability. There is now a more professional UI for editing aliases of a room. Users can now see +a list of all aliases, add new aliases, delete them and mark one alias as the canonical (or main) +alias. Some minor design changes and design fixes should improve the overall UX of the app +exspecially on tablets. + +Version 0.30.0 will be the first version with arm64 support. You can download binaries from the CI +and we will try to publish it on Flathub. Together with the new Linux Desktop Notifications feature, +this might be interesting for the Librem 5 or the PinePhone. Sadly I don't own one of these very +interesting devices. If you have one, I would very like to see some screenshots of it! :-) + +### Chore + +* Update UP and automatically re-register UP on startup [aa3348e] + +### Feature + +* Desktop notifications on Linux Desktop [25e76f0] +* Much better alias managing [642db67] +* Archive with clean up [f366ab6] + +### Fixes + +* Lock screen [f8ba7bd] +* Freeze bug [15c3178] +* UserBottomSheet [dbb0464] +* Message bubble wrong height [2b9bd9c] +* Low height layout [0d6b43d] +* Behaviour of homeserver textfield [2c8a8a4] +* Build Linux [d867a56] +* EmojiPicker background [0a5270b] +* e2ee files [ccd7964] +* Remove the goddamn package from hell circular checkbox!!! Shame on you! SHAME! [81c6906] +* Missing null check [586c248] +* Chat UI doesnt load [4f20ea4] + +### Refactor + +* Remove unused variable [b9f5c94] +* Remove flutter_sound [334d4c0] +* Switch to record package [2cf4f47] +* Sort dependencies [f2295f7] +* Widget file structure and MVC user bottom sheet [bd53745] +* Dialogs as views [69deae3] +* MVC Settings page [bc5e973] +* MVC Settings Notifications [c291b08] +* MVC multiple emote settings [a64ada5] +* MVC settings ignore list [f23fdcc] +* MVC emote settings [1f9f3f4] +* Null safe dependencies [ca82a46] +* MVC settings style [c6083b6] +* MVC settings 3pid [6bfe7b2] +* MVC search [b008d56] +* Folder structure and MVC chat ui [fb61824] +* Move some views to widgets [1fe5b78] +* MVC device settings view [15731b9] +* New private chat view [453d4f3] +* MVC chat permission settings [001e0ee] +* MVC chat list view [7658425] +* MVC chat encryption settings [576e840] +* MVC chat details [28ed394] +* Enable more lints [6a56ec4] +* MVC new group view [3f889e2] +* MVC invitation selection [c12e815] + +## v0.29.1 - 2021-04-13 + +### Chore + +* Bump version [215f3c8] + +### Fixes + +* Save file [3f854d6] +* Routing broken in chat details [f1166b2] +* Tests [e75a5a0] +* Minor sentry crashes [9aa7d52] +* nogooglewarning [7619941] + +### Refactor + +* MVC archive [c2cbad7] +* MVC sign up password view [fa0162a] +* MVC sign up view [db19b37] +* Controllers [f5f02c6] + +## v0.29.0 - 2021-04-09 + +### Chore + +* Clean up repo [ef7ccef] +* Bump version [81a4c26] +* Nicer FAB icon [3eeb9a9] +* Archive button in main menu [da3dc80] +* turn renderHtml and hideUnknownEvents on [29f8e05] +* Remove unused dependencies [c505c50] + +### Feature + +* Experimental support for room upgrades [a3af5a9] + +### Fixes + +* Room upgrade again [1d40705] +* Better padding [c79562f] +* Room upgrade [dac26dd] +* iOS [3a6b329] +* React if not allowed [0146767] +* iPad dividerwidth [a154db0] +* Playstore release job [47c9180] +* Remove blur [ebf73bf] +* Support for email registration [7e5eae5] +* Typo [6250fd0] +* #323 [56e5c81] +* Typo [b38b0e4] +* Buggy routing [62bf380] +* barrierDismissible: true, [de9e373] +* UserBottomSheet SafeArea [0e172c7] +* Add normal mode again to OnePageCard [c057d31] +* ScrollController in chatlist [93477d3] +* SafeArea on iPad [8911e64] +* Missing null check [7cb0dc4] +* Overflow in chat app bar [5bf5483] +* Select room version [2f5a73f] + +### Docs + +* Add code style [035ad96] + +### Refactor + +* Move app_config to /configs [8b9f4a4] +* homeserver picker view [8e828d8] +* widgets dir [c9ab69a] + +## v0.28.1 - 2021-03-28 + +### Chore + +* Update version [518634a] + +### Feature + +* Implement new search view design [e42dd4b] + +### Fixes + +* Share on iOS [ea31991] +* Permission to send video call [4de6d16] +* Unread badge color [49d5f86] +* Push on iOS [cb6217c] +* Add Podfile to gitignore [dd4b4c5] +* Own user in people list [ce047b7] +* Start chat [92ff960] +* Set status missing [17a3311] + +### Refactor + +* push stuff [b6eaf5b] + +## v0.28.0 - 2021-03-16 + +### Chore + +* Bump version [f8ee682] +* Change push gateway url [078aefa] +* Update file picker cross dependency [91c6912] +* Update snapcraft.yaml but still not working [1072379] +* Update changelog [a05f2f0] +* Change call icon [7403ac7] +* Update famedlySdk [ec64cf6] + +### Feature + +* Cache and resend status message [c8a7031] +* New experimental design [94aa9a3] +* Better verification design [9bcd6b2] +* Verify and block devices in devices list [8ebacfe] + +### Fixes + +* substring in reply key respects unicode runes [5695342] +* Resend status message [05cd699] +* Remove test push [a838d90] +* Email validation [c8e487c] +* CI [2e60322] +* CI [7275837] +* CI [1a8dc50] +* CI [c012081] +* CI [380732d] +* CI [06c31c0] +* CI [4d1a171] +* CI [597ceab] +* snapcraft CI [fee0eb9] +* Bootstrap in columnview [bcd2a03] +* Remove unnecessary snapcraft dependencies [3a816d1] +* Snapcraft and it builds now :-) [eb0eca4] +* flutter_matrix_html crash and flutter_maths stuffs [3caac92] +* Minor bugs [9fbfca6] +* add mail [53fc634] +* 3pid [887f3b1] +* Bootstrap hint [8651b37] +* Bootstrap hint [1331b10] +* Own presence at top of the list [ac6fcd1] +* Analyzer [e1ddfc8] +* Trim username on registration [61a8eb5] +* Password success banner if not succeeded [5150563] +* Status color [42d9bf5] +* Routes [6faa60e] +* Dialog using wrong Navigator [9458ab3] +* sso on web [aa396ac] +* Missing localizations in dialogs [9b1d7ec] +* Tap on notification to open room in (hopefully) all cases [57560ff] +* Allow screenshots again [6258b6a] +* Missing tooltips in IconButtons [57a021f] +* empty horizontal stories list [b1f6209] +* Line color [3d59d9a] +* Dont show random users in top bar [54e268b] +* Localize ok cancel alert dialogs [9f9b833] +* Use single-isolate push [949771d] + +### Docs + +* Update readme and contributing [449e46d] +* Update Turkish translation for website [4a664eb] + +### Refactor + +* Update SDK and enable login with email and phone [864b665] +* Migrate to flutter 2 [bb97b1b] +* Switch to TextButton [55803d1] + +## v0.27.0 - 2021-02-17 + +### Chore + +* Switch to experimental new hedwig [30a1fb0] +* update sdk & remove selfSign [26f7cb3] +* Update sdk [cde8a30] +* Update unified push [e73f5d5] +* Change push gateway port [8f36140] + +### Feature + +* localize bootstrap [395e62e] +* Add more bootstrap features [e4db84a] +* Add some tooltipps [b9eb8d1] +* Get jitsi instance from wellknown [bd24387] +* Make font size configurable [ea1bb89] +* Allow manual verification of other peoples devices [ad3c89b] +* Simplified bootstrap [d9984da] +* new design [33dd1d2] +* Implement reporting of events [d553685] +* Implement experimental new design [10cf8da] +* Deprecated authwebview and use platform browser [d7aae3a] +* Implement autofillhints [41a2457] + +### Fixes + +* Website [080a909] +* docs _site dir [875d652] +* Bootstrap dialog [c72da0a] +* Bootstrap wipe [774f674] +* MetaRow fontsize [a13e673] +* Stories displayname cropping [6f06c6a] +* Update read receipt display [de6e495] +* Bottom padding of chat list [aa5ce56] +* Hard to read titles in chat details [df90136] +* Website urls [295c113] +* applock enter non digits [5726c4f] +* Update contact list [d870ec3] +* Better error in discover [0c1864c] +* Minor fixes [c058d39] +* Share view [2bd00e6] +* Endless bootstrap loading [65d5f9a] +* More minor fixes [4c10ef5] +* Default offline state [72604c6] +* Remove old code [14f633b] +* Inputborder [6960618] +* Unlock the mutex [5789a86] +* Wrong fab action [5429697] +* SecureStorage sometimes reading wrong / bad values [d94f0d7] +* Wrong urls [29076db] +* Start chat with yourself from status [f3b3584] +* BottomNavigationbar colors [08f24d7] +* Emote settings and discovery fallback [8f8b8d8] +* reportEvent uses positive int [408c810] +* Autofillhints on readonly [baafebb] +* Bring back proper emote settings [6b01a83] +* Build ios [f5b1ae8] +* iOS bundle id [6a70830] +* iOS push [2bf184a] +* iOS push [c01bdf7] + +### Docs + +* Fix qr-codes [c7f0a74] +* grammar fixes [c4d569b] + +### Refactor + +* Theme colors [fe13778] +* border radius [ddd10d1] + +## v0.26.1 - 2021-01-26 + +### Chore + +* Update SDK [e9df6bf] +* Bump version [d79b356] +* Update dependencies [6159f99] + +### Feature + +* Add unified push as push provider [124a5ee] + +### Fixes + +* Link color [16d6623] + +## v0.26.0 - 2021-01-25 + +### Chore + +* Redesign textfields [aef8090] +* Simplify bootstrap [2df4a78] +* Update audio player icons [3f14d5e] +* Redesign homepicker page [e402a02] +* Remove unused dependency [2089e62] +* Update SDK [a05215f] +* Update readme [19f1df7] +* Change startpage design [4b8ad1b] +* Log warning if firebase token problem [90867e6] +* Update dependencies [a56f939] +* Redesign homeserver picker page [3c71351] +* Increase max size of message bubbles [8477385] +* Use correct paths on new server [2f00007] + +### Feature + +* emoji working on desktop [c3feb65] +* Implement sso [d1d470d] +* Implement app lock [77ee2ef] +* Dismiss keyboard on view scroll. [70f96bf] +* Display version number in app [e1e60c4] + +### Fixes + +* Dark mode fixes [36746c8] +* Dark theme [0bd0e58] +* clean up iOS dir [6ae59a8] +* Homeserver readonly if conifg wants it [c81158a] +* Search mxid for private chat [b6dca5b] +* Remove unnecessary padding [5f54057] +* Foreground push again [1d6c9cf] +* Foreground push [ea1cefa] +* embedding all fonts to fix the font error [55c6379] +* Minor desktop fixes [c224993] +* fonts in a standard path [bfa5601] +* Make tapping on pills join if remote directory is private [8ffb3db] +* key verification dialog button order [c5adfc2] +* Allow joining of unpublished aliases again [ed570a6] +* Make tap on pills and matrix.to links work again [48ad322] +* Load settings on startup [6906832] +* Persistent settings [03b00b7] +* Voice message recording dialog [d273b2a] +* UserBottomSheet [38e8e1b] +* Dialogs [5f0ce49] +* no exception if token is just null [db349a5] +* Load config.json only on web [a04c3ab] +* App lock [8d6642c] +* cross file picker [d47f855] +* Send file [fde2f8b] +* APL [913f3cf] +* app lock [6d12168] +* mxid validation [25da65f] +* Startpage textfield padding [81e706a] +* Provider in user bottom sheet [48d6fbd] +* Readme [dda0925] + +### Docs + +* Make howtofork.md less misunderstandable [96de54a] +* Add howtofork.md [f091469] +* Mention emoji font [bb53714] +* Add famedly contact link [7f2d61e] +* Update fdroid button [ea7e20b] + +### Refactor + +* Theme and iOS stuff [189f65a] +* Upgrade to latest flutter_sound_lite [2f7dece] + +## v0.25.1 - 2021-01-17 + +### Chore + +* Bump version [c881424] + +### Fixes + +* Change size [83e2385] + +### Refactor + +* remove deprecated approute [be08de5] + +## v0.25.0 - 2021-01-16 + +### Chore + +* Minor design improvements [d4dbe83] +* Minor design tweaks [06581e2] +* Bump version [7f51f7f] +* redesign start first chat [e13a732] +* Better authwebview [d76df0a] + +### Fixes + +* Share files [d018a4b] +* Typing update [9b5a3ca] +* Status [d27dbe0] +* Set status [7063b34] +* Column width [a35c4d0] +* Dont send only whitespaces [c0958c6] +* BuildContext in key verification dialog [c4866c7] +* Ignore list [0458064] +* Archive route [5e62267] +* Remove popup menu item [5945bcc] +* chat padding [079c35e] +* Remove logs [8910772] +* Video calls [672eca6] +* loading history [a5e9553] +* Missing divider [cf07eed] +* loading dialog configs [de2796e] +* Display current theme mode [41483dd] +* Better authwebview [5a1085a] +* authwebview [2f7749a] +* Minor apl bugs [05b9551] + +### Docs + +* Update fdroid logo [31d16a0] + +### Refactor + +* Use APL [cbcfa15] +* Use Provider [880f9cc] +* Use adaptive_theme [5d52c26] + +## v0.24.3 - 2021-01-15 + +### Chore + +* Bump version [46c8386] +* Update SDK [ba0726c] +* Update fdroid domain [f130681] +* Update dependencies [611e5e3] + +### Feature + +* Add Turkish translations for website [817c7dd] +* Handle matrix: URIs as per MSC2312 [1da643f] + +### Fixes + +* Format [84b2ac9] +* Push gateway url [ed2fbf7] + +## v0.24.2 - 2021-01-08 + +### Chore + +* Update linux version [ef9369c] +* Update SDK [4a006c9] + +### Feature + +* Regulate when thumbnails are animated as per MSC2705 [f5e11c2] + +### Fixes + +* Don't allow an empty ssss passphrase in key verification [3a0ce79] +* reactions [92684da] +* Reply fallback sometimes being stripped incorrectly [e9ec699] +* Don't show loading dialog on request history [e4b6e10] +* Properly handle url encoding in matrix.to URLs [baccd0a] + +### Refactor + +* Switch to loading dialog [e84bc25] + +## v0.24.1 - 2020-12-24 + +### Chore + +* Update linux build [a91407f] +* Add website to main repo [4df33a1] +* Update dependencies [0d9f418] +* Change main docs [56d97f6] +* Update SDK and logviewer [45b9c4f] +* Context icon improvements [6381cea] +* Update SDK [e802593] + +### Feature + +* Better invite search bar [3c4a29b] +* Open alias in discover page [f0d1f5a] +* Implement logger [714c7b4] + +### Fixes + +* auto-dep update [d9e8c5f] +* Read receipts and filtered events [0ae36f0] +* Don't re-render the lock icon nearly as often [00a56a7] +* Format [e0bc337] +* Analyzer [5d8bfa3] +* logger [64c5ea9] +* Have a space after mentions, making it consistent with @-completion [b18e81a] +* Display right key in key request dialog [f8e8e96] +* Respect hidden events when calculating read receipt message [702895f] +* Store emoji picker history and make sure you can't send the same emoji twice [0066a33] +* Logger [0abebdd] +* Allow key verification to scroll vertically [accd9b4] +* Make filter input field auto-lose focus when entering room view [bdb695e] +* Update file picker [6df75d1] + +## v0.24.0 - 2020-12-18 + +### Chore + +* Update dependencies [550cb4a] +* Update SDK [775a33b] +* Update dependencies [644433c] +* Switch to upstream noti settings [5cc4265] +* Go back to upstream open noti settings [6effebe] +* Update dependencies [5af4eab] + +### Feature + +* Add languages to iOS [68a5efb] +* Bring back config.json [b6a0d37] +* Implement emojipicker for reactions [20b3157] +* Add config hideTypingUsernames [19c0440] +* Implement hideAllStateEvents [721c0b2] +* Enhanced configuration [1e7bac3] +* Implement experimental bootstrapping [f6945f7] +* add ability to mark a room as unread [fe2b391] +* Try out new firebase [41a471e] +* Implement discover groups page [e728ccc] +* Add chat permissions settings [bf4b439] +* Multiline dialog text field [8d05a83] +* Implement rich notification settings [87a73dd] + +### Fixes + +* Update typing [3d70b1e] +* Build in dev [f892a9f] +* Fix that damn regex [8961bff] +* CI [ebb114d] +* CI [0adeb09] +* Format [9e5fb70] +* CI scripts [46b886f] +* join public room [30883e5] +* CI [7f44982] +* open_noti_settings [f4c1202] +* Missing localization [cb191e2] +* Analyzer bug [be428dd] +* Set chat avatar on web [621fcb7] +* CI [da5bc56] + +### Refactor + +* Update sdk [32acc21] + +## v0.23.1 - 2020-11-25 + +### Fixes + +* Release CI [14d8c80] + +## v0.23.0 - 2020-11-25 + +### Chore + +* Update adaptive dialogs [0061660] +* Prettier redacted events [d1e291e] +* Minor design changes in user viewer [b4fb283] +* Minor design changes in chatlist item [6977112] +* Implement playstore CD [4c5760c] +* Only load google services if needed [bae779a] + +### Feature + +* Next version [1af048e] +* Annoy user with dialog to add a recovery method [d9ec9f6] +* Implement password recovery [4b2fef5] +* Collapse room create states [fc0c038] +* Minor design improvements [0b8cc24] +* Improved encryption UI [2516848] + +### Fixes + +* Broken dialog [97bb692] +* set email dialog [72e325a] +* Minor fixes [11e2dd5] +* redacted icon color [d60709b] +* Unban [f056e65] +* Minor design issues [d9590dd] +* Buttons in chatlist [7d08817] +* Sendername prefix [a6b60ad] +* Sendername prefix [8aaff6f] +* Minor key request design fix [0ed29b6] +* removal of appbundle from the release artifacts [b1c248f] +* Copying an event did not obey edits [0cb262c] +* Suggest correct rooms [59ec9de] + +### Refactor + +* Make verification in dialogs [1f9e953] +* matrix to link prefix [1aa9c08] + +## v0.22.1 - 2020-11-21 + +### Fixes + +* Input bar not working, making app unusable [10773b4] + +## v0.22.0 - 2020-11-21 + +### Chore + +* fix CI [00ed0d6] +* fix CI [bb4bb9f] +* Fix CI variables [d3822b0] +* update flutter_matrix_html [ed27bee] +* update flutter_matrix_html [af36533] +* Update dependencies [57256fb] +* Update dependencies [40825e1] +* Switch to adaptive dialogs [9ea7afc] +* Switch from bottoast to flushbar [e219593] +* Clean up CI [7e84675] +* Remove unused dependency [d12de2d] + +### Feature + +* Add svg support and better image handling [f70bbc3] +* add config.json [4b7fb6b] +* persistent upload of release artifacts [1b2481b] +* Option to hide redacted and unknown events [36315a4] +* Better encryption / verification [1ff986e] + +### Fixes + +* iOS [26731ab] +* resolve some sentry issues [61f35e8] +* resolve some sentry issues [2c3693e] +* iOS build [9fee409] +* Automatic update deps job [255c05d] +* Don't re-render message widgets on insertion of new messages, making e.g. audio playing not + stop [25b2997] +* Add missing safearea [caab868] +* no pushers enpdoint [b3942ad] +* Sentry and small null fix [5dc22be] + +### Refactor + +* CI [34d7fdd] +* SDK update [7e23280] + +## v0.21.1 - 2020-10-28 + +### Chore + +* update version code [d1dfa9c] + +## v0.21.0 - 2020-10-28 + +### Chore + +* Change compileSdkVersion again [f93f9c2] +* Update packages [b471bd0] +* Update SDK [86a385d] +* New version [40d00b0] +* Update flutter_matrix_html [4981cf4] +* Update sdk [8773770] +* Only load google services if needed [051ec8f] +* release [844b4a8] + +### Fixes + +* CompileSDKVersion [bcf75fc] +* Target sdk [c3e23b6] +* File picker issue [aa191c1] +* Sentry [b903ea9] +* user bottom sheet design [7876164] +* Android Download [8a542bf] +* Avatar Border Radius [a8b617e] +* loading spinner stuck on broken images [e917879] +* send file dialog - prevent multiple file sending [941b211] +* Multiple related store things [36405f8] +* Logo background color [42a927e] + +## v0.20.0 - 2020-10-23 + +### Chore + +* update dependencies [427cdc0] +* upate matrix link text [0892ca9] +* Change default linux window size [719323a] +* Update changelog [ef22778] +* Update matrix_link_text [fc2a0c0] +* update flutter_secure_store [61c6aec] +* Minor snap fix [daf9969] +* Add privacy informations to app [e569be7] +* Make app ready for flutter 1 22 [e5b23fa] + +### Feature + +* Implement mouse select chat list items [6d41136] +* Implement linux desktop notifications [75cd6f1] +* Implement change device name [bfd3888] +* Publish as snap [46590d7] +* Enhance emote experience [cafd639] +* Implement new status feature [090795f] +* More beautiful status [d9c2d4f] +* Enhance roomlist context menu [493b700] +* Implement basic windows linux support [7fad316] +* Enable macOS build [a845209] + +### Fixes + +* return text field to the previous state after editing message [08e61c0] +* Web server picker [4cb19be] +* Some single-emoji names crashing [b29ebce] +* Snapcraft [c1eebc1] +* Minor design fix [a713a2f] +* Minor design fixes [e9aa285] +* Change device displayname [c5c7ee7] +* LocalStorage location on desktop [81e32c5] +* fixed mxid input method, removed code redundancy [060156c] +* overgo issues with flutter_secure_store [6d0f344] +* resize images in a separate isolate [56967a9] +* Build Linux CI [a941356] +* Build Linux CI [2a6b5d8] +* send images as images, not files [751dcb7] +* Show device name in account information correctly [468c258] +* Minor fixes [aee854e] +* Make theme loading work properly [f6ab1e0] +* CI [6b7d21d] +* User Status crash [0413b0c] +* small desktop fixes [540ff68] +* Desktop url launcher [4dfd0db] +* Snap [ec7dd2b] +* Snap [4648466] +* CI [4345df3] +* Linux database [772ff33] +* TextField [7ec349b] +* Inputbar focus [5e673c6] +* Desktop file picker [662e2f1] +* Desktop images [5409fe8] +* Try with select 1 [6e924cb] +* More debug logs [9b572f5] +* Minor design bugs [6ffbf16] +* Minor user status bugs [f84ac1d] +* Improve loading dialogs [41ceb84] +* Invite left members [fe649e5] +* tapping on aliases not always working [c0390ca] +* determine 12h/24h time based on settings, not locale [ca19e9f] +* fix up translations to use keys and fix arb files [74b15dd] + +## v0.19.0 - 2020-09-21 + +### Chore + +* Version update & olm-CI [0f805a2] +* Update SDK & Changelog [1825543] +* Add new language [c6d67ad] +* master --> main [1de3c54] +* switch to cached_network_image [bbca0c2] +* update dependencies [2a62cf8] +* Add more debugging logs to debug key decrypt issues [20d3ea9] +* Update SDK, re-enable transactions on mobile [1f4c2a1] +* update languages [40e9544] +* Updat changelog [d1e898c] +* update sdk [954eedb] + +### Feature + +* Implement send reactions [6bf25b7] +* Improve design [c8a63c6] +* Display emotes/emojis bigger [9cccd07] +* Add scroll-to-event [8547422] +* Implement ignore list [b2fa88c] +* Add license page [dcf4c4c] +* Implement rich push notifications on android [f4e4b90] +* Implement sentry [705ced8] +* Send image / video / file dialog [80114df] +* Blurhashes and better thumbnails [2321829] +* open links better [04cbf0c] +* Implement web audio player [0f6b46d] +* New notification sound [8a5be21] + +### Fixes + +* Last bits for the release [1db9bdd] +* Small stuff [9d3f272] +* Search bar [eca25de] +* font size being too large accidentally in some places [43dd222] +* Scroll down button not showing [8cd8f90] +* Don't double-confirm sending audio messages [168b8b0] +* Hotfix ignore list [94f8f34] +* Push on conduit [e5cd144] +* Images with an info block but no size crashing [5f58789] +* Allow requesting past messages if all events in the current timeline are filtered [0f9ff4a] +* annoying notification sound [739a70c] +* Status design [f7930fe] +* Send read receipt only on focus [98316f1] +* Desktop notifications [b05bfa6] + +This CHANGELOG.md was generated with [**Changelog for Dart +**](https://pub.dartlang.org/packages/changelog) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..6c192cc --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,172 @@ +# Contributing to FluffyChat +Contributions are always welcome. Yet we might lack manpower to review all of them in time. + +To improve the process please make sure that you read the following guidelines carefully: + +## Contributing Guidelines + +1. Always create a Pull Request for any changes. +2. Whenever possible please make sure that your Pull Request only contains **one** commit. Cases where multiple commits make sense are very rare. +3. Do not add merge commits. Use rebases. +4. Every Pull Request should change only one thing. For bigger changes it is often better to split them up in multiple Pull Requests. +5. [Sign your commits](https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits). +6. Format the commit message as [Conventional Commits](https://www.conventionalcommits.org). +7. Format (`flutter format lib`) and sort impots (`dart run import_sorter:main --no-comments`) in all code files. +8. For bigger or complex changes (more than a couple of code lines) write an issue or refer to an existing issue and ask for approval from the maintainers (@krille-chan) **before** starting to implement it. This way you reduce the risk that your Pull Request get's declined. +9. Prefer simple and easy to maintain solutions over complexity and fancy ones. + +# Code Style + +FluffyChat tries to be as minimal as possible even in the code style. We try to keep the code clean, simple and easy to read. The source code of the app is under `/lib` with the main entry point `/lib/main.dart`. + + + + + + +**Table of Contents** + +- [Directory Structure:](#directory-structure) +- [Separation of Controllers and Views](#separation-of-controllers-and-views) +- [Formatting](#formatting) +- [Code Analyzis](#code-analyzis) + + + + + + +### Directory Structure: + + +- /lib + - /config + - app_config.dart + - ...Constants, styles and other configurations + - /utils + - handy_function.dart + - ...Helper functions and extensions + - /pages + - /chat + - chat.dart + - chat_view.dart + - /chat_list + - chat_list.dart + - chat_list_view.dart + - ...The pages of the app separated in Controllers and Views + - /widgets + - /layouts + - ...Custom widgets created for this project + - main.dart + + +Most of the business model is in the Famedly Matrix Dart SDK. We try to not keep a model inside of the source code but extend it under `/utils`. + +### Separation of Controllers and Views + +We split views and controller logic with stateful widgets as controller where the build method just builds a stateless widget which receives the state as the only parameter. A common controller would look like this: + +```dart +// /lib/controller/enter_name_controller.dart +import 'package:flutter/material.dart'; + +class EnterName extends StatefulWidget { + @override + EnterNameController createState() => EnterNameController(); +} + +class EnterNameController extends State { + final TextEditingController textEditingController = TextEditingController(); + String name = 'Unknown'; + + /// Changes the name with the content in the textfield. If the textfield is + /// empty, this breaks up and displays a SnackBar. + void setNameAction() { + if (textEditingController.text.isEmpty) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text('You have not entered your name'), + ), + ); + return; + } + setState(() => name = textEditingController.text); + } + + @override + Widget build(BuildContext context) => EnterNameView(this); +} +``` + +So we have a controller for a `EnterName` view which as a `TextEditingController`, a state `name` and an action `void setNameAction()`. Actions must always be methods of a type, that we dont need to pass parameters in the corresponding view class and must have dartdoc comments. + +The view class could look like this: + +```dart +// /lib/views/enter_name_view.dart +import 'package:flutter/material.dart'; + +class EnterNameView extends StatelessWidget { + final EnterNameController controller; + + const EnterNameView(this.controller, {Key key}) : super(key: key); + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text('Your name: ${controller.name}'), + ), + body: Center( + child: TextField( + controller: controller.textEditingController, + ), + ), + floatingActionButton: FloatingActionButton( + onPressed: controller.setNameAction, + child: Icon(Icons.save), + ), + ); + } +} +``` + +Views should just contain code which describes the view. All other parameters or logic should be in the controller. The job of the view class is just to take the current state and build the widget tree and pipe the callbacks back. If there is any calulation necessary which is not solveable as a simple if-else or switch statement, it should be done in an external helper function unter `/lib/utils/`. + +All file names must be lower_snake_case. All views must have a `View` suffix and all controller must have a `Controller` suffix. Widgets may have a controller too but they should pass the callbacks back to the view where possible. Calling one line methods directly in the view is only recommended if there is no need to pass a parameter. + +To perform an action on state initialization we use the initState method: +```dart +@override + void initState() { + // TODO: implement initState + super.initState(); + } +``` + +And the dispose method to perform an action on disposing: +```dart +@override + void dispose() { + // TODO: implement dispose + super.dispose(); + } +``` + +To run code after the widget was created first we use the WidgetBindings in the initState: +```dart +@override + void initState() { + WidgetsBinding.instance.addPostFrameCallback((_) { + // Do something when build is finished + }); + super.initState(); + } +``` + +### Formatting + +We do not allow code with wrong formatting. Please run `flutter format lib` if your IDE doesn't do this automatically. + +### Code Analyzis + +We do not allow codes with dart errors or warnings. We use the [flutter_lints](https://pub.dev/packages/flutter_lints) package for static code analysis with additional rules under `analysis_options.yaml`. diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..39505aa --- /dev/null +++ b/Dockerfile @@ -0,0 +1,21 @@ +FROM ghcr.io/cirruslabs/flutter as builder +RUN sudo apt update && sudo apt install curl wget jq build-essential -y + +WORKDIR /tmp +RUN wget https://github.com/mikefarah/yq/releases/download/v4.40.5/yq_linux_amd64.tar.gz +RUN tar -xzvf ./yq_linux_amd64.tar.gz +RUN mv yq_linux_amd64 /usr/bin/yq + +COPY . /app +WORKDIR /app +RUN curl https://sh.rustup.rs -sSf | bash -s -- -y +ENV PATH="/root/.cargo/bin:${PATH}" +RUN rustup component add rust-src --toolchain nightly-x86_64-unknown-linux-gnu +RUN ./scripts/prepare-web.sh +COPY config.* /app/ +RUN flutter pub get +RUN flutter build web --dart-define=FLUTTER_WEB_CANVASKIT_URL=canvaskit/ --release --source-maps + +FROM docker.io/nginx:alpine +RUN rm -rf /usr/share/nginx/html +COPY --from=builder /app/build/web /usr/share/nginx/html diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..7a60dc9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,661 @@ + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU Affero General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 2020 Christian Pauly + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU AGPL, see +. diff --git a/PRIVACY.md b/PRIVACY.md new file mode 100644 index 0000000..570c711 --- /dev/null +++ b/PRIVACY.md @@ -0,0 +1,113 @@ +# Privacy + +FluffyChat is available on Android, iOS, Linux and as a web version. Desktop versions for Windows and macOS may follow. + +* [Matrix](#matrix) +* [Database](#database) +* [Encryption](#encryption) +* [App Permissions](#app-permissions) +* [Push Notifications](#push-notifications) +* [PlayStore Safety Standards](#playstore-safety) + +## # Matrix +FluffyChat uses the Matrix protocol. This means that FluffyChat is just a client that can be connected to any compatible matrix server. The respective data protection agreement of the server selected by the user then applies. + +For convenience, one or more servers are set as default that the FluffyChat developers consider trustworthy. The developers of FluffyChat do not guarantee their trustworthiness. Before the first communication, users are informed which server they are connecting to. + +FluffyChat only communicates with the selected server and with [OpenStreetMap](https://openstreetmap.org) to display maps. + +More information is available at: [https://matrix.org](https://matrix.org) + +## # Database +FluffyChat caches some data received from the server in a local sqflite database on the device of the user. On web indexedDB is used. FluffyChat always tries to encrypt the database by using SQLCipher and stores the encryption key in the [Secure Storage](https://pub.dev/packages/flutter_secure_storage) of the device. + +More information is available at: [https://pub.dev/packages/sqflite](https://pub.dev/packages/sqflite) and [https://pub.dev/packages/sqlcipher_flutter_libs](https://pub.dev/packages/sqlcipher_flutter_libs) + +## # Encryption +All communication of substantive content between Fluffychat and any server is done in secure way, using transport encryption to protect it. + +FluffyChat also uses End-To-End-Encryption by using [libolm](https://gitlab.matrix.org/matrix-org/olm) and enables it by default for private chats. + +## # App Permissions + +The permissions are the same on Android and iOS but may differ in the name. This are the Android Permissions: + +#### Internet Access +FluffyChat needs to have internet access to communicate with the Matrix Server. + +#### Vibrate +FluffyChat uses vibration for local notifications. More informations about this are at the used package: +[https://pub.dev/packages/flutter_local_notifications](https://pub.dev/packages/flutter_local_notifications) + +#### Record Audio +FluffyChat can send voice messages in a chat and therefore needs to have the permission to record audio. + +#### Write External Storage +The user is able to save received files and therefore app needs this permission. + +#### Read External Storage +The user is able to send files from the device's file system. + +#### Location +FluffyChat makes it possible to share the current location via the chat. When the user shares their location, FluffyChat uses the device location service and sends the geo-data via Matrix. + +## # Push Notifications +FluffyChat uses the Firebase Cloud Messaging service for push notifications on Android and iOS. This takes place in the following steps: +1. The matrix server sends the push notification to the FluffyChat Push Gateway +2. The FluffyChat Push Gateway forwards the message in a different format to Firebase Cloud Messaging +3. Firebase Cloud Messaging waits until the user's device is online again +4. The device receives the push notification from Firebase Cloud Messaging and displays it as a notification + +The source code of the push gateway can be viewed here: +[https://gitlab.com/famedly/services/famedly-push-gateway](https://gitlab.com/famedly/services/famedly-push-gateway) + +`event_id_only` is used as the format for the push notification. A typical push notification therefore only contains: +- Event ID +- Room ID +- Unread Count +- Information about the device that is to receive the message + +A typical push notification could look like this: +```json +{ + "notification": { + "event_id": "$3957tyerfgewrf384", + "room_id": "!slw48wfj34rtnrf:example.com", + "counts": { + "unread": 2, + "missed_calls": 1 + }, + "devices": [ + { + "app_id": "chat.fluffy.fluffychat", + "pushkey": "V2h5IG9uIGVhcnRoIGRpZCB5b3UgZGVjb2RlIHRoaXM/", + "pushkey_ts": 12345678, + "data": {}, + "tweaks": { + "sound": "bing" + } + } + ] + } +} +``` + +FluffyChat sets the `event_id_only` flag at the Matrix Server. This server is then responsible to send the correct data. + + +# # Explanation of FluffyChat's Compliance with Google Play Store's Safety Standards + +FluffyChat is committed to promoting a safe and respectful environment for all users. As a Matrix client, FluffyChat connects users to various Matrix servers. Please note that FluffyChat does not host or manage any servers directly, and as such, we do not have the capability to enforce content moderation or deletion within the app itself. + +To enhance user safety and help protect against the sexual abuse and exploitation of children, FluffyChat enables users to report inappropriate content directly to server administrators. + +#### Reporting Content or Users: + +1. Mark a message in the chat: Tap and hold the message you wish to report. +2. Report the message: Select the "Report" option. +3. Provide a reason and score: Enter the reason for reporting and assign a score from 1-100 to indicate how offensive the content is. +4. Notification to admin: The server administrator will be notified of the reported content. + +In addition to reporting messages, users can also report other users following a similar process. + +We encourage server administrators to adhere to strict safety standards and provide mechanisms for addressing and moderating inappropriate content. For more information on the Matrix protocol and its safety standards, please refer to the following link: https://matrix.org/docs/older/moderation/ diff --git a/README.md b/README.md new file mode 100644 index 0000000..1729ded --- /dev/null +++ b/README.md @@ -0,0 +1,122 @@ +![Screenshot](https://github.com/krille-chan/fluffychat/blob/main/assets/banner_transparent.png?raw=true) + +[FluffyChat](https://fluffy.chat) is an open source, nonprofit and cute [[matrix](https://matrix.org)] client written in [Flutter](https://flutter.dev). The goal of the app is to create an easy to use instant messenger which is open source and accessible for everyone. + +### Links: + +- 🌐 [[Weblate] Translate FluffyChat into your language](https://hosted.weblate.org/projects/fluffychat/) +- 🌍 [[m] Join the community](https://matrix.to/#/#fluffychat:matrix.org) +- 📰 [[Mastodon] Get updates on social media](https://troet.cafe/@krille) +- 🖥️ [[Famedly] Server hosting and professional support](https://famedly.com/kontakt) +- 💝 [[Liberapay] Support FluffyChat development](https://de.liberapay.com/KrilleChritzelius) + +Buy Me a Coffee at ko-fi.com + +### Screenshots: + + + + +# Features + +- 📩 Send all kinds of messages, images and files +- 🎙️ Voice messages +- 📍 Location sharing +- 🔔 Push notifications +- 💬 Unlimited private and public group chats +- 📣 Public channels with thousands of participants +- 🛠️ Feature rich group moderation including all matrix features +- 🔍 Discover and join public groups +- 🌙 Dark mode +- 🎨 Material You design +- 📟 Hides complexity of Matrix IDs behind simple QR codes +- 😄 Custom emotes and stickers +- 🌌 Spaces +- 🔄 Compatible with Element, Nheko, NeoChat and all other Matrix apps +- 🔐 End to end encryption +- 🔒 Encrypted chat backup +- 😀 Emoji verification & cross signing + +... and much more. + + +# Installation + +Please visit the website for installation instructions: + +- https://fluffy.chat + +# How to build + +1. To build FluffyChat you need [Flutter](https://flutter.dev) and [Rust](https://www.rust-lang.org/tools/install) + +2. Clone the repo: +``` +git clone https://github.com/krille-chan/fluffychat.git +cd fluffychat +``` +3. Choose your target platform below and enable support for it. +3.1 If you want, enable Googles Firebase Cloud Messaging: + +`./scripts/add-firebase-messaging.sh` + +4. Debug with: `flutter run` + +### Android + +* Build with: `flutter build apk` + +### iOS / iPadOS + +* Have a Mac with Xcode installed, and set up for Xcode-managed app signing +* If you want automatic app installation to connected devices, make sure you have Apple Configurator installed, with the Automation Tools (`cfgutil`) enabled +* Set a few environment variables + * FLUFFYCHAT_NEW_TEAM: the Apple Developer team that your certificates should live under + * FLUFFYCHAT_NEW_GROUP: the group you want App IDs and such to live under (ie: com.example.fluffychat) + * FLUFFYCHAT_INSTALL_IPA: set to `1` if you want the IPA to be deployed to connected devices after building, otherwise unset +* Run `./scripts/build-ios.sh` + +### Web + +* Build with: +```bash +./scripts/prepare-web.sh # To install Vodozemac +flutter build web --release +``` + +* Optionally configure by serving a `config.json` at the same path as fluffychat. + An example can be found at `config.sample.json`. All values there are optional. + **Please only the values, you really need**. If you e.g. only want + to change the default homeserver, then only modify the `defaultHomeserver` key. + +### Desktop (Linux, Windows, macOS) + +* Enable Desktop support in Flutter: https://flutter.dev/desktop + +#### Install custom dependencies (Linux) + +```bash +sudo apt install libjsoncpp1 libsecret-1-dev libsecret-1-0 librhash0 libwebkit2gtk-4.0-dev +``` + +* Build with one of these: +```bash +flutter build linux --release +flutter build windows --release +flutter build macos --release +``` + + +# Special thanks + +* Fabiyamada is a graphics designer and has made the fluffychat logo and the banner. Big thanks for her great designs. + +* Advocatux has made the Spanish translation with great love and care. He always stands by my side and supports my work with great commitment. + +* Thanks to MTRNord and Sorunome for developing. + +* Also thanks to all translators and testers! With your help, fluffychat is now available in more than 12 languages. + +* WoodenBeaver sound theme for the notification sound. + +* The Matrix Foundation for making and maintaining the [emoji translations](https://github.com/matrix-org/matrix-spec/blob/main/data-definitions/sas-emoji.json) used for emoji verification, licensed Apache 2.0 diff --git a/analysis_options.yaml b/analysis_options.yaml new file mode 100644 index 0000000..d74b363 --- /dev/null +++ b/analysis_options.yaml @@ -0,0 +1,54 @@ +include: package:flutter_lints/flutter.yaml + +linter: + rules: + - camel_case_types + - avoid_print + - constant_identifier_names + - prefer_final_locals + - prefer_final_in_for_each + - sort_pub_dependencies + - require_trailing_commas + - omit_local_variable_types + +analyzer: + errors: + todo: ignore + use_build_context_synchronously: ignore + exclude: + - lib/generated_plugin_registrant.dart + - lib/l10n/*.dart + +dart_code_metrics: + metrics: + cyclomatic-complexity: 20 + number-of-arguments: 4 + maximum-nesting-level: 5 + source-lines-of-code: 50 + maintainability-index: 40 + rules: + - no-boolean-literal-compare + - no-empty-block + - prefer-conditional-expressions + - no-equal-then-else + - no-magic-number: + severity: style + - avoid-late-keyword: + severity: style + - avoid-non-null-assertion: + severity: style + - avoid-unused-parameters + - binary-expression-operand-order + - avoid-unnecessary-setstate + - avoid-wrapping-in-padding + - prefer-const-border-radius + - prefer-single-widget-per-file: + ignore-private-widgets: true + - prefer-extracting-callbacks + metrics-exclude: + - test/** + rules-exclude: + - test/** + anti-patterns: + - long-method + - long-parameter-list diff --git a/android/.gitignore b/android/.gitignore new file mode 100644 index 0000000..6f56801 --- /dev/null +++ b/android/.gitignore @@ -0,0 +1,13 @@ +gradle-wrapper.jar +/.gradle +/captures/ +/gradlew +/gradlew.bat +/local.properties +GeneratedPluginRegistrant.java + +# Remember to never publicly share your keystore. +# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app +key.properties +**/*.keystore +**/*.jks diff --git a/android/Gemfile b/android/Gemfile new file mode 100644 index 0000000..7a118b4 --- /dev/null +++ b/android/Gemfile @@ -0,0 +1,3 @@ +source "https://rubygems.org" + +gem "fastlane" diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts new file mode 100644 index 0000000..4ec566c --- /dev/null +++ b/android/app/build.gradle.kts @@ -0,0 +1,90 @@ +import java.util.Properties +import java.io.FileInputStream + +plugins { + id("com.android.application") + id("kotlin-android") + // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. + id("dev.flutter.flutter-gradle-plugin") +} + +if (file("google-services.json").exists()) { + apply(plugin = "com.google.gms.google-services") +} + +dependencies { + coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.5") // For flutter_local_notifications // Workaround for: https://github.com/MaikuB/flutter_local_notifications/issues/2286 + implementation("androidx.core:core-ktx:1.17.0") // For Android Auto +} + + +// Workaround for https://pub.dev/packages/unifiedpush#the-build-fails-because-of-duplicate-classes +configurations.all { + // Use the latest version published: https://central.sonatype.com/artifact/com.google.crypto.tink/tink-android + val tink = "com.google.crypto.tink:tink-android:1.17.0" + // You can also use the library declaration catalog + // val tink = libs.google.tink + resolutionStrategy { + force(tink) + dependencySubstitution { + substitute(module("com.google.crypto.tink:tink")).using(module(tink)) + } + } +} + + +android { + namespace = "chat.smithtech.matrix" + compileSdk = 36 + ndkVersion = "29.0.14206865" + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + isCoreLibraryDesugaringEnabled = true + } + + kotlinOptions { + jvmTarget = JavaVersion.VERSION_11.toString() + } + + signingConfigs { + create("release") { + keyAlias = "key0" + keyPassword = "Jamauriah@3" + storeFile = file("C:\\Users\\mowet\\Desktop\\Github\\fluffy\\carkeys\\key0") + storePassword = "Jamauriah@3" + } + } + + val keystoreProperties = Properties() + val keystorePropertiesFile = rootProject.file("key.properties") + if (keystorePropertiesFile.exists()) { + keystoreProperties.load(FileInputStream(keystorePropertiesFile)) + signingConfigs.getByName("release").apply { + keyAlias = keystoreProperties["keyAlias"] as String + keyPassword = keystoreProperties["keyPassword"] as String + storeFile = keystoreProperties["storeFile"]?.let { file(it) } + storePassword = keystoreProperties["storePassword"] as String + } + } + + defaultConfig { + applicationId = "chat.smithtech.matrix" + minSdk = flutter.minSdkVersion + targetSdk = flutter.targetSdkVersion + versionCode = flutter.versionCode + versionName = flutter.versionName + } + + buildTypes { + release { + signingConfig = signingConfigs.getByName("release") + proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro") + } + } +} + +flutter { + source = "../.." +} diff --git a/android/app/proguard-rules.pro b/android/app/proguard-rules.pro new file mode 100644 index 0000000..d0e0fbc --- /dev/null +++ b/android/app/proguard-rules.pro @@ -0,0 +1 @@ +-keep class net.sqlcipher.** { *; } \ No newline at end of file diff --git a/android/app/release/baselineProfiles/0/app-release.dm b/android/app/release/baselineProfiles/0/app-release.dm new file mode 100644 index 0000000000000000000000000000000000000000..193fa8f976cd6b0d6dcfa1658505ec82f2d287cd GIT binary patch literal 2299 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 literal 0 HcmV?d00001 diff --git a/android/app/release/output-metadata.json b/android/app/release/output-metadata.json new file mode 100644 index 0000000..dc19b18 --- /dev/null +++ b/android/app/release/output-metadata.json @@ -0,0 +1,37 @@ +{ + "version": 3, + "artifactType": { + "type": "APK", + "kind": "Directory" + }, + "applicationId": "chat.smithtech.matrix", + "variantName": "release", + "elements": [ + { + "type": "SINGLE", + "filters": [], + "attributes": [], + "versionCode": 3548, + "versionName": "2.3.0", + "outputFile": "app-release.apk" + } + ], + "elementType": "File", + "baselineProfiles": [ + { + "minApi": 28, + "maxApi": 30, + "baselineProfiles": [ + "baselineProfiles/1/app-release.dm" + ] + }, + { + "minApi": 31, + "maxApi": 2147483647, + "baselineProfiles": [ + "baselineProfiles/0/app-release.dm" + ] + } + ], + "minSdkVersionForDexing": 24 +} \ No newline at end of file diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..f14b8b7 --- /dev/null +++ b/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/android/app/src/main/ic_launcher-playstore.png b/android/app/src/main/ic_launcher-playstore.png new file mode 100644 index 0000000000000000000000000000000000000000..f374c4e389d42fb0e0c64f5adc3cc09c3fd5e2d7 GIT binary patch literal 24734 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/kotlin/chat/smithtech/matrix/FcmPushService.kt b/android/app/src/main/kotlin/chat/smithtech/matrix/FcmPushService.kt new file mode 100644 index 0000000..0db8bdc --- /dev/null +++ b/android/app/src/main/kotlin/chat/smithtech/matrix/FcmPushService.kt @@ -0,0 +1,28 @@ +/*package chat.fluffy.fluffychat + +import com.famedly.fcm_shared_isolate.FcmSharedIsolateService + +import io.flutter.embedding.engine.FlutterEngine +import io.flutter.embedding.engine.dart.DartExecutor.DartEntrypoint +import android.content.Context + +class FcmPushService : FcmSharedIsolateService() { + override fun getEngine(): FlutterEngine { + return provideEngine(getApplicationContext()) + } + + companion object { + fun provideEngine(context: Context): FlutterEngine { + var engine = MainActivity.engine + if (engine == null) { + engine = MainActivity.provideEngine(context) + engine.getLocalizationPlugin().sendLocalesToFlutter( + context.getResources().getConfiguration()) + engine.getDartExecutor().executeDartEntrypoint( + DartEntrypoint.createDefault()) + } + return engine + } + } +} +*/ \ No newline at end of file diff --git a/android/app/src/main/kotlin/chat/smithtech/matrix/MainActivity.kt b/android/app/src/main/kotlin/chat/smithtech/matrix/MainActivity.kt new file mode 100644 index 0000000..0caf24d --- /dev/null +++ b/android/app/src/main/kotlin/chat/smithtech/matrix/MainActivity.kt @@ -0,0 +1,31 @@ +package chat.smithtech.matrix + +import io.flutter.embedding.android.FlutterActivity +import io.flutter.embedding.engine.FlutterEngine + +import android.content.Context + +class MainActivity : FlutterActivity() { + + override fun attachBaseContext(base: Context) { + super.attachBaseContext(base) + } + + + override fun provideFlutterEngine(context: Context): FlutterEngine? { + return provideEngine(this) + } + + override fun configureFlutterEngine(flutterEngine: FlutterEngine) { + // do nothing, because the engine was been configured in provideEngine + } + + companion object { + var engine: FlutterEngine? = null + fun provideEngine(context: Context): FlutterEngine { + val eng = engine ?: FlutterEngine(context, emptyArray(), true, false) + engine = eng + return eng + } + } +} diff --git a/android/app/src/main/res/drawable-anydpi-v24/notifications_icon.xml b/android/app/src/main/res/drawable-anydpi-v24/notifications_icon.xml new file mode 100644 index 0000000..21b5746 --- /dev/null +++ b/android/app/src/main/res/drawable-anydpi-v24/notifications_icon.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/android/app/src/main/res/drawable-hdpi/notifications_icon.png b/android/app/src/main/res/drawable-hdpi/notifications_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff16e6d2a011f0baf8e1de08cc42584c350c8ba GIT binary patch literal 803 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-mdpi/notifications_icon.png b/android/app/src/main/res/drawable-mdpi/notifications_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..eb0c4a03156c1a0bf34f06a874aec275750c27fa GIT binary patch literal 579 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 + + + + + + + + \ No newline at end of file diff --git a/android/app/src/main/res/drawable-night/background.png b/android/app/src/main/res/drawable-night/background.png new file mode 100644 index 0000000000000000000000000000000000000000..1b5df34e7b11f0f86b98ee1597aa936078ce13fb GIT binary patch literal 70 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1|;Q0k92}1TpU9x7?Tqd5`OSAFiJ481h8%G Q0!lD=y85}Sb4q9e0En~=M*si- literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-night/launch_background.xml b/android/app/src/main/res/drawable-night/launch_background.xml new file mode 100644 index 0000000..3fe6b2e --- /dev/null +++ b/android/app/src/main/res/drawable-night/launch_background.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/android/app/src/main/res/drawable-v21/background.png b/android/app/src/main/res/drawable-v21/background.png new file mode 100644 index 0000000000000000000000000000000000000000..e29b3b59f99290135b0cf3745bc9993ce935b27c GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1|;Q0k8}blZci7-kP61+pZqKgT>LDI5tB{+ Q0fiYnUHx3vIVCg!0BB+iu>b%7 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-v21/launch_background.xml b/android/app/src/main/res/drawable-v21/launch_background.xml new file mode 100644 index 0000000..3fe6b2e --- /dev/null +++ b/android/app/src/main/res/drawable-v21/launch_background.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/android/app/src/main/res/drawable-xhdpi/notifications_icon.png b/android/app/src/main/res/drawable-xhdpi/notifications_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..7233042160ddb68d119ad461555cbb5eeaa98f11 GIT binary patch literal 1204 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 DE3n96 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xxhdpi/notifications_icon.png b/android/app/src/main/res/drawable-xxhdpi/notifications_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..489b245d9906adb2bb6128afc575b007b07e040d GIT binary patch literal 1651 zcmV-(28{WMP)@VP;9}sr82N0+^@IR@V>oLj z02bnNd)mkC0W1so+zO1c*meS{BK-9SK2DGezz~x9RUW0Y=$9oMgZ&qCZSzzpbEGS_^*gOCb|T=(a<3Pb^=>ef(O*!Y|J8bg^`JI zy}@odPz{W9`1(xw7;b65DKt(s@QlM3$b`Hb_#4=dIggnxfu(PuaY0 zX)hHg0v}r1cHx*)Fz34{jzIgZ#z*_K#e8cAKrQk}rpa%Z@36%{+lbhE8TvT|x?3~e z5hal7cYkSfE(xnVV?U_%o9{B7tQl|f9AtGSDaWG`=;9Ik9zF#=X=F{&+6aKJfG>e{ zNW7P8d32=Z1b?@a4G(gXX0syg%u=Kg7!k_lBCS0DI!E1d`l|QNP}>yTtLSo| z9`!N|Jf^j6c8a4qy{>gy9co*ZMFttrLFMz4_VKU^Fu8?@l#^bP0g*z*V%o&;igV zQXnN#Yh2f)%^ELplt4G+9c>QGjw4WC?0Y@OBLS`jqD7=P^Nu=0R>TrV33Nu@QD?}= z*a9h$9?U!P3|N{-93@aS@NM21q{x1tYhrvKV2ikk^jol>ZB=jQ}~F ziGIZ}2=sQ&!Dr2!IO3d_aFD&oJI(}TN&hVAucy8N?f}LBw*hMs`Z)k}^c84of&tb7 z{SCf`B6~1t@Bmt&19Fo4d_sSNd;VBP) zrfrf2)b5_6-(8k5dq?!s_nU3}3Oq`v+Qb`V6Mvz{Ahi*G3LJYF&`cB1KBBL_!`aNK z5&gz{#9dFZC56bX9>q?yM?~|{&(ZgMN55*!r859iBH~`+5jRN5PfZeGs*vZ{caiu4 zhO2?hKR-J9t;2FejC&qw0?xGbbCukf_>{Ph7|GT`bwD4WGtdPX0{r38?{{Q5&>0c5 zJ1vi7Of&)40Ns$%yzap4xIrs!jw{ex2?r`y;=R=aEAx&xV;091=;6F0&X}=r1?mAD z&O7Ric!G%1Vw*@kkz#RIp=G(U9+-%1Ef@cJ1@KC~`IMY-MT-&=rv})TcSa>uW27U%M zB5(SMKi_hRRE5+D4F{gfFW1;K60v`jhFD|r&N?QevleJsWJs+G=dNcO0)3Eo#xa?j zwLqgNpCYS&G8HEz(yJURQfmk@^6Okkg0xxyf>rp1Fw;1tF==Y&-8VnT>htUdbBk=_P6X}&#$q@h2L>U< xT+@KF(#s-6kmKSt$Qk=IBFb4RRH#rP#Q!gKePyY?W(xoS002ovPDHLkV1l$j2|fS- literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xxhdpi/splash.png b/android/app/src/main/res/drawable-xxhdpi/splash.png new file mode 100644 index 0000000000000000000000000000000000000000..b627f52801ffb9f2d7ebde438c873a738424907d GIT binary patch literal 25762 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable/background.png b/android/app/src/main/res/drawable/background.png new file mode 100644 index 0000000000000000000000000000000000000000..e29b3b59f99290135b0cf3745bc9993ce935b27c GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1|;Q0k8}blZci7-kP61+pZqKgT>LDI5tB{+ Q0fiYnUHx3vIVCg!0BB+iu>b%7 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable/ic_launcher_foreground.xml b/android/app/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 0000000..cb81533 --- /dev/null +++ b/android/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,14 @@ + + + + + diff --git a/android/app/src/main/res/drawable/ic_launcher_monochrome.xml b/android/app/src/main/res/drawable/ic_launcher_monochrome.xml new file mode 100644 index 0000000..f0b10e7 --- /dev/null +++ b/android/app/src/main/res/drawable/ic_launcher_monochrome.xml @@ -0,0 +1,11 @@ + + + diff --git a/android/app/src/main/res/drawable/launch_background.xml b/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 0000000..3fe6b2e --- /dev/null +++ b/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..036d09b --- /dev/null +++ b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..036d09b --- /dev/null +++ b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..6deced4230d809bd81e3d5eb291224271ee6c6c8 GIT binary patch literal 1476 zcmV;#1v~muNk&Gz1pok7MM6+kP&iDm1pojqN5Byf;xLf5P3B+s_DhHevH^<1XR@=5Lzq=b+Nxp$a4v|b}1uDrUxl8(gX0QQt9eXB# zlC^EeBx(N(v2EM7ZD;NvBL4jUx7J|0YV4|6+~r|ayY!v^)U0iLW_OQmcPDqyh;z!* zwr#t6#{4`zBmn>jG>^%)ZP#quwr$(CZQHhOHzDh|Y0Lc0KwS~o^|7Z34!QgTnd1?Sq z)92Ip5=mn1_r<_sTs^A+z>Mv-6D*Nn_qbiBHOBYbDW2|eyU`ilZf1D8MvJWh1Ap6} zmuk7;sAjZ5B@Fc)LW2~EZpStL;>wjdOqno&EW!ynZQrX0e@l$rs@8m zbbewn?CAd^rSGQ~3dHkPx+e+-55(SYQZCy8p$vBE)%PQUxf1}V_y3ZjX2G#+IU5|h z_I%7;KRCW1de>VOGxX35IRmk7;OI4az{k#eQyi| zdLlR965xnt54gjH&<!bm8;*^TrjZgyEVKO7jX` zFiI6(Uq`9Lo<)CXt}{CfxeAQSnhDo*ywqZ!jAA_jZqSh|8ZOzjyznKYi8rorH8=xS z9rd2Q_#HMkTsH2* z7;bX-$G9ESl!&f39tbdeOEjlg zu9l(noB%akc&cSI=lRaS;10W5MxIiW;Z#vwZ!bGwS-x9K>9zxwmvy~MmoN<3a_tfh z#PNbxrYY;?d+$~#+o7yK{5nK)Iw0ZMD7FwxtNWuZQ{hA#a~DGd^Zwrw2L2@q0#C%N z^;m18>4q07#PdENLA^5!ch;Uc`3cLCEq5yvuYbbw=DPD?48bhftVHY$AOnUczOi(J zL~+G8mJ>&S*Bvs{wLf6+sSQ_@5Y=QWlGSD-J|AnkuEeNa4VH2gq>f1)rSpZ^@;=?A z1PR{2Mz@;E4x+&<1; zFDMD3db)SovMR2SBmgu3k)hS{9(;@-dN~t0*U`X9>+5!Mk0CL5C*eHvVV|AXL%46YIrXmoL@;D7d zm_=Avgjs||L|BAbgoQc1VTq*a<>;maKp21o07(E+#(&=c5b{Zi e?CB8Y=qBqoZ6ilF9iOCl#{Ye$D4-rf+DQd|ug^sQ literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp b/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000000000000000000000000000000000000..bd181fc536556a3832e263f6fe82c16505eef709 GIT binary patch literal 1378 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..abb45c7f77882bc28e29c4914488360561a2c9d6 GIT binary patch literal 948 zcmV;l155l;Nk&Gj0{{S5MM6+kP&iDV0{{RoFTe{B*XA~oBt@zN``&*MMP}Tt!?(e4 zBT0%BwOapeJbE(YY&mWuNs)5Ff8)*qd@|q7OjkOpZEIQfZ@5DQhYWOJk;W1c!ICgy z#$xC$M%%W59ddRC00Iz#1Oy-i5vW@a;06BR|9t(wR^VVwKm~-5072tjf*=)XSc70R zC?u6ppnw$8)J0*!7BfU3BpXCFNT^tufTD}Rb_OUG>I4WPlgcb@3=j~7lr+&vX$P4B zk|-bo1(kwGK_RIis?5?xrOz7O1T-WPRtgAGj0UPGlN1F)f}%hQXc{){N9h6o9AT_yg%Mim1$IEO3J9f`iEcGDI;5p)A_zBqs_~x z-Rs>KNc8)Uz-A1ZWz_HYALq;UQT=?|>GvOHYgk78x4YwQx!MlipTFOKEO-0U&>DPy zeV-+vLfWG(0|4UB~ z;bhKBk{wEELK5A&b6c=Pjl8T#a=+{ACmip&Ytq_%AKe}wIIujmr!9K3f0JPUW}k;2 z$77@G%s`qT#Y!-J{!m>~SNo6oSI>>y~G^k1y&=IJsZfibKHvuV?Fex%5 z*epgALQNV!Bl8s0ZCSp|tlC%ur*jNm#-JkLTT))0e!#Whf6i&0?kfE62<4;~ZRT!bO55Rm*W1ysGP#_V>k<~y{Gg<~(_9%vloU+fr z`3-9kas36byd)736bc@T3YZfY?iiUIR1vJ!9N@cK$EQ|u8KHQ>rLiN6Fh`VbU zb$hlU?yrWuG2B%CVc>bRlfh3Vj##kRRvMM0TiVcSO{DZ`|6=WZo1J`Rd1{}p`!xGE z3HERHe)3&=XF*<0FK&4IcnkLNzWLf&YAnaUZ=OGTj6w;Yz5VBCg`~6F?;k$}%Rg@D WrCFE1TwH|{dTFNLy%H|ze+dBH(!ZJj literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp b/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000000000000000000000000000000000000..72511418940e745dcdc0768ce8791256ef2461ca GIT binary patch literal 976 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 I$8Adi0HPY|`~Uy| literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp b/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000000000000000000000000000000000000..5c260755e490b582eddc6c545feb9b2372d2efae GIT binary patch literal 1982 zcmV;v2SNB!Nk&Gt2LJ$9MM6+kP&iDf2LJ#s*T6LpDlgjqE!)-q-_#ic&E@7gp2xMF zxK@TndY#uP$8q4?2U>~O%@|yo$29<4CZfr80#t1zCgQX;0o-i>M7FEZ&p}{Ov%B|| z$)22XtPwB>2Cyc8)7&Mpt%N1AE^SC9yIW>knRq1<&7HeqjYeG+Ym4?mk|qY>aAj;P zH*+Al4nXgWPQWd#0RV}1rL`K(c}uf+&fu*@avMpKB;O5LSTYes zxC==`QwkdW7Hzp8Q>c#+8R^1lW&gp9s^u-DNF@;!-~{}F|6qbYa8@i!xrKdzF{XNU z023`2st$;>OO6YCg?< zU+~Yy97@nGo(buA#R{kvqXy8rcc;Fc^8Z!kUTG6So+=bJ!!$i8HAT zWYuIU0S;M()6ebf02zmvsDLY0&&Kkt%;DKGP2i8Cbq&E1VZO9c}a8C5(FbGKq(>qAX8zF1MxGJ(3kS3N;Ji9q$ z!7ddg8^^2->#E7pT9K;cOwo;DgsQ}362H6+@2Uce9FdbEYYYh2n5gCae?qZgcD~-= ziU@{87{g*rO2TcpMcGkk%Zx!p6_r%QkR>{~C}_7a^h*5@vVuWJotZZUL?tB?oshjt z-E2*9GYVP|GDraRtT9xG32>f#OB$+qmZe5BhU5vwdIXQ^>>FH&E?6@rqT!4oQ$$TR z`$eHCMI=Q`qTOg@CzLT*qpjMW@3FAHC9LxP5wm0i?WPh6cjJ3vU{cVKl-hN#SH?DrB@`D6$~eO=HCyN+u9 zq`<1KxZeY`C0g~gi+fQqxZz8*cm)GPg%e3(d%80hG0I+7rAsjx?<(Gt#HzD#JND6& z5qxSx-xs{5?)iyA4b-qIP5c&N5UNa9nwp!*v-h%UZTv+xF2PVUO^I6{YSerXK2FX~ zoe(*prr$}-r7B=b+eZ*GQZp!!rKzc?ZLI$rt^rogj+r@L@z3jw?w@^(`c_jjQRRI* z0gcnR?6#7Wz{`D06z>j1k*0Q}WNG>}jif2&6hBYCq44YXnD|^%s5t61pC(#9=2YW9 z<4h`_u4VFQO$jWhKTqdNMKHo%g82=7xf0A!>u4$=?2{2ZnlERuw}C9U_p z{_@YV%d>l(MTm9vRDbee;G?RiD8*`=Z+~*Z)f(9erM;_bQk(*6(7p+H>IYSX0pG`ysHw2oq z%M&cMwL2x01vyNf?(6{RZf`2O*qhG$sCNtLNu3hv8ms%dIf6@OsOUvGKd$uPgp1c> zI*GLQu0-`y%pF1kI;ksQO?5XPR{Zgs6zj@FR3x5|1$K#cLp&R@_H6kQ7tEZFQjLA! zDAhE(PS>&eFAJ@6r_Ae4GXN{zlcYlhb+(r^!gnhv2lcd^HN;M5Qp~t@GNxcf7sshe z0qbj9gTy(}z500lp|)c^nh literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..a0ee8c7949cb4955db7c416c97821d2671597c55 GIT binary patch literal 4096 zcmV+b5dZH|Nk&Ha4*&pHMM6+kP&iEN4*&o!U%(d-HHU(>Z5Wq7>|F>EF#*QZVN5%b z1esw9`GLPVb-=Ft|B5U(Cz(jh%*@QJj5CfDDPv|<#>~vj%uLJ7%se~OeOJ+~nrS$< zXG`&47%5{qVt4_jDMidJHniD}W>jUy$QfhijJ@y#TP2pV$xO4=H#M`j4f(!+nVx|0 z0q|C}nc7UVb~3x5Qe?JIwxJo9BGp93TQ%2|x)g@vwrvDCNh^E%ygOO2 zZJUl&ovY-=ylLCEZ9dz!ZQHhOn}2QFwvC&U4Z)G*xJ{4fC3kq)38_EOu>erDoYcww zxA0xYedgP^ySuy3Nzc3b?pp!6gPAHV4m+5`B4E07>2TQqhiaycCo4cI=-fZ)(&4rO zr=0UUDqe|0OQroQ(aWK7r}8RNrN!BSLzzo8JHV}S=%$<&dnYRh4g&xzTT!Vs+o)zQ zsck|G0Dx?h^l;m@ZQHhOTeDXvY8%M`wT1s{uW(u!g4;HdBq=pBeQa&^sHFM}u->6) zI?*`cXqZUhuvWGaj)n&;kdYM#gv*-W%Zf&bylAw8DvEI#){fWyf^WR>wC{_oLoLno zSONFeqmk>ffb*6E~hC;!h zGvrcGumwTaJ+FO*5s;s9pUN=f+Rs<&&IE(1Gp#ABT52%pPHevO4$6Gc0sv*0^IhWW zCajjTF)0tnN~~qF8{PRLfPkj-A^@d+Qm(^M>me){5@lkL2n9{H$7U}92q>C86o9|! ze3gWSf~F!0hD`P^{$>Cis$4Q`ffK{;Ibn&ashHG6lYIPOu)<2M2Ebk1g~SY*iprII zZAAb}sX4gzxU#iOg;gt&F-Ln59SA5=EayEW%n@sPKvhg;zeg*;6?hJXExCRWRW&^# zRb}>mW+#S2V_Yx!mvE(!n4AUqYlM|5HT_oxff$yegj~s_is?aBVZ|?H1(Fy&7Fb;0 zaY`R~)i7Gg7YjT;t2kXL#+0Hk#*~TI)RLcGCA+59?%5y)pqQdaKc_;(U>(=7aoz(A zcK`=84ffp7$dQs68#qG?MXR|&3JDpq)woXX%@6>QE^@Jspujz*5XO&=b`w>$3}T?d zW0^A{5wbM2Fj2Np(_n`fT*w~eY(I856zms6xImSy7lx|wgBpd$?{Sp5nNuqMzn>ew?PUwWy3E~p3R9_F*m zeSkt2)QQs->=_Z1l&MB35DUmPs&tUcYlNd|II+}CBW5jGYNrcO>QCn=8J*mRgZs!U z9Q9Jan)`dckDaMT5R%~@Uq5j}Tz;fjkox9g1Pe+KbColnDNBx;W^7<2j15$toVAqG z+CzVf*ED7%EG60{oO~+ZRW3pSmMqlXL4r~ETpcOEP9 zXiEa%f?9p#KN)oJZ>$9tAYaU(X{FCk-*qZ&2OuXCt`4loeP26(GofhiAJL;19x99t zg2aN#Wgi6*mbcD%*+4Rcv|qA4L^W|JJXS0Kvwrjx^=R(zga&Lv!j@xo@Gm%peCX7a z9i^7!g|`BMbA`-@#mHJAgwSG4sfyJ=OYf+y^8`a}or^znm7L&+K>%FPK&QcH=2S8| z8HA<$!Z%)U<|rz5<#Ht4;}VeO3eA?|*)swP?HS&~3!t1d@7Jcee=>kSP~b>Q3J0s0 zDPe1xQQ{tBy@>}gh;_b?%{79Ff#8TPM@j3Uf6;6-HcE4^5KPm=?X{_$HDL9wTnr5h zW@@pfLKpjiX5w5mO~3@^hKVk0n(rp#wADYI3E2!g#K|{wv7cxTS7;thj}(nIigg7i zK9zvf1XE2lT&|pG#Nrjwr2t{RU+%02^GMFG50ZGr{lqn*qXoE^_yI)~Ty>SYT)xf*0uy&ZTj>rNjUfUtm#_+ke2H2aUx5OzWPAt<>V6N4#d zLIc=r&%lJ{{((Ki1Gu0Oxj6aEj1_c4MqL9fIt|8tRXF&^0ppY{WOgXP@bPfWHMcF#)#-Nw_SF!3D*O02Yz*Hm2a||h7mJ%!Ju<&2v zI@d;fWW~#op>*4}ElAOYbk5*R)oUknlOXIF$t~ErVWwL_%hblt0W<><71}Q@kS6)% zBP2$f`+Jn>-*RH(aBYfmn>UC7@}wLMT&|hT;Oo*l{YPZR=r}G$ha-aAyC;JSY5`&m zxnAlA4gJK`gYLiC?nQ)omr#7w_sY=y5ex+H*wsT@3(|ArLyv z?PaxU;fOO-00~H~kNiWyHtE+8TTXy1^_532rC`cjVSxX{6}ZOFr!5*RxRV#$2izds z<;-BFio^G{0fdBf%gOXof4pBSO`uvzwBlV2`GIu^fXdfh3xp60DwciNzE*HBwI%iD zMhf1WvEyxL8>L|V@xT0Qs2U5^0l%}3&+5PN(77DlV^M# z1T2oKxrBMl`~};nf?^t>kTd)Lgx%NWA546!YtDcx<{EqbxV`4PAXINCM3s5ZO#HrDKRPsEQGx~Wno7IyOvSCbKc2Uw_XzVa5HUIu zk<4SRPT2S^%~3Oy;Jv!Z9Ou~Myur9ue(&pIevZ&BFfXt|nX7O4x9~qtn9sH$LDN9p zmdLOl^-4!dW^ACK)t>xx(eXuZ?Ugpe7NNfjVhxPG;VL_(tCFE;U$Y7j5;Bx-o1U8P zBX3ZHVk+VvIrSd&DU#6ir+25{BCG|5ko*I8C7urz8qC_o8-5uixG^FckXMnlNKfp7 z214S{qg9Uc1S09z2y9Z*X}1ult(EK=uy?1et#?5c2SG_e--YO{-u2RfD&-7A&)bBB zJt+&`#eM^CGimoAv{>m}sQf%VxbnLwNNJO2^v|zgty1BjBLPRLc!FXIBI(yCJSy}6 zd)EZ!J$3DU2z|ytxF8Abju0_ex--w02;Iz&KL8n*sGT^o1HRK*z~vL@d%?j>U47^O zC`hXx|R2WUC4I3x~)#Q14Da8bZQSqEs!0&~rJ0acufaZ$uR2gy7ASA?B-k z^ZYmwpIJ&YDADKZ#tX}LMRg_=M3P?~8_|reD&2HMTM_}NRrSzckcRo>1$_GH@kt;H z?F)^lJLZ{bRk|})^ol$WPX6l8tpyfpfV{~%3rXm#*WiZqSHZCe9wB}8)pWr36Fn19 zkeAUtDPlC{&CeSvo^bR%1*)nG>TE*JWr!WJWk(<42OPb>Ln_2#_D)t8_0h{VUCiU; zNQbY3e}Rl#!4y0H%-_5pu%ON3)klrkEZ+0-a{y#tfG4S*Pej=w8dJ{l{;cjE0wA~` z!2Su_Pa8Lboj1#w()Ki{|y4s~PJDQ@0;V}qcvalu~EmRQBAYa0%Y``Q4+ zLiZPO`pd5kz?HuP(xYu$k^neTp!=+*!PZ3uVnLo%#K3&9pg=4sU-z_io(*CT92rMM z0r1(lAN_wnU_+BSp+rn(10cKrI7i&JJ6Fg-0NLAiiv-}G1%Q6pw~{Et;CcUV5L3i; zsryx(M08J}N60zz_ZRV~^y7=tkQ1@(V-PdMdH!DJ4oJuYj~*g9gIV_maoOu?7f3^9 zv`$&+>eD!#sj-dXR9)$8oSv?+Nu0lWrESDT*2U(?8)Ays4|9vxSXH6Gl~g$EUAgK( zTK1W$)!Z(FXoR?BCWvjD0_OKVd$17~a->nLqWjL&vj%hSV;h2QQm$bVcVQ8Jgx?xN z#PYwR*|=&Y`2sFDGZL=^@sTshtyj9zk!=3&9X{>#Q&30-!fgf9By+^BQ9jdkIoY*T zXMEaVM33p;J9tO3!8+G6MOP2p=)QlhXMl2|?|*TtjP7vtZl35_-AlISTc1I=SYJGL zLXY?Tk?7~#bEfWheX&=+!_8hS)s4|z^_r$^i78_J-_D+>DY~$7g%^E}ku%kZ8m~(Z z)%AEaqMk`evEX{gOy0##F9vZ+sQLJMf^N!IlDth~+GLh+bsMkYtee}rwO4z+C!awG zIWsQk^Z6nXSHED~nS>Dib8lQ{HQ)cejrY|Pc7DD$iGl}Yyx;rha(DQQjdNQ0bk>Gt5%4f2H2uWcon-}&c>pF!;JQ0~v(_Y3CqOyz=V%`s?* zSpwo<<80&EtHfcfo6?!Nda>mFTczyet4OuRjBCwQ$0x6vdW}_AEqm$y&E4~V4QuUt zFZG$nCful8wF@w63NMFHh~V)zyZD)pdo1E)<6`6fh86^MF0v5#oG{R4dCRWlbODt*_2R`~ektByd?fvfnM8pL6*@jE~ zCbrHZm2nxis<~+gK1jFPHr00Xi;Y41JcjQ!%nS{BS3vhV* zuv=ia!I77<9l8kBU~I!R;0a9)s0PQ*9C8!xf=(f~1JjsY0Oc;jHC(qKG8S=Tm%uIT zHq^xpU5o>`+O`>U-rbFDJ2`_?+vNysJH4&S>})%!Y}-a}&o?vW57)MBW6%Eo*tYQo zss1icVB1M;tFmp|NoCu%OFOyeb{CFqYsa4T+qP}nf1DxMsZv=ZaH?c3StIxnxy}9;(tGc{_g>u9dmm*9znQsn?@vpJSPB(NVU3D;AA`M-n3|=~Fc;LA z&$;xEesr*Dyd+a&QQ<%OpA+PQgJftNYHaF7Brs+Q(@K7-5&T&rcwHlSS0i{w;GbG| z?7kOGm#e3TmI7(BLR-UW^fR86-8ePx7&M%F3tIsYsyv%^) zD~{J*YI&;r^~nF;MO}U*nRg(PCnGmnrgW#{4IELNJFW3P>pfW2=_sZi49N6uw0%J{ zM7F)@ExLacDttil)WYyvv>{Y~V?|0ghpb>}B;@|ueifIGd?waB%; z2ttOI8RVu{<2eGf6}iTH{xEZCXU`A?O)S~d^T$*jA5-`Xzz5_ua(v#C zF+l#%B`ezB+D)PR*>LB33xN@&x3KH@5X~GS4|-vEDFd=3WJ{7fQ%nNaNrKHqi#cwr zKVP;}k6g{MY^JQ3ss98Z2$H=yn&k(0wY`ex{0Ax02lOQuQtfX?HBzW2!=fd2l)Anr z@zO}K6H_jPdj3~zwvmEEv0I-Z)c!7vfMDC~_RmrU$~2izGz&jy4H9`W?D#C+Wrik; zm%Ps9d%o`4DH}kutuN70lX(&73pvHOtOwGCX@F(YAl6RHt>Ly4`i)_8{%e3HN>_LPlGnu(0`Ou|b&6xdD@`~6 z@&>utc<1!HR+$dAza5I9yh30E@dk9*v*Cmg2|uXOIQDTIWE#tMWE;UEUyh2+;LbR9 zNAxJvnK9zN9TRpup35#$ydO+~+^(;P%pV{jv?NfszeS_^bO0RTsBJ%u#MnWB1YOx` zM}egY)=2+X{M7W3H_%}eRzF7I8Q(AJ#OkrO2MvIiW$W{1MlrhsQ7o12Hv;S(0lako zw=YP1Wm`&B?}u#n5tt6eA@I;#iO;ND!x4b?G37Ns_67w0=t)D6P`U|+QZ4wyli^nq zYi>#8+A4rm)5<&j6d;m%PD`_4r7(ibIg^<*Uj)Dtm?h4xJl6?;ycp-n+9FAgq$_0f zV||h|-5=EeG0&C9cUk~)d^-MQztMe@Bw^~nll{gvKj|x36@sA=c%kz%2G&S2h{!VO zH2R^C!sawO0P%((_>U6R34S&~~o5BT*8_e3@W{uwk zP-3+Uj|wfjfL&8AuFFw<;C#yoC-#9nQnwt((4W0PkHozNr0S(uq1m0!F z9p$DY)j~JB6L8Gou?Y+du?>ZoF#M#hRO2bYNpC{jNYM z{TUuZsr~5O`$S0geY>n4FN6)fL+vgEeU^ zcMP^@1dD&InCO1zO4~dU1v`J?nD7_xzK?GY$~U@j;rIN%oL@JJmZ}^XY5fU*@JKv2 zXXofhpZ#8+g<~^chI3~;%Q!-kbo!f}Srh8BXp9_~k@;*SS*pOFE-@}S-#BOL;J_`J zZyDG9;ilvtzSG~8?C(tOz)-r9j0%d3<=Jc{UrSv~&8dN(9(R|`#F?>00Qd>hqd43} z2=inqA^n|7KtCV@u+dRX%r0&_552Q>heTn#0Qy&i6`?SgH% z*tUbV*xN+f;`G&P|23m<06^@=*~|=pH-Bs6PRH|OT&LzlS{!%|g9j`uhW&h_`R)d? z*A^Zv_U&Y9v3Ec~WM!UrJ3|)$q4cGht96&>zq{XFV$jDsj1-60^tii1_1TG^6nRNo zU*0uOkqJU(wg*7(#ahn~K*YP9VIfyT$#J!r@tcP0OaE<;_gkGW&&bY~CxpOvzC0n@ zpB}Xut}p*rogTZ%R#R}|-OjLh@=3P#W`=^u0Pp~i17PyyXc7P*>`Yf7?o3x98N}PJ zKXjnWNaRSLi3nky6G9&#8kTOxR1HkA)U&-ym-YD$G zSS<=b^gImy_ucASH`ys7LqnLT03ZcG1ArL-hYNirpIa04fG10xu;4Fop|9k<3IOxI z9g4^ZY9<1}1wgoC9spWf01UTo67*YdwLN7X05Y2!MMlswCYm<@Ag}>IWN9zxmXZ4`A642$Y{rNqd#-L{qWyO0A0eE;qR;2axp z6P5q~VA)8R?Ot}aZQHhO+qP}n_TAgIt-b&6t-dF~MEoD|f5iV0|3~~E@qZ-!o7)fg zK%&?(v4F-GG!7y&Fe)IalADc6mSjUELK*;J6I3aMQNYM&xr6g72+uHlfoPL3woJp2|Tw< zLF+cVi>KI&&D&JqA^=nP1HXV9CuY|zR?s+TbvehQ?#s%K(VeNl}t_8N_3jr_5 zIfp^j?q1J|1_V?9AIV7>-?(-KS^*uaV(mnd9JUoNLH)AsuXIQnfgj|w8CGLf2IyA) z*7fAPz;{kr(f%Oll?UnwJSQgx-ZF_TXq9yzbf|;m%n*0jdyDB*eqC~E-qy6(!D>|T z^GE~dLl6gj2fPAa$lf#z_~MH}+~uO7QIO{5gtDN6(0XxI*S=Jk)IxtQ=4@6k;Ykt^JBV`#e{pY&+JyXM@q*;Xd} z*&E3y4x&YqxD?~!KX!mvEe>=@lX%tR08Y#S5+J8>EM_zb+G^Z-jsVFK95nNq#54~F z^40nmiUSPc+{1zPX%Zx%IAZ5Aa)5jGz_rsPz$JqNElr0X({RG`O46jjR4$8K;*4Qe zG@wav@#3k8CRrKK1(#!VTe}e921!mFS8`=dina4m1iUX+r)}*&WLSBD(q}v&Ja5+z zqe&)+Z3;)(VEL4WQDS4@8sRfRqKq!zeWU<2jc=U@6~e@;VwJEq2{w<_n_rs@ke?AC z0=cvn>(*K@47T$7AwjkhYqB8@`y>jC8htK)w)ByOC^HT426%K5*+&Aen{y=Gc}i{a zVhaQ3#2gdaTaVq+J|s_%I?f4t#wX|YK`)OVd?V%Qk98k(p7;#{U~=}{5{xJ-19YeO zCIM{5$@xbdC(!Dobtd-2C46$ll4VQvWkn#mGr8qlkmlY|S4uB54Y_9us;;e`)UgPf zl-zVZXwwo}(sGz)$z3bq2=+8&<>|?7k9-{sVWYgvb)qo(3ff_{x^t2H_Tc5}X+|BZ zdSA%T?E*LkW0^DOoSemm+LSLu!0LjUG0sR5OpaQ7oPu#yFZfoR9|cE_io}C&tu%v2 zMn)i75zJOj80XEudB1T1;tZ#?A~BlqDc*LqH_rSwo@CbxOnOGG7&w;z&{i}c3%&p3-q{pkcaqF~$c{eOa5wN`vjR^cL8Q6!b-HmZ_ zD+4ZoJMxb;f?X$VFSv??qnVH3c2T7f_pHVJ)i^urPQcZ7)CemBhT+cda8JZ#;4?BB z0olBB;h2^reakyS_x^h0NtFmo_R+~f2qb7ICx$!cw*i|fW~~}!3oEy z+x?A7e8MMLB^kYJtPmkOSKn^0SQVb?I%nXa|1f?U2+?xcB#9pR!J6T*#6K!TRMkA! z80T!NEb~b?!?QE;TH*En1F)0{f%7N3Fp0HZ5@~&yEG8W=)pc<;tpI* zk$dM#f=MX5PMQX!-&~y|clVFORkcp_@-WPflOeZHF2NeNgxYysOGpLJ1tZbgg;2S= zjca`+pyoepbBj^9fxt;p#bW?F>w(Olm`ltPU+;>XNQlhVZNyR!@f7TixA6u1 zl4Y&l{4vkCrI%Rd{WTc@dT>F(R$hk-7UJGH9 z-$&JxmT63cO>D4_O0n`$t~ox2O0DLFM@N=gKdbe@_dnGjV50*Z`LB3Vc$iO@p@>(K za{WDrI{H8phRe)6_~;p*cCerMSamS9>KG2a=fVZrYUTPJq32@%x3GLeU~2sQCK6o_ zbnnJR`$mwjF^jvHa;<-e~G_TFNWTfI=9A==GDfA`0ygj*sPo&nvv9?CJ9@7JrS=ZWykg0AQ z;F)g&O|x-ArZhhZD?=rJr(C@BvM8E<_cDEacCr`b(&{ob0?R(C`PItRA_Ho0{)Hrp zU5f0!xs?GD9e4zx+l*4KLIsY1n*%*r3S7dFo>6*l*5}7v4}fp|lY&wG z`_7qlxypYRd$ElMTED&$8Rag=VuoEO&FJ86KrXplo0)Z>=*JHNv=ij^lPstKFk@UU z=Es}YD-ZPuX`<_uhj_iC_ehGxC-jtW$i;jSzXYOX;r=Z$pb+ZINpl>l2Y(^NMFR@V zDfjB}Yce7D`8yh=F!)kx23B9!ou@+0RM~aO2z4AetOM>OA z4>7h*D$V>c8;r^S5!zb<)K~SsF}*JSEqVh!6$z!wcfi#Qv2U<6O!g#fGY7{t z#FTCb*LB?n>$sW~)ed44w|@ybNi+Y7_CdAbx|b?l;g*dV&G3YM zzr{_pqSEDC;{c9zlduok32Ek!*~YGuc4S;bOzF~(@=+iAv}YT{v^2vLwq2nT*Eg?p zhBtm?DB9~CZEGz}!{_ZvKs97=>!#K2CjbYRViA(Jt6G{#5;mn@0qhdG{HjLn+YZOk z5>vXwtgQ(D;@*m9AkqbB)F1QqbdqNN7CTs5tX+uU=aOyk1>op2s{fNW2vEt@4&&L; zL7Fv6ZSc0T4=GTtQ;}eDf6CYRd=bhuJY+X_4_#|%8a^Mg*n3V;QAMJodMlsz>Piu! z)Ua&#BZsWhKtn%Mbl{GSK7GN8xHL0gZJp+DObvk zzOl6nVRUkxTclhlckrJW&D_~pv#!&;_&tqwZgY#_552zUO1g-@UiHJ4H#)i^9A*&H zA9IaV!yIjmrh0cg=T&0Qi2F`g)%k8$8|TcP(b*w8Uij85TE_-mxTI58+=5BR?|AF+ W!_S+D|0Dj7_&?(Ri2o!0k31Tu!BBVr literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..5ba0dc840bc2a9a0e19d2c4a765dd55c32d5e00d GIT binary patch literal 6348 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

#M%R>)vs&vWi{oftaO)Kti=~(zy2{r zo!#k42TQ+x?45gQz~$T@u#Msg;5j%^Ja#%tT?}t)&nSliIL3y10{FNjfV6M1w4Yc| zE#p^7F)S^{X5=Ph?lB1;PH~rC#X`U_`VnjUK99@n*SY&cks0q8Iwk3`n0m3COjr#N z!FKnt;TnDRE=eKZW&^#DbSBvg$p*GLZzouZ+}s=_=;jtf;iNN@T6is7lak}a ORFc$)sn^R|%K-pp!V>8K literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..27f52030865c74feaaad267c13bd10396da58c3f GIT binary patch literal 4112 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 O43S%Lkpj7uT?7EI?$H(i literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000000000000000000000000000000000000..d2807c77047a09b1d073187ac862694c077c3d21 GIT binary patch literal 4684 zcmV-S60_}6Nk&FQ5&!^KMM6+kP&iCC5&!@%ufb~&D!lUlEwkiCm%i7ajHk9wKmX_5 zS4^Ag(pY+)^TP8y!hS?^3q865W@SuM)fb>DoW6)nHC0_=*2IF8Dbx+@-hnvlQq1s* znVH^f@=nDp&1Pa|G@r=K%u`+BjvO&eD7XS+G`06&wimkU2r`w~EeKDY60^>hGQ*sz zGaDHubtzo4ElgL%($vYeBSkEos#B+g=~S25+0;gR^7Upr*g8D)NRlVB1^ZW~FG=Kr6Z>poMJwiMN; zkQ_;pBRQkQfev=N(zE9XIPk*nlsJ7Lx�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

  • -|-Zi=Qq>~^&)9%=`T46+J3a*LGv*VF%^clQ^k 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

    n-J5e*b{&w{%|u^eW4BMNhS*BTE3FA`g+|K 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
    M0M5hE6JkXMFrWN0fWo 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

  • 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

    9L(29{MnS*%d7mTw0IX)_&gBx67(v$a{nG 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ⅆL(eQwE!xj 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≥=#9|oaIKzUkB@ND5BaX%5c{e^s$<%hf_NDC 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

    Y_p+kVoQqR|mUf#XYwl;9i<#N^aYu3%9Q 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�bm3JIGnJ{3}z@RibWqpJ*ExCpF~3Vj?SIs#usk& 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 z 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 z zlqHwgF#03{Q7c0ObmE{8sGv%1@--EreG+1x;HC1R$IU1V{kzzUui? zpQBGg%f6zAKdn~B7t3i|ya1if8R{&b=uImUxdQG0YMn0E;Q?I+qnmNlS<(|;CJ$R? zPrW;jSUMlj@dXDZAoeuCJnLa#n1I);0D|fV@H6hOtaqnN$;@vgPZdk#V`d!$vIGNk z5ul}Qy4t>{iq&U$G`XXRMDa{*vz^Qa2r>u&fQ8#GKo>eG?HxfA2*RTd{Zcp8K1R6M zx7j-Hg5#Vp`4Zs0d`NvD6bvs&qfaSyzXm`*zmM?w+*Y#_7djVmsi4tcP$sLzqEerLDC+ToW_mzmwS* z@R|3v*5~NN<8|rWc+|H+uj4D%nL^3(6@VxJRDzdw_-JdljvVN-W4fGgj)08VXB3!v z1IUw~41G}L(kJoOq_d=6fqs@w4sf0_G zO#rs~>0 z8cMr~wEH7XUFHBi@f`sRXegOk(*^~rX#xYSi@^N81%UXnHwQSX{B7&q0NTJ;$%IxX zp7f+?6AA6Y zz|XYPvg`M6?c(hl`qJF?8z=VklRvei$A4m_qc5!T@K3FL^b`8VLx3UatP9jZp1e}u zIu0`J0Lt%d)p_TutLI<;t#w}g-fq78jdfmsZKdVd9#)HXTC3Pz0T8!L+xV(&mtVfL zx4-??&cAw%zbosW-CFzYt*!OhE%DC9(n*0XW-s{^f6NeEZ%GYdNb` z0jGdJO=zi)4o3Pk+RRF%scqFm`j?MG#HR@~U6!ajJTd@7(X8KV0>Bcm*My%Ys;GetXm z@Dpnu(B}D5`db~^O53Q@vCEg=+RfWnG;?jCKV)n;e+^;HU8emYys{SwSOc-x(B#fJwskM?|w zT+@g9w^zuRch&^_YmR-a@X*l&9$RB9*n=Nyf@Hj$+9h=}9FM7!vQ;Zp#sm22^%X(Me0TmCBxP~ktieKFW7H={kRH*E~PjEfk3)M zw+*i(TvHgGrQ5vAzn<)>6@7YK77h7%I zcDzW1_@b8`75v|K2!8MT-+hm*Ls*_vgvzM5;E&2uJvt+hk3g)dFWs7)K`1}iFWaL> z2>GS7B@u`U)gv6kZK~_}z!v>8o85h9^Y$xSw9b$-I=646M5Rq{|>OU@+5J zC)Y4>edb7)7di`2JOuanTr1tMY8B@F!u>>^Djb$9;ryxI1t9r4+$V^&Q#8VZ$SO-}s?kp&wsCiq?DY zOWFeDI*+D5Z7EDhAVfgYs)g!L4A+^W+K{x=5A+l$Q|tL;fEYOON{G_VhD1^zdqE!o zJdi!GEV4QAD_i&-4Fq0Rri)^98IVAUn7lmX5Jt7V&sTCtTW-3nN;D(TBOyfFZwm+* znY>n1$Y;82#cC6scy9eXVj%-S&TIQRH3co{+@fyC)x8nv zBtli{p#$sn`WkTBL*SeHL`Wj3Gq=>01V04dbh<+Asp%#Z2cdS=M{uO9+Ww!=_C$nI zo&Kf_sqDy>i8cZ@Wm#(_9q=N+14v)5Tl92*u+0EM+U8jyR`N!^aP(CYKeJEYm@UH= zc!kxZOfE(I)VX%pXcb3ikJWBjogdc)jnD+W1_5he^9ceWdC|G*T(L&{G=wGrsLzRm zbls3&vC$-~V&oCbbuN90kf(;vBDCcIAFEZu&%n-bBUS33`XuZO5UkI><+SPwQHUNE zpyV8J>TIIy&Ge83V3VP6` zL;|~_qXp@S?nQgqLdGfxkOc&KeM49mzD?m9xk|yR06VR|&u&^aylz`!y7W&Yl@8$7 z^o7pZrFE`vtqRCL&>2qhGHCVfEr9C$tVjNf_SxsBRt5NV?k;RNxG|k8E+A<30g#I+ zy$b%UZKEn*nLK2pysB^L{ulKX-Oew1aehess_uBGI-FPe{Vwz!zkp3!c&P)ez6F3D zPs%wrpk6hxq&|j!ENC%+Jr0hZNryh?=g?F1CBSQm@}>~NA#&2s`dQEcedPA6Z3Do$ z7P*rP=qw2!qaSFi_=3Ku?@DKKN?w>+T6t&7awPEMZ zx_8$$8g~I6`rK5>YW0Tzj^|cr9@7UHGrMnX)_r3jbju~@{$&Y$b!I|;9#S8xa>YuA zr&c^TwPm&l7+MmaZkZSGD_gyG2&g;t%U$ygz**_glJRP}gK`S1$`m-C&H&n%cJ=C8 zyZG))yLVTY)EExdp-3DJUsn2UCoGzx*7^>Z0 znlw>;>b{qZCMFv-c#ppQe`9B_-%z$GbVvUt@C>>Zf7a*mbep_(HWdN<$*gw2A(1hz zXeWYpEcrw{HCIHgE!B&DG4e<|4Jep)$s|g9&>eYeJg{;Nx=ZQKma0wr3;Xh~e`$aI zzy1e%{q=jltTa#FHKC)=f@*7fOkXOH_*!6yQhMhPT8mYX&)|7(7u;myJ|b_y`__F| zZDPhg){#y4jo$qi^F|(w;)-9zzjxz`LUvOR{x0H^IkJ-G$F=`$oTA{dt>PCzmS6XbjQ}*n z!k?4_PIMq12?XIO9Rli~A4NspWY>n`#8;(;e zn3ZO_y8)={d+A<1FiNnw>GSDhm?bd5x4Uc0q6XLmT7tT_lUj$m3XD#9-6{uE(K9Yd z(ENGX?yC>2Vm}_z=kMw8u8QJ1ZSLE1nR4&~bi)OZ*p;oFwCq&R|=u=xT1r~G@JYzoq6rluwrLA+iU|L&<`-2f_B&~jUfN)cE zFu7Qb0Y+M(VL&G?39JG!5=N9436E*w(E0jQzG~UB&IhIuHoynPWAc7NKT=*1EUFZz zFtAkyfoC!G?b52pLiq^$hvcnFwsl?-;d0)i4BB$uAYOzg>S^4Y+MtIpi7=WkA&`)# z1;VAyZu-r{luJ8?p;%kaI=ld^sq+P$SLf1!qrRGx%mFS^J;ITnwa%-nd} z@S%&?lztL^ko8p;1Th3r3Qd`H+y$e)ub!d|sz7~44FH)$K=qq&wLOyZX}h&{5+q1N zJ5~%Jvzh_6sUU4@6i~^Rw9ALI2qXI;?T|tMRT=#@Wzs5W)rLN|K&w!?v`^cDwR*Og zjuHN8D}-;Y%om7H+a^Z<@glsdgm9>~(kCSYuwU6^sPpkEBkl-;a?H9T zghzc+QQK9s2zg`QjwzwDSV1_4?v@Cb+S;$9M*0SPd|p-G4Auo`5&(`Wp4 ze&x42xBm6eI@-p6GqUA?a7zHXXmy>1$1>hP7i;=%CI^k_crkfMC3QCh;CxxIIlv}= z^o5;%@vrUVi~rGTkAH4yfUf~uEJ9u+R^i0Snbiz ztZ@9)(slZoRuPw7#>X=oUB0yL^($z6WVL3+>IcWP-(v)S-Ly^I(9-PYjg33s(J?Ne zqmC`tEYycx9)DB`cP6JOMyG96I>TYLY|rN(OXygw6;T1m@s%8jl19p%C~!Sy{l(p=C`} zPRCQHbAezT^ANw*Wx}FO(W!WmK)G&z7qC}&O%|7{HIGl**){ga-UH!hG=r}|d%B2B zyjCm60`NM24q=(!G(Q-^Qvt5jM+TZqVji}8e%wYoel&*p&bqbw!h$#w4tP7X$zrXE z$YaI{0DAQ)W!DYrj4i{qjqhID&FkOW)$89`V%oA&Ze>;aP_v1jWX`%n#z)C(sXT29 zIg0nei!>=Pq^*k7{Yu--0HWnug}#&Za`)hInwr$MbRFR;*K|p!c1I$^t=F}m7I(n+zI=cI%0#DQqv#x(8QlEkhM+kJTT(hJVc$|(; zwXdP$+m;>ao9o3eVLH%RcG_mY+4LhmFjiYI4zyY=njve=#sTfBV~BIVc&}W62SaBN zqIKZ=x1*7NVo;wNEYhcHdrz%gI;L^f+F$?qU)klG8~8q~L1iO9 zyX`Hp!GEMR=Yw_RQUguDigorKm zIUwCFBK4ui_$|uHj@pUzLnqX3JTmEh`?n3Uag%?~EIN9Zl`6xx%|;VXKVXYJ%Fi1YsN_r80MSVLMke+Pd z13`B=v338-7I$v|=$E$WbTthMAJvVfWrX1h^1<4At(kbG+iONs-wxJ1>S&1&veubD zF?n$^1U&(D2V;~)69JOwcgq)R-X&mtsABhB_2IkJCY~MrL-rr4A95F{4ZAl&{kno? z;zhFJ11VZL^y8(?viM%r)?9OQXPo1cmJxcm>5yagcY- zzzazzv{vzaw+C9*{%v*y6#qmM!j&$!lb|;o&3$)7iNU|D8*Aw<3p&ASrO*A)?hNXF z`~x9S+n8a$fVK+4jc$Y04aB04l4bJxcD`0>QdVu8S`oo&Iz^BjUm*}7RBHvRpv#)_ zzBM?JtpoHQ06?miravtNV&`M}ssL5NQaPzaA3;>B$-a7$)r5jpwg94o9(fp>KBePl(@mg|^od`e-dRwd zgxVmdEzLRNnAxP)ad4p(aedlNAY8@d7yLs05X!`AR=N}nLQ@^;-h#9f!|jCasR3S}K(MvumBR8(8rY z!8M0q+3+*zTJ^j;Zy`kLLM3hgZP>6swu?8{HbN+`*K_vh>4{YURo7P+HbppXA{?)# z^noP;cezI0&F%WK1%0OxZY#u3TWLZ8Fs&7D^-1p=^b@s_c8ds9Ya&+LiPeXl2TFP0 z#2U1yc2*AwXaVkkY~lEm0X<{1_RlYez8nJ8^se#)t^}T!B6ez zvwvy(pZ;?{cdq^@zPFm`M)+^+^_PERU;Xkw+3ox9tp@0L_Sw(uU-1^~uBnZNvBuXrzW|Klm$cuS>GD?ObQAwRKx(a=qVbbu_C_-D$^7 z+KTiKfnt4GAxGPqx>JvJPu1~tD?j_smSd>q`!b}t7Cy{|47WUvpC%(14SQ76?KJ$p- zf30_R{^}33_t(6)0JCXix(4G?6<%7U52XEmAYJAwkQpW*XFi##%hgi4D*&FN2?>>> zM8DIxuL7of{?T*ly^91R2u5N75?b#mvqymrEaUpGW7jN2wKWc2& zq>bM71r+V3s@3***G``$Jh7|++$QwRK5f0AtkuH@bg^SgQ>R5}ElnRyB&rNeS-brG zYx{ryum9fu>d*hi+SgrZj z$CL-(rn^!83g7x-|NcrkUhkQMiC=%*&rGlj?(rj5Awd_PH}A69>JY%q{v#&nR>5y1 zoVy^%pM-U}`+yyBZS17*<9ZWDS`HtU9eW2N zkwv6rA1fI@KDXfyp0Zb3AxwCe;}4|6pC%o`d+cAf3LfV_*ts9{<}3;ivKjnhaQrI^ zxhbq01cqF6Krd|{kpAegzU9h*!=PEvjjCyZbcRBmJ=b>k+ZQ%%UDzBUP;$NmHw{$9 zd=0^HX00m*%u!f5Oy!6bVPFKK93UlWyL$lX6e>9--{DMm7-}_pt*2U0zskSbe_KAO zP~Kp6H~)*u={kDf@e{Nva@*!{y}6dZI3(WOok2rx67&M_B%fr;Z&;7=D0hBC{d$IB zg7}jFBar8`MuZCEcPA)bx1uf>OvErXMIjPVEl7JEC~Z$Sh@Z#lBN*-y?wG31jcZ7T*BULp-)xn9HLf~y(oYf?KVI_ zAs_mt_;>=SraanynbY=pUD`ywPG$hgl~(GZZl!}ToKEI^Qf{HVkZvBqSvv=Gep@|3 zXBhocam1U+q{x$2hRDN8!uk}y)G5L=6-(VAs3X7*y1JB4TdV&LY@JKh>Wt33PYEXyqOkfnoTbYMrnK{~_H zwOsHU;``mM4H0My2+R5|^0-C*hhqQ_X4>oW;+pzQSz~|CSLcSkzIE?90dOGrDvc_F zvu=RzUEbKJqb~~ptm`!^)#?bUYlO&_^*UYB&mpiL5H@Swo37mWAv5GCLp9QXO^ST~~dVfAuTfV(8kEw6_|wF?19JMHfUoLR{6s6*+A*Zd7Yk_3&Z$kyl`74euq*&g zyNh&27e=Cu1m3>6f_9R@L-K%U`r-mUF`%91#XTz=d}8^^BfOVw-5Xf{`>(D2`YS8g z(3(}znReSyFT^E4t4Sk$kwA5?FGJ|qk@&kN`X+#4@qFF8pf53K62fnAC$LuCVGYy= zz!5&ds0_b?KLGap;yLoG%jd)gCC7=T1z2^bM2CK@dJu3gP*zQD`7Q9Ynf$3QXtmsd zDjCpj7j2JLrj-Xx;)(Fbj8Qt*tVslolbY~SrgVX)wxVldVTB#soUy3^pL&G-L-Gc= z^!tK{e0+;c_QqNl-$943ErqOBLH5$;AN5W3e4%C|s(+DWY-%+9R{q+a_`Ucjk;OMPXb3@=yRYQh0|4<4zV zO(S@nb^xh==Hc(U)xBPC_(aZhJcd8QPf4!;?>ag>bTB`hLRWzC=IKM|r{e82A+8yE z1pxO?Qd0K?z`W{66U5zqhcaa0qfM(;o3u;SZ^-WwzgGWq@N)6tfk1n)Y^A+JD>aU( zXX+4Op2_XgISMwv9@(qE`Mv$8|NEcWAO7oa=r41t)r+QMY1-ScfHjg{P7)7eDB8;x6tA^4Y!6y+wo z%ZT#4Z1O`Gm5HZ^lPA}4D5)smj*V2Dj?0K1mVbXJaL}P1?uUz2Tqoh7G$QTccx>#p z;X|11`#lxM=k7n^2eoaBpyKrX>0?%uzO>x^Z^s-8xnmdE%M^`u|1=fq=UxCeBE$Xh zmGn3eN$PRGj_&*2F-m(+5Yq2wM7>X9$^7l4Gw zB+@d=PlzCRj+Dn6S?HH)3U-m-*c|ju9H<|%|L_^-Wmm=iV?Rpx-g{g=)NVZb^Bjr+ z?D&_P)HZzVKaN+=Krar$eBe;U$vzN<+yv?wt}yH3xRReq&lK^?;GC}<6Btl{fMkma z0*SV}zq4uQ4uMGn8F3+`>4s)~*SO!B*v;7xfmo26I5Gf(^wLHQc%v0&1j4ljN(bq4 z(iZbp?K5C|hybuW|0KV>(s=kjqYQqDxuw>(V)GA@nV_DBprE0Z0IYHc*@abf8I6RqL0B z$WFH;9ur_Nv!$C|vY5k!18Vof~_F^>_- zbi26#srqf zUV<=nqf5eccZGUI2EX$q!VrS1L>O(mPp5TLu=+;E1!sNN*3X0r=h0tE2#*2_)8PPj zT8wtqichXuCJ!_0CsrVh*|6sWtIlRGH8BI|)K>UePeS6vih#l#G_gWZp8<+U&B}TB z6~eWSNoXg8ZmFLPdN%FTF7QO1!(A-&iJ_hgwOYl~=Y}-tptHG?e&4rb(m+-{J+vG& zFuCnOU`d4JJsTiIUSG8V<3&3>MPS6ech?4x1C|AD1QHN{ivXBWtBU~M@yQEaP^I(m z#S(&Odthhpt`JnsPL2+&**qfNnVr44uuek-%cI;Xgj+4hv-||#|0v^qeI#Ox_A}zt$v~Y;bSmOCjnpm zQmbX^XKGDNVB*2UDISWVMkE~|FKwU|S)Jq8HvR%yE8DspP8X4mI}>YP>S8#pp3g0_ zppEreK>(M|oC;W}&uXj_ov26W5XLiws!i7g8v&N{`=8jupZ#C$;m`jsRyzC?z=41c z4X*$--FM&E>)-#iz4_|D_@~D*$(cQQ_QXE_(|=|ApZ>x!%?Fmq7Kj%7-mtM2bx^TA^P zgT4V?r5XYATJop;mz}ot&tBWri?8hN^>;S7cy0a5H#WR{Ywb7R+WB|Cv(Du!oA<6P zyXadXF|`tTE@zh31ZW@c)vN&@DQ2PhG(8YH)fXD5Ea(*Q>=P>qXsBpKfTnnvc2D@K zF#K#f1wcXT{eI6cM%2WLK4q)>5)?+0^S%um`pD+fKDp)hhtR)u!KL2`B7VJ|0IEjL zuQK!zO*+Y+ChatFtz!;D$~?wB zpc(oa;98S=;&0jwA{rl(o>q?q+BHt^9US-yu=tI1r_;4|yY2C5tkkC)#czt5cm+ctwgnzShJs`Ov3WwaY*g#B2K5GL?rbl^HG$A=d-aZ!j)E zyXvEZD;wOr@Clmhx8K_mK3HKq(Q&LI{ImjKO{5Ff9Wb6ihuVftk0a=i`iD-52l z4FRL-o4Rzh0theBck=KhjddDJaU{C+S;TINWxl+x?^Y-<%wQjV#2|hyl zcUP1dP@aMIGMZ3CYqCa@M7lX%Uj-NqsT=aFZTZ#X6I)ZqqJas-oo^gip>|B&=bX;6 z`8~67%7*Xm>^Fb$H}>!U=RdPozxv*a^p9FylRkNyGe+stnHpO(=`Q}J-JhzLi2FH@ z3r76}wUK$;A*kRS*;D7T2>ysmj={rL$t?=Mi7(QMXIHts>?Fj{n;%r0 zu#ws|$FlWS$!#~r@V*-+DBeBZ`1ObUe5`_>9e-~8Cxdj^>sJl#udeR--7!jim?^!= zhU{+s+&=o*#2;ye*Poa}Jo_#oFLrmCK=cKp-T(*viO?j>O3>t20X;ABj9;CF)Z~Za z3n6&o?yHyTXzn+7@INjDkzOBn!!RvC0A z4BtdiUwS^X7%v>TgOvuB8wpk)nF{

    >CJCe%e;6>UEbzl>hI`4gE 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

  • -|-Zi=Qq>~^&)9%=`T46+J3a*LGv*VF%^clQ^k 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

    n-J5e*b{&w{%|u^eW4BMNhS*BTE3FA`g+|K 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
    M0M5hE6JkXMFrWN0fWo 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

  • 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

    9L(29{MnS*%d7mTw0IX)_&gBx67(v$a{nG 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ⅆL(eQwE!xj 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≥=#9|oaIKzUkB@ND5BaX%5c{e^s$<%hf_NDC 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

    Y_p+kVoQqR|mUf#XYwl;9i<#N^aYu3%9Q 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�bm3JIGnJ{3}z@RibWqpJ*ExCpF~3Vj?SIs#usk& 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 bZ{DEV(XwO?RrMA>K>lO_N|LqW#zFrB8+H&u literal 0 HcmV?d00001 diff --git a/assets/info-logo.png b/assets/info-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..7c6bda81664387953757de640947f711b1bd5ecd GIT binary patch literal 674550 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%0Ag@1c1A6X(US4aq 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 z/Jr`uC)KySzU!BZ|ks7j!kwHGINe+xC&-0F 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 z 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∓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�Wpbl2NgfS=Dr z&j}j2PoMXyF~Z0c8J0?eK#wMU|>)=_mH}_+;wSnbOhP}+I0&_CCqAWB_Vpk3*{vdnYu5KcP z53%ld5t>Lh5ybQ&W+?s1*}IsE@)H1RVUsUG9%bmPFJonvji6^UdjMUco*gj=UUI*R z;A&7_m?ii3qXM)-WkBmm#bOOOtfR7%Zu1)PCVf>;*$YZp3mplWJxBz=`<_31fD`2T zKIyK;@Ls@0kPOdHFB#uFj(Hlo91gC+;i~7!6K2}r{7VMRNatZPUi)$Ll6CF#41yv| zj^amtm*1B(d73^0a;Gvc06^uRFVdHg2)cX*9Zf^euk<8reP&wJ?F@iFogg3)i1wVI zW>Jg)KpNP_4nR);xHv(80Km|QT9FGiz%s~9q=YBx^O2L~ht8oP zybV1+n>S*GlyUG(9`lFb&v+DG_5xUMwl^m<8-*R!w}9VU%D)KkYj5quAO6w55}$nX z6Rgug{PfR1kI#PoMVunoG^jDAgQDlzd^@{BtUVUzMlh27Sd*}FFKpOl&7~{|Q3_FjfdY(QFf)ZDiPD#6@qqk?xXF2zf z2L$17;Vbj#Xo0^{)oe?vSo$v+~cfc23g;53mBARF{^E#LP3qB;CmIUy-CoMw~!*X zNkfnz0Nes3|L}*8;iIR~Tmx`TW^weU8$bQ&>$teMAU|8lwJw-YOgYETwmNggIB}G` zP;LzdZr9fvDAQJgtLNXmh+gj|9v`;i+0(};-ZAlT^8v)Q68PviL11y0j=46t6MoW1@zWik$X08#R5?wg0XHX3uqi0hCOK<6@` z^43}*e}W+SN7?QWVXN89UZ@eE%ikVBClGTlLWdD2!!7{M#VZ^99>nR%QS9yP#^WcC zX`k+qcoG+YKsU?Y+U&qvf}ddmPB%}s7jpwz=vS5jKHV|x^eO>j10cKu;jaNd_U^gY zp8I;vh@%BKZ8@C3gg(Jglcp_r+LJRjHrfE$I)HN-(BtONOI%TJlwmly%$jdE*0P6B zV`WVJ+9M~J_VgL+%VE%5RK|zu77duGz?g6X!VU(J!|-dXYtaRGDfa|&$~SeEv~Ezp zfcNX^4>X!?uThT=k__sdpEScy|!m|C7wOr z0t7ya!@Ui7cLJj^;H6F!f52QoMV`aKq#};TJ`{5!@q79LkwW1>=dIx@hMPDiI61sFKG}bk>$^P zQvNCXioT`o{Jnpxb`JpYRnT&&etXNk|EsW&Nzhh;l8Fk8kemtI$n%;)#rxtE!=+b) zCo-r6p#m2Klf299S}+u$V2@gZ0QE9q{Tc=&tblI@F`U;o=ALGN@UF*dXDils4r6`q zNwfffOLe5vYMc00X}Ej?lSy2=r`>O9k;c6Y$1M>rY61eT#%&FYzWpSYI(vLag(4^y zX5F}U&!4l`F>^960C1378Bhe#DOv8=0|)?g4&ZF+iYrjM^s;=G45nTN96DFW;c9^} zk~-hnTOuPF(m6dUtRx^GOXaV=_X*XTGS%>oNKA4@=fm3hb!Q(xT^lLzGxNI z@AB;ayEy$a+d3U4{~wrbG^ zG{LcaXMLG3aw#AMu(^1r%6EcT@~S`tu5s_&OLxDY#t6w(03IRd1WB+%7Nu?uXZnhE zlHYqJLV3vWZn`=F4E7MTGt&kHOeu%G;U9hSgE)NhUVQb{>-bOqlm9CI^q>3!L3W)= zaScFhufWdkV(e|ZIA8|Q?V*UY%H19Tz@!pD$eAArU)7IS^9e_0ouquKeCAaTZ}FY) z9$rfre^Y;4i=Th@9dC7{hIrr;Sn{|E;|Ri?u|mG=9pZ7m6a6?@{02qo{JTXgZJK^` z_Euu|(R%D1Y-1cy_qfY$FD?XjR9>#SL_xX{bTtILprL57;g7+^Y1{|^7wQ;{w{i5% zIRKD!Q^t@cG+YvN(tw?iZ++$B5_yux;Kn%k=)HLF(@&w`YW(Wg&jEn{UHtiCB>Z5Hu)z5lMWrLY!q)s3)Q1 zJXK=2#@N1^-oiWOWD!ZW3USec0LDhtp!Ld)n;Wmjd+%*>t;Ol_+c-PvqCCq+!_HHy ztu>Iho;^Dx{iWm|>7aq^8MgMm6juy6`9MBAIXNS~ivVZEPk!>_Ts-mS)obYSb)21E zK&XZ61rnU>Ztuq7qy3EIvUkQS(gh^dI^;9QJqOWj(Ix>?_5cpC+^4jEhbZkO+yG42 z<8pI-iPE(fYc;M$XW2XRtOIpJq>*K(3CAk89!w zsEh{P9J1{Ip3YBQ&~hG+9__^eVAcINpMQ-knE)Qh>%rb`Y?0sDq#yn61i`7FPx@q(cK+@jDP4|>^5;OcDz;&A)+ftD+=rQDr`bHoqfGP&MJ?ela zetW8j^B}LN^BMA|bSlYm*V)0b2JbE-V+Xw}fWEtFIB$@5glV_kuo^mKCkHgj(e6brJJUhhbA=l886rextj`rf} zVcQEuqHVghO~mZG(BnPdkt#=pnC^u97@x%Mn4(%#Iia-euXw4%aqVXq+lU? z^!v`Clo(1oF%ps4#8aJ)JJN~tPWGDLCrdYq>5@Bf?2f8y(Jd*dL22cGsef5v|j zRn)?I$P<(naeHr5=5=0;rwq+iah5kGs)Ek1`Qg*DnPKsW$h=S7dc4OnpjBH><4}V>w@ez7=xz84dS)%)u8vq~- z-~?^+p8#+b0N6Q<<>n6At??8}U!Ma2-^Td-4a(mkV1ye0aO`g8yp}BO&N9|slZpeP zzz~8A6@5-%wTxL;_WF?$^h216_a>&G$bjz_10Bo(H?oe{22ax=b7b)sF(Ii&ti+s9GjXkZ)@}6|y&kbQ6 z?r=EC4rnLuo9XPyLP%vh^z#Sxo5l@~%a%2TKw5_i#{`JAMjA_}U4(9L6n((KFFyM< z!0)H={HtRW3&n)rKY0JWczm!051%0fZ%}%)8~9d3$l)uPIt8;X=Npnn@@onK8$%JW z2?Pmlomnl`Sw64){M|!u-V4Ar&wTKm_YZv*(d)OoiST^x{q1n0G_uaKN06%|vl`s% z?{?)jf#23aJ+_~2#rC6(Sl{mCN>qX0iKhj;d>0oN9wd*zM!BvvFer%&6F%n@$MSp# z7{jmEy?{5y(OhcA=yV$IzPX4I0MH>|S$Gv5GoFfMi||{{nc{v5O;!O^haZ0!`yad? z|M<`TD*ogD$A1x@|NJ?1FF8?AYpv`>8=$b24^E_a;<$jqo~X^-_C&=!iXk%Y${}1y zfZVg(1ti-;%(vvh6}>J35hvMxWi^MFl$!%UjC-D`z|F7N#v!q`!)06-X%9P_t8s9! zhSKUmCk!J9|KYPA#*-%>t2=WlL;vcEv`Lk63MQqMJx9whf%78EM)!q;_67~%PZvx~ zXafR?58nF#Ks$@iKKoU?d13~F z3U(E;!;8`%RZRQ?04jjr1r}{U{k3P$F301;t(^C@Mu86>ZRh+#w*}d7@e5_YnO>!g zU#0FEsG*{`FT!m=o<2T^4FHU%MhMoH7bbDAvz=SmoE)9S@TwavSJDHtTCJtBpJ4A2 zI&NY(Zf39C?W~6^aY%PSo17t2TCq*qjw;*$y2%cS4&z{Z0|37in;l0SsLv($&og{2 z_IB2JW^WeY21K#4bW2{SU+!Ii;qdVS$d_iL}8dmt(Y$~o4Q8Tz^~!#zkf1aj^lJY)}^z390ZjquZvvc&Ly~V00OR9sKaRSCIDub#@a@Frs7$ce z4?_c6CXHcNW-Ftd^JiN~-G0C+x${=5fJ`q`c!F>Oyekr)06sO{ZGd=Q5Eq>;I0 zjspzNgLNo;1cG#Pc&ESFrgAm9-sWTD%x4u;nM{=d1B`v9g= zdFcF|5#Bo$jAE#SBxAQ_{5hpLks62F!ldv|FR|zGLe!E8?Nc(zz4P4?Oj3ysqufxz zo^Pl1srMX8H|d5?Vv3?%T0{7DHlwk=g>|61ZUB6Z_1}9J!?QOr z0|2_emjG~dg&>pi6sv{cC;*VWPKRl=xD|mFZV>go8o-Kl1=$h-uMx!3$~f$X&I%;1 zRH~B73QPv|zdad7;xi~|BeFs=OnIKQ`{0^FHC?If%2nWx4>N4_&MGsm;^iUgZ2tS9 zvvK<9E>14;f!WC?)o(MGzkO;R{HQc;0oq-7-_CC=xA%8fZmRiT1~yHf=ha4#Oz8u8 zs^r%I39R^+jhs54x<~@+uxFLms@( zMoiv$UV3TaM9Tv}^mwYP+{o82!5EaoGUt5A3|r=|Xqn$AOriA*`nov5vy0u-RFLOB zS2My7h_5#&t1-_n2Jx$39mnf8$K=_G?aouVMwvC^_kQOm@yYkzLm{|=(nTNCHG@9AzFJbM(IdmB0DNZ{d+ z+PfD=c_g1(xye@bHsLWE7S^aAPwBdI+@1ti;Ea` z$=|hg?P&#otu^QQk^$=9`b&NWhzdp*0V4Hn5Ge}rtPiMb?Z)5y!@mnaIE=4;^GyOF zSA+I@?#1RDD!`WjQUHj;-&}9Q7s{Y%3?2Sbq0rv1A&{+6+BgYc!9+1)!;_K7kG+DB z6~(fU^Z(prwl@Sc^{=2SH0N7EUz_}|uc7d$>stVW3!Z-X!zVdaz`f>%gDHmbLe7sq zJMG2u7q2lmFx`zDzIHg-dax2)dXPMWBvd{cBy%_;zxJ3y7<>L&0K8Yk^NU{~e`yaN zez+SSfA~G#*8nHVO%&|ed3^QdOZa^jJ9_{rl=9i-X^aFIwN-fjJl?)_e%TF4>bup0hoPm+-^&vlJPICF{o!gm5Yd+}() zmc3nfzA?JBYj4vad;K;#t?Y?%5sSu!?R;6rR6o)Pvwgt`%2xreJ!hlQO#<8X4Nt(b zt4bXO;G{krvULu+#)BKi3kV%Dzqk+(4&l`X;MU%~vckLrPrJQ~t9r-IC!|fe>3XkE znUED*I|u0YrFe6EmUH}8;fbwBPjd9{<=f+Ubp*e|9QFiG3D;Nml4<8X&&&|_F5a>n z=1IMpodJXu4BGMH5q)k@KBXS6?NO&L9`A3(55D&-K7MbPwt}9Rp#x@p>P23^q~0#6 z<38Vj+9-?hysRS5rQ z=9Qv;SR$)@Dl6}K?!AgAqlb{?JFR~rhq?0DA*F`F{g(I=xeEY!af7!z*5L+w^;|>^ zTW2rd_;w{L_68w(3kX}TccRwbist5Cv;cjL^<92%$4YZM7T4Ah=1m&@GGGzZy;w(~ zySLjq1YC!a0Dv_tbTyFH&ydQZL3mE#B9-i(NUj%h`-f}i$p8Qs+mCYiZ(+sBsSx_Q z%mEypyp1W=>8!tyD}hJzMIcsytAIDRU}^+J?#6G~G(*rdGMuBalFoBKS1D7jB-HXv zL_h>eK$4QCT0yxt8IOJFMZk~=;Y*d4tX0FVR<^&n$$0Ex5+M4v)DvN$ZH6}-zqB~2 zxOCnbPx1VwE)#f~&V8_CpG=nWc-80o@`vBaDa7Fmd1wBP-=zo6^7)SVlRxm4^hY6V3Xae@%nLfmLB z$KGZm8@IyS74wuh%Whww!+xc+m)}`m)B{(0g3PVGe*$zBy-LNfkO}rJhF5|>=_r3q zuX90$dtEs-;tD1k^1&5+<${7KAGlFz|LQtVUyz3Hz4t-vVlef3XV737h0uXd5q=0v zS4X=M?|}*wZ9fLNv=Bfwdq#6ZYr=59q-o1bAL6?{9pr3f5=c^ZPsAcopO-rUHtK&pCzWY0fi+Z>qGQvr{hk&Jo)N?RDpI zC-$H0#`fWEZVlxk1m~WezwO4^+w+)q$Bw>Gm(ERFK=!O*5Kuog=({qDwXL!dbjdVr z=|%u}9@j|lHF)#tY!*i^x-oPw;A`?j4LhXeoFDVAOB&%t#bXztP$!*(-Dqs>#NYVC zeP!Hb!+h|BhwEQCl|X(| z=E6tP&x!6!@K1wmuQ%6d2bxL%GiYba&10s>|0QWTjO_d6}~=&W)r;@%&}kba`{H8E)rv z0_al&x#_Sg;5|ysM%D(jIET+(maf~yERKk;MSF7O#-qp9s7rt>fL4Xx0VKPJo@eha z!w@bCc=B`~fJI%ps6u114sG2`9+2g}Zh2-l0L-m(rhHc;jA!kRN9dA?rw~zg$m%fc zHGt#%)KRHn_T+5?E_b#7f!iAx6&Qk^F&U#AW$0)m@eL9p6FbDLx z$iuu($AZUc_5v`Aymu96y_p)DHoToO?=7J4tZ#2V39LdJgvm&uy5eph z7{eM9fbiNHvYj%h3j~0+8#P?+RzNw_8Om#ia>WPEv0PmkL7N)@c{4tEx)qQ1n|c1V z8=t%9iC$!|ds+)i+|nWiiVF!*&kyUfunk1jyUm8_rhbcesM|aio#={x|IWclA17@h69+ z{gDX7{FivBvIp-=x$+xd&VSE?rpxy}<37Xqd(Jz?T(X#N@_jO%VJw#A%Sh*C#2F^z z^6~t>%3E<-ZRNc@<&Z%B&Uoi>^Cv;T{Ik5!ART7%oJ{9cxIIM8xf|qdMGYSyH@LCp z^P2nxAHriR7#TT_bj77u#zVbcy#oM#g#maOtK+o5sxPeI0HkIe;Gls z)TRwIP)eO&Kv%!nbD{!Qp=y~cxIqHsUjT_*NPtNGkOelo(o;te z^J!6eMz->|&;2bROkgG}z!x+{ei&T9meM7!f`sa7Z?b~hCXyn_@P?hgQx0ihUUMxn zs9YURSx1YH{ z{{tzgJFfN^^P%&0HF%t2VE%J*JQl?H*+rb5BDVpOTU(txIiq{gi?6{Gx6(x#4(X2i)B)hl zg(2X!oD(Qmb=#QJBj+KGXv+&Z57N1wju;F*pes2!;ZgW=; zcmL>*frc3IjaDbyyS;xo1dSANPe$up9j6S*IgD=mg0WOiN1-iHPKU+Ya?DFBc>761sX z1>qO~wg*~8dU@YtO1VWnLud3=twnv)&h5!|F{8bJ>N;2FD@5G}Od&|?!keb;iRU(J z%ITXT0d(*ae^W;i$lC~WITZlt75*a8 zqU1rPWX^8c84s?p?ryd4u-LAbYB2@;&A2YCv|^>XMM1HsJA2XEd=#CX$5HF-#&UDB zoW`&U7(=k!ECBeT4)B9f7g`h$%Yf(0s|dcDJ$@}1uTFkfDTk|y$p?+}md1HAx`g*p zdNd@hvKth-`${?C(n;Od#1m`VvC?`9-QW1G3 zU&=fx>Nd8vos_H)D=T>>AbGbOF&|n+DtuS$S$huiIuz+)=vn}FKg&E;jEtJrh*br1 z=Ra-*0DfCG*!F#KW&cJ6>->q|z&vHBP*;VVU%lY%MJk`j5;TapFTYB;45t8h(zA?f zkB`?>{zNaxSMgUXK;?^^EUf1~!*fXCD_2=Da9P3ie<8X2z@Dbr?# zH8RL6k370956bqQ@Fgxm0Bmo!D}|88^}53l044%yg}NiXR$Ka=?NXTOOrKK}xNbQzZz=ri*5 z!3XchAN|cgLRoFZS6_XNV*M&E&(F!jH1>AaV{5ZcS~H4a&ptv^0ga%9n`zJ1D>Sxe z8-88^_zG}x`Yv*bratclGz`4UZ$W^+lm8u>^*3Rxd$E)>D}b(CQ@(k%uIJB_bp#Ql zul1hHgHPU(7vb0H#1+3^cFP4U_bmYJ!PA4-Kine&5oajom#^N&tJiPh;>D8V=@3NTvIn^*Kzu~ zA43Jd9RdV#g1bY&(pC=0xx(bT&wCevy!WH`;z$3|?~`65{{BDsujBvrAN|Miv%mZ` zihUcUjZ%|0DAyHfw%pQ+tPf)fE!0Y81c^V+|2!GoG zJnTfL&w!^;`}=S z;M>>kwzW+h4be~+E#b|H>ZQUhdmJ539xqSNgFi%UeoMS+` zb5fntsI0f`T*F7V*K2Wp0nc`AV+->kXAE=XlGADg)43u!7pGF6=p#fwc!6v#)1GLc zYYi8e*3+mRj|Am_;w##Y^3Jl;mXt%OSE$=8n-#^=9EB3cSZtmt!wEv!(IkKG->Lse znPe|mQqp>Fq+Tfq1%f;zghx8t&6wOl7$eH1$1tAfTITUYn*B}|Uk3PKDSAwjJ$v@f zEv^F2K=n01U9GW!wTlJa-U0aG0e~x5jf;T2MQ3HZ|C)eou}*>P>9d#5E?q37g*9Y> zlSVg5#^Zn5T$|+Ah6^g!)3~i%6-4$7&_HfzL{mVZ7M2sCmoV`ilDbuh+WWZJh}+r@ zO8;>z)wU_7ja|;5v7f(=$@$wrV&pLJwHtIgK~bVY4!37;4&bWWz}ST@17g7=EAw7* zJ2Y-|iM}O2l`b%JHJ^fAUbJDBAs#0J@Z1U{Jb&fiQgH$WE0Q1ClV|ig?{U?za0LMU zwm9Ec_eO8*IR5yFZ}L;(v6{0-N9CD-pEOee!wm`ctnca>JmT*Jd~?rt9uJfh@ArTmhIcYrSWiBGLYFM5v__4DU3r&Qxy@J$JOuKR0f5+u@ z1eWy5i11ff{#Oeqq$?Wa6lD=PL}24yq`ouzNy+v78 z0k@-bXg-Es$_eFy!@&SiK%F4Y$;!^Fbg#>$>;;sz(0=}Yk#`OcyCJ&QrR?1i7*^r+ z0^7nH8Mn{V7m!%w5;Y4=Wo?0r^sTmwGR_W4}=nZ@E z;_b^gIzEo0ldGK0VO(ujg-S!`hq`SO!1rc(oZGY900Nz(w?bSC>&UWo0ATV4^=8{d z@n3aOjFSn{sgBV&jpLUn&I|I4GPe3%bYSmu9{x@p%Inr8Iy|stqrC?}03`HKM&s*+ z`1pH2j{n8~{C^pL>tFt#QP2ed`t!K#^#FR!hU57>Kq8k$ z4w(zul?u-PD?`BcWZ2|Y{zb++W%KRA1Ld%EaLCm8dLCKl7G?qq z7uBdoY|A$R<>Ie4)9JvJwJm5y>P6@jt zp98?7!@fuG(h;Ch!z9-Rz~AnKQaS+?wg4#8_nDduW|PmNeC!k6RaI6WQ4WmkQT3?oxc!>H4)?46b0m2L9(L|p)1duop5aUP*Kt3}tRPD~m3FIAQ@N9v=5m;J$=P5E<0b# z2^dr!g4jv#r3=>XdWgU^Xp}eOvQLupEIhVF(0oe+xrXpE+l=&XmdRV~QLHqckdFI% zA(0)snO?-?>}8D3-^Ai@5I0!HGKo_hR6KG~qrDItTb{dk3lG_aZ!e&gPlcjo1tkI> za!11#&;VEjPmtEhuv%FKA0Vt@1VMohe7=G(Qb5`Rfcu5@s}w=#8k zMjhn~84o&CzvlNUj*=+v=U25u_M(tCkElvTsxVeDQ`g0-q~!rv2pShZe@@s6?D;J1 z1>X^mj9!7j0v4-q)Ke;bd5~)g|I%n>RuyDIVG9NT$i~7oS#;jRWd2?8Y1xEJZc(B_ zSposbudYCIC;9BvKu-E?8{pU3r0xK0%UG@M|2K7IKz*YO|Kb-K@FRwd0xS^pF*uFs zhyEI^=#SlB4Xd)f9yi^~IC}jqe*Lr0 zZa2;`d{nNVnR zfq3@bX+SNfhu#1`R|zk2Z?C%am3M5G)~)FvmpLjBc!y|PNN(V5ty|C4L)g9*VnS%=O&_2{P@I#&+y&|XTnh`NSWgWC~&SBuupc6|Dy z--!=D`XNeZDSq~szl_g6`!e3XJ&yBSAxk*gM;;>wL#fyuPW4P*R~Fj-NAUa*@20r& zS5D!9nH+IN|3?EFb||w4(K`*s9zrW_IEgq%$+#7fc8?R)9j@MjM!W0q)er+3Bl_{- zLj355kHgKv?e&^CG=jRolDm zJ`D}-y=ut80ZA{TP{vntz74vKj#=aBC!pS zbclH{xP&g#g+MBUU>YknYdtP^`n##$oT>SUoleg{d>3nZw0SrLnE+?P=E8OR9Xb z$4xNjdB5_cJ*ytE=_cwfE>YhJ{M2Li?2ZMY8s5}Qw>LyqE(3JL1g$u^=*JP>#ZVW6 zYe3)_Lurbvsppn(PBpWzWonwn4P~|H(80FG9sDBiAeVSy8QiZ>t&-<}mq4`5+gKrE zErfRm3%;=gBA~2GHhw$*3r^#gRyFJ?&O1H%8$ecPYH?6jJ zfqc0A)?~aCr)L5{9+_p*vaU3&oUV}z!pM6XvgAdhU;S@cU|T>Sag$aZnyl5uBz9y> z(onOv(_vgTe!0cBfII-5 z*9DIbT0|4Y8bnx$$qg0|Z_= zsI0-zDd4CW%c4k3vRhf?)pt5Kmb4Kk;d!Uf%*6fc5C7+N{!AUi{kJ_231|?1YcZJ* zuPL0#XU>(7F}e4*?Id{&rnSr2y!lWtm_)9wW{Yr+HRP2rdE}LG$R~tJ@R#oe2?glM zcK=_d{_986Y}wPpB0ulbyUMa%ZFcW{%$zwx4h0er1wrOQ03|>d0tDzv1O!5WI2=h7 zBx1NB=#GDc09^{u1wn!WND4!dGb5hioH^U{Zd+Zx(wonl%=|L-Jn>fTVOGEWx!0@} zE6guq#fs&a=oJa>jQZL4Tc<_&m-$lpJfFpppJ}tt<4CskcX<|is=NiwhRLrnV&->g zh{hAAEcN)Cv9*Vi-D&`WS{Prnw^N#i#Ng3rti_#WU{FNS)Pdo5iHkSCGP;b#)rVMK zjiL-|+|R8sc$dlY*C+u2V5_ynIM6>qBN8udGwjZ@y$$*pV8^R`z;O895tID(BgdUX zWtszJKlv?<9^WO%rO!?!u3%v%C|7q{I61$J_wPQ0o6|2)oZtQSn|Sf z!;vc_Fka~#2=p9>GBU^^Kri#^>fjWB9HZj()8Xd+sbX{nY{U{{FlBu28~3sQ{BaySdlFZ} zdHlow;vdKVeHU-+Vh@AfRWN+icB^95Te_v%2DR3nydK$QhQ*5=UQu zxf#Fw#e-PuRbvWRF;ZPaPnTDms>TjL7Yp?o*(sC^hhyZ!XtO}W6}CE!c|r;Z?L&^$ z3o0-RT^s!~66lPE5pcIW^L(9b4e`b0DaQ3OfwfVwv8z~l%Tm zfEobSovbBzem-LCH*=3!?U=h?Tn+j>vj%_D_Q?p4GLQAG4h{w52*@(>CxW)bNwv{V zL%%TPX9eJ7z7~8rzXlAOVsbr;ot^dQ^;)!lLHBRcQDNYbIe=!Dv4sD|V~b?Fm7ROZ ztN)f6^=kqe-O)uSXKQmU7q3Yc<*Zic9@onRVU}T$gaRyQpUg8=cd9p~n-M+lGn&i+ ziwywZM&8GESU6tC+eH~h<;GL^3OOxmBenn+p)Ky@ z;dJ|xy{&lucr%*io7~&`{Om)_M@P`Z+NeFiGO{|=Nxo%#x3m7EQ`mhRvrH#~ccf{8 zVf2Ckuz%?y5F14w@}JRvj{=~o-_`ljQ%A^@pdw;#Ih@E+N>;LHx6o%T94z{9HNp`@ zci#X6Q*qi$0A$i3d7O z7{MIO;p$GlD_6T5mT@uC$Ms(G@mwq9yTgOiXxd4BOyFXeSz!=t3B&||R&ST78Ix3+ zhD5z&W(K_x#pZU@I}f7OJ;3YV#xMc`w1RiQZ)?8XoW^4KA-998!2I`P(D#%(iO@2XG)!+VFf z3j;*8yA|cmPOP{B96_sXY{k9GO2@`F-Qv|v1~Eq=++6jeih?UKmgwQI{6ye6y5JmL zielk6`k6yTn?L0yG6*^Bd2pS#&F=cEzvTzVznB&&Myu#&PJ2TKJw`!}xgmaUvj4@! zAU?c3iKBNH(LX+o)3=9l@%}i5Cs!$rCWC*P(znX9iN!nnPKoY2>ygnAIZ!ZE$B-7D zx%ijwOM*WQ=Fw#>9dyT?a!3k*YK8*JM<7jL@iu&p<7jJVDcb!mY zqURR0m;0inV>uj0?FJ)oTZ_wgqquwz7!Ux;9+1aKV}r3UB$zevqyaz7VFp)iAAG(a zU;g>mv4T_b`|o~^fB66XCo#C1$K!*?7+@F}Ju9;ehQl;ou9lQ%ta<0SG+VWd2nnhz zc<&;RF#ymaxVdVYerZ;W0QN9s9S+AVWuEc5rkxWE^#HJ-j*`Euch=(A78G#K1l|`A z{>d-5;_>4(&KqV8z9ON%N_%hP@bEHswzzWomu?n|hfL`}Cu(bWtl)&((;eECUV-vo z@P*^A-s2181lkB_Qcrv|a_Bc=%2S)q>!t}@O*W9|T z*XyLQ_PTbfQ^*96L*X2bU2&@n19oP#{eBU>^>$oi3)~age`#;=^qX9JHS7a&k$YsL z4WM%tVlhWv06I?P?(A;hWE9c7`Slq7Y~|XBO#3-=u(iE|+&Zfgb9^E{L>W zg2W=-0ML=T-XX(*5Itcn&F{?jC`Kcv?amss>n4a9ju&y>pU35J7X9gUSnGFa@oNC4 zGj$s9lFlBy^U1EzgyKEVG^)-|JQ5z~O`gJM9iFUl%ll9JfTum>eVuV^27n^7x z)$}VP=$!8uYh<*q33j#h^jYj90SoEjx&QvZz5eS0`0)h~<1!kTWaD#^l2gxeJ&vPHi)WsB?wGX3#$3&7#U)hd1PP>o$b_s8nJLN1#v2P z8Mg3@@qke7PS+Gu-89xQ%fa>hg3&*HSG?v6Ps}0x7Y7U{lcj;pdtzYekA@&YC_IrE zQQq)e8?WK^Vy?+2CEsxGf?edp>|=gbKy!!`HlFS)?KK*f=Y9l!`5qz_g=n=p-V1|n zd$_;P&wNuA2>%3s(xHYyF?Xj4_^Vc|<8`0;E`v*VZqRe}nhfH_+Ez1He74r$DU{r8 z1@FvAmC-*zW4)K-Ujh78SGS_Ev152BmhhFO1XLnf*KazGmBG2v7-e`tX;28wg*6CX zYZ_&P=KwT{iw=oZ+zaoE)+>J;bjKl2-tf;cN}1)iVrrgOt||6S<@cm5_emb-nf#`5 z&)h-&-7IiOCY+=GhwrY3*HP!fdsw*JtYzs4+v3LQCBS13ul3pU&v95f@#5vXc=@8A zkxW-1Zf$p?+8E|Eac}KDb0l5m-g4y|;3yY-H0+#tQE<4%J%JrV`VrXW81dfmPcY}< zXU|7oKjrt?p1hVLQvvc`D0&V7UbZ*;4W;EF@eh61q0`9{V5)GNj8zBl*S07v&k!)U z5a4ofg@HpJp?#|f;OW(3ebrUHtMtMC_)O?azszO6qi?qug*z2{Z#z1>Ph<7r7l6N~ zs4>7_W1SAc7dW7dc2v+wWgOR7(ouIb7+_3YX*piT#p?lJ9DTt@r+~S2^tyG}%Kjt! zw2`lqUiNFrvGrg*HXrWhf{@e8LHyaD|K0c>{}29W@yoCOBIdKZc=6&@90Bk(I_8Ax z3}_UL0Qx6zaK{Q|C%4W50GiJy52@#6L$$m${Z?C*a0PIV5A@byvuunY!n6i?Qu+5> zcmLP`G~57+X2VIQIsC0Ze;5xRbOA~iadCPcH#l9`&;)>ICli3oA_1kvuj|ODcEWom zNMr043!lLl()mwq^T=r{1fg6qml6JlP6dE;m82z303YhXyiNzCaPB7)YiCYkdwVyY zJ^M1QuBP$V|LnK9;K}kz>WbFKMGDH<4ZuC~&H#`1B|r_%%o07VT{G|P8sLT5Lw=Dl z4#Bm&n*fIaG%?@Wb{0T}5s-cJ=a3B@Gqi^M>!JutqzF(K*VBxgcL0jo18vdjYByTQ zCfvZY&CQ)bbF3)WZmh58y*zgYsB|oBm*XV;+~?b=!tr>Ve7w1dLjzwK?Nd)09XC2C z0CeG7uh-4?50Q%-oXafb!lC^!|4|<3c6(e2(40(iY_zLR<@zU23Gm!T)ma1go!;P? z+6@=`e99xGv$VSg9i1XILg=C~=T6}~?&Bsg)J@&TR@#U9~V{gy&F6ek;ox~A(*PKQ{phe63d^b&=Y|%IE z-wYZV3A_c^Ue5)9=3>&kkNlsG7=4g$1%NiIu;m{EMCxuO)tLo@Txbf^eU7y&(rJFw zj5MgfQt>L)@CElR0zMiI@CNt%G^1v&yqKYoHSUW{l>hy|zxC^EF&BTd+Qs{9k?)I> zbMc426^MY(f(IMsAOPI5sHbRH0$7H{X<&>hAkZn^GKa4@-OG6aNW8;aL|pQEHDC$w zR{``@oKjvfcT2(HchAYs<^lSQ7SG@_6f9OPb2%+B@8XjXEdgN}f%(V~=0WJG+$tRO ztql09_4e@i_aWpyf-d9NFu2aYFA#DJ{mKNzJ%kx9V{-l>CTFK{H=0KYg;4hJU9~au&m*%NV!<_yT@lK&$YG zv*zv^&;kI;=eIg`c17L+W!*6@rB*rGIx6d{v9WuAv5okz{)>MW|H*&!pU3y#zs^YS z9D^!=RWzj8?cH?(UjJNtunJ!bmdxRE3fKssQ^4w-tZ@eaG@x&fXIa=-nHH=hdyg?_ zIJn@(q_Y5k;msU1i$;&FdJd|4u+xrT{c0~BU>GNp3qaohK4zS5Fp6X3aiS9gjkw<3 zN*oBmR?dt#p7h-ar51^8_&RjfwMD7sEI^KaW-Gc6K!8fFAU4 z1<;j+kfD()+b7cjua#I^>%qen=&E5g&7hf4c&CPy0UZ|sm0PI^V8;M0nw8U+6u6?1z}bGb4%Kr`_&k6wExcDbH}4GG`7MwTwssP-ipjGWYi|U}WS}-F1FB&M5H+*>PtJ zMmeVNw)wkR%$aAnwxGoL-hPUh!y5(O5qF>~`7Xg7W12t*_W5*V3X=+z6Rik=CQ5x- z%%Eve_(%In(67n3_FO^Vz*(s*a;5vqasYU{qK~E6-R{NauFl^wt_GKJ4QLjCTaVMN z-<TFf=xd2cFagU53 zL-yGf)jC$w>v8&=DcAJLn?Md9P#k{Zel#KbFZj!-pnsfO0Cni`>wjnc*9EyCrb1_H z{G*Y%Vnre3y8?8en6>=*oe%P%o+mgnEQ#ldQ7%>2XlyZM8%F#}AHkmsEdqwUb*kZG z0wV-*3b`Wq%Ur?+=K(137A*vM$7l=w1cGHirIEq13WM+U{IWEK5x;AYJHmAXVFCbG zUU9iMK<;LON8}-Ms&F+Jo6+taM78q-#k-4o+O5JD!@#BhMp>|94|@B zSpr1|%>hjhS9(i(1Vf-e_@D(#Q=D_F#5aAEONzRyFHlVHa7$e5}K?!l}7 zl2BgfbGa9dN~0!!`MHSlx^cFAV(t(|<<0`ION46@7ncLPBY8MbawyLAM(zmEU`#3i zmU}?oT@@w5`;x2rP+a9M;IFsMu^SDXfy(MZlsZoPqQH5M8~#f(S`am(x3h8FU!277 z!@C%toEd z`$A!=Xa!AKX6fU7yjEZ&9~H%=kt`6HrDyJNa+)Y^H*>E#eGR=V!*Gw{o;y{B)AHpn zzl^=d4>2sG`0Ky^CeBXgIeq=;;e+^>|L&i~<0o4fp9=g<8_FiNTQkrcrXq29fiWv0 z$RGJf9b~)cOY$Cn3G8UIxq3-Q&KD^1AFqxT_eOppNRGXIla2+S(pULL-rzO;TTk=g zvog{Y_#uDtpWB|fxqcsjKBNCeX-sf8Uv6!!6J1`dte<&HTz`YC2pmfoaqEUHRj{44 z=xjfV^+&&m)q}61w*7gO&=XPHgvQYDR^#C+^9FrEZ$bB!5z7DU3Z6KQ(^oI!;_Z8Y z;1v$zEEj*EeiEG57zfBidw6e}2%t^noe>>m{)T@>raN0}vGwRdba(gY%QXI@|M)+T zfAnAe79(o8kB9-^nP=VUbh!>4MPC^5jFL&J4uGK7YbEWc(7_#GCKzBNUh+yt9=HY; zh*dz5yHpe)-0jj0)<%GuF8G5dJs#`{Z#uo;~fx`l{tpE@C>K zM60m||1|+(w{d>z3=BI%Ch?zB!Rix4BXz0MX0C$%@)y6%KL7PU|0aHV;q+w0=4Lhi@-P1q03*Gn*L}Qu za~v0E)A;P!g9L5;{<%-Wc$c_-6mIk73iAGyKD#SX;-|@^6^=i`D1=Ahmbe3SU<{J^Ip)tII3&<&O=LAC5Y4|>d6wav%q+?%gcE3U_G8c z-i}B6o#IxlLwGF1p@M=3OzdzgK*}F;@>Xb9 zy@{c3JjPmM?5n)4tRrwd571aynE?96QJUkn56|KjBY%5*7K7J^F?@F#%h8PAVIt@F zX+j0ht<^;!RvXd8tH0Cu!+?5_CaOE#<KX}Bj9o+M;kR91|A4pjc}oqPAD7h#eK zv?>9tRdxx6d2Z&+&<}6tg(lehPeTe}^3VejP>q2X=RX9mQW zF_(Ru=Hx57&vhK!2Mv|EbrufSaj4ZgjGa>$2mvQK4KyBJqnyVmk{QM;P-L}OUvJ0e zRxfKZR%*1Nf+51ATM@`~F!r5x+~Yalx7MP$W@KkOYQ6o4wTIkbJED$~=UMJVBOS^r zknw==e;uda{XULg{1D^w^W5*X32j_eMi+P%pv0-7G61VWV`S|*ze`&O90It6WsES|PE*?7UdQ6cP3V1# z;x%$UiuvsbBc@{_?^>U*Xct7H%^vCtc}rcwdD6}Up0|#n*CiWiuroi%zQF77OV$k) z40Ddj-f|2aK_7U6eb(9G)tXtBxTy0gh%u#NapQF5EC$n2Oz_5)32U~kZ+3GvrSIFw zX*Cyj@C-m!Zi0(JzCrg0{O;we)!k_CeirS$FQU5s89cJj__!aqi@}_tGZL0P3_Q(< z3Esy0_c8kUMI8V5eH{JxLk!-0h`T<#Hld?44F1^MIUHifQ2pa7y2gi$DL%_@Dk8|MO@zSL4NtH@T&s^taZeV0dW_ znOuD<=&jN3bwGY4CRm&Wz+r~Lu)dv$;k+H!WhZ7 z9OnKR?Sh1vcV;w6kRUMCAx!3Tyz@`}qNAZ5@*c(1l@`*p5BFVFLX4v1t{3pVvn$HX z=FS@Wcq0yvPvXt{Bc2UkGaTDHt$6t8VRYA#eR%xj@GQRn?dx=!4)zbCySEz^?qvy= zy3^w5ZMSrD|8^G-8j)$YjK(?ruX?Hi0DEDwzQV3eaD}(!QrvdVT;wXC#=^eR(x`b0 zxpGzSbg~4L2^gWf{SNmhwr}vaQ>V1|8sP3qPp6c1mfWetS)`LwR}$RD27tVX2+g=x zD*^0iFanH>02lYMwYdS0KwsO35^Bl>PKWXT?9C|Wqm3&y}5g#<3jl9^Q2oj47N{m9)s`D(*BP)=A>2E&CN zC`ykNv_k;??%R3X-J9d*;tmH-!S&vSVawIS+^1{=5$|BdX;ndw=xW84KAdl)jrYJ6 z&gD7?v%=t675xqXxWq8I?B3l_D=?{h{H_50GWw^>OkXVwU2CpK1Lah1VB{<7^q~XM z1z8Z`Zo>5go___09>?P3b&QW*$2rP<{NXT0c=wB|Au^z#XyBYCo<-A|U?$hsF;W3j{Eu7?4-T!01B(rc{W$NN(EaAKj8S@-^%D0Rm0HMdm-9;xOcg96zr0 zG#TVmG)b>8BXBa!r+f1(2R;pRz6$6N9F&b`CVTOu}!%`dG z$L4*iYz;mMa#T6e7tSaK_>T~~2Fic0r! zR9bsc>g=MSHS{WI=%Ru^ax1s9xV=1$!Mhi6^uzDt{kOl3^S5teIUPp}`n6Cvmh#92 z2#mceIrZ+d|0r~mwF~2>3ZskAKBqJtBM-*_-teU;HBex4) z*X}|EBR8Dyw3{Vqr16q5x#5{hj0&!N7WiIitVXT93m`s-_V%-AZ$6L8Do#OT2b;Od zb4*jAEy$q}Na^5`-uda97`%EBC*S-59q}qI-oB0bMIXlzLx7>HE-?ZNKsmb1#Yol# zv%k6R)xt;$R^cOkl;a!5!Rg>y8(zkkPwAgE&o;OB<1hZ=??$W9i+68N;^oWt0QS?k zxSG>9qd4k1_zc6E7#XAEt}p8wINpGO8Afe})tzFHZ;=-bW-1iH3^HO~pS&md7Ntx9 zl7o?p9pqNVmo^IkdyP))t*=KF@G_sA#U3j3mtSwkdKX9jdWw^c_FWXYPDVLgv@*r8 zrz|D2dbfhHrGZ7!{VO8J>Lot#EcKqJCdlT^En^ETNV(DIxm!cZka8s`6sW)-8ZyNL z0CPZ$zdTRhL8bhC_x+3ba5%*<>lgw6H`n5eXMk9AMgQzHj@}&RE-h6Qj-_+f6Xdw6 zmggYD+7ug+={W!>7npTcH?u!;c+XYBjdn8~_K~Z2Ip3*VbGKb3>x$}L*8<1DDRM-g=&~tFM&CM}UZMN7O~{VBb2wG&eVttrKsX)jbgsFAgZ@S8 z9T&6+RHT(P|14~*gFFM2=@>K{&Y($AoI22mIz-TFn_R`(Y}Qj|1m^-l7cjWmTmabZ zwHd2>_`}6v)!5qEiEGBd=x1UB##%t)bgz1+=GJYcDm;a4R(Dq$aXy&D`?C?>0ftuS z10c}t2K!^cr4e303ms0qAmHn*t>sj!)1&Sk+(d43zh3UCPH^i$OV21r>O7rbEpOsI z#MK!pBrKzTo~QM>;ac<$v$*Z4^0xo|(;oQF-qpRZ<#m6)a-NQN`E^{)~26z6DKCve4!xw?Ob# z*11Ok{_gJ0D**hV5O1BVHi|`~YHs8ghSgHZ1CF0_rrD*B0d*;1QS{4-rds6#YgtIvD)U9tL^~;A6W5lS|<2 zfHs)ZauhLs7q=I$0DC{g<(nU)|L$ch`9$@~2!CKtLXl*S3*YHMXU;<^7;nPOz21xbPo@mB!E z|JHlj<5KiwF@N$PgU8Rgc4xUH?j=0^7bN*y8w9QN+)c4~{Nzde>QDa`p7$*N>%ad0Aq&;` z*Z=$fYUY`}eerX=dHEsE4~H=yp%9@1YBkPLZXezc-{ei(>3a-l@|(ItT5!OKyxKRTogevzHal~$g3Rksn&WCz=dxM zF?uCH)5;BPy#|oY0H~7%UKAZpv|5qALy{l8#)7Crh{+?;PAWLwyn1cfVq#O<72?tJ)nn&E_sC~cW@3C!(n`Q z@gk02y^m`*v!LzQH&;TUq@87kTre@6E)sZSPLa1JznR`t3%ACz&g4qns2XEO``k9s ztG zR;t6tUAY-)$~`X*ECA^f9^I=*vr_uwm6_1@e#6;FGiySb*)KWzgtc@J+p zU98-hLLkU=;X-cvCTfP}(gFhwU2&{X1ebjrAa^{X9WD&D&Ev7{Mh9YV1v*pYA#*yb zb(|FdpFCe_#$Yy&lgmX6C(D>wNPN=>yJd&QfI{_X89m;ionQvqY@J2%!i?*dfHreI z-EK|ZbVnB_TAJ8mdBcUB@`(UiM<*kK*cCxyIu-zC^@-aWrlZVF{O*Rf_L?j4%U?W; zzx5}d$CHB%#uc7e(9gw?a{$k@OUGa`o5lqIa5zMAk!7c3E#cNOr&!s#)e*Xn@sK|D zr!gMDM>yb%sR64T^3?g3K5{%VryBN@XFSp_D*^C=0MNYclvnzflEHUI)X_|7*L6&g z9xuTW17tE5MvYxKrQ;&#RjxQSK3|<${=fYF?O!M2<}jBDJ>se1qIjcy z`d}`OxKHDZ*HY0qI~BLa;T9 zyBgQ31Vu|2VxHssCBIhy0lC330&Ye1dzaIpfJ!SIWjsvYuaxH8Zw?Z6%b+1%2nHPH zE7w<}+S-mX-h2rokIJK6^wF><;GncJ!`PqW(H{cz-p1(Yrx?8ZF{k>j&yHh7PwE;^ zPe$Y#lR^cc_AIBNK!RlqV^omJGE_quT3FhdYG<>3bs9FyS8!M$*FknL0O<&aY^;G) z5DP|t{Q2r1B;$M(Ait$ygnlvuL^f-Art-}$9L!uMPy zF3X%hnNJkLx%rAx&fE&mclAw_9oSjWRr*0$?k^-ie{LopTvLo)1TIF&bz( zi0Gfh?T1&<7TTG>+MRk7#Ado>xzo-Mgl4r52H+O<0HT` zcSwNbG_d&_c0WCS`NYVpxvS92F-MPb2naogpJO?h^Pp_ks` z2jBz&UR<0o7L;Buv#9qyz(J7L!(l5!k5e4`^CR_s#QwIcUXej`N3B63r*;w3rup%0Z2yM1ZuYcvFrOAi5Zs9;^ z(=0Z<5o4ZV;cH7exhMoS1I!q$(pvCu2@uj@WejdXCW1kuf0mUo*U&s`0i;nzXBp;z zBtdGcv+nR@E?{=*z7|)e;9MH*MR&9S*iP}{M9k$$M(kq1@6bl)#wg$nJv&?gQt7j4 zFfQ=8=B6XSi&LEL-OPnJE&x}?zy&7r=`5z)6Alk|?5GP6XXf|cWH3gZXF+OnLM?YA z9Rx&G^h;GIgzqiZY{YE?eX+XQ!G@P&tz#J^WC0sqzMsZw3toS=8&4l^BXh{av>$`P zMO^jI(wP#tslGC5%X_23rpq}#+Boyk`T8@0=EQzT$t0=@JF#o^DZ4A z$L5a*W9fJ*6P}~3m%j@qxR8;=QZSF>Ae{`P)dkx;L6B^Ippjx%!^^VK zjFG+{(h+MH?zk^toG4%H>22kyR(Q;wO4X)qfIPNZf zi0kv8Vtn{A<{0|h^OGnK22oqUh*-@E%JUv(y+b)F*UsC!^xZrSqkdo&z#ao)T`vr{ zfec@>_$^A#{HDZKjDSYXK}h6JS4#-KZ(RLoXk7q+-e*uahuipm%QUbzkoccLF~c{WFI#b2c4ME}(~bAMdYPU*77)@Ezw>(89SRiol<1_1Y#F z+3N|wp2O)3>z=v7absgMdMG++=PeUQNKcHJb^BI2Yf)LlsINZGe6GgkFQT#jMO0c( zIeC}yv^0YKL1C;Q5SIHH9L4zccX9Re?_==x`7P!S*>ItBmj-80P3F^Z+K$l7|2 z1pg(;JyZhFJEOC-K?tkDkVgf6kcsx-#dq+!$CEfbK8lU)&G_&B_x{y*gfahc_%>bx z{!Whv02Vs6tblz{(s<_gPXECBz10ZFj8To)*>P*B^?8uZ!|vSxY=qhtm0!UammA9W zdNjL$ziuxqRx4mBE)z`AA82W0`5MA503i$X*By>vwf8u>Tc1aF^UG*#e9kyI^^YFY z5wNjpT=U5QJ2AhA@zIOuzxjQf{P>#~zWyPW7iUoi0MuqTQ2|t~%mAd5+n5cfF*={b z;1uNxW@Kn#MGW&c26(lFPQochHkC(Z$sLmlUcscH-!y1WtKIP4X_?`C8gCDe0COF{ z)?dWm{X72}M!6F|{q!!UfHkO&MA_K~#{U`}RqQUb%t(_v66ySB^oF)rjlgMOImrl0 z73V|XVx2nMMuPwi*KvM^#`O{kb`CpP#)?n`B_fkXAl2J-+VFmGYj_0 zKb)gJE|TWC7+z7<+~J}GxHd7~ZQmM#SZRdb*z8o|@gBfw4p6%oXAQ(nhP~Tbfsgpm z~WGXGar^{@?}>WnDXS z;d%DQF}0k^;-;vhrwz=qHrB7D{h1RgXcbV=Q;U4N2;=5%7R`3Ca#$E;L3s%yfb(5a8_j7dX~_@c3A30*}1~m6WF_Q*@XgQfT-ILI$L2xcnm=7c3TOUi(MiF z3pfh2#VC?xU2?@SwoX84-l^M~S=e}DF=zmGt-1<8n#bv>i%0J1`v$xuJ#Yk&iEGCn z-G4P+M1MAqDo%T;){4=55{OWYd9Bs~*yt*2B+g-1^`oOMxRoXXK3D3RYn_Y*FEy)1 zSHUOOrhd^|c)@mY#{di=%2kq zBh7KNnz6lMBvQaWh<<;;xD`8p2(&T}pZhP2^wW_UI$((7cX2j~t8*PLT5jJBjLPoX z3wR<+X6aa}_xT|svcBiYC?Gs%npn;VVFOeoo}wd=azp==3&lvmDQhSB8WfTI=4_dA zt9ac21ZRwK7L1pysMgFq=iWX$Wlekg5B}XpzqY24N14GZRb07axZ5Opmz1yay3S`0 z^ZbyKFfu22b7hW7%tLu~I21}j1)!1DM82Gzel}nx9jKFBUQSdZ|?j|4+ z1&MlZ@W5dOzMWtKM!Yv>Zw;d>grW~K&N6pE-l&#a2$TZ5jp5zqma7;Yg+Y%V&lsay zDK7wj2=V2cm>m5Wqr>k|@~>lda^&*5s88{-AY3?QGDT2fQWqlNh=`dnZuFME=*3rC zmAI>6Z~%W!8#vXZ0n7y${$sEdctgHueMiiZG#qK1FTv8Y4xVmgCHy zdM<5~3Q@j*nKUHH9GsQ;lQM_w$+HB1dA%3?1*zZI`AG_U^oYP%T(1lLRW zjpwA|X))pm zYMIaO5o!cwJ{sde;lwk#JhZk}7@|!q)`TLk0zlyujMU+%dFjf_w zUI7qY8(v4y-KSCB%;|Nym3e!PC!fs=s-m>zcZh&7*XSu|&>C9lao^(@sN^6PbVgBq zbQX*X3JMDVS59Fyu{@n7X{?gq5=p4+a_iKGel8+A1^9%mlAi<@CWv2QwEXhX!$+~T zvlW*Y7xDV#tE`PS8RFfKxzP<^2}LGQP*&F0OYzHJJ3x4LvTv!{Jd{eYuJ!3RD^HB4%0Fd9Hp|IBJHCHSvbFNBNiPZ44 z-3Y$X-UMu8>=@^IQ!idnApdE=%omi#T*q@=@^Axh-BmZE(tQ|B0AH7*=~Qp)0SIM- z_QNxu_|jcYmgC&#`Qk0S@Zz^|i8C<%@DfMyG+G#2G+{J2?Pj=$$;BKVy^ayy{`e9) z8uj8nTWgIt*fV*2H}|Pk*;UM@NT&=vgJE+wkYZuPN?43{GP}jG>BJr&eRX3i ze)%VV8oRp(@#^Of@t^$1|5^N#|N3t*ob(r2$wegapWy1odY6i=2Cpt~QGYuvYdn$B z0w7LDRy9DD006lg62CWE7}AEjq(ofxCx95v=Ylps#90p0Ar5xd!R8Um6SI}D$?BWuS>0dLAUsWNivN!=q4rw;Os17J&i z<^S-MfF#pb;9b>C>M|}WuJK&|loiGgzPmH%z_?q&OP**o%FzQ1cQNwY8_n3+a;j5c z1t8o8T&)6x?r|zNV3;+)ce@lfEsS~%8f~n_gC~z;XLlDFM2A818^&+c@6)bjY_FRy zY}5`q@_ct0na`K#sAlxK{HFfoX>E8^8Jq*?owDx&4xQdqmrntz0>~`QWX=_RZg&LD zML89xjWfjp`Is+m0i4CcAL|$zHB?6k+y(&d>zhezZf;>01#gS!;21eY=~i|=!wm(@ zFVx1=s_wQ`ln8QVush`#U=U!sz|JiVVRgDtiHDCL(!M5OauSy~h&s(ibzR9k9L=NC z+2TGcae*UX4ZkwHRBLoIhxEKZ#4a|l#jWUb?<;(&X0HX{?&Zq#F}&oWaCcAXx~hor zb}^T9b=)nlasv>xY>&0|+&OE`HR|nNyMs*tG(uNbWIJEk>vp-$ec25bnGVp)#SzL@ z4-miVGjQ(40ChKN=r(YIVhWFxvf%SCK7W+8Ee98e*qsZWvqTSe92V$oG!ngJG#Q;_ zeaZ$7*?bDWUE}x+XK``jz2(z_i^1{yVVybOf7(3nWe#-)ZD_T+DjUn;d-Z3b|8@M$ zJFVtI&5RnV*WqjbQWm&}i#~GG1paiSU1XS1J?LQig*)XK#Z?bD#jo9RTDa!JIQJI) zUH%9E$Ae!RzF#p?!{C<9zbe6~B@Hd04**!MY|sE#PqkrI2SbnVqtGJ#ifDok1s;N@ z(0=T2aX6KOf_JBnrNGey(IVQnRPkf%EcdeHWLE@Y2Dly%U^zf(A#`^aTzA4VdA+;h zUha_yT&%8fpEWvVbYcg=*uuc}V4-?WVVfkpazBm=fN^Dh6f6CA5vM=L_}z~&e*aTk zpC83F2JsH`UdFhW=CINbkKP;w-lN-45&%GSjI~}(-M|-!+tPw|!;mNg6U)t^v7`1= zU?($61BG3nBSYtJ43g0gex$$9=Mw;A&;-Ae?9(W z1Qd>uw_@tmQIX|r5(>lt;9SSW?`0v&PZU$gw1aE?J`IS!|F_PwAD<4t%l~p*y(jOr zowk#I_RU;0>o?-BbLz)~F%|@RkL)McWtbbI->l+f?iG4JVY1B{z>16Po*JRWj(g^}B zO_8}Pl3qnnoLF07Z>vJ(H&e87C*F@w?yrK7RV?=NMj&!o>ZG(R)zz zEdXH#=%zVg4*h4(x8s+8x*tzJ>&1gd4S=^iIpcR^5}@>HM;oVbHA;H23501Yjm!Sz z6t_*IqdD!T2aGJ_Lau~<@;Y+Gpa}Zh+&wo!Pog;17`kRV8lCm%tnF~@@_rLK^q@@( zI&eRpW0K0siio3#{u#&viQ}B%ymlW)eeGFvwtg9%^)I8+ehN`Hk(o9Ik`@?2qhE1{ zKA9ZG{PIN%-hUJQ*T0F;o9|+YeyCwYjre)mEdXhFK8xYm1V9C_^1FqewZN|x`@1`F z;Pzvi+t9rkC#Q$GQ^PfgD5onKJBw}4)iW4mqrQ6NndnWo*Ed#U3((P7>jG5T(ZX21 ze*HdPy?mG8@$l#}PR_0Yzc@r2>zUuhpl9BZj+{d5YSVSvB5j=lHd=8#gT5cfHzN#i zhmq@c2O8DgrNY{YqgY_XO)Y3@xEZ`&s~S%a06_q!+3+wny7%$RuQp?IjSd4U+-A|K zWl_E$bDXII06@OVu{R(fYxB zU@iP*p>B<}wg3DR%vgk)PC+lHf{`QM>)=Wk$3*kswqGtLQCGNfSAFjkq;>t&p_Yd6 zH62U(JcU0yZCAXnW_wJtGDToG9_Lh`cF5;iw3>^sl^tZQNDJ85+Rf?e@q}k$PO9}T zBZY&3Ua7zb24+T+o9F{HjnK6^8w|Hm!0VU+e#*$%44N2~wscF)omIGQG&T1S8G{DO z^@L}+s<#O+Q^Cy;o*TYbPgzDr9b%DV>1EW>2(O^pbRWT+j>0sHExR3{yP_0}RmL;> z1fBRSu-0z47-qeEJUB8R1RfvuZwa^2P4>mIrSgXKm z*CXWS8eO=G{oz^2h!K3)5czPM(FP7UzK) zsMAv&k6a0^djEdLb0oC+%UVe97g4a>#ttN z;9X(t2PpQNGk~Cp{s`KNj0tf9C3*v+PbPC1mceH1tYULd*Q;x#={9Uk!na9v^ja*?SD}!E?V_`syDnS+% zg5b(mE~Q5tzULDACu2FVyd)6F9~gKQzGI`pR7rUQhufQ~Og+zk0>gj7ioSYRUVTuW zSG@h>A8qqIoJX&wzXH+Xyh34XSTyb*qbeEolZd|OiC%B}5n!WJPWf3v$lN8X`>UJ; zQv8CzHBky}&MQD)ItVC;dn13mzf~c^H**Hbom?7g@PSdk-m_TgVdPs+IDb2hy~?Zv zzh*1s$LUp!k6*>r>)*xY&;K00_&%1y(`eo=q6L7c%h$By&fPT7f>U!U5d0EtYT&`Q z@e0?rH)3;d3r~vnAW(Ye!=XDLI2B?vN}vy5tHIl}H+h17WGFxBhY$;1e2)Y>#txz5 zTSWWh1&&k*Q1IiuOh$Hk*x@M@O7W*+Qh6I87IYdFGKt#!A;(>SeM_J85<4jWE=qV~ z)x}%p)0ks(6IU02I~uXQQ;UaBy0N)aroYoz-()E0O;;&Fj4~-5(UTnvwaMh}2w`#O{;(gfKfI00!2s{S z2^jw>zWU-<7`@f_@rO6@?r@H-L|5Gc;-H_hF5oDX0|v8R2}>clV@m=+`4|Ug;jRmg zSTYW}0mIhBAXWevZuRBXXo42Yte7}&7;k&E4TxHgS^p3_IgQVrR^#ih4&a#^^y@Ol zIL_0_3_T>+jF|C^%z1L?X_C&9i|0o@%MTqXjq8{d)@f#vmI!*gnt1brD-fGi@0l{4Yu2H4Gx$A zlsCWnEH=J)65CH7$Hs%b*f}_e)q{uVp4C{HF5~jeNxc8*Z46HOa9lm6!+B15ciZN| zmEvmPZW**0n<(g5g;!ntpkWob*%J-15yHtB@Iv2pXx-14F2;!K{aasOhi!D2+ymI6 z(B}8SU#&WZzlDA4q~X52nsLrG0DnCJqR~aCoaX?1Be1K;jI4Hia+uLw>3ni#4Z{k* zZ6N3H1G?F**jycaIT-W24vt1U`N=H+o!N5*>#KJc0LxjJ2YGu}i_`N_d^qO$$gnH$ z&->%(kD$dW4i!9e4miFVUq^%XwpLd;$DGnWpamTRz;i*I3upvWE@aV0IxTHZw>zPD zo~w~{l-!NPF;_>r3V4nCwQ-2dzm&&xaNY3-4T9b)0AM=dt`6pUb02eyHh6IAR(Usz z*x6i-hx?nc*1?9C=BSMu_`4JvJ#7Qv>1GUoZ^Wa6?JR#Z7+z$ZMQxLZbvO-rxzNRE z`sv9q_xBy651a}Xm|D&*XX(%Z#eUTv0Uix8=#jino6`)y--tjufW-`{zaTi;1>{>j z-)L1Bdn;Tt!X1PffI!#^fV|}X+(WSktK5jz(JRG{IM_?Rzj5&qG&a{$nKmMvdVsc? zPIXUTav|=DURnA2MKW^>j?jeP-b1}z&_m{jL(~d*ha|-x7g~2aTqW+E{ zso||PHltkMr-M(p-yYAkM$*TrCEMjL9`my(O+Li!=?^i%tDnC6CKg98@ajKAbv}#^ zgHgIcA>-BD!uT?e#|@oYakG*&7-ORv>(AC>>-lzc@En_4&1i1|VB3{gVn7Q21!5yS zHyAPjnRyg?&nnR*Fh*C!mk~gemm9zPx>Ch3npAJ31mQ0tCdtzDqwvtR^8aFLO~aeR z!1?C~4rmp{)u23H)GM zo?(O!7e4MxQihplUdK6i^>sYT-Ke*pTY+iUL}=0#`toxg4JBt>qk^qu|4SX^gd<=vxfKA|nUpgIOxTT&e~hx=Hfp zg*lDetXTy2GE4`1{B%1WKJLM%BY1F(0djR9G%R8CHNYw>c@kbx8EOD)<`!{Zr{APY zL!b^I%Z>i!8O}{!lP_tcG!Yc2A&mN?{iD{|h}Qa6bT%;DYk=$a8b+Nl#uyt7G|D9M zvP6%JEH9y2a*@e3ZJ48{RvPQk*mw+Jd>Z%gLAmvaYqxj``oS~_31nXK62lAdi}6bw zfZxa2%Rgi)$lc{>R3_7CL$~_%N?c!}6Rs99>ARZOoH}W36r>Sr8*6cJ0BA5`*ICUe zw8Nt#48sZUN6_DCU%(M<^iKosIJpg0vtf>&PJwJ*Y@)A@xBxg>CZ@THQRdj(5yZ6O z?5rQZ`~45O3Rn?tHhYYX&b0alg^qsB@#lXn41ceOp@2`!k+MvQ05KE!`DZj)1DaEk z>&OYTJ3k-92tGD4VEwQTZ7gFT_qW$$y;H_leiNJc*MIu;gV^0{#`ihXbE5CHWQTGey8GJ)RpjhZo40^`ni zFp#Vy#<3Rj=0+tB9;_zt+d^k|JKV4g{a1#uY;m6+HmD09?w}L4d(nNgAA7(0Dz<+0 zt7z|GN7gr@3=lFGHb(HryQ{eT@i5+f^ExiyUPi0Zi?#Mv93Kq;Avj69IG6%LNMfidN0f0IQwDr;PSkmIy4K{;{f&h{d97BJ?s}CU1e}}B>=jOjcv=FpggdH7Fu>T z!Bhd|+&nyKP?SJg0@CIf`FiqI4<2!fSX!SR_fy_G-7b_uwsAbnJ2aQ?`1m?=6}Ptz zu*2#Y07~5*To@Ph_Qv)W{M3vOhk%|Dwwu0? z37+vix_TWxogkZMmpD88+t|X{LQl9Ok5iDAbFsg};V41<`o<;zxkewS3Gj@NSzMY2 zXB1E#-Q3(j-e|*Yj!h`VgZ+Jg5x{JK9_L;zUg<*1HvOG4D6T%%CaG_-EE+V+J+TFz zuAINViXPy4bFCGtZE(WfFlyM@r|`|rRu6t=Y=@VrUj<*+Jon;aoZwF#=_VB`V3-M@ zcX&08ncLM(;8phnHx-7X2)@9ZC}5|Vi;`LBPHbN~KOFYWb{4aOMzOJ_=u?=6whQ23 zU7R=TPu6i#%DJ$}gHdU^*+ezmNvI__q@4o6YE3(#41q%ccglC+EQzl^>S~^={&Ol@ z2xl&;@?QSG{{1HaKoqufCx*RzMVUfBnAswWAm3}eCzvXyB?T)hdd(~EVA zy4qNS@%A9XE}h%uo?9GxVpWu!g*suByD2>zAjF4(Breg*XM%F;iF#7Pg8<#})aXU5vetTc+ME5~E8tWLi4%g|pH6c6(pod0OXe^*< zPLB#cL$ENMM#@!4uFBEi39=jzqd{r))AGaZg66XQr~8ndG0OKj6^vo(wx4-Mp6_Rw z$3FO)ATb*OFBmC?XE3hvP3Ak;0g;RxDGz-5EUMu^ts%T9~kk zu)mGj;SVu*{reakeizqQ@1nXG#AX6Nj15ND93PX%XA4)T!A1~NPj+knAP$~9i;aVW zsIB6eGQMXg$8q%PU0i;+jA`H87{Q$*pnw6q1cE4V7y*7Rq99nUbU9keEdU0!>pR|CMz~NlnaeMxA zOpm^c(-(goqxV0@&G}hW0Z27~Qe}#!8{Ed^Vix1eSzMhhqFx> z{!Sb`eUuR?jijX{t}e&%{@rPuUm!tsob^bO zoMehf>YaPQwcGm{skw{G3%~;g)P#GtimStqtF0PfuN^D5qdcBGY{zGh)}sv;Z@`O= z#o6fv_vINp+i{lnb$}5m^fu4=_~)=0sgN-xgMW^Rxt=tN777F<1G4y0f6^PjNj2i} zNj@}=?QR7S0qENU)a+DacdH#6>+W}L6l8�gz&5q79$5pv_t>);>Fkhky3V*!}W( zY&?D#ZR9!t*E*Xk0@ne?{=<1pem;!jA701t_t=l4e%y?1quX3Z9=dUK1V9=tVq;?; zYu+Wpe3=mA_qtxkcEoY?GokeD|V(~hTht0Sg)@?oB|Nwa%QO-xkOvlkm31cbW3hBV%?_yP>}0q zW-NpoL-gABvA4Yn2&CQh8SKXaW@$sq7J&H{AT9t`cgeR#{gzAYkqhO<(BRzMX@Ok> zN8aiug%eyXppll^0{Irb4qIu{3t&p~{L}Vg2Qm<#{oy=+GjLS_=+)}zctD-HJIWA$ zg@$K(3p`z+FUUfzzCwS?w7;6XBN(jUq$^80MxWBjiYfp%`RWfwN1crl_{mppi(CHn z|MtPJ89h#*k-pmeRPGusqj~0zz>KauT28syh|XF#c@b3}h`B>)!3h4IKv3bOmC=s! z$|~pK#Rnc1VC~Z$zA7M8M3g|TD}ier=M2IL#DC8K3jnWRb`Ug#FN4VH82d)^3C7|n zokMT|f6mVeyh^S@sdgFyf2bJVOxz9=V=^7b{Y|1X*7c`0OR0Q0O*vP z99oPR%neBs=e=BaErMToe=2d;sK6)<)8TjLMIzh^uq{F@j2gr z{7ompd{MV!qjB7tRwO6?i&w$monQ`{-$N^bzux7Y`#_@VCc+)`g>ENh3E< zy}_vf^TiGAT>7lac2rxBFkD~a3H<_)`~}}JXy$bpQBKD~6ElS$u-fAfxyrl$4&e9h zcQHA^5f~mv<9-@l08|MNc0QiQa6HT$m=TPCK8|t+g|)Sb5&kT;9-=g@SA~)sAD_q3 zYYYU(<@-r2hbT^?geiM8ls>7<(hzcJke7lN-(zHqlvz;yHO5$g{AT}f{(PJ{7L|2ODaGV?pa5f2)tBcHV!gzO(W}3TKIJy z=a+Llb$}NJjI?d}IsxIts1Nd?ixnA9gMsGX18^|}{&jmayd>?>PwVQuv%DG_)4~y>dApyMRfcx0?q@pt9H)?}IUuX!ur(4q3q3fE{DDzJ^1EVKLew z&)q=|~27Q*RQXTsu;y^zU03FKg{HMb|UVWQtLY|i*%I!zsmue64X+Vwo zfujK2<=EVA#X5(JT-G+~(e2*Q*Ok}?{H=CPkGMgHVuNbXMAftgID4`m+rRoUcEA1w zjyY5zYt-GRdOp*}3cyUcs$;x$Bp1jf02Jp~uzz_u;#q*K<_h${rlJ(UI=KS%^cawU z{JAZik!8WM)3_Js@<_yk-OpluYa4z&jn{8Ka4h2e2XyRmgdSJ}{NW7HCx((XHRAoz z2;Jx+3)&1Fh7(u+-tcU|c5fBH2Y?0CS#=Qp)gJ)D6qy0``R)p-Vb$0)gA zRJqDv5zkB8Z4=M~+Its{mjBQH=EkoxLcs?cVh>CxTsobDu%kJ-7|KCZqkFl}Evid9 z?V!;8?3g}{D|(%7v6!mBuUtZ*^WL38TwPo&fPhHW;44iK_)7?Q%piV1ft*3;0nde- z8NzZI5Y~AFlN`Xv58%ihzDICD-Wpo-xmK2a`U>#7K8yR|o0y+`7ekEw@XfceIC>d( zR~J#2VNpn!TApJia|B{E3G`kd%Tb}Z8waJ>`@9#sU#!RKBN%g?&f!fiVIGyUM5|!9 zO#oG)>d`r4XpN{c0I;SvmaF;HVK+&5S5m3Kirge=#35jo$Q&{-XD0wOEL`Ns2oCv? z!O|lr5`8`Q<7bV(fFQs2e82ZT#cds1U;W+p@}z_8hn)U$-at^tVCiL5>u|&z;;t*IvGH?Ly z%K|-lLB;7}BaMoSgNzb=G-Qz9zRvVajYgL{7}f{TS$&RY_!W%)8DPhvz4C+}H5bqv z^SVlRlenMaO!VKz^!Ue^VCW}@KgCV|D5}?!sNh&w8sZ*hwV2LhgfbbR^Vguk-ivH1Ay#B+>`1ub%#__AOm|yT5JbkD7rKQhDq-cV4kv@LMTf`@U zApBr0OX+3=R&LDbD>N&>H*&$XS(1k_xBuxVIR4V&*UII6ipdm=hkp; zobH~kCU3h)McMTHrrs`!MJaVbf~8pMb->2M&r#Yd@rQ3;GbVTOm;chgoMj^}07fnx z(JNPJsGwa@Xo(1hBx}YQ^-Q$^-Bo1rpaDApIBqCx*39v8AT0@mZ<2xX)VLwYH+Ry3aihP?+1W zW;2?x<$U8iW<=M*^z5h0+{wL?JV`Vsq+6X;1;r<-M^GO`OK9A!=w|7#3 zVw6|W3mA!~PoDrdR%zFD9G{%ThxZ@iu&`1-` zQ?&idX(IHOwDV70YLsVvb0hX28OdIW*GF&T6zA2PDUJW-_IUp@y7h&mtxE)_S--%`oe!?bLVq!9M+RgkZQzpzq^004$92`50p8Qax4e%)1tTB@YzE?-3 zdQ<0Vq`1!WEYD#y#(mY-)@spPtpoU)0GAdHOFLS8U#;IU-iv6rZ+L~y$h})n-oV56 zj6-c}Et@NtG|Pp$ot{+zCW8_34Aqb!qkrayDpwabB}<{T|2CO*lE)5wtE%>O1X#qZ?^$-H~{Wh?s>gV2OC??89AL}bN{SIIl~#U zpt?D)<_qc|+ym5fIITk&05`Agz}MHak=7<2Y_IYj@CiWMTr0(2{OK3*_z_+KV0Ue` z5??)k7!Mw-#>Of(9R3>&uXqN|G@#jS{IqM@MpNPD0C@L<9t~U#48J0{j*Z}4uxcPm znpk97TGioUL9)T2bcDFSvRMF2->W5k)p+R0EC1+ZWH)sPI$b^DI*LpO;wbQfXX_-1 zp^!zvAo8mIPw?1lM7s-p_`FgEA90QM^3~|N?d0NYQy$!}{O|pns{lZeE6U6R0T;n* zV4M#Z^ofeq!cGxZXptdv3-r1rjuXI^Q@CF-aT8@;ddN8kfQyGHfL%VXVVFQ!J`La( z_kEPsdE6|I@hE=4i+C0D>r?Kc&Iv!j#S8$FI_>;?F99_+00^JQLtv*8esXfw{l zEwnFHHc|Kwq6O${w4Q_iAJI90-yMK~Hqa;qo|lMevD^LMc_ z?c)UC6+&ki55a{8CX-wxH{-LnSwopVe*QdmKl>tqpI=^~^k2Vt7e9UT6Tt5{Zm$?G zfS(bgs(?m%LMQ3tw78*tSTwP-f{r-RH)+hPQ4-SvGBF-XqC^~9fs%417|a14voWwu=$Nw}9Rt=Ee>)^aW4az^|6TvY}U@ADE?}O>m=V`WO2x;YA4Xf+fR?=n zdyG>%CO6XGNkTwSKX+@eZ$=H#mEbyT~t$t-vA1| zIv}ZvyqBWWb>*lD@#xPgbgwJ`#b}kD(GRq04Ss>13+{Q}1t9J}i0v=FjIA%eiu#kM zQG)LTx+@s+T-XRN-W*-U*^e*d0H#1$zr%07iL0Mq#q8uPDgclMGTcz0Agl$ACo`wz z;g9nX015!jI9T%4>BWoV(-d@9d!Cr5P zMZF~eGur50&4Yn?rPbKo+eZ(V0fd*_<0dvX*BPS@zZd)AuC6;p3r|f)(eJxZisx+L z=mFSPghmcY^VI#;ykV-#~s!2B~PDrGM7DfUqiUgQx%E&%TJi{0n#jhhYIQER_v# zO&IH9TegU{I)bG+ZaO7`%hu{eAj1Jym+gu4> z6$m<&jg!;@2)ZSzwG2(S(hk|plskZa*Q zu|}4TFu&=Z*E<)B$gHIvMtY0$w-NMxJd!=+%{qL5J_M@RC1cD**6uq3@Zl*{T`$L zB31^c(S+D7jB6cmc8ftUhu{>i=1fmWPH#qRJZQz<^UZkt^@G@W)QjpSgH^wdTkd}+ zqIRzB-lR`J#+(ai=GEae28WZF!Q3T)4OpH2IU@csIvQ|{Yq{pCr)JdK03Uy6fHUz@ z46Tw@vJ#LCvlbT#uuIGON))*-($IKNz62W_Y<8 z4wUrvT0HsU^PKLjt?x26rRbZ_^Yi<7{o~s>di6erCyS_HWLqfGsw%cvUcQ9~eu&$P zcQ^$f@H;Q!4nuT5p2gi1VWe!)H50b(B`KEn{Xm;hRFaRu;s1D%WjT8LLiufaGw zMJgWGsWV#P)>KAil(hy%s=Er%fX~cZ6v!E6sWJBT%6;r?wqmo_z!nZU#_{~wR($!{ z7PN(KcN0LIQ_ASWi&2bRFp=Qa{uY9u^HUf*^YIF&HXU1NVpPY~@M-X>=3HT@Fnn&I z)@>UhYC?BcyF=HS&Xtj>(9qo4jNYTivG&<#vG(kF zGD50lP}VlSpn!Zn#*|pbeBF#*9&CnJ&qjX<^n;+E6oW! zVCsxxIU3V1S31K7f@A@dW-5awjF0-f0BP6-960rXrJv+)b)@>;Qa0)|BY)n%h=!w^ z!B$xcNvTnV@|muq*9C<9&OJ@*F&_}Mk-9z4=N{gth~V)(^ebwv(k__TX=0h#1*FbM zSQOrpITf6wGJ4u;wK+y#4N4iYEdRUz>*}v%RKt{a-hkJ97>r<5?JVyBGu|(22)^^) zfE<8P8K72eI`wkE0AdVyEn8}#0%(#_D>FdBIVSQ02H{mq7C*;y@dg8N3jP7afxImY z>Gm!T zU}xx06MzTk8#9pS)fgdshu>Ys;g45w@~$6OCxC~`8Qzn-l0bA0S7jNibqZ5l?KEh) zt}^Q-Lur;&h?&gJf#!nA^&p@%Y#<2qPsYht{t33SZkk|%F-Ty+2nxVHMGZ5WAV5^f z>J@P4QGDc?yzj>`&%R5GZVn{x~m%k4%5?mtFiGM`Z3nxQ$*;S~CP z2lMHD6utyp>vV3}9b-1(k4=>HUeqzx6~JFk@p+ES$GzN6$t#yI{e2aB;OUs}cWZ>H zy1_m6quKrv;PO05^=I6B7rJr}XmSUWFIOvs(|>jbdf5LT6M;LuY@AKG`?Ht%}3~vI0Qq?`WjA$T{j{GJi;jQn1ukx^GZS~oKzf_$GVg#jQ{!5>0jZ_##)X0u%h_ZQvT zeh{_Qy_gSI;^&`^0Do^#{`2_NUp$Kk4>#h6pS}%O3vX@hMgQUgXYV$4cQ#^we?65* ze{hjgO~45Hj;vW$12B|3C0x5F=r|_hA`x2WpwaHd#_mCEKYA8*z+W^wj5D&;z*Dcc z=#ik=WMwPun}5UD0J;P&E=Evp)IAoYZ@@!t?YPq1fnPLKfIpnW6%2fqqjCY*;v()x z^y&2bn4=?RM?Xagr|=%*a%-JC>>hOE(c`^X+vw5` ze!n`8x3AyOp8^~*fGJN5E$vY!`q`+jKbeb++&NyzpR!_fSYuF3g(Jf?6fvKRonGh{ zXu{l2m3+(6AQ;bEuI-Qd(Vx;@bh1TyO{lL`t(Dn=zRP&`?kudAyRp3&3;0KM;yMzy zmNVjLw8lDs<_8&BLBL`g-}TR;jt z2LD)(w1soMTvX%q^f&>33sAkf29X%s+gqHCWdr^J)IyIAV9&h5d!FY^h*QK(oW9%q3t?e;VX&O@-CuI-ENaxeMS1VrZY;Mr!MqKr;ke4a6DdA*pq%L%ElQsD) z$+Fg61!x*MUvQsJE{vH>hcN>fw%e`Df6TgwfF}1QcCp$GbTZo4ZMI_OlrdntgRRJ#O%?Hb_JvTA}`E*0bP=ko=E<^Rq9qVelHJs%Y9tm`HYp13fujXYfG+V z<=!fQY6ArYcoPWd_3K@t%>-XY-7Lr9>N~-9fy^q5sRQUBbDf}3AmsOqRK7asP$VOS z(uVueaykf;z#xTW7^V9)Vh@94YBr_1#njPzdA^1wlmFX~S3p@?|E-7WpbgLH#)^Qp2V z4uWxqL|B!4v8;1%cb>tqXaXAA&-s0qh5;Z$de~9`0>FG%X)#eVkr)A;9XVG9>#*F2w?_S4?-@T0E zm&Y+V8^;|=5qp&2&lFgvbKO%E8Bcl%PAuV|!TY1pgRVI}4ksyG8W$Bp7Tn}pPQhLX zri-yLYI7@nECNBa4~zzPVBE+=1PG?w>zmRy#5yNbolWoZ^A zTAW&}wpIbl)i^sG$G6{nh~NG0RlI*U#7LB5@8KF_a1-x7ypJ!x{8c=8^2_+{4?o7` zsU61?U$wTD3wP#>-xNTBQ*?9^llcX0bR}X7UPM~y!vvnW0}%GMcVqwA^XTk7h!v;Q zk&BYWoh=kwHu)RC0F6}omcWqL1WrjqbVf4G<2YHzO@ zzxev|jKFzMcS<=sKB4b`f4ZMj%Ct#P>KJI`(t~%j9Ai-cidT>#{cV;?+x0k}@0q!R znlFkKf1JSYp667N_03fDlk0JuoS(#p^C5B+@$~a2@$}i#c>4VFn83r|e*0qr-XZ$t zqCd^WRo6zC;HSln(R>*&xL++cHrg0;WXkzMzILlB_XtHh;FNa2-_01!CUFS}R&|(v zhiJru?RGre?ncQ)ez&uD{&XY0{_+7v)m+0-(qf8!y+r>B8U&s?IX<|Ea?o3ph_8yY(`-dJr$ zZ+ANme(?)r_-V8b9!6<%6X&2A%ZmBN$Phv@JG+ejyQ4V&3Az5^r|7@=5TGFJ1^pR~ z!~J1(#UXXz_b3Ydqbln@6#>=NprwN+vi;jU#wX}A-P^Z}} z!Lq!a!$Zq(rxrnut1z#w)TxV1AE?2A)rtV;CSLyh9vJ}0=#4NI?*6g6vyU7!;`{H8 z;=^&o{)2iveEN+0loEs;9ZeI=ZEyDy0H~u}?R|MZ%Kd8}KHQA8wN-$Z&e=Stl3hUL zu0DGJ=f~*3;bauYCw)}(lJj?STGnX4fdFU1auqrN*gV09j~-Yrs*1s6!;;8MdE%I)ZifK2>s%GSyJIwb z38+U$%=^%nv8iKc;juexP!0X5Z8pDO85#6v@BsXAEiJhf;*FT4e*Xmgjk0$-b-->L z`Zu_~k~VDut+Mn}>I(kSR?F`=ejjy%gKN0N_fFYz+q55Eq3l@d#`LdTAgFM1y^*?f z9{DXDN-y?cOpN4tPVPI8QzZ@%0GcCM)E`7+0#<8HR|}gzZ7|7vKpjR-|9AiGf9coD z$~uO;9phyy<^sK@EAkHF4xqQd_+H0G+|_oY-hC3ywWm>EeT=<#su!cIL?gtRgLMn& zo4&_uc#C2`h8QmJ(6hP5LurNuH0u?FD7v(hJ>; zw&LN}JF)W=Z+Z)@Ttfhz`?pj;<0h66!|;3MhIU==0Q@>}{M|fW|IKB*`sZhH{(2fi ztJ1&>b-cLxEqxxBV}6CPySj_PIm~`_8_PKZX7VlqE10As3=Rr{LCLLqGCJcxYN(-E z8843!a0+Pdw3)yF;IM*H$V6pxp16;n)iUPVg&qOS;XbEsId{i~wSyQPf27Jzh;tQG;+Y`l3yZqYFt(Hlt)cC_YRM@ z+%nSl2*Bqm?I!?@NAwwEUD9d5;K6|I<$NIqWAqt;F;u@CAeA^0=PzS+{C$jH{?i!0`d!?g9!7IK0{q=X58734 z%W-}>h~u+<4Dcl92to^^xchh~9zENQ-hR)z2oZ<IqZk~wo2S?Eb$0+m>ovHLXvHRJx*#7KkRCl(qh^C3?9m8ib zgJE_YwUryd%XGs10e&b}0fY-Y+*u&^8L#3@G#?}OPU&iv{ zrl!)IEOFe=HzXxTwX>EgI5~e0|HR!=kpl%ujBlD48WsL(9i9_o_>aIc(jvI zhf9pp;p?NgJQ*U(fM@94gw_pY&%Cz=%D15+hPG1Qf4SFlZUw0Zwwrv%tAHSNG~?@j zt^z!xy{_EVArSQIP#HBcQd95MaHghl1s!W0#^kdn7~_XH3plgy-viX&WCHzXU;HA@ zY3G}_ea5;HGafLx#*i)11L!czS9AgU`+MkBj6emxa3g)|S}JGi7o)P)-#k0N#Guhu z+9*%&;Rrn4UyV-1V(63D>MrBYe{~T1JJu4LFg`FUd_Tm{pF__%;)wELJk=#SG)e+` zLjuu%jhc~*oSlFcN{srXtlmkX5naQdJg>rQ6#;7?Y)yWIWV|=J49^>$#F?=~-%7U? zYX|$W_x!V1e~KO2e~`crYg`~o+ESiRV|IQTSMOfO$%`Ljh^-hO9pcA~k!xszuDzSi zV~G=Pw8vaOf#0}~9>2uNzvNjnlL~O!4GN$*-B;Kh8C2VrM6+|2K+DogbXQPPLO)iF z1Pfp_z7WS6ba&9+=nxk%?oNZsIRPE7k@tJRHS&h6kB4I%6Kna+=?Xd?KyR5b7Xg)P zGsbHY!|6pFJlu-4t@U&;$0MV`Qvk^==iO&Ms`UQwp6?Nnz1>Evt#;7EIsg`tE=7M} z!TOt6-R$I{NL}@hv7b)IwgCy~TlBT{d|d-z8pLGC*Z`VbsN!DIPCZ{;P8i4AaEnf7 zJjO%#3HdjjVU2OR!>OB%0AbA)z%LFc#2Z{)!hyH3zKY$3CR0G73qU$e92V~3f;bBgmy1udjosF*T};i!>+F{GkU$n zHKi3mow<#)s|g_5cIwjyAO@>Em$h#$Yk|*R1)dPI(j9<>ssUJ8{fvG3tA+2z+FMbgyNQX*6 z5fmn$6?$DTmX!agP2e8-dKA^)7V|D!?>g^pAo-1+n!l4Q`xV;%c zyi3sg5sZarFh7D2XK`~kKuIaY^=QK+Ex=#1=H}AY0>rz&Z*dC;2H{<4r=f%<2%h!) z2K;u3cYhrB82iDi@8k04?_-8CEcJ)cV!(R$82UveCK##nfmO)oF_l;}uYFLBwI|JZ z_UDgd`}sz+9yD_b*rl5{_b`E=k5NeDe2;+5yK#M4i;JJHL4&1gR?*=5L^?^=XiF=bnXc{yqre=d=Qhdb%oSNRR%#T>}WcWe1~^hYYLhf zKm;{wUa3?N=G;d)2cIt(*nH(aUYMv~uK76lYNDc69&M3msm1-y$N50ND;O_{%Abtp zPuU#q%OmqU4N+bp@aA8U!^SIzg-Elm8~t!gplc(;=04VqC~W}L_TUYig3d!Ohj%d6 z<<<`UV>~k)Zh_>h1b=C`8J~=R0(MnKb8L!*y_@X^@Y!Q%BY52BUYpRxXfS|B#jkTQ zJB#HN!0+V87`*!~25-NK+2K!78C^!3`>g^V8W3QDSNY+?Nqjg#C}~4$y%qaUAHG19adUYUC*Qw{@BZqCIDK;wQKmI|ul`PO)_#cl;BRgD0~x`{G& z<(U@GT(t&*B+zpEtR!y|(*G6a?v{30?!i54U6|onpCTe!PtPx|DOkkP8q&sBqlD7P zLG@l1!k6WBdn5NVkBMhtFbT=;LZg~oLh701Q5p$A_>7WBAqm;*kv!^J-3>Q;W^f4=6(t54L=saG^;{BER= zXS?%)i&q-b4^XY6jPI4c!d;DPyN&4VZpQAjC$Y`Z1|XF2UT&?tU`U61GLSJp!(o5( zHqL*36~lM$V|)ldqmOIw*~Lw2HU7a?&`qOc?pC;L-q1MquxXqEv#V_!OTHa_~Zo$a& z`1kY^7hB9V0Y*-tx^Uud_*i4GRC4zV^ZWpvrYO+&>2v@XMF#+kHaA?oYyR#iO9g>D&?7y--5A|6 zqn|7Esh6PCLeHzqr1t8CbdLJYIx#C^v zN7t+Gi+n)Og}FZdrMz&ix?JAzKHkqDk^zKD+7fjM*J=0BG?`xJJN}nqnD_Bn3ZeH` zXK6EdCT+A-Rm=K;9q#k%|J%R*Yin{fTAMU@JDRP1I6UWxXymchmwi!x%!&r$k)6xl7eZS7*z zp10!Q>+RV6d_CF^n{nTm#Vu{U1z4)AZ5Nya17YNEHo0#r`fqRJ-5;*vr+)_U`R4>M<26H=9B7=(wjC39ol*|B6T_uv+kk#%^H8{50K{yJo*M(}$6io5d4M_*+hqjmRkp9iC1#L?t)29fVtMLGbW-KpMYXCFoIFxson zqSii$mBu#8W|jN%yPSAEEfmD!3fheLZk~!XE0LoZja*rv_rAKFQJxyd3h(br2qn+S zk{|B;a_7E{@YD>);^K$6eDhn5-^KLwXB7KY)UQ!Ww*Vo4_}rvjz~9luFb2pzI3l(l zug2pqAIJVP7c9Vk!v(B0jMv{E$D40Y;_58*gLoR{jlxeYe}fXb&M|Ja=r$9>YLSj`4U?Q$9Xmovx zvR_zI2$alk3UNjf8RKFVwuY4NP_7Bs9k%2bK68#K331;Ae0SpT^-X;H+tc{|yHT7Y zUWi+4Y&YV|U+u@|zkCu4jMEPbY5l=ANWj*S8I zU84-!v1fAl`f4V8Z*F0%HsOOBeFFTC2d*5(qVgwiB04bv^-r&F0v`@%VHJmR9fjny zzlGHSeCGGLY8<{x#b|iyehOjWgXvLV*<*705*~N~@Oz0WI*FUnFc!lJ$92pY{1M9B zT^UY}U6F`~j@))vSK`ZGJc%#Ae2P(R;N8#S{Inm(@6YKgMiiX_Mn?y(WFDOg|ITHf z4iW88Mg-(J^-f=8nkt6X(hUvHHHS^0khMKkvieCl2&p{mhO3a!KYH{U1f4^t=G<-J z8c^YWsmkg$^mJY{U|XJd%lUk-Zge5Tii>sNQKw9EDqmhq-lgl%Ku5{wL;@;) zbT=v8BGpssEog|kj2UA-!q(h0%TeE@UC(snAIJK^e$)UL(L&iXSn?E%8BXg?j!po6 zujBG(9D~F2hyj3R%2;40Oy^imZ*kUF=ua8C-^XNnAA`Q-aRgzsA2CzTY?sj+3+>i1 z=GNOR%4z`Q0sM}kpX;>Esd`m-k>-PyOyjI3K)+$U8+FUM$j96i*{mU~8gcWjU9h7b zv`mW&4b1gz){8CLuKLI!_g3BoAFdqUSVtyS(5s7K>YmkABW;ckfbnvePJ*j)EoSec ziXo2ikiKng_oBzS=6-bmPv(Z1ziByx{fFzZjm+NQgq)tb&pr+w=eWqpa%@g*TGhgw zw$WHHVy)07yk&m?)PQbvT1#1R!4!^kt+vQq!fx9|Qg=9CrhP4AcY71QDA6XjcfExd zt?ygS+(1jt*}rz%BGm(EbRYXW*yda0az5d=daS{dvpL|mTaAMU+vq80lWuV4*5lzL z^ZcgpA?E`0Tuq)J3Q+BeY=K-GFfBcc^rjo=gq}cGT%s!`BS162Z;YujvTbBsJ#I}+ zb-~(NJ2q*rscTkxSin2x)fzo?orHQ{oth4eSO&mpA7xLS!8F?(g}xVz8CZd5kn_~( z@;-;T#PU}zDuaJ?u669WS#j_`Rif-EC+tYue5o>j+?*M)9g!qf~2=EUBQY2Z3)f=)=Jw4D>#eD(4vayX!Fz zT5!`PLg5sH1qnMaj`=$q7{^r_)I{+Z)}|5n=E7BJjNrw53V;rPA<=pak^YmoI|lT< z`8N7*Uc~LiWmK$|j+a}#DdWXW;_?KgjiK)^P!cd}2jI8+MKkul-in+}nQ zuNLFa|3k+_(SikVIek&_F`$4O^*dN6=7V_*&qpZAA$S4-sk!x&;d%O8X+USg`b`GG zTqkG^9dg$M4yRu;=Psir9x?z=hRZCnn?o$az(hIi$C1E}&mKmGir<_%rM?!;?sjxm_o8MBKzp0!05mMGz&$}d zG3=jXC@?T6suDtAINXIQ=2w`Ke~i!w^04M|!qOq$%r5IUcu1TXp+I-0Tfv=`5R`8*zd{Y5l4 z)JYv_*jqRsMtL-zkRWNS3#F$f&}&#mNE)Xg3*7h(<)i^H zoQ~;YTxqjopyVZoC}i|gn)2^DBV9%gZuuVC8zB%Z2;e!#@0=FUV{;6=g`=!@J)0Y0 zH~;De*)h@sk8u)Lq!Gz&h0=@kUXHEz(PK55?h43uynj22fA&|e;t#)@#WDB^{~|WF z%CYxoD;|HbheK43!;_0RIUOK_EyivcuYPYzLxYG?noS27)eCfm#gWk+*)CUx3s&x80Y9xM4=s3Ub%*gcf2k-9C=-ppk(B4I*4OT2fArHUTJ@r8Hv*3G$bjIi~JIrMUCEp&n00eEVdKn_p@#wE|?jtKyN zON*>_R{_}WI?@H_l)~+}28_>%)7n!&(gH^jdRnVa-f$~ElhQXfkyZHA#Wk)%HJRNh zCG*V$945KL!tj5@I&AWArxn}Ksfwd)^zX^T&3OLA5?)I{q+1>0*!HLJ&sAKU0j3yM z0i^sd)8_6j7~AY5-{wD^k&kkvamzUkF%&{dhLAt*-KT+rlVsOjAzW*E;Ub|iX@ z*mjZD=TGC&FP=y1;e#mkoa*I5?@E8}M(Eg+lel>GHU=M#;^usalQ)gJW9m$ed-q;W zV}xUVZN0}kfd6$VF6EK)Ma(h!`X}00^;8?wC72QX8P%%67YXVG@3hMTys~H=!>OGU zAPCTO4@?yET#b35E8rmb$W#}nfSpN^PmGMY>bi^bRFpST&zcJf?YPL*qtZu*)Rn@n zLN^k$v9$&-tYed^@W&`F@#I$B2N*eXt3Vwvb0v*9%U{mEoYBW>?IzlQrb-<^+A8|u zjx~@Sr>LBO?&gN)^e-|UrQU=$>hh*FB#V4~+vbiQu4=8<@1omP-gRJR$sC|lTCwKhBV^W^e{1WOo#|#@bac0IHnujpxq?{Wx4F^I{6Rrq zv*!NCuJ)fWF85i$d271^fAx{wCHHZEVPqE>vfrjov~dzLw^SrYo8%d|E%A-1!v% zPAD1$6r-J=KwuF~%sQDmFyaQz)A7q)p9GGI5PyhIVGn4#w!nyRv2YO3r_Dk{s*Gh- zKqv6zewKXFzH7Jji=1e3WhowOjI;S9v zD8c@DWOMK+Tv@haKF{b~%w5U(@^9k&^*1p-d}~R*s4q|+bAaCk9z8;Sax#i3sC%W2 z(C$R6J&QQ_<$mmZy%+T-c!%pet1-okM7ftIc*zSoieg6jRV`AzXvgBR%;T2v?w_8- z``?_#+iyoP!)Y{d(Ug!3hyv^;?m3ymdn=x_@vb#==yL|es7NtY$3tK?1{VcbMj@9F zq&pPL(Aq(RF*MVFuS63XmAe2EYoEbT4#<*`vGj>R(5NEBVdT9j;7rf}6KBC~9+azo z_&qn`XV43s!FxH+Hj6xLxb6s?rSVEglF#r(g$6^YwDeRFUX@l(ALXGk=gBH{9^}eG z^9z;;P7OfcS=)))`VO>TS5rV2o};^j2YEAh1?U9^27`S&O)t)~y%@Lyb)QBJ+6 zHup2dpx${xdmbaQJ!nIF6b2M0Vi+rvBNX{79Dv`U-2XbxU;Itnp1+CC^&%_+({Sn# z130}jQgt2|mp6b5NXqa&{bDD+`m?X2VWf)l`iEzLzBlpy<#AjA3Y?9059m4$j|)JQ z5~m*WKjK~(3$$mW3ZBR8VG zIc3j%R7SQ>a9`9UY@z7taRk`??hm6lJmhq)eE6^&fBWzJS$zFxU&g^_2bn`=>4=l# zNnD)FoO6Htute&*@?UO;%!><9>y#zypgZK-|0} z_Yk%Yl~L{{jz%Nqx2oq>7Jlw+Jd8HHRIa1M5iE26il~}|)#*eJ-CptX9*6HmOisR! z`Nb>b_HA6Be}FeGqGl}=47uC3O#%Lc({UWX8=@noC}#@=M|}0=v-s@!7jf|5VJg&j zZ$8A&Kfa1%!0lwrV|bKPPiwA>V0Ok6Ll4+>6=bQZmbrl^(TniVHTt52zVxDE zBYYUUT+Iajm#HqqU=ER=1uPkn$k0_YE7G{OGW=FwxEJ3V-m_L*m>R`2rJXt)bE zCzC656=ZH2(JKHT-Gi6bc&3XS2F|jh*Jn6V03-n5{rz<=>RjtJ0kj5oki7|Vb3cup z?QZ7!nR90fMy0%n{k={4zKG#?o{KX!4L#p6mg5=M-^Jd}D*DUPIz}Jo=pFUhEJ2=8 z?e$e7a@JR@0SMhrPMtbW0NQnGnz6dRRV83)WukPBtcYUK=hQo#r>vx$C`OEliv@3P%=6QZ2okxT-%2ay z`SL7Nme4ucoz$b;L@Z#5DF2Ba%t1DqsB@C=fcBZrQ2yWlFH66^n<6N)5qvO+m4#8g zO9cF!!91bErx55AX2h$%8FR69t6Jd(&oux|y$L$b)rxqXSY}M<}xOSi@@=u?SLhSwm>*U+`5F3UuvH3K za)sAiO~*fZMg|hF6oA4(=XBapObN>Xg1KxUSJ*d|FR#gPzH)zbSk>5_o7#={?Y>1GbWBB{2q^w5X;5>`eE&%Y>a;!J^qSbwf zg4~Uj>K4!3jQJ7+36HESuTjJx=3Aul>TOKle;b2$-^A&Q-^R+-anz=RsLfD#*9g}F zp2Eu?oR1UST)`9Iuz2ufEuMe%Bo4lOt`>{Q(OLZb?a%T0hj(%MW)MpZL7g!%W^27J zh4<6m)&egDRoiT|M%XOxxF9AMSn#{0R*Lb4J~>u6J~ilZUr210OX8jaLdV5qe~Fk8 z&185~F5_oTT;>2W9(vaNl4JR4_XKI57TQtEF@V(QIioI?=CK@t(VVQ`=(+UA>v;&z zvVq=HP-=9-X&6`BPH2zcX5~p#yF2is(LQ)i-jmn4N8ICryO%e5=N5&)a^HIlIQ#=I8STP; z$KF~!HoB$QUWXR7S#$vUUw^q9PoL~y58R=`X+G<`jWX%Ke_0qx0icRUnNe2MHR)XP zt^6zpx~NQm$3Pc+tPJEUvgIo$JL*9An1RHW0PE&z)! z$k`}#z^p%v%fpkn0QB9QUuBM88Gx%^xHZ@FVi*(Jx|kTLgt$qYTIPUW^ydKJIiJhu z@kVrNb-)Fng2VcamJ%t-WI!iC1QN&i7&$c>$Tkw^y!d z|8-7R=N{j*#hFCuWiI9?nkCSN=GAhG-^)4meXO&4WMOX|MQkf-TDft@nZ3P@*xlXE zk~ijkkA@>a-yr(u7l3Kx0iCP5Xrc=Qz^;fcrh6HGcp!HH$r+x)p2$0zX89mX!0^FY zgq;16r<|#gMeTz+P@BMK+apiFCg^eb0vm3CL9?LHAUyU>d&Pgy;?oo__J;-9gAb-@H&2)IcE$;B308w<3TemkO)&YO(&+s@Nw4=ELLWl9t;?U(976tU_wUs%b zR^=We?W&M@EACJ4=)?f!U+Xd(1+q+G?RZb0>_~MDkO%;t>vVll7-!d z%=}dkI2mDr-tf6e_HO0Gt#e#7gy#RbZIbtL9CCkbl&q`q6iOA8_+QW3Xl@q#Oa;L` zc{Y^K>3LURX9N*rLlcsxbVSU1*RZrO1etb$(Q)R~NRsWKceGCUVu5Fm z=m+>W8uBcP%qdT|r5b_^G?~p++O@e6CDTB9+sNm3R62Wn-bHnQDjSycX(kx5R-qfQ z-^1%hpGs~$2GF}60RVA0@8ONR39>Mn$NiLEaoT)<+?|bMa)DmBT*lz?I=}$Y#c(~s z3D`S$fFbNbt6F>j@VT<`{P;2!Gjt2|&BZ*RM2iqNk$WBro%O(>9SoTfI>zt@c{8GC zJw6qBrG+5@0IXoBH1tLS?YAJYQn3*4Dt!U)E!+ys#Rc$%i!2!MH4O^JaXdIp<5#f` z9P;OMpPk zlv9frXJ-KFYmDn{%J&A16(sj+Zq@6tjuCfNY8J_*oz@@Bq{Tu4Q(tJT zoyOJvIDM)dXH*cmb_!d&raWg+UijHmfRtlse z9;0&Z{a}iun}8BqO#JC#v;REzAh-(HI9*=Q4a6nu&?v{a9S69%`eRXSqu})l^57Rl{-+K_f zUN43?UhiKY#)xa%I47nan8WIBA)A|L^f-s|UAFVYG6^7AhM#`XC5=br$)^Vr_m%Bj?=OKgF8fos^uRu!FPs+9Ur-eC;T zw=SmIT;E9DI~t9Wel7ZDYL+uDF3>PfwOm5i%q?6lf6TETnDGfC%uu_Hd8gX~yb3(q z09!YmaQnScuFAf==yNZ|1%6WR3Vtzn=m>@a`{7PWId*DX#ys@|`Xikibc%r+@s2YH ze+;y67--5|**hy?Xp*t<1{*TagX4m|%kKq%dP@#HvYj&x(81ZMdi@>%jAKEYs(@^F z_;Hq^gkx@UujbrH?+tXaJXZ!J)EE5hRIzr#sqU5Q|4%2MVM04&n&3~*vW=rVJaeg&ViKNpAbb$x6wTc9L4}|Y%-d{U?_A*<7%D`p0-LZHP9_y+~rve z&OXHD&)-A^bXNgPH4x-73^&DN6`cdVVc?>{ZM=fj-Bxt>%hBG$TYZF3?X*xH5Z6#U z1K<>y#$BONLAhJUiUpl#wHUn`$D40X;`GOhxcUGcV1O3=M7_iuK^yXn1Zdlx*m<%a z&wlYd9vxt?P^wE9f1n|G{UIi2a1WleQ@(~{uNmnX#$Iq@s^kja8wJezZwN-KLmTn5 zmKDGRh6X1M0EL&ny%ODn)#yH1$J5=3$B!QX0@WgLs`X|#?m6x-jMsp{#hmv%XDM)| zy#+()l@_^1HS-H$Fo9g=Z~9(+0!?!j8iSu;j{X#Yl6yd0C#D!}{v{OSxx7~qDQGZb zdVw&y9KXcsEg0V!eZIj`>L65kzI!3p+dTlmTGX5xhA#wtE*Pl+{A!I&6!|*OuOkrf z0g6z-Rf1q8r}{AVHnW zGItMq^2MWg`1DCMP>8ynXGcfz=GEIcJG^oYLSky1RTQxKg$OD{ai*4;d{r*WzK!|gcnl;3#c<&X%gvgMEZC$Nd?;&eAkxM;bqYs_cXsz!@xxIzs^MD5c z{s2h<{c;~hwdxWfM;LVm?`BtM=8ITPQT`K-=`c!+X=wqi0UuY#!cDTe~ZUhLN9hZ5253B9DbO_U;UHs;&;D!2hT)2 zezYHd_RC+y)_No6_KQB7us(*ztK7@2Hd{_7Gj2wGum#b>(_LNL%<=1+69v#}Z*9h6 z1)ba2i{JkKH2&ZJ*>B>_q5M#X|8&5NCYEAjdksUohhcBVdt}L(hpQ9xi2wqUi_$l@ zD)EbF`?1-)kNV0WTCHguJOKRtVjsP?4nSGt7I9bT;ak9^uj7#*3m`Uxv(a-#Bm~0p zVmdVF38W`MpwS2;F9HksRA6oHYzYH-j~&p#x-~ii8?>Oy*1>-4KRt-egT1J%b{P^&pez^RG z=qUwGue#T(;)htO2+d7Z(>ee{bRUQbv@`S$2iF z_CSzf`|Y=5at;5PKNfd&06zc`THB7^Y8x4;#i?7~oesDc{leyqhVH39i`^~2`{q`r z)HqH0=FOXI^Mk#8+G`5TZPv)!*xp1x)#J_kcgY*u8{4tJzaM93C%G4|ZF3=ri|~|5 zBUh$m7?m^KWH`7=+B-J0*@FIUpp$EPt+W!@2)dp1SYn5-aT?uy!JzzV z1ps&Z5sfEhy9$ImIn!B|q>SZATNw zv~KjZ4IV(XRzK<~gJ5p9U>m&m%@PX&Hq%z!aya%WW;g#;?_MLPQOuKJG)ttoTD8*Z zr9m&%R`LATxbarL2d&Vt7B|KVR#F)d2f##8H*I#>r3yOUXssqlpl4`pl)cl-(YCdsgFWxS=UTFv{)JkJGb8&1Up@f(PDtxRnXVormkO z`Di;fb~flA-9mW;itys6*Kz#QTMQAP7D09j033QKjle#thgH1>t~A!a|s?*0N60 zEecwObrFCbca^@FZ>6$ATcsfo1Q-!aqsE^Cm&^o{C6I((RkcZi#NwoaXN$;~fXTyg zy#@?kL+BaIx_~fl>Tel}M%&#P0DnEeUw1uu%Nab+&xnpnVhwQ-0P1CHXw2u)V|8}}UvKUZ?4?!q z3kB|>{F^UQ1po>H6_h(Tu&VI$#jqL4ml9lLcLs zZ4F_o>$syQs@(f-20tuu0C4iQ)^TncF@(=J#*f zN$hO^*WO+)bDgSXS53Z0u1^^+6X)Sn#=s#rMIm>~L0p0y;Tu)*br~32fo3XRqi0y5+CcDpCa&KN8!)tALrif^w?%*Mu-YGJKp~@5#?kNat z!aFtP$S-s{`AvgpokVS&^jmVM|1?~UjRp>V8}PRs4<4g?;hz*nbdCw{>Zs{p5<{G< z{>dfk5NE)2kvY<vS%gY+J zXyv{E?Ur!_Jx>l#=@%w!9cN`@EkWpf?n>=x+~DjlZ(L{rD9kp|A809f(wWaBf7*iv z$A}j)&}ie-tkz=xp<9nGk>@k|4rpuEqS43K61?auaI+NksMvkXkEZ*;@$%NEyQi7EVvEpTeK+v~)| z**UziNd3Ct+|}L|V^hiREGJ{Gw5czPnbYDpuIJb3yo~xqM9tOB<~?q1b;I&H&3Y&1 z_5sY|mUu?}T->3vK$D=0wpCpL4+-#mpUeY`LlI^}qDq*z*#s(Br67pxt zR}J0oqNE-=jP}x{bkN-kKBIx!7}}dSg?`z$1v2DV3J6#3{@M0@dIPXlqEN2U(7G^S zN#otHztY^`#+y;K8h;%tr|XtWi~$9DFEH+m0dor(@3q=mi;d1klts8Vv=SoYQp6ao zczOC3FY+=PFk2l@K1*}-8GvCCqKCJlzFtB(tj7AoUbMHXfIy7LCOrXn=I$MM&NBfG z0&6x*Ayr4FgC!^?)E?@_vj$~|u82notk!ErxF zg;cbz5V%hta0(BSXV4W%bIYsSDYw_Eu?6_td%DBxYV>w6SY5B9;ci7?p50;?Zh58m zc8$WY#@h90lKq#_^w2b73b^HEGUSXx&V(n%3G|0SqFr!+OmvR`l@>67wBQj6h<`u_ zF2V5RC)(@z0wM(s4lkmAcvyHpjm{3hZxau6Jt~YhRzLIomMD-4Ua!i}{G`;D8Vg-8 z`D6rbuRg@^)i-h7KLMDJQR<7R1DsRA3+7=$mDU`uY(hH~uC2Y@c=+sbtnJE&mAIQs z;`qZcg7g;UAYg_)@CbVdT;^ai02=us$4pO+KRQ-HI9<7Qzk;%L4D=Xzp1DCz^$HEl zr!>-G1kEYmYXJVBKgTIzILT;YFdkIOkJ7nLMSUZYBt(j!R2lCTl+ztXd;qX_8!lJ&I=+`z3?DRp@BjdF@E{KMHUTBhHUP%Y&*S*; zC@v2Kc2;CZsf2Uk3ah&o_y$WP5xT`+&aP zy#|K3j`6MKDp(Es`}e2u^5-+?*hUUCs7_l$d<@t1%oY8#PvpfP;)LEYDIUE8?Q_-v zUX}Naj2Jz$5`+7!s}9^#b{&Uz;}O7k4*;#_#I5OcI@M$J!Qg5b7l&tYJ41eu)r0B&vr=>E8)0YHSIpPP>j-?e$p?(S}^cDl*C&Wa4NpL3k~ zDtfllamrXwK88<_DF$SSZm~#qr_;-O&j7-c(HMZ%f+P|-ssVeyNsBrzgJvv3V=8{8gk&AqKwR0l}CEL8hpM1__GQ{5pkQkkP7_ac6%;F zab>&F*K`Qr6ZPpI!5{4KDX^lVkiP}ZMg`Nnt)M^o$sA#~a&rNhAhlF-A)E`n%*n(i zt~3G2<9H8mzk7EY7gsm%I}Q|j>DlA$c!D#O3v6yD&=PRzYSPS&cGnum5Z$lMW}vg$ z1H4;8Uzd<)7pApW)m!j6eBqc{wIF#}ielRYf>~Y+uxvfnmAh{q-|Nwe07SLL95f1A z0|S?pU~H%M+|0k!#GN(rhd~q~T*H(L0pJ~sV`vlt=%v*0emdp|E}_m9K;?84v!koH ze18=E4@Yr_@^52wt0MKQ0Yt#a(8e})ef0oz{t(2Eci7o$#Yz{0fOivhwU|Hzrh{?a zaNa4x+8vZLy3oIi>1zzZn_=|d_G5@g4$dr;AE!89!JTqyySKd^51)S-8&AH7x~rTX zZt`GGa!T@g7?aZvar*M-`0$7C;udeFf>PXmv_5s(r>A@iAU;hv5r zzzP;*Os6a*xT|>d67*7&f#?H0PJuEAC(|@c#NKYw?{4gTwiR2CQTm$=`YuNbG^bpn z*NyNkU~U((Pe9A9$ZNen}6Z7%`fiaSlneJH?X&>6<0B(l|G=l*F8 zO>UZ8#@*l?WBnmU(0KIrEod4LhGI7xXX(@k%75z0H-?-h!o(}lMOm(It!I(k#s*A+ zz+awT#Ot44$6`FkIO+Y-f0Uj1NBHdC4GuF03k6R*)F%m*-CPT*|-$JMzT^1JUgvO+&sHyZKa-~dNpE4ny4LlEKF2}<Ns? zXsduVbNz7l-JIRU9Sa;N7atgTueacjEO4t>@Ezy6z(;znK=)<`x_1kpTSJMKQ07Z` zYK~!XSDI#Xlj{Jx*PS>yDaSXze+K}28*kqX0t}iWrtx-)Ooub~HAUZ9n7LUm@{@e_ z?shqzSmsl*??J&yjc%=ms8 zFJGR-Pd~hk4~Kwg6w~hBgLwStvv_y-A>O`!!}A$qbt`?>uKw!FgVSB&O{B?~DqiwnCP8xD$N;Y+7igtd?rOJGFWJp;^ zM;-lV4!QJl%G!z#_kb#+_nG(FL{H&a$TN;h0xo!?TI*qOw|LejpuHAv4=3<$;*4)>~Jm~|A9L${L4AcK*Ai0{~_llAFS ze$h>~7mPk=mdUlcliJ3?LU7s z%gzK(>r-85ZNt>k?4L&5i zn^bR5k6mPj9WeGzZ(>y0p`^GRgNJ8lXLD8W^pt#d0DUh*+benci|1KO*NSj^U7G+m zjX$nB?cz*je)FLH&@5TXdI zJj0L%2zk%59d2RFjUw!ayD+`y1%n*Ge?Y-%HHWQS>E!sn3dY&_$2|;6toI$P@r_%{ zv5WE?tnI}BS9Kqyeb|GUcZv`}*T(#nMqGL2O3Xer9m9CuF+uq>CWaxhArw4bi09-g zR1c|x!vUi(yp!CI@VXy-vJ&?`d=y)YSjpS)3o^;&^*tB}yDS>7@jS1@g{Pj5 zspnpbz<^1M2ZnIo-ND*}czEZNxOeUSSh{&V#t@#?TZhgvH_R=5E$%SGWw8-Yg8HA*e8D*#jh(rYE5E zAW|+IM&YLhpjQn;xC9RLCd;Rd}p|F<1VG`xuMRK$zA$FAiKpL1Nj?*@{ z!bbIw4k$lYZ5*#Y#3;WVyK9dS;A_wT9ExFe3=HiRa`?(QC7av)=F>J!_K2a%n!EI)C&Fp#?dk z2x-uhws)KK_8NF3lEX48C4705MKJ>PCUe4~Mm*Kf2+X4cskB2=4(a47Lg@p9OG+I*s8J;O*LI46e@nEC%2LQV5MCY;ZCZG)`MMas@9^ z&wCeAjgYqn-@suPx8@-3Z}el2==>db=r>#U)tf&z7gwLT9OGCqyIZUAXmKfSesU+a zH-QA8n?T@ALYwY3prI&)I9TLv{-GnU|C9LSlZ~9Otdg>>=>+TCA~(~^M*ehBc+yR8 zZ#&cIh)~5`eDTUF^YOK>yckz5PQjj=e6s@FNjCy6ppCVS4GdD8!i&$u(yB6G3dKDF zO>SY}ZDY`291f4gr@-Qa_ixbVvAFuw^Enj$aOt6bB8G6prSqdG^^thy%1ktdf$z>* zT*dJC{ja?S9j?am%KdPG%+78fM`t}&S5XcSVsmsHoF5{qvAW==21M9EhB?=Ge0(Zp zqCGth*=elgbcB{hSD7bmkC{%~?7~Exzq$|$=XDOKkb8VUZ(Gja!!SwN3Lx$I+uzaH z9D-lR@f(q$D0im^*`ov5r(rkQnT(^J^VSA9jGpwO1H*fQa$lV^=G-oac{TLiG}oSz z5w5a2IN(LzXiTXX)p_==yD#Tx^DvFZoT9#*YQULW#7LWa@STf##^EImCuOOIO^yU%e7Fy(!&jbFyo3|3-Y`FVtnHWZbflR{ ztfhXAfHVs(uj4R-p7Q|Tb*Btl2hmpa1T3LJG-Pq}z4cjX|eM@F)DQab>!0>hz$kG_KX zNNa#6P^AzwN}a`G0Sa2)9tDPB;|UJKtvrv`NhK{Oy;GV7(5MQuL96y4^7Wlqyml)# zA9x`5a_nPm4`Yc9**oUeFbHZ_=}%q6BYb`)7M_`m$&2k69_Jm58ZCt#wMxY(GB9Wm zMnU86SH)HwkUTh;E9r19iTO>6m5a?6wXyR$kUcDGsUw9>EuRIk) z(L$pg6uW(ook$UdKc@7H?4vNQ^h7f`#&m)BJN8xZi04drz6XMi%P!j1> z>IgmzFo&@n8rCSI0T@rx1wm;EUhVmFa{rJ9;KVd`M+f^G;eru77(m1bLeF{*4B$NW zVFP4rqST=HwfnbXGL#m_$D1%UnNxpZ=6snR#*9NJdgku* zZ|{JLQZKcSfD;w6k@lB!Z9Gb73}NW7k3vSi(-l< zgrGx|*mGr%uZOlfAIo7Mz2^M`X;s9Lj@Uu@jE$AKHKQ0qBSV(8m-ANiZap$in$T-K zvd2TPH1u+??l*}10>Nz$>q0*okW@cxfAR54VB=5Pv7I7wGdbl-zEofnM2 z8Uj|wDEc8Rl8?lFPfc*ykhT`(&i*f17WrP{H8T4a) zeH8=c0m^4DdN_I`Xy{ZJ2wg=IoCz&}8w9k*pFKC7@kSbR_J*cL15cjVF&Nn<%>W~% z37tWWq?7(~oMNr9rZAVLax~&&J%jDIylH!=1>h-M!t|T*KkR=yTDa z_0?JMbOk=gu>+q&tvpZGxqJ#qx6;vd*5QE@l4hLC@pG)al&ab>Cd~k!``F#nEu* z1&7&Pk?S6UZe}j8)vLbk?Q^JC_I6*x%NNea{QM;Kb`eEC>*iKQj~=YY$};p%a~tR_ z>!KQTs*IxnLxGK=`~ydB3nz?f1F*;rj6c(HKLo6s7=1c(%3=+}T-?!Y;VeudTg&NZ z%d3O9etikU?*>leK6M9Iz*z>7rtBScI~m)ptP}^Ss>u_O#QBBcxO{OMJ|B<;7WHY_+8{RW z?#AB3-PpOk7AyC6@yIEfs)EMY!Xq3|-xglQ`KK?%)2}>V_LQ1M__*9I`^%>i0f~vN zjaa(zN!+>iLF_!Z8*M5%P1$2Kr-$)!h~jd1Od)6&u!1nV;(?mInDz|Hz^?rDxo1o| zfm`EG56#{F?XI>Lu-C790}%kgqbmZSh1@p|jh72>>>WbZxN=yqc7fC6g^8RacYk zTTc96kL7zSv2fl+3yJW5Ir&Mh_+e#LMCAGDby(Z(B=K4mcHPd126+SY`w zRAu`pID5AnE|55Epok9R(eh5tAz518iwE})U>Nf0y3;$bLtv`tvzL!N-0n!`lO|FS z%K}LQfPohZFVm|-{gxy}Ku&qQ(0DA&>X{bfRf5m}JVM~Rg@9Ye*xP5G>Yj%4Q7{6< znZ1I!zyv0C*rFKoR0M<2F3-A$Kq0B1b~*ywL_3RD-f_}!O96xeA&=Zf2-<+N4F=7*UzkGI;iDmYc)|M!n#C=i zTv7Qb}_nqr{sZ#0Q#^S z+K=cYPRHI(H*Q|vieLQvR=oSp-B`R^6nqzafZjCdRF2|$45LV;Rt!Q73Yw}lPKCQ& zhvF#%804@%%Ek%c_EOthdu~23?&ji!7pJ3(BYZsCi)m=2J2?|8D7*JR{4}0<_QiPV zl~?0${_02Z&f9n6OJDp005KFdKE4gyoRg@+xf}QIZ~Hh6m{(qzi|248M}}|`dn;6B zFRolzh^H@Kj=8y+ltFjzJ&4=L?E81uaC~%Lzy)oCgwn9?qD;mxD(nf;aIwuEQ>b&| zCdxV}Iy3{E59!!miSrjdrt5s1zci2B(6S!nJg{8#xr(8`?GTiFROAd$#~??p&;y^^6A zL(Y$aO5ja-$b3|e_5=$zWJ(vAq0^<6j`2A>?CRH9%D~APnv6x{!>!vZ@zJ&GapTkV zSX{&qfi|rVoSVkqXu~^kHSFVW59sd`|y;V5+C#b++Y zyeDK}2#$>OV|(`@w6sAz+92 z9olh&Xn@19WRrH6bKOQ^uK9~tvrkXNxmVA{2zJ@fB;VqhI#D|rQzQXYS7$=a;wWMp zrL#=_w;+P+7=ViyI*%Oprx^K%{D@?6Ybnu*2~i8T}jm=e>?zAy%l^d{^cQP~_KD6J&IK}GMp7n$ow z1=OKlD8uyXvL1*Mgu@VZ9I_jgJktOK2S*q)#|VI9Xy6!R9)if`ow&y2@!hyvQ zMoa@ZYd|LPBk7MvF=QbgkJws%)Q<-bDf7_|Hmrs*b(?7+L=kv!!!81^kMZI;j!p7Z z326xC%0Y2R`3}bvqma55SC23GnuqSkWECZA=X_kiOYPeGG}bI0oB{^JWN=J8+)Y}@ zgXhUcVIxEPZM{fDC2TLR#_y3cQ&F(xs3GWwdMRM+S?OVH+ZM@R1JngDlL{j8%~gzK zdc<|uUXw1|-^6HiXu9FB6T+}Dj`09q_K_-k2;ME|3fk3}@%z>|0?8pg>UDqt;0Xj8 zfCqTAHc6Ok_-TL-1GB?DoT}YMY_E56^{l6mXmF@_7tYVdg)0j=WZ3DBf){rUz@dZ& zHeFz0I_lC!h^joKe~rIkSO_8J~QFtiebfC*Lu=d`~>lp>ufOAspfDXn_1A zZlnikPu|w#kfwM22L75*Nl~Us+YRIQcU|%4yv>L&d~qUP``WWOFw_@(udJ@4NN&Z& z%NOJKfB);?d^G;@uU?P0-&l$N?0@t>f$xsuU;nFr9a9r?@#QalJyusX3#%JW?B7UyyRO2G zxOMP_6_g7+kTW=ukvAonr zCLP8vetJJ{+*n1???4OkJ7iVys=FSH;-qQ_YGlg)8lUbThg40tdw4+73eg@m8Prwx z&V{xQ2C*1VU73g%U$_t#&fDvVzB^op<~)XRD>_bXpt<`!+JouXfhTOAhPVqIJWt$V zM%(1v*X~pc=d%l}KpJ$}vqztHJG{Sbhk?WUJXi3TkbfV~f3Te!k)x zbTDCd`&nvy)2D}P&HF6qM&5#$TM?OC-)S^ex{F`WhXs~o`& z8g^@((K-066*q6nugf@Sj{-HwGjV{# zwFz_%GHB$#{y)up8=3@dg@C0fm7@lOrrL2eqI-SI#BKv{0% zao&3SMqK;(`?2&1%4-t<=?wvEnb6bE=ALfH)i0cnr(U}lGcRD)&QSTOe(X1U(Ldh9 zevn-d14mR&i*BC}5k^PL{n)y*70cJwW98afY~H|oKrlOu)a*>ffcosoz~>g?(icA; zFMi{j@%-0+FS=KskKw5cvrY~H^Y`)jK)NfW2w-X_o< z1_{m~NLJ$aKCY%aw@Y;%#6QB-;WF%r+zeTm*{77pfblbfFw__zZI09PNX4Az_+c1k z4-r)F#QikT0KUS{MGQHy+4tt=I~Y)A+JzbOd||iEA}~CKyWn#Q8vcL zQqa*F>TZ3DP|}{xUBzjSwYH4hR2s$@A-buvX1J?V-44j%Fnd0A0^Ik|qw7XAJYeFs zhxk*jUc9dFAxyV?^F}=U=)+jyx}S#MK};bCyKvk7_D-(4a+iL4dZrh~V*cDrTtTr- zFU(<(f+vW1Z+Sg7?ytq&>-S>$-bT3pn^PdB;DXulF%&TMb%+m7c-WpFV5pg;5OwH7 zMsglkYrSphn?FH_mv}G7?%{h%D-C2ZS6M@l-o41xzm_J(D&-oed>VE!``&Q9* zSNoyBWc(IJu-*MS26?0&P}C6exE)DBM3>;$eIKLcTh1Stu|GJ`_NDiC9g0>F6_9OGls^8A8v;S^4q3448G@HdM=)S>Dk=Z z&&{*%+`WZy_$XE$;q~j!fS1ujc|@;Sg$*4*_RiN*NaseW2xjMxc5#l{V??Kcq_4wZ3K8hRHVJ&dr z98$z_!fXt!IEta{IiX-VqbE!_NqYxc_oyz1vwZHce>#1+2xoje`QCIoxlTlvS3A(` zZqMPlk+}NIv$5m+NqB2@V>9k9ZpRm2dnGPD{ZuSHdKgPf8}RUG%uO$ZTMzB-2um&G zBb38LoQJQ5hkNn0ue}m4zjP^9mv2XZcMT)16&J8F&n?Wy;=KoP@9qO=r5PS>|KPy} zZS>Tnap>C#^}tlPKwEA(rID-ra$$+aA0VI%zyYqZ-yH6$7tU9=XU{zzHP%|B>mVz-6FldB2m{b5NW&P) z?FkI8@pI%cAA9=~ar;g`e)5w~<=g%{A zrLdeHf)T2$l4pjK?{PTPCE^+f5l%|lHqAcFw@urZkgHCUQ5Ji`N5@5(tqwGVVS?e3 zd*0!Q96`v#z*L4(Pub(I5K=AZ#Jjn98_&}z4-UaoP;{Y1ok-#0@L?{7qOLx3&a$H) z4Gh=bzP)W2mB>Bkp^4X~hQB>n;}etxAc1RVf_rr*SiViYvAa=UeeMDm;em-O@;FVSMh#qlatpaA}J)J&b>cuz{qi7?93T_ouI1iRYht zE*E&%qxkT_ec~d;89Usg+VQ;0 z<9&o)ZzgtOfW;g4;`%!u$MW^H7)HpCqTJ9q(nDI!W9K5yy)YBA&&@^WVk;V0uQ7pD zA4{=65SC2%Nomc<)-=dgoU_b1i0J*jyQQ z*h3(p9dk$(!&Jrv7Q#frwU^JKQLHI|XipFI19G01o5qyy)MWV^pkwLhzFygdigMJb z19mx2kaTW0g52kOUYkEZ1{h0u+?QFATCd2tSWaGdu>e`7Fzb$^c&3}Qc{b**Oy%V2 zmh%I#pHk~)kD$XR3fmnFuif-4vu98IQcW2?dx|is8ZhuE%rw;Pq!F&cYd!2)!*-(9 zWo~1S`W<7)b*HEKW|}N0(9NAU_hRkNgV?yY7=yK~+?@3Y9rlmC{9eF`3zJj;YgQq!B4)LFenb|J) z3L=#6ahX$fIE0}KjgomP8_BH%nqafdedAOK<5?T*KUtG!Xw_Qp$7JL`|YEy@Ce zI*&D?QAaL9IoL%Zc~)r$rQy&no^P*#;WxlD-v-v3v9)!SQ$**_VQ8OUh!>uJHs

    cT-j;@x=Z4z} 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

    =r*G=5IG{g&{HuQy?>I_; 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 IM6N<$g4wQ$A^-pY literal 0 HcmV?d00001 diff --git a/assets/logo.png b/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..280bfd438d2e745b5ed4522d6c0cd1c8c9330cdd GIT binary patch literal 50100 zcmc#)1yfv2)5YCc+}$nM;_ebWI9c3bad&qM?oROFgalbMxO>px1PBluzRmOgh_7n5 zw(eHlxpRBEd(P=T6RV-FfQd$m1_J|wsiY{Y1p@;o`0tB?1pUW`*{=cm1M9A(APv(n zMScvuK(LWglY)V1PDXzQAwsWFT@?-7VPLQz|GuyzF4dMWFc2jrSt%VK)3X=fe2Qhy zt@wtv+7k>h@3OBv)7KNe?^wcU8MLlH@>{4V@9#u)`vx^Tj{A;HKJ{RSNc=uD9m%8^ z@(s%Bxf}k_&afKchR+mN$HVA|nW?CpKa&rGM;|l1v3YcrudVCr|!84=0el*TCZ3-h&by1`x6i6e1>V!+!scL{P&Ii92*-Sn?ETz|3&Hkd!X$5 zf_G#*xzQZsO26mB&lCy@!poI}_i)-NM1tIcwm-fQ$KH>CqMC`hN1WJ^zIeQ@id1VD zNJW0ki~~tKiI=A2&?*3YO2Y2BMMf4=eNa=$0Qt3VoV$~H35ZM>qgB$Bb^=z@sB^Zg z(#`Hlw3PmpYwQDPz`t^F=+Xqqd$Xjv#Q|yIo~ahnBeuR1ATo~W*O&cPFKdO+wXbj| z3FarN0YDfkGiwE>L9GaeR=RX%nT^)eL$5QHQP{PsQ!Il}nf%qb=51;d#ufAO5d;>u zCH&=L?@F*~Nl0am52T|A&z*vW7_5_BK9I2sl#f$Y?2P+HIZazXO?|GHVp-*C zhq$axGppBgS?=>0i4$KQjN^v*rpRz3%FEUk8&adETs`+we(cIKgB&Qy@+vW8@0(z3 zKD9PVhXKaFNz_W2(D<5H+CX34J`=q;I2TU-kzdP;%HK3nwHVu18kW=0!A7SpqgkrQ z6%|B-L5=^;b)SN?3Qj%|uD9xIRIp&e0qk)bC-4&g7+*<1rJC}P)$Q}jH1*5p>Y9E+ zoo#v?G5#|P=3A08o90B?)FS+msw*yXPs&}UM6T`bRV^yDyPxulbP9@Cl&yx8bVb=0 z0=bm+6+)hIVfAGIJ$(C9c1<4CYHi~cCDTXQaw^Wwf`ZdwUncUWVvCcAEvk^i3u)Hm z%V}BHN8ER?1Ol*A=qqp$kt@-il?WCZR~E#+2-YyT@KWJ>q>hq^7*lf7y7%-eRV%DH zFtoWL6vl(ML@AgFP4`OAuZW;1=G|+hzVsRC`A+Ax_cLb`!6kO5jTZZ;_=58D?sq1D zL{)8rr}0k1PFBx%eYB@30n5^Lbzxskk|Q>vRCGrpfXUmT@Pl?$+b|WH_0hAfNoHk! zM4(Lvm;rF2-o1#}5;tU&PH`k`u&&0$!KmjmPX6*;?!axDyr_Ds0oxEbEbyCBye-D8 z1$zLX7mW5ch)O&Z3sigWMOk5^@KdE`ai7??Kfi01&lVGNQ=!3vpFl;mg0!7F$`+UP zLwJ+O&0OrCW990!AfHqILaR1>Q>^|kNGx3u!O|jdM!5nBf+&OPm=cU2QKFKVr1(oa z{W&GuQX*G`29l?HUJH9Hc3zv1wYry8!Od>nTzkpoDq-x^0^2bnlHeaX!|qvFNbODy3R zU1Q1lqLx?IYT!V)YmEfPZ{j~M<5fRXNO8&^8B+MR=iZQ;5HWuId_T5Bi%p(POIZguVG+AZ?}Riu5oRI%BGDOpw**AUU}7`%hKOuG zYKgSsLMp&EXYV6w#TVF$kxvLT@J!uES+~5`Xt?$=%IDJNi%ES^pb0t+W)}3J6$hs& zV7h9b`g@uuVv8##u`2_nn=s&A&---u{JGd9ab6Ta3lIS>@D1c5hVqHA;g$W zI1U=BGf5>^ronOXnCuP+g(=cV7dovC;y`y!O+w%j>L+~o{7?rpq)I7u~oR}7`_h%#3<4g;O5Z9dRAoQ@z z0RwX`l^w)I5U16SKnBJ-X<5GN04CK1nSH4B9uf7y#04tLl!5zeh@-*XdpGJ@UX zy(*d7R9)q2IC8y25>K!GWFk-FMt5E&BB&|yn{nhkc0bF{(TQc5k+Xs2r?=nUDkA}O?y-4ek1nY{>Z4oIA8pjl>Ngy%kf9L zF~U%tAfpm;<^cVe59aIWWj}X^vhuwvvaJptvFE!W(PSS;hsn)J;=p6GsT%W6fP$nN zW7k%CHAra6izmBBIF5^a>3U*@O`sh{nOy24#wZVO!O&_rz1sxu8}sEW50-5!TlsYx zZG}MTk8HNOgW=A7A}x39XcZ3`tb8j}KU^HV&oWV;VlnV-oNo^Uk9oV+Q>&#vU0HVHh| zluNd!)!*A0?nfK9ggE#W&g~+qrMocF3(`{4bll&yv_cFWNb-Sk-GP_ytmtcYOIK|s zZ&y+VHQQzCgy-&7L+NaXrm>p!OsxlXD!@u&T{PG<*Og3WgoFF);(4nPIRx#Bi z$wuw?6Mf_cthj$F>%;Xo9EeSpMH&U_5mvK=^J5QKb%VGuzJvx%yekTAF(orXswqC=t`GOPhkqShS4OqAnp=zk@!7LQ4{Ojx z{2*O}U;pqa+eCwHxyOImKKG$*JQfSnK~MtX6R2-(*~96aU(WrzLcJ*B6#N)}cK?B& zn4y8dRn25o4vHIHaAHU^5}8Aqjt7FU0TUd+?~tlLu(4s|X`dE?q^qgZVyPiMCeRdc zmD>ZPwQr60(`;Qsx%h%vcqEVDBJY8nw2osC#Sy?oWlEsBl$hsCz5cHH zd>d{1cnKn7bnX%V_flguUzyP&;?$|_BP1p!1dH?A&`Yghrm9hrEeD3V6I74@iA(z# z&GWN5h^f?oX(^DgdcYoT99b60u!A{C`c>{(ex)0+%xJl@8l!#dL6j|OsYd3PDM%E^ z*u1rGZ~-;41q04TOlbAEr_MXc?{^Sa+wnk8A{*wOE)UqEhqTUV!%n$&sB3-Y3X@s0 zUg45@H||yi1HyfP!+0y0Rr1jjaipJs*QE8=s=9rx0_kwA#qO|=TvXKP=Cu-9PPndW z09~xH)IcrnV)W!v%sUK=DXGxU$@FWDE*4F9DH<7_&w{?YKPryu-T=_};G;aU*C z;PCqrhEnZx0Aa)u&(}O~PyzRa)PkX-o`nVRa1X3WSwTGfvp&sWM+^#@VUP?z3r2=H zs~{(DLQ%i+&Tw+q6KCA_mcqvXCJrL7u+)~?%2M3rJ0Ou7n*qrWZVU_4S*;Ix@sL=H zhTYC@eGQK#PC<`Ejf}4jwf#J%QL$uuBO5&w3^Y_ulBFv&b+!K2{yVBVD@TT!|DsBt z7C1uIW_9`%N~-wi4E-S+iB1e6-}ANaejAdX8G?Tp(j^FI;t=vY zxm3DtIkS4UMmj_uEy+vdeVSNE+)YL`gK+1j`)%c+&{l=O86?0QDh^xY`#u*rGX&dq z2IVySG-Ej8&Nt^i3i}_u<9c;tT!jm6Mx&H@T7^DwAJ&$X6i`yYauvnRiIwkIHsv49 z?qYPN52ruqsvJ1=bv);nTfUQ23TI<+pcB+_bBp}m@?go&W&0iBRfPL^D;nsQSeuWU z5t>kD#~y!n;Nd( zR!`I#9olC6^D3s=qZZ?0Y1$g-BztIYL$hf&h8>K%1dR4P`W}=}M4ClGHVl`_0P*8Z zVEj1|?9h@BWy6FbL%Xzh=AlXZr<&;zPlWQX(&NjRlgFR!{t2(iAR^rOWf($|r@M3` z9@TJ~Gwx0brWyeV>Xo;x5szL=ZcGHpjT*F_X*#VUZ9|8$wm8U?_LquyK#)0I1=eG%hwCIsoR%8iII_tsf*;lwt>}}J%?W&#bNYOkoc>NGIlp4SR&1BvG67(FAu^$R)&Mq z)Io$?rBRn?af2)X^|*XGe8JV;3~QlSRC0@-SBZ?w;Bs^Y`@lqeE}Ao-D=a~ZweDa> zLFYRUA8f5-m{uRIx!*^2x;ZgTmGGduiApQ{X-B)BS?W3qyh3 zAXz*NzF>UB)*G;mi2fdtCKz9tZ@Ew6=h}d}`l-H7#DarEwzccKMA}WIeYENAXL7gr zJ=aGf*C4o6NT1v_rk9_7j^@2 z&Di@F0tyFXb9OjFr>|$`QWP|ss-R{W8_I+6h)qxKXMXk`44!%>=aQcbT|2f&>!=8Q zC0FoC&w&HaFd~mMgPZB0on?S>rf}J*`x&zv9<@l-7Lx)U5l_nA-sI;U$m1hMSr;(o z{3oc?T_m>josv_2z?{0$n09_zBan+1=g%JfZ*sm@l)7gU`u(z|@T%BfqK?6&Z?bW& z^<$b$Gg^~#3DE;)N5IdZygma~fbspB#jE8Wo(1lVUryeYwylDB!6}HgBRqg_E$uN5QZJ&lR;42}*hGyo?XlE6!u*z%SPF*GA*Vga633B1> z3p21Laogf6T9#?_=3`3y_F{v12;tAj+XZy4eD36P?a~1g^5EANgo^m z5ArL+kE0U8#^1%?)y=0H9m01AMqmeMUK7_RE^f3kuch9X8L=d=wI&!}3NVKjOl%}p zZ#1^S9cJuCqh+-K{nH|;qGZIw`l9`0NJV;ctb?Cg092$)Dwq%-A+w+q(f0ebb3hh+ zu2KOIK;YM8$Dxjr_j&njX-LYsU*^btkQt^xM#^>|m8?EMw$QAj(KKDR_lK>VD)iZ` zj@F-X-bp)*UONr;ko7yc8g!Z2!>Zd8N>GME9t8?dd+A7m8Bpe`^oIBzZ>;0UPDi06 zz7jH{|UCaPZC_=)mbF(pM?pbGzes= zx${%Abq%2$(WnQiCxZCV;D@DIO<`Kv`|E7H(cXx}t*_tC zl#Gr;9TgOlaGN6Ab9IoHTbeT^Mwi{_7^_iPq$$uKB%zF<)AFG@{CN6;xE5Va#wmoJ~q)t^+0cYDG*`IEFXP$&3hrfskXDaypmmaEZHP4f>o@0*6~cbS^r zB5Bfx<=_q4Km-hn(9R3)+3T$I1n)9e90lF0S6UHdP3qKkjsEDH0r&km?*%!G9wc|z zuybNG1?&;r2bZAi&r5uZ-T$7I7NKK~mKn!X5Zj3<)op8P8i^Tzm(O{ctMP}q{et@m zSv-(S>{+C!O530ZN;pV?NL|-B6>p7ilG^EXZDrt;*BSqZRGhaMS<{fviWN6I8y|sa zs)Ejk3g)fb-MVjQHQb{4M!~i{SkSd2E{(6j(8P&aAZ%ifE;K;8<`gV-N6nu@Xb1iI zgHw1YW&Wl(>0o0H;pSv8aPCd+nL@@#?AILeFtc{2pQb)wKhwyIx|R=Yp7n!mJfc5~ zq4*Sa0+x?ApVZ<&Ql{&lq5!Cx#OO&A7?04CftDRW3&L8gjYoBmJN&Oy6@Y;2j@}e; zzdeg3fEBTOsK8=CV0M~=M80V?d#Xi+=JHgMo;5%9pi0y9Rxv_-+i)TzSv0g|2TtzO z?fP8vG)24mP<-6dHy6T9b(6 zxfAdv1|*x#V__#0evN#{M)4k(c!Rg8o8`>&ynQ1UuKpWt8rGqu0qggtjiz70^$CF+ zgfa?BYLiE!%*Ub3`k4NvunOgY&VP`#36eY#vXi^H@BRF39=*@cJ-*{Q5D#yZ2F5aM z?+X#{2`X)1gVM_`nYsg{OdUl1dS-?*ERRu5RK{%${uy2_s=v}eP0b)eL{n!LwB41z z9#yiqZD!WTn@^a;BtLBHW$DYg{)|c2L9d%j<7Jcmg0eq#jUpUgpDTBOX~Mmt}OwcKa{(7SWLN*j9OMud^0I}Lq3`~tvjHW2kENg zBt?{)M67j3pm}e}0Xs=~_{x~e!GH+4$Cd&CK2Z8!$H7~zGJf|#|UuIwk(8X^+I@(3JTRyenBGTtBgjLqh_6jhc7MS_UYrJ~D@M~9f`f8hee z8F9+T-|Y``F5*fj*o8J?I#+J`o@CeW_{{w2*BcbKk55G-xYYG5*I`N!3TD8Y`rJJN z_Arhvc2k}=ba20*Id!lgMpvp=v}4yv4PlCT066M)V&+3O~f-Ij`>Bi*TY7mz*EPLOHFHWI8dsFqA{n@Z=zH^W}0Z~$cm9x># zNv*U^pz32?)yKvzd_h-wVPyU2CXck_ABWlwnfCuOE-||%42j0D-e6|$MJ>M|Em6*c zZ%qE|9BFMcPlEM!pHv#1&6seOx}ZX=1NQM{*!aYr|xZX5x7jPt~iad zU)sk2Kjn)n#PYnwZB@c1q)d)Dtr{&z^rcL^{$Uf~>Xy z9Z1tv2R(udsBpM#V+|^{FY9X3-r(Ak_oSJ`!Kxxh&|+>km{emk->n=%G02Yrh$rHRwG3r2CY^DEEr=%v9TQn~v+@;Vi^9S7Z)6k*DP%g^+wT!V z=Xb=~9_+@Ejc}i;Ipj}xA@$g>)0(~rVe%q)Bb`cy9mkd+aa-J5L-s!N9Nei ze2@%vbTB62=a*f#ML{fe21(H8h(OpON$4;*&|#DcOj?>dFXR29TR#sga4 zWe}tfvy3FPUTZQvy050+%afwBXOf!Id>*$#&V^r)BQ{W{jAgq{rkVbPcL#`{mFBXX zbpZ*DMRU5B-|0}dC%blAkdnnCh zMwcoopn^zS8t6=0V<^57x1!)A)w8UevVjUufz}Y{*y^{wES<({&;%k@i??*&D9>-1 z)#@}O9DCecIUD4Ni_IgXbInnlNmb}d6ZGpnq2FP_cl^$$GPjtCi7kjxHWpIv2C(@q zuK-+H@FLTEkUWI5h#^bmZnduY&-HfZRp*Z0b7&reIYY{3qiRr|!ougfh*R07EwwAi zqGlr^aL@4Dz#Tco!U-1jr0a%r!k^d|+E^3%SwY;(4m`nT` zMMqB1EGK+7_@Jax6g69ifCwo0Qdyw7vR`|E6x@bNj#$H2liO)0$9`?gvob;{;bC4c zTWdJs=~qpD#Ic#NMmw#I3`Ty^plfNcj4BWf`xw z%T5WJ21s|3704^NH#Uel$jhODb7yS6tGMhxrgzHUVL_}GnY-^aZCTrc0MygO2NgAH zDyUN4QSE)7XC|9-ZY71z9b<`QmceLLz1G;>qSeqnyg<(-OH8{tMXS2@mJ;}}O)zR! zm7J7Tu(<$@S?rVR=gH9rhfKUbm%OXp`b#C9{5=2i$4xq(QlY&wHArWW&)&IuTL!I7 z8!R>lElq*yvhr&+W*IznV}XJkm4AV*=wOh(z@D#$$e71ew&=$g zO|}%<*4@PMKBC(j%V;tY#D{-H9DzA2Ns6SR8Dt+F`FZnTLY?7CwPm;F$FBf2N!x#A z&{pEe7<0x#>#-&Ov8-A9-aN-8jbmJJZ8-B8#R}-3Q^zVRR?wql#*Zq;vKBoovEq>%sX9i`*P#wT)KVOmHjlcgbdNQI-kbru}CU zr*9TuD)K|?k#~wtnexyO4r$s69Ob1(>Ati;Pj{5DEAPN9AhKU!Y&HQX5N$g%t^sY_ z!$=y@$AN|k#geGv_Cw8$yL?7bu>Ju3KcRXqke$|e$rY4a&!y_U_YzVSb%VCV!(q+4 z07Qi;O%@dCdIOUoe{^1_NFj@l@~mlut0 zGx12Y_;x^-F~{$j80pP9=@`{e8=%Cv6dAgQv^R2E8}`{Y$Tj+p;aftUZDE4B`IXB@uBnSI(aJrdftk)$tt zr0A+O@WFmo;c{#Z;Sh|(+Nkx*LTd+Slnj?29dbMi*t%jEXjv$ zVXC`ac9V^=eD0e}rZuL8_%Tra*Kb`X_VurBh_3dtmSlE_th z%>b8EQ4j6w>6&ss!MSYUrJ^B0VeN@4WRy*chct%yTY`ar6qbht8|2X~*Bj-zlR)p$K_z%FWtH$k&QL%^oRVSY(tM(kM%&MBbL_Cx=0g7DYoGTz8qVs=H|kO?Zp6f?D$p^{l_Bf zcP=?Zte~TPPxeggsI4lmme zNpJ%=n`!x;Z1Do;BuxftudygXHj$5F~{hn;7g!RI00X)IP>FO?Omu#YU|{f2sW z+84p;BChj(TdkcZ1a;!cJslS(* z5k-fWKu<4}cde()Gt-&g&LLiZm(kwJn?>@r?35Y@MUSM9)uO$BMf1-rM&t33Vy99ae@I$%QXQ8#3C zSn+Nvr_S9}sX|M7s1PH_a60f2k!3p&!UmGD;FELqMMrKN{i0gmN*34H;Zz6Pfl$6T zyTI((O^eyo>Fp1`pv%4`=_P?^)vYX@>xVL*cxCfZs9ls6Avrp?LM5 zF@HrH2Z2Lq;co5B;{<@X{DB2Xq1^@1UR9XYD!P}-?$hFGofG;Qvd2aP|40p&Nh33Q z7?#}#6CjBweV!j98vjz%t@$=IYoP2|EVqYO7Rdu{L6KCSdOKLIF4I7D9=w`tdaRA{ zr4kPszv&uqulac8Q^|5RZOcKRbq8-69US#cKJvRuny34ctSCtjo`AZ8JyT%A6y7@~iEkYf9VT6XD)4OtfZE%vhf{>|!< zKO*Ox3(t^+hODvQMqJv8D9S(P#fsH2<)N2KUG1_^CB*V|Rk-4q0X)vW^BmCu% zkC|{_9046>U?$2y1zluHXwxxnniTzl>2wcT?^68rC-qL`;bw$4Eo?M_wH?ad`Ltt$ zCxH6SLt#YB6MA(AGK5~}YWnTneAF;)Klv@~&QBUNbreqp*-fP*am9(=xW--t)Q>o` z!tP*)(h49@SoAbQ(PVo&hsNtZBc=#v#0FO)v5C}Qc?BGHY7TrGl)0o%z>kp#l%kAN z6nwFP?%PsGn2Ggq--0kwcT?JB=;aYqA`*IFa2sVh*5%5{c3$?41!X7SMR+zhsprka zwr)nXnn>%jm8s1iUYbUMrh`ef?;+gPNiTm7ZJ~7(cBBbSF1+pM`>jo>NM+cep7w1* z;0QLg4?g+k;!0LaydgdX+Gl>Dwb-U81hane;p-163P(7aCRwbJ4Am%epXRlV%Y0)p zUp@Fe5f;x8NWxd+o4GsB8mU81gdK9RbWZ^(!fi;5ve|{mt3uicCEAj(^2@1gw43tx ziL^mVjhIa?_14u{bRLB5V(b&ieg|AW>Xhg9Wot|qC7s~NW)yClZ!sYj78I0Xcu~v# zY3r#j7uE+xsVE+Po@MHB6ENaD_+kV-E!{ml36V%qxi6m_@y5G5eKqS^HRk^?Y$L>P zyg#E%?c01>4>tAh!F6V*Ro!6c^pR*UG{b6?dkrMZ-#5*GcM$|%LI1_jYr|Is1ztTgag4QNPJ0(i2}7!3lC^AIbYuA^i3c0;mlw9&Z7W- zOh8=y72qq8@v)}v5EqGpZrxV_xbo;A5~HNq*oVS;t-RCHcOwhk~+Lq#6DvZIi<9WGg{h@{`R!tf>Txc*KJ!pBNMeP@MkQf|8)ula@3LDQog znX|u8>T87N2U-X!l%0dR7;G1-$6A)Rwrs7Wan{! zHcb+Uq1S;3$9_5^(&|O(pZQvH?M_Aw{y;mTfo?Z`bWAI@HRRw)f`z4mOr%=WMs=<3 z;fHNQFAv`Kj(+Zr<0B@NJarVZ`g+YB``txuj6It%QTl~Ah!koh1los@vNoKaP!YQd zac|IJ8I!FEKU%}q4!CcM%@YOfG9n+v{d^Lx(XlTxy|BYfHA4>X(USe!$9y-S-sYm# z>qR{ExRBk%1J!T&N{(3aZ^(^i3grI<%`YyD$AofyiqIlSqz>8ljoa!dykARB%^n>? z&V&`54C9bbug`r#c&d;SjPz5FI|3V0voph7{V#G;&K>7PeR;F=D<(Khbc-4L zWXai`cJitle5g=O%jIT=*3%g~2My5~^|ZhKy<1F90e6cjv7Umpqu#nTbY5mhml(HQ zoKFTWF=(>%s4Jhu5O?a=pKrc;r93@0aqP^fLWjc>_Y?Uvm$R#-&`N{z#+iZj6W(YI zGU4!1=bY7%^q&xp_!`4Q4W)h_YpVxA*@h#@8)<;0>oRiY)Bc)Sf{i1+?)68K1Gs-O z>&@oSwa;z4A+BEvC|qPN3Aj@^3=%Q5k!6$krAVSc?9`W#+mgLe!L}|m*2*V;x&lSkId0FPn|yUC=FUT{#WC4 z9S7_xpvG0Hj5_sw=N|8`v2RmUnX~*mj-BRW?7)tb3FgFkimv8vP5%Mb*FOL*mi$}? zaSMXhQOb^o7_9yYl!zxIm$pA1ez9gPp`Ge(E&_+dk878|k$Hs#)FVN@0X>*ozB!~&!EOPsm>nb*V~MpRn*L9E}|(s2H6Oa4CL^N%G;e&l?hUD@VA5 z(l{>SY9>zE*)tpdvir9WMby=>)(*|ak#ojrWMyreKlC&PJiW_9x1nhw4STSphy;^! z#IKx(HFd$#c=s_jMDTk^FUbB=igCN4*!bGPMlLM6?p|0cc=wICFvWR%RP^_PDvI?d zCq;|-1*pEK3M=avN@o~{$_CS=I)=*~tud_8a7<+MLQl1%8fi!_QVyPsiwP-xBQ%bk zU+?%acuN+8En&qEypCMln1DZB(mYBxFDf4sz6zkwdW%kZZ45z#Htf3PGf>GO+zHR= zxBdO?ctNi(XZuCK9kKy)kb#SWKhy5y@-)7lJ8$$q-M6PmH9+L#efHm@G_J{~hOI^Tmvo@S{1^T>5tM-FmcKfJqzx->gTZpGQ zpm&EjcHU9TnVc`=39rQz*R$WCYg`zm=C)lo@ykJ7y!9Qc>j|xb4KL@OYlgPBxKbn= zz6aPWFbByZi5tv|{7*G;Ua%m?BOr{a62i}H&}DamZ>V@{EO%sJc8$jr`U+~uRWkpJ^DY2hnEjj@BHss=Pl+2OV? z+Ab3R*0akD)X4|A@}s&m;$nK0Gs9q?D(?*&f84dkLQ!s&?(r9yyS>HX@8%1V(CT9K zhCoGzxU{42DO4W*X_$5=KZosHeS>3#+sNPt+M-4}BeFZYTALWPxcbqmZ}PJD?K2%Y z^Tf-I@dcsgiU&->XV=7g<{<5wNxn8Qffu@<^+M#od7WJg`uJlE(sF8B3e|64{cS1e z9~Tt|J5a8))Fxuu?;N4-YHL~oKZu@>iS5nAs;ksJtzjPTXllql|4rwN=|i{VX@R?N z^5o*mU#S&#sf4zgf0>A6l&JM>@?HI5^o*}5bM?^A_dyofm84n3Sx~8w3$7E_%aI=a zlJ>$7sA&YH@%mPA@IMDn$SN&JXluMm!2e$T4Ll$@?7Xg$F6hW0E~;v`C%nh; zG0^!Z?V72uxaRLG^7=50UNoh@FN&?*tzmyt1fc zQ6(fcPY^W%^MW4D0ny}^e{)ClTS3dG?==)~Rn?wJw`@>RHpZS6brH@1>~0-81XGH1 zgYaI`rd5y=cIogyt#q7C)?!t$y2A9H71SM;^MN+?gnf{a6nb02hv+sJo zN8GR1iC^+2vW->en(G|&!H2$`yK8jSm+~OYct@JlTaa_jQA%J1#yo- zL#VdN>>RF_u|m30?d)!e8+?tln(Xa$_X+SA;-_`6DILI&b~q>B`tRsl4^3+znieB% z8YZxtA;qI5394gD6pVygWORyVx8@d530^ss{Yx!p8W~YD`7a`)uBnvwvrZui4}q&gcyT z(Ph!#zPg&8{RlSY7tgAn%#6;aOx%3pe6qh)0p~FcfmFN~l4E<;#9N<-8S3Mf<_1@+ zuX>2CdU)yI#oh5ldUGr9j-YrLM7~1$Y}nQT}~!m4*%hHyOXGQesVx%+rmSPk)o-De}64te$Iro z*yVdD)!mo9GEI)a?G3D4As>yF5=UNBXpzX2=?+WNwLGzO%H9=UsB5{K;MYo?Y8d9Mw*1%{E{A4=2qQ(u4Nw7m{i~v&8#_ z27l<{@z3k}OaxUEpV>GJ4hifks~Y$5AiVF7T%b!5mO*{gj3K3VyKMe~n`A4rFiUt} zpnhNK{H!hf)rHL+VI5m^9KP@+t9#A%tl?{0&DQhL>CoWh={_%2iQB((MPY$HcD<9* zr#Kt&g8HA$W~CR_gQ`Gs^FWbt+G+Hfl$|OZPuLMU=8(jSjD$~kq+FhJH;r#ahUpej zHpIhu7H^Y)zjb9;5^Codse3@E(8!QA=>wzk@rtGisV+X!$3%*E=-(_(uF%;fr^?u74pbOVASE#i(bd~}+u%VfKphjQExX_Kd zm`fTni2gO)xKDb&!%AtnlpcUReH)D1Wn*vm=cZR!mWV8iSOU4W%eSD%;e9JE+P3gW zE9TQVcjb~@lKE%QSCn{R%(f>P1n6z|Ca4?U#<}9_dX?xl^2|c_LjPdjgv4o3WHl3w z1h34Dz)mN=5TY4Bl9?x^mgKV4$?WNNmgkDkEBbkUA}4xNUcZbQckG?I{Pzcafp?2O z6xp2*Le!x==S<69nYuF@^z^6MzWk+bTP2v&QN1|q(k!ii&*-oOH07jVIeLd>Eh0}L~P&EhV z))~|f1umiCdES^Mdi`VU>TIFc?}N@Y2|R{R`v)f-sHLA>)HM`5ax)QSPD>WArZf0t9- zv+&i@clVbG>^Rfqu%DwB}}D?ez?m%lC* zfAle0mjsNA$IN#?90CDJ4#k=%lW(rzF|^`C8s{LKl&5dMz|S)?CBq39!wz$E_%z>i zlkyk4h~~VC9;FI2(4@{4H5r(XjpL<7A#%??NYghsf4BNx*8!b}LW#p{_`=ssBuP+A zpKN_IWNAGN_MtR*#qDfplw5iKmLkd|O|(7wN36x=Tet`A^y2TKJE~~cuZQ2_?S~Hp z6Jzt1%~QznbUM7hL{V@=mUz&uyExEyinbcMtBd?N@s5u&52j|7DiRm6whDU zFQ8b2Pr@+#DzB(&Y*wv>PBSft>E=&we=c7v!Zs z`olB$qI~ywpnLnDP&D#e6HPANuQJ_=;$pFV(XkIa_uaVn-{MzV<%N@hqD7oSn${PY z+~asYcF+)kx~ngyd{ITnH;fcZx{6HDe2~BcKv0;6YL=zGxgY+SBlQhWI@XYJN)jBPO~7h)5G(V$9pT%)OvCNevd8=RHrs1`a4O1W0iY&L|eAGZ^=nw}V^{!wF*rA;XyD3yk+k3dmQ=!ZMejra zgYK|;O18#2ALIO`AYq5o+2jUo5|3hNrN zp5T5aYak=^!_4X1sEgp8PC$sj7ga;oW!z~lvFMaV47n8NWu49<|L}YNCC1Q#6#m&! z1pb}(=>B)u-aB@36Usn}FGcKIEM?i@4Sn{J+FXYHuDrEx?!7o`?`yA0~P!>9Ch=H9RaEqMr z-JPuhKxpojmU8KLKcIGUx!rdSR4|BpYB101$0vVSv-ra|;P#1VQc%zR8jZX&C#->P zVNofPL3NHnm4R5Elj%IXY4)I+>53e?X>@kg?Ob&Brquu{Dyvsjpkg4`RbW7s&%Q^c zd7wf2%tYh*N548gqLaw2^8Ht3C?9fu3xb*m3ZOm|H>yf$aC*|mnuX1CmKWp6hE4h8 zh*1Bqmc3^ddMG)(S?PUs@4n=ErOhM$VGli$VrwAoi#^o)B1BrHbq)~mjf)6I=)4ev>3M zK|jX(^Wh@xz6?h|xY;a0?DYU)ig0d$X2)vwwuSZoSh@y>KHsmsw5(6Ixoj`nc55x$ zwr$(4LuPpo2=YguV?{d!a;%B#~0%|LbLypm(-40#fo-#pl2Q~D#`HOGpLhqm!i$? zkVHEFE2jPB>tAdHz&g1`|plOXHm(x{G%g=Dr{g_60xgUxL+qh~KLDn0zHKfJ203rq6~U*zAXv!iF%#`%gX}kr6jtaW z-JSNw$N$na=`~--MJIlUl$34D*!o;R=TDtUaR4iE{6t(dQ$CZ$_-uu&8$N2?<_G{X{Dq(MdPJmH5(kK(*))Gda*6Q|I^}zuv>n@JxE zjg!%+Ahb2ZnR+s#n3O!vi@u#0B(g0VU#gXQV4FY-rQY9H$bxl zax2y%Dfa1=h;XVrI0rHtMZ1M^&B&2l9 ze-O5oik9vQdini`1H44kciFQ5S%Re&akrcvIe5qnbhQGYBaDg3&9_ds-=K^;dMcKmu6MCX!K;y>?F z=Q^Vf@D#AFC}mL)7fi+w(Ruf5*l(zcv-nkrje=!R7hsWNqbB)F!g)5__X+k!wl8!* z?$kHpQ1lekvE-sjX&oC)V(p-2pN>PXW>$7-Oy=|4G0;ZoF0)gKA^7v(aCf@VPdG6RNY3B zfq76KV`^UCf{{JD)y z62QrJYvwJ1`nA17kyBKTvyTU`#YE(Syb7@eQK%Tq4hh1dTcF->c#!;YQXmnMKOJDZ z8;n%EHp)5T!*&PIb5>}k!7blyn@!gl5Xp&I0+gALSSS+Pd6zvbeE@1~bj-mlyI2;% zAic8BVDT_Ssw7@w0coGwHp3RMD+KEd=`Tqh3Jq~1iQ~%t!Xe)#9 zpeaTtKMr+H1`Dis<8d2Uc=K*Ny>?=Sr#!3!tHvZ49fQmz;2>83IJhd()R+o;k}szD z79}Wu8)9^y1hLcudv+Ms?>=7`ciw1~as%E=Y|Q_4!2c!??8bPY9to)vrnbiYTMk>m zeOtO{ms2lqj(HHyhjrzOnZPAM#sI~NNzw%cQaZ8gsX;H!Rs;5Vl#sPS@>40dY&*c) z0N&lg1?hC%yMDgz%->fxl334=#n$~>1YS;GVw6K)Lp0MK2Jq|PT4~OI4(|O7nwy5h z%1?5x$@G#tpqi%~uw0qpx$3(306o5P>I?&n6ih6DVfx(ppmGQggxCq^xWb zWqJ zADFPT1~(ga%|+d~_KdI>a=|v_ST!5nx!5OLkU&lq8Bnf7TlZ*9_ksjk`JApOYPXqj zb{tFyA3 ztUdA#@p#`RGL?DF>|sVIG@dEOd^Z+)AM6Ul_f!nYbfk{0+Imy2VMtTQR{b=CX% zT6Qjg*bg+pk@PHj2WP}D*7e=)_?KP!0~tg2#&R!2-pI&}M*Jot_i(b)-Hzh^FS@PF z6D}D_sxO2CEt1PSYC*v$VeV@Ex)KcJ(wo?{mF2=e;}I5v!LQC>k2k^=AG5nafy#Y? zNgh1@=ix&TzD7>Ex+MPkt=vbgOOOO(H-w>nkNNR7Vp6usU6pLr4eBFNsu9i!9|m|6 zMMX;3;(wDI3gOhBH=PnjTu^;Vv3%PYczgmsV`_^YM7;YDX*3w{P!HW@(fHuf(xCxePX336q%xZ zAv>G#5x%u+7XqniUI51XJ0-WD_5Y5;h;B4DDEz5-9+aGB89T*2ah$!eGwDFnpH;?pM{703D!#s<4msH z1u3MLaBPiLFEWD)$zWldsH^a0 zmUqxmHxnU@Zdna1SqbUB}F*p7DEA;tFN(Lo|GzO@9i z9B2()4J_ae&wp9$L!PllOFI0I?D-8_R5#l*Uz*k=k&sP49u-ycIsL1vSJvv5Ck33j zz&hB47d)&1*n2Z{aI3(M)xyO(122RDf23)vpQ+pDw|^HZR8zw=YFz?Z^sqlVJ_80G zNY*bJTSaC-|48dj7?h`Fz={5M(B1~|bBKW-#F6UW@QO!k7)8v{4^lRQN#&ObD(eFo zpj+4D;ZK@O1le5IzgzV#hA z8_J>9f*}Mtv2-g7V>s}rFz2G@D+L{PnurW5a-(}Tey$+GYz*mW?~}4qn-xU(6G3=g=)Z-;C&lsy->~Fs`&@Vn1Olv~n<*~8 z74x~`xzWg8^EG&3Nhn}+@V#=z9%oq&oq`?rxbeUAel4IM_$!@+QX};Dof-0O?@!b3 z=S+-*8@Du86g%XfiH3ZutO8QG^64dgK|=srr|pzbFMcryaCtXy7v1Rr&ZpG)p?0v! zC&g^|lA{Jv(d5VDq z^PQ9W=LMP$w&hD`fXc#(QB+51BtqtU7~N0Ky070Q~Zw2JW&n@Xlhvx0K#7A9Ttk{ms2XF>0JYmc1Ta2+v@ zkM^Lc2Wx;f?stPqSbFu5`$WqCRWQJ?!ez-+ko8gvt*+QH!1W}(s;3`HVrbFM z&2$y8#H>1()lu3e`fPZ!ey^&!1wz^|A*_S2LeHg4(be|Y%J^m8x;h6!LvLC{KNxtQ zPeDwjZ#e}kEEr!B=hyVVFxbZ|4UA{f?DE@5bN-yZo92DqwyhnyIQy}?u>7#2`>J|M zatr=)RY=E|73Q1QnK=Z_H>mFT_OC7j=tgzFx;4ruKYfx$;{B${Nn(c4oZ=n(lbisj zWX+wDI|Q`IJ?s$0m+K$Fy|WU{wNs}RF~uv{KfJ^L}KzKRi#pqF4e%=w%F%wlcn7gQhaI4s2~r-%cw0^ z;jJDO0cHAPgV)seULH`l5^#VB3EZG+j~d$H)SV5TwxfYdATsu4j^BB~)qakW9Sk3y zGUwZ)&YD2ac>?dF6nz9IbxvNDGHDANPz~HJ=L#bUDusC{AM;t_r6x;iu2LUn!bH`k z4d_-R5+12q@ieqY7j6y8QvOtmLaJ^mMUUD}y4!AN5B(yR8+O}!cuV4g(p5+>%nij+%|2ghanbLLQ$)2H~z z!QP+Q5T~4-RmBC|W1Y!;3W3le@QkQHSOIT97XPo1{%fXNum+jXJ+Y7rJA=9VcG4wh zWxP~e!1uF-%kTJ9bOpoO|0ES@ZzR9b2F$m)4`jA7M~MaTz`>wz7^}5#Ib0?iQd*r9 zW|AIZo$r~Sj>)jVjj7zbv_WE%6%dxTXtv+5=5?{H2mI3Nj z!SPa)^agW>TN%}g{3s-f8RQF>SA3r1TGo&b*B{Zh&s4doVM9ym$9>tM_27ko{DoEc zpc=tnsIt@$d{WN+09f4O!@memwnS0ta0}L+dmP000QXGOQ)7+LbW1;0)(tzDVD}19<_$ z9%A9d84FK(~V`2u=zsxEPjJ zD*g9vd6xA2&OmLCT6>!S-IesqZ|N6hsu;EHj~5%l`|KWjuYgaLqI8z~BZY{Bmq%!q zP)0e2oJb*6xI$jNY!yR^J-cX`^3Ky4Fbqi4T?lCEBQEhlrV{_8!cF4K%FYp;ah<#Qg0Im+ zVUr$giV4Hg7j|DMO%^FIYJ?+x$qynb5G$`zni~`M z@=))n(RIk6!6#ku6j5hid&2J5%8z4_bU3TOaR4E?1MD@qP)W92R>iAboNKnoCC-%> zKGYTJ@HO^zEvrx(zQWY>GNAVo=?vZ@rr}ulYPnCB%mX9Mg;--JdLjP3EuEknIsA_U zc^tbW7et&l0SY^m)uPkKAE)CQscaM$Hg#EC&0;|RoeF#9fo~9EN6@QG&tZwNOAg&RfQ zN=W33mvn9;db}8nH61ySZ<%(aX!9THO#Cm3UYTZQWm*Ln&O}Ca7@<(k19jt6JX=1r zcX-7|xj4{Hw1tB{GrgPIf=2`<%}-q!x9Z3J5~z*-u?9~{)6$|b@bbIn#2SDt(ZoN( zRpXhvA`j=A7?F(0*lwoAWVOLz^e6uAMPLF3*$}Br<4UE|lZD5@8%o%1QK|DHoEWr=hpa8{wWIk@t zSY(9NKQIpo5(D7thZ#-%%?j!xK%ICwQ4h<^7VYn^UXop~*bVvWf$03%-2RinJ?*s( zjNuZA8f?So zO}iU%K~S(g#Evc{QU2BWm=?7Q^ZG6@Y&GhYxQ6+^jZMd)x_P8)Z48siVR+&?PQvXA z`d*r%?)^uEQ}O)w1BgIiorj%^p2X&FS7ZTv&Sx)fZMh`f;3-GE2Hg@%A))0)tu5RS z$5EGfH;lUfywXUu9{s9}dT2S9Filfn%OCG7Y6GillF0 zLTs^0yc7^Z3sgvfqhnzvpCiK{WEoNL&ru^yyuyYis!+{7e1y4E~q;*&2@)&-LK4eSz3{ucJ{w=EB26%-)Ui#XL_-8j=a#h zn-x~=ns`$$KK;V|c#RNO8mWhFkq-lPyriC;!-_x>;nK{v}VyH2@13p@ROXT}OogFb=LjrR%qxA3tM4Ru){NhMgd^3f$$S6UOnYXs_LN^H8K9`Rz?9=>PF z={Od$b7UvZAB6wAQg-ev4JN%X}a}%NCX0h6w!#Q z8Wno{Rr8)(Ig|B|l$mrT_aYXV>xIJoQw*k|9D4o zkO%I}f2%{sSAnN4_*++`kGE8>@!CyCXN%vJU4ueYB`j0+3Tl4vYzh8K940dv2Hy{1 ze8U6t(@YOE-sFpnE!jGZ6PvGQH{=Af@zZ=Q0>jzs=4GXyKev zEAK;egO_r`-TWa{4CdegO6`EUVXVg+KHQZBXl0l*br{yU_NX}SuVoBoesC9TPFewm z5J(pf22gfA4c@f0?BM$ND@+;ai!T{w+|0Hh`=xQ&5YOi&MOS_oL#>}CH2(YjF=IwM zHq_~BDD|n~uFNXD0I3I9cR=o=|JNj$$hch@+D@DuiF|*e!Pf+RGu^sxbYZPC6qqqD zuubi-CkIJ2L3wRBjHZa26D%Esc=y&H7ju7dZ)T{}3al^RE}|43w%s@yzE~A;GE18s zGQOD%n2$RuNRtZxM-98Q*L3txiF2>mN*+1) zwV4{t%{Es6H+838NMC-VlV7t*CfXf@7mm`DmRaZ|S?Ghs#JyRu0*GoyU>bx`t}d_p_2K{g~bTo86aJf#O5ohuS02*N7)mp@E5u zS6pYzFTE4`W<>gtHILqjlqur3-$g?w+{xo0FGzYd%6B_LrfIFDV-wGG<;H;Dn`W@> zzLTleA<8waButTowcQZORXbI{s0Fa3rvmmX;bAueBf8O_QL}s?DlSMI{yul#J?+2! z!?>C1@PU*gg0?Biv-R_so9@K(c;Hv;&_QX!bDjNNfwh&zr|%Mxin7-lvWN9Rlf&QZ zDS3;(G{jZA%~?TBV)kq-ws%?c-)fC>3ZT)g>MfEWGxi{dUXD>@3D1Ysr05N}gKcUB z$K2yYqhM}x38yVyqF+7Z<}O^%zt5!n=?D{?zGTX|J;mZI-r}=k@^rn)aou^(`ugVb zH8}RGT=vLds)qwn$iG)HzANIt-zjW<=wBEM^s<(qP_sVvu`cIQrl`2B--K}?j-?NI zV)xH!+~Ecdg6t5CBrk_eyH7_-0Szf&MQ@@V$&m(?k=sCmS&|WQ)IlOhx9jkH94fGf z1d0sjm*=mShrfD$d>v3^tiMm@T7=4L3Ms96H-TpjtGEA`F_aQ(Mp*4bq}1y@$3U_svjPt_6N;ft>)$jWbI9_K=51`lcP# zu&uqb|NSDER?YX$ab)Kp-QBzGeN3XfMRdo897+%UCj0TiR^q_GjCwT%tfFfZOw$aU z@eyE4h5Atqj!AAGp+ip4po0x{l4F7LrSYd#+e=%&6lqsW9*;OAWcNRwf0mfcCj2r%vEikpAJz8UQmUhRV4MQ&T zF&>wMb=Q<9RNaI!o+(D=rgk6UH`^H#%V85yoBp& zZ_U#Er8{sTHr+&hX4CT~z2EhVsZoTGx%TPO%MZNErRlL&(Z)a??O}f4{&6M{`mn`v zu%kj8OL-<onHSwem^qPZQgS6gKg5o(x3;_(e?lx(S48V#MNR~yte!|!knTGPAKvXG9 zeBk(g82qFf_3}*g#R}Q$pZQB^%XSC!yQeLG1;z9U*SRcvaQ`zzK{w{`6s3T7YeOPK zMIH`MQgm8{f#t_D`Rwk!zJ0Be*XL!IHdHK#4sW$wzF`=?6&R=$?8-x1ZXQ2-aVx=v zT!+Q)@SA(rlzh$25n1jPS@Gh!NqC=#Y<)T-P>u2|Po!BN-SHy(l7)s?3Hq){LkY^ z=VRLHW}4?Eeubg}%c#iNQ7wf0SG31{c%iIK1#c&-@1`6ixqwTq3lq{O$*9ZSk~Z~@ z<3ka9s{||d?HhQ<6P+~NCj;d7Fui(5Wr8Me<|M{XgWZEg=Q-!Z32NtYJZsWowfvvF zJ=L_kvMu_|{Ftopre%CK>rJA+AN_1uNa!j{2ZQSuriCd#YpuAd#%sij|9pyY>(T6A zQ?18Paz2Fkf0BZ4SKnauUgojNJRaLHPoDrebwgd{M)mhf37Xddj)R)bO6qrAb=>61u&(SGaWp?Y*tDx7y z%{gBY@f&`tUqQXxx(TOG(|I<(;vQgMKpDNqZRqR<8W%6YjV*0gJ8t~VY%ceVA z$QPxB_2dmf;D>1_$dQjk@>WuW+WLhm(8x*?lz#v?2h%3Z2%6YUtnU+%Sw&@bP6;_b z-I-6&%K@p84!-|6OOeI2de9W}f?AsUSLef~HOD31h_*Z1fs3DefEy>vz+ zrq?t!_3oba$+OVZ#r{nBf4le{xA@or7NjRF{L|aKsSN#o(~x*(h6UFw(m?D)p=>iLEjP0 z^JF?%G5trm9m8OB1Xi|r9r(gaRmG9t23fEJ$KKBmW*5RJ3rwP^iv9Zr zye|>=q#GHJ0TYH+aI~babp3A?ChX6STLG-4yCEvH38jPzDBL%!hTFwrFd4Fk4f%i0fa_!R|^`VvZHv`8&(|CAES&3lx zqQY28WS{M}bsRN`#biJyb>=(|kDJC;@%-jgZxynGig zx`^=!%ioP<)$M)x^=&e8#mp%Zp;x{A*;3D8tC5d%#&>O$2*TG&dLDKK{qqN1aOZCYq<-gOc+Lnc{)-Ufu{x8qM z(uwb9@GHXU0N{#_!|mPYG2&TK5Qn^_CVKrTDWIIzUWdva_IU*W0Wf5lS3W06%T^WR zA}-xnq_?7ZRx2=0CM3a=W7+FQNUoYl4%t;1o{J^?CYPF*@v%sPELJzr7V+7aTHX-2 zhTcA#_#8br1jtf&>%z3~Ua!S*zk+11&zT^9lsjgI8c2U@G)?+3$qI2@|Kp$%k538weX}lExEToBRATWsB5l(9J2+3RavFc0YPmckQfEgJ1)4 zZJK$#xKNpfU)~`CHbdzHUiVElxt2RzuDHOS-*OUfV|`8|Z=J|2&K#~twxf(*IzAnG;jRTPMDSscD|>Ay>FD=r{y3u=o>Ixz%}XE;7TR$N z#_E>WZ00SAR-{`q+|v2EC)@OUs+nkE8=l^PqgeN*hIA9%WupGnm zLTDXeE7%*lL}ta0PXs62I3Dlhk@9z12ECQ|y8KXE(wv0&J$Yw68k0GyWnd|U=Jj`| zdBr(6UF?Q2%xcKQAF1`8MWc0F#Ag*nn61~K-CkK%UH$ZW!KT6WPxT=?+h5{N36;w>Fg8@hn3DE@V>=qRq!Zp`$L&UnEb@ z5YXH5*6C1%gMMY(ycguIo>WZ~YA0dA{}S0Wp+*~Y@h?OpE{swr?9j9ITcJ6o5y__A zE1j}iKM@Y}j&@ZL^)}I3`h0$w{IUkJIva#}$%w$uZncsYW!TkiKaT20X;QzV`+JJ* zEt*>%eV%aDSmn#N>unqeqF+l+*Rzs)c)?y zKHM+j$Tj!=r8T=Hgs0)_BNw75JMQh|Mqi8ol2#roI%B`@;_dF|2S&S&(zygXvh=W$bEjX+N6{d)h2um`+HVlwRvVF-uv%=NUaxzE3*mV*d<+MYsHuYJ-zO ztd{h0c#|@h_}cK5Z$=CfLKgIsY;WDPFT)6tfh3q;R$m?tQ1q;vkuQAR_s|xtn0Q&EP6DUKJ`ZcCQ(tcLMpXQ086oEu^m5+ob1!-CXm6)y@AL0E65ozruxV@HqCMwv$v5DbzFG6cY>SDc{tAE( zplJDv$h+A|X8rz&e7dU>{bjCt9~sfK#0I-|T}=vxR`AtrA|={)5y9&-dkmvvr#Xwz!;88ikmO zxJ7(WIs{^UOWsl53>H*M1=AUt^kqRY#YvduFk5V&U`!> z!r6){i3{sTVTc=XW)`ySanN5VABeZYn-H_D!totkae1>`a-k4a5dducYSF7>Da;l-dsf-zU(9|sQ7k)CRXCD* zP_t_!|7JLnfdXC{lv;C>?6Mo)h_;)>KTs^Z#jo$9?n#zop`(;CEXR(_Kp0dQkl0@(~}lF+P_4`mH>AI0YK#vhunui&9Y$Bhb-j`zqPc@ooZ_ z`=vlpsW69lVJ6&%mF2cF?bX?i+P0rUqkh^0pK-9(Z1@`n*yGywdGF{&OiQ^*ZNRf` zN5gc-2i1OOY|nzMv?Q2kbqra(0Qxlf`C074IFTT|gaP>Bk)p;$aj^*mgx1gPLxyvO zP{_{et85s|GD-3Wvg?9~kaiW?q_fed3Q2g1%VRtk&;GbiO4Y6`QIv-{?PcqA8S3q9 z>ooD6yz@`cgICs)6HEP&oO>XGS-l{==A5)A_p;^Q2BT96LOX7Rexq}IK1 zi4DPb-6)FP94hQSKwUGT%Vp$-{1i)DU;WpZRvq0en;NB}CM{sJPssrn2bP_( zWNQdZD}xBA!HhEtpJZT{`iI1fTO6x>VH2U-r)*_@jR?>~rOHet(-`J!W{0FwtWCF;d~JMRkXJ)iKS zmR_8A^R(_E`_gorG!PXsoF^gLhshuow)rvH(MS=WHHyy)mFe(!Lmg1=-S0!FC2`{v z+>^E%$WhpNp?j1Z?Lvx;(f}Ly1~pb`hH8F7U^yJ!gKGBttB};LMjQz;3C@Ms0e=`% zw!!a5EvM>A!j94fQZKZ#*CoZ8C-#d!8ey-zmTKA#772Y2&j6BYBDki7n2rI_K({;E z!0{<@aD07!J!rp^${K#2WMSD@=SD?=bQOoE$2(L=QmJl~ijWNxd6jB^3t4IS!Z+)) zCDf|2U9YpO15UV=@TwjxRjH-GF*V6V$3pYOaVMM`^9qVXl8IA+aQ1VFM%p5&oeuV| z(=y(U`U~pn)@KHbIqmv?wm3t5EIe}f?rP*TwVIk!ilP2Yt-vz9?54c~k?SEFX$aycHb>hnTPr@fABxx2wl%9{2 zIr&XnrZt- zx0u=S#^lwgU@=Q10D5%dStI!+e#a)jb{P?)3j?!BJ}qS@0ckniB`rI#?>DIsJTvWg zkH*i?`rjN+j8oz8vud9Tk>{!2#%kE2pbB&stfU)VnxmY`Icn#s%;cEnx4=20>Fv*TM^dK)^Cg@^+AI}t~n+2J2{SkTy0V^}ti;kY35e(#V8BpWjbbM?pFj^HR7uTz0hD})p`xM8W~GF*?mAY9UubP6c53rn9 zi)D#=Dz21;P(!jQnBHK>*`gWXBx~3RW2;!0S;VqpC}+e{33=BBH}#@uCTXo(Gc^sc zY>no?$F4uHFnWV^zJj76h|$u3vJGSuT+Ber*VFix`jgyrw}ieVh)?5c zsOf<6R51(MxbO!o#i>7o_nA3PXuiw(Z;4%IZE$Bzo~a0#0x;~!rjc*9A<*s2nSL>5 zh@iqn%8b@@nG>?|h~-A)Ne0v|h}~=J%O9!jvL*x*LzB@S*NJXf*uAuN*9Eq>@JA@^#aycZ zbS`d2G-HLW0MSVP>5Oq^d(^K6BvmVnyAI#-6SkMOJ~}wB3lnJosaBNv#zVouSQ)0p zl~1nn{T6MJYAOv&bC7NLS5(;8HRX@8)h!0#U!Y@la7mNESj@#(c-BnJn9+F8B_^`< zce!8=W7%u>he|d@y1EDnOq-M^_jO=AbltAdVmK?;ie~}P8FR_8oPRO4YPXuGR{bd98(CQcudtTd%&klK{O}{iD~Iaz<*E zDOrO~?*>#`>{N6)9p78nlcz#o(Nl0DEB~9-FQj;^mI2w?eL8M{ki93mmRmZE!JgQC zWAS_okmA*6=ovB020T}jFM+T!Yjqcii4zlc;$_PeMQ;3OXG79|Hv#eCs zLqHYn1uxVrg8~m+Ao{z4n1iZg;B&Oyh0JyjFcdTStnUv=@-HhM7o!?3Hb@;=vvT-= z&dX0rz1lWLyJPXYtMNx{8(OP6Zo-eB&o3Im2B#kCOLZ)STI=27S7RHsppA_Fnw=IE zB%0B)+bu73i{`+}+3p~x=9{V|io&f*EgDOi~!3ZC5&Yijp^;T6SQ z>63wWLI5YiC&5@(g~+8R{4lZd%z{a?8dIb4k_$R<#IFjC*M%Khfy|uA&&i0_&ah-~ z5-sM?aoriKvfDIJqK49NlAUv??p^V1U^l=^#b=OH9EI{pXQ~|!k`sXETYYzddpePo zY~nt(ydiZw<#HZCpM%1e+x{~C)URu?JwR;pgZ=L-4_Dotx3Lb*a%_*M8@Q8e7e8Wwu zQb`{#>|fdW)<%4TGhdVm1>RpdnKEq0dUOhZL~58S)RJULgHFkBJo|IAT4)7ZV%^AH ziEz_RFsnhr(;jZE>?%-t*1+sgL=+C8VP;y-2oEW2C~K|gj>ZN+arxU9cJy@y;ceN% z`IL(cypkW71>5)nzqvYu{#w}BP5lZp>Bd?;;kQkbFGxNHo$&fWE&;Cprm1oe z*r3i@SUnTp)t(KT#6U4=kbOh=`wo64mRWX?#O+)FTd76T_576gn5;O1h?Hu!=y)Jy6cjR*$daNhZK}WJk&EV`3+mIC-&o*U9Fz{!O(pT#W@9 z|A@+r8&X|&S~7~x$`8&iM&Ur=tltRVq8DnN71zME#VyJ%SAwIsel5Q=KKp?u>_}rH z%0i;z&n{aedkEUO`kCfvk7j~)-wMm<1A3ofOVXhzC6zb^l|++vkiiCic|RhWyWe_l z@^U$2!Hk)DbEJLiWmM^o?OPBXfed#g<4P?gipu@8l{c4kqRUx%C0A>7g~zL|Qpenu z%g%~x8|E)`5=**TO;!~5lY?w)rcXg%V)qz)RfWzgURmHGVgGwM|KV;(glcuk71vv; zJ+?201)O@0jD5eXx4au~gYMs~ZYhwfSh)p-^KRhmbH89j5v9Q$31noBQ%B-U(YJYRJY9;0)t?o5tm`6`sC z7?H=?XAigEjsDx(d}hfpgG&cgn;|F1`J8bfkZ4tR_CC-Z!O&(g)Kc!;|AHXYq#kDVbOexJci^u4(Dg^w zAb#!Wk6aI$T_)};MoG5M3(lT+ENkH+I!iwv&p<=5#;%==PDK9&UJaYw z9;58T3zRv%4rm|4y%Z2=*kJ$ovKR}X4Y6_j3NLX23WR4_%%v1V1R?{e{Gu$gs7|oY zf9y_-HCyG0Hr86nV~;Ks!W6`Xm*YJRY16s|S{!SD(S$`QiowbPWd2_R{c!kdLSaT+VZ~+E zWg$k&7PtGY4XJolU>DzZYE>>SeEBj{Hbi6c%~YVUr04xX9r6QB=tz}#hSrkAi%TWW z=AqDoo^x0QvP6fjNZqQ?`qEUC*_L`12F4anWUb`r}D+?aaKUSu0 zK~zGDTVOC}IR1HR&CB&hZG#<8g+&+^(C2^@NaxttcbK1#Bwje4R`B-afu5Ad^q~@1 z6R3e)O69X|J!HrnTppp^+x4s|`iT-cvj0dsTo0>m;J3%3jeV|*@Qwmt@&ob8kzgP&@H-4QHZ-lzg>Vg~_}HFk;P9Z3 z>?(2`=sZK0td7&*-sLz4U(ygT2SexFG*KL64c(sF{jl8bsUfCHtsBV+3cNc;cYZmh zDhm?Dw_tRm@8t9u)8xC1U{qmh$`MZb{V%;Cyj8u|{n(2-g-{#YOLw9GzoSDQt1f=9 z`bO1kNp`}kcUQFgb;DID$Sc3~A7s<8P$RsQ$g)7`OQ%tB(;XW`hL?_stCaMd1c#*sb z=6}syWm_Cgunhr%1$TGX;O>h%1b2cv1X$eN3GVJ52yTmea0tF=aF<|rdGGxZmuEll zWoCM+yK1_tPMy>1p)@~JB#MhPetBn|;RVDVP0OA4miKr8L>ckiPHx122dTW*$!U)NTTYY_KYIeYOIj`WYM?m8{vZpD2 z;}FPPEy~|OGd?KpyS*Me(TRXzNxgsw-Mo=HHW0G}2N#zbf?-E_;5hVH7jeNVv3z)G zXy@ytTJ^yM`jW*m;gvLelMtUK^JP~kBY(*zz!R$5{q=!IqKPSDZ8hi6i@$KeX{m~? zSFuTh9;c+q*_1DK8i=TL`UOLn@+41MTsVHm`6?2zLuW~9PBjICRGnxtiIs`m-zQ8E zL)^=XWFLxcKXrOT46uo7k1OjzQL`ELT{z^XmePW=Yr5(b9|_t=%-4Xp(DHKd4GCt7 zGPhsa?>@SjmP@zp%N3F^87TopS=F-^q6XcKT0*e~d`OVS(_)FnF58JKMHf?}DsL8| zxYqqfWM@9oU&^eJpO@2nB%P?=PGznYikNQ9v39z_>i0JT`wtOuxeof=tP@q`57JBM zOS38?PYeQvab!6`hL*Q>HA!}Ls0z zN~5txKf_|E{6=zi1uhRLZnWLnkQ=Is9A>k?o&0SZGQsopmtWzVEgWv~yC;du}X0|N*btro#F z6|>fPWUj&~G*}mGD%UDX@|F;pLqn@zGR5Um8=_!w!O($yYR78_akcG;3M+_f#YX`dFysL6gjE@D7Xej$s{># zCoIpTk8rbrsLS#dP5o2ep#}(>dRmufy@p6!RR!PS>W$)n*qqEOoHfCr^#bEm)8sjC zp5SNP(n>5+!Fe!PNlX=&!_~Rn5@z#<*a?*YCes9%Rwz(F9^` zj_`)LAT1;_MZ6+V_uQe^&N!KUmKnXQ3JnkV?(O=p!y{CTwXf%Ril4d_g-$D-F57{H z$=ltjQA>RGyDq$3IpPME1kHY0(b&X7g&a6Yv8HbxbjxdXuvxvAtvErQWdkQ2e5y~H zToiHQ=OxI(ZFGi9sII4UQ%&1d6%l{?8d%C^L#yr3Hg)U`%6wGNizb!Y|58-)CrDWj zJ}V7Q;`wY)0?n00Vf;MpT>qs&!zFf9z)o-=T?M@@K^PJXw{n0F9$@cZjSfjDTA#3F>ogxQ*v2m%!1~p;|zYVykRzu zMpF?GpSw1v-%Y4NNxvv3NWl2Iopno4vUT5<8TE<-oAnQs8^Pb_RVR;l@ei--=g(iS z?r$0Q^I)BS@xP5ra{VE3ZKovbCKmfMqn2V{)hyD@kcmfT+@vXO>)gb^3drYg#X6@@ zy$lA%1Cj69Xx0f85rtzHg(@LM-|gKpH+9Cev}j3fyEe_B8MH!Wf~5FVZK@U z)Gz72JghdG4@yp>IwU1Q)B$40&*okvTR~_C{I@g8wRdDoLuOr$vyiz-|;pD_?X;;I^+4_WE0+je-+fOzMzqSyBfsq`oXIt!cM& zZ6I1~PR6d>+j2zPV~sw@M)ZmV4|U{KHoNBi!^rvXK5FKR0-p?)q%fIA;iDL*#ZZrt z@B=;d7EY>)h9Fr=hpdE@9BvZ;3=Ag2x;~+1j2gQ zj;c1hZKYZ15D=P{D3gfbowfBJ809L+otDsqb~6}JP&`}s`7i72Xg`u5(!IEw`z(XD z$e*$o`G@3sLAr@yGCMmtmv?CH2$Tv}rlqo&Og8!UaOm@#m};4jHV~&8`h2^eYWcat z{Xs*YcS^xmMR19t5|Xr72!KHB!e$1@ifXrpVK7M%DBkkM?Qb+@rG6N_Krugb+93%m z#6o8(Qn!+AkcNMLM*mfo|H%#SKT1%%$!H~|CrWa!pwOY61O}aG1>12TgqJOliL!&rCwy zNX!Lz0B$n;#j}D3d;`)w#9<7nLG5SB+<7Z#&hN(5{*WMad`0fOSO~g;pCU14ecMuh zGx9r-*RU?tB`mSFaR?9{P;pBg8hLyQ-R&?uqzh{H9OK9Puf0K>e5Fyeoo)Y`_YsQY zjn@4&9P^-&IwVtWnQoHG0juJx6@lZ$O7e?3uWzpQ>aFDPB+vTzf50HkGF4l3vqU6{ z?-XQyv(8t)wF8xi1lNd)iVT&0MiS~a1cBKKqZ7-1Fg=r@lMd+$E)mJ` zvXm3vLF7`56#PhEERQ9Hra?x%cRa!oQ!i5omP(NBW2H<@x|kSMHJ0InoYsR2FH+E5 z%fJ;(Vbl7wjnn%CnVtP6-^|TmAv=E|VPEf|rj3Wg%0;!Z5W^kx5#qF;j15W~g%cJV z%(ZDvTQ(w};Moon2`H!d1)CS}`+eNH81RILqRjTB zf{HBQ#Ye#E%>eZQ)fTPJvpO(K8r_Sbis9X05R6iwAa_-R*eAg$D&?&Q=V2dxD&9eQ zMaxH*A4r5He{DrjM5M2_kF6`Y=_zZ`%8i+Jy2K@~T(Yr_wBFwvLVcxT@}qI&=fKrw z;_++mkGBoUB;k9?(v|J)eOzw2B6oVy=S%6L^~hpKVbEdiL4e%(ANtymg6a$6e@5T< zh+AMNm9hKfqz5cWD$n~ebMBWo#RGN~tCb>2k-vlh;J=~EyWa2| z(IfD`)o}&|pR={~PrNz?)4iBj(n2(!lL%cF=K64O8N2De|3Bl0fk z(j9+$XJE#2ggF(|Cp|+(r&Mlig$vmm1|zP04u2O)+uC{>db8SKhffMuXjiPwxgK3;+2U!*E-5C0#p! z{F^@C+=eoz$4=g*hxbiL`j6lsf7Fp+w@Qq!x)SVvsC-39UyWqZWi~~Vx9SKV5$yZk zMk>!kum%6?sP~ls17F%CZ#XJu&8qY~UtHZzFhTbeuq!l*$nOyDSOZ(*?H%}vHxzF@ zVG{i85~NLH2__|7b$>9B%bsn?a0a-hCQ?YIVNIGhg7)d@qmx6Sy3~W za>S4Du4|)caRNpFXYN74hDdyB&dmMGlDh8qzY6A>QY$mg79K<&%fjOIsVxkgTxDP6 z-hIRh{|FRjg|n)PwM!}<_$ustHlAG^PfbmLpgc3NVxMefD}6`EEHl2i);ZE8ft8KM zAW5yeuii4vao*R`gCl;>K19v@hVtJ;iTl!r;yoc)w2^wQL&JCVV3hgyG{si-T(woJ zJC8?Y;#xm?8h>vKi*&_WQp>#AAV$_EF)x^VXhJB|tIdHh`SfddiZ&OI?3Ak7^^grr zZ#|nF%wq1DYw-DHCk>L>C8y%@{3AytDgD+cst%Bgi@sMTzac98-uYJeF!H`+!5=&g zqhjnog`17MDyd`&8&dP%R)~~l?uXu1>E;1Af*p;-LwSqMbJuh&jsOWtH_iE zU?tP>`M@GS8pF_?N!WtdLCqv1!3^(|C~$C!N;6@Xj6Wq*dh0t$w=M#6tA`mOR^si1 z1DtIAO|RcBFghZ2dhLEwVH?5`ff8pGSzjGqy&eK-+5YcS7nAzYGaE4jUL+0ax;FXS zS4a|g(^rc-^0W|*kD1lsyKI;aJRvDeRR*w*%|LO2k?_A}rI{!!S>R8!^`MtK7ttIs z@sgM5;!kCJgOdZF-L}YiWEiqSzTqR>ZkeV1Z*$X36z>Qge0KHQ!Kt zV$=_`B@;7OkIrQ7epU4Eoc~7JRYm&CF65I0O zvr5@yJVytots%qRQ3T9upMahKqAGw*>&jjds+c!b{%E5bmL8XLhQB zZOz@xBZRCy(|KNgYCWzDf+qZgE*wx(vWlC?ukJH}C1of^BM=&Z2%<5*`$}}oP|u~G zx|K7q(kzbf9GHs17@_4%`5`@Y!QHy)_ht|`yDv4(i^gx&#V!ccrFL{KN2 z>Sr7-qkLfE$GQca{~{8fte$c+%uy~7vic!n=|gA}uD#;@zgqFmxsTa85v}lnP|sN? z{);>8EVjd3<^yh9`q!cC&xYkoTpON@t|X2pe4W9hu=H;_Nlxrrq+l3i*fcPXdo~o#)Ss=nB3Fa8TA(5FpcCw! z0N?mKmRK!V?()0JB5e|hzhJhcaSqrk5j1IaDD_CwC=6V{M)WQAv*#AFCtiLqDrWpo zQAhz@JRK!?F>`_YpnL+P``aKctp{eY4a4sz(veL6SZjAceX8G5rn2av;?5(fnBN7T z()vy_ujjteGcEsWYq7Z%{ed?G`9vw!gt>CFm-}cBY&QZy|8j9nUL;WHb)q%tElYHf zzL1qR*)L0IQQCT(?)z;S;)y6_h(M%O6i_KUh5#~C;+2)tM>12qc7q@gymRsEV)ms> zRQ!#EYlbdDxV}lrQzLTMkL+F4z2P<3qSs(r=|rvqxtg}E5uXrZ;Id1sm?j6 z6~6g75cXiZ@ATVrojT9{Nl>GrrbO?+22dIc&1u|GEa0HF zMKme$ro|9L84|{Xp$}1n=>t~~0o26#mg9Z+BjCIR#kL}j2lGVNMn2S@iaxf%9tb_q z5bNmCJuQnFpl8zc#({5N({(eMMw0k8%%(ot{nT=2jyf zyMTQZ9?}b!`@{AAfb?9^Grs|9&LxV>qcEWL7js+rk#67Jv;*0H3{=tUR1#@2LtY3K znO3X$pK>l=oVMvkALvF$KYiVSI&!UeB8Q*c6jkfQ=3{h3ITy6S+k|4zi6T6uXoZ2k zj^#}f(I2<^!)1NsHPw;ucLeLwzyqB)i>WxVt5QFml0-bE?pF#BcgmJ=KuBVshR;PM zIgx7Di^2t8wdKCu%e@I2yZfGF6g5Ankr1j|&mQs3AWchEWeK|Z+4Axc9*Oi4-T!tj z&$fb8sen#$z?$Ou6jg0BtwO%?tn5OQlzepVh8LqO&XgVoIPJp;dv^pQ82wFG;?5hr zWOsa-)Vg$KPOY$HD3;UX!nmVqwDsTfqI5Z9RK>LVO+TB)8I|HEvR1E{_j_@JL;M#R%4#~L)*r(4ggONB&F{#RHa`Av!5q`> z>V`EH^#yXW;z}KE<&>&w3dL&xCDVIaorHa3&M1tiI#eSpuAj~dTH8YZRj3h|xeEv& zxMCqRs;qw;(a|lM^F%Zpy8FQLoNM_{g62&+_ouWRz5&5mA%IF{VSk9fLA$h=etw6d zf^4g%c?jrhwW_#E-}N{BXk@2+R4O()FRP+Op zL-Yq-aY<}u!}iNuG-nr%U(A$68Z%sF{P&1r}p(s#c*1>r+;(v zo!692`qY`znX^>qM<=Z@oq`cpng_&{mCPo@PO2ZW3b&{!I+b#=1*qxg^AkIzZYvA=Q78={kc5pWU%R=!9M86`eUlWTUD z?y=tS7t-B_Bj)HYJ2_CoT^M#e>o(D1=8P5cVu`OcRsNx6=#Sg|L?uqVxD-30E)C9S zMrPLv%b5bGV;1}XJ%6gma2dF_~|NM-=d6*}$)%iip2_*|<2bI*ob!-#` zFI#Wr2~xjDxhq4%ZW52klB4$sAqb^vMJP1py-A-TARbUaI(NmPKmC&JCzN?@lzG2m z^!f*vuuSB|ypmW@BW7O}a<+*b=|WZ8QAhp#44(Y{tzfSw-Sg2bd1|`;$K32)8Y0QE zygln$=siI=a8+)T%EP!PGRroua$ zSZ8-8sa4Cy&F1JNBvi%?ve^rC+9Hcg?Lvd%*xgfQy+K1fqE*o(4V}#RD~Ln$h~{xN z+!4!LYWU1(pT#sJT2!y+kk78?s-cv5WVZ7u1Bf+bWSROI=h^SJz>_5MlvQ8SKR52N zF8SZAC1f`qb_cg(xa`{nc@9({JKz1FPP@zx+5H|0#WznZkWqh)<94o67_ME$#7AdJ z{z&p;(d>d6Uk#FSY%`_2`oT$-C_?cU;m8GaIa~>KS}@sHT8vZ{Cq8N_%N(V#a9y$e zpV862^A7`%?%LS*p1l~`fx!M`Mdg`HD$er=H~u)w`W#5)OrFxEN3M%;K($+fHJAHy zj1HI=(4)wyV+01_@EBBS?DLXPo_kOjAd@GJMHG|KQUob1-WC{2%6YH-@D8DPbJ8tP z&%vjBr=mB}muP}LAcIkIWMzKPyknN@QY!vO$C8JYsw0R2CNhh;pKZuRh*5a6VI=97 zzrpT1r?GOz98P}FZd#Bk8>tolcxW100EmiNLOC zap}3->gg zXBF=KqAj=tCW*QB-d9pVzrDn|gUJRb3w(EJ>WX+r)2hD*di>rAzn<`zmFZdP+~yu3v&y25n$>s1*zDIio`Q_B51C1R2|z5E|oArM^|b5 z=@B8##;oo|P+N;Rp^jrwOETARQz)X~3}cpbraX%HaO016it+R&6S(6zMO7 zr)0Df&7lbp#29$ypH%31%ksy=NGFI0o|3oFJZe8X*agdoOUS6COr4VTo*PP-W`@@D zNu1>Mho&89SvR}BlMum&G_7TtJ5MA1oboP8(Ln7(Lm|#1wBs+>OpW-tO;vR>ft=Z@ zqcx_G$k~8t$M5^SLzcOzyU+aj6$!){yV*U0&OV@#a830-S2h^-HO{qC8%7vO*R9_X zep%P}dh9^!4U}7@nMD6H4)x+-75eft7TUITaXlFu9L14l(f%+5=ndyw>1PJjdb{rnyHg%|GU zd@+q>=fDYseJ*ck@nmh|!fHH#8^gGa13Qh(X)IfIw#Ag0=U5I)Jt^u&6s3GxF~L@r zd~l+11ZH5e?QdoCyWfV4t%r{+krd+$);z{Mm?vM*8fOJrw?S3^!XicZh4@*c#j^6| zuuv)x!(v=fk_98MeZF>TYeVcpSvXjCCEb z%JJOJepAPo(rRGPUV5zFG*efcMQyKarf~Tr=ZmaVeu#$^l8Wm z*E`Tt5uoD#jN(ZjA7L$1m@Jq5`%oSUX%&t6y`ouKtx*DDGs`(Hg$n#F-bOkfbIm4& z-Y{pfU6NvG+oq#MMG;;DQ=tN~HeOd#lRm0w_?@Kg{6od7+;#4KMW!K{B`-J>Hd7UN zS>|TZNQxVe|8=4=WMI>h9c(XI#63+lRYt&2{+x)WuvOLA7ry}0lRuWraiy5T51C#m zlM9_Qql^yHElxV;;7y_eaLsGAY?n3I!XOccub9ZbO&0BD8%FqtbdXLTYHnz;j;!8) zbU0CxHB#A#m75@BtcyQEnDgS9<$(t%gJ^IiE(-&b?HGe0H-#@jCd?hZM|`X*mlH=; zsWj-aT9Mz*4Kev34+d<}*u}|`Vd&N?@e>KQrV{!j3#m4iI-=2;L=mFq|m@g3DzYt`Qh!M*6C z!G;8^om$RTudFh+lnzKgXyyWW{AiMtg~EaIp;wCMUUY9I)#Of0%IR(mUw~ z8PgE9)jh)@js|`_X%)0l(9gO}#RN#<^b3ISB|s|ZOoB{n0F7r^?x<-&E@FYu*A(FumMmxD<}(|AOAD(3#mZ1;QoBkZb6u+f>&MB;+-s%O|nN+=u9F*>dk5o}`xDwX&_p;MZEtjeL^lLZMmN6F4o zZslOE;%qW#(lPBUCh0Djp1KfxRLEpWot1%}?)FmVS(Mr3PQpTUaw3DF&JzSM%xt%R zq7bfDr`@`w!&qxj1~%R}kQ8*6D-Gt1i$SS!$4p4Tk9Rui=L*-Xh0&AMiKYci;3aAn? zz=0>i72D#~sx#nphIBWFjmk^4GpIw8_XNElQc#tf*viNp`DjX+65L8U(%yL&@|Fwh zLWVktavn~c!iyiJ?I7XVjkzRVT^!Z!X)F?NKNX#&=wlXH3W+HOe+{XPT-tWjiB~Zw z%w;>u`CBB&HO=!p6eBycv^V~Yl$W_qLxS+~7Nnxn6;I?XLXqnjE(JuA{jmik$3=LPOsldw}Q9fsZk zg@_72gJM(0?FA_VP?#x3bZ9rY-M6catA$C@>n?xvbCs%KX7eAso9`Woo(AL-WkyLZ zUR`tSDk-#EbR7D4+S-a_?uo5N)+gNh33Zu_RiO&a`lkvfBW~P&A&s_45#$*OF1xk; z$tfMy__JFv2}IICS<_F*(6EuVAv(eV9#1MnfF0+Iu!H@HKFC(jjM90Nmd*iL&5^RS zVa;fEe7eZ=pF{FGHXbc89Y%I*;P%bK%Jsyn23Fh37K#XxC_W zJiK55!46V@VOvdOj@RE&pY9Mgj`tl66kc9Fum%9VmY+kHw}~ot?Mj!j8L6nZybww@ z!cO3>9vZ`s%GylVF+TyiF?w-;9GX@zn#p($l6bSw_rGFuN93zuTgGf|^bhET>{{G? z@2FqXwwb+932j%kWqWs_hS&OEe-u*7XYFR;+pK6A3LS@U@9Td%U`_D1b9JJtk>PT; z3sW9zF!;erS=DNke!aCl6~tf?i_X%`Y2+DA5?a^qhYGXW zLFG&;^8;8{BLvw{HN57p#Y)j!EoKm_?)zbBzR~LJa%ZC!W}l6bBBuPR&lv8b)~L3v z5@+-aB>DO-~ijV-4;7>9O&q(ieFPkJ&Eu;^ze)P^*SYdq$<60 zX9kI|Ls^sOZx~-+uUTg=Od0VVznxjG%qZv2dO}yr$IFNdV{%H>g3Vo4N z3t^$B209nXNE~!rmJQC$QMeSKed&)NBqmYn#C;+)De#xw6`8l1osz=6y^mccdXM5- z(Xz_xk*xN&6dv%`bz8H;A%Ah~pwVCe834c7kocmHFHHw0paO|DGl-B(thjzD7KL$G zhBEj&LE_I(=ERWgR^6u!=(MBfX6wZOJsAks@ zB>!L_#&T(AnBozX3MU75xE0b3KeJM#`cG}VSb+;yg(Rm9B8H*4GmkRSn@4D8L9~*; zrkcLt)sZgnOaYRU$()90nMjS0np|4#lM3ld>OGq4QiQRQGjmVAGVY05x1xx7QlK*SxXEsvz^(13FH{2%YkcK>2jJ&Dg2v4#Uc z0|0X>8qkC5{6qOLbkYVqge_)h7?`Ld1?5H{wckcnI`kK5p4W%}K@6Rc#J=S5kR)oe zCu>Z^Rp9pZcGW7sSxSIF$46qI*jDl{r~A&xxc4P5L)zm>KVWRyt+5q*uCsAELrhDHFwguXBKXroiSN#8Y8)zG(3) zqQWZxy5}Og(Uq$EEJ97mvc7`#eDQZ`Y7y95V*?J*6bJMtH5HbMuY^=k!x^=l8R#>Qjh;OBf4)+JNEl@Wa1q3 z${Z2R{E#|x*Mbu*xZce8Qs#7nHZY0wrK4{1>2Y83RW$H$x4`tG#1|`vnO0=W=MDuv zi*%?YZx{*3{Zh7A%^(RPJ`52t@QG!HhbUcw*&3^;{752ky=Of?r)GGPM*%l1J9||% zGn%;4xI6iX_wUQrjaHEZ~D{uVrHXmrFndyGj>W;OgmB9Q}*@OOZHuWSN0D- z!C7f=7}^yj{1e02h#}nsA~+w_`S&D9?{eb9Rqd1k=H0H3)`#;NX!|4JJpzVsNPR{` z(Fr6+TZg@C8VF=Yp@V(s@sFvErdmmjdSlx-Gwd{G<+eX!p6}@X#Ghz_E zZ0J}wf7XQA5&`rzAd}-$qEtuswPIv0X{vnDxuTlhdaxZyD`Owajl|TI;jm$r_S_2% zV{yAGxjZ6cWw?#jpie13BEC)a>4fZ0(e~Eer#Vj|q!U@C$=%)anbtywn`e=nCD3af zaaQxK%srsCudqPd_p=r^YHRDA7Zp!#sbEvpCYim>HEG`zxe}wsedVoZEf^c3NG+jt zq*b9?;-(kjCKZj)ZV;30GV9ToGv>mupg$DTVtvX#b^x?~x(kAc0Y2`QVzS3}yw~?q ztKUM#PAY=fx~9Ht!hC6iZZ2rq@%iAfkY~z)ojF8U7Rfm;Y9SDv>;fZxK+(AQ#l5N6 z6Jv~bJmCkkh#zVKF1kB`ocXR0HnR{KhhFEe`Ggn>%)28l7*kZFdovOEtc1hs2gb>w zESfyO%lCndj)n(c_Z8K(Qp;Ka|fx2|U+Ed}7bV7hgoCa#j)DBQJ zhtc9^;mgx+&r?m}kU>OKKZN0`R>AOVnkhm$6%IR+VSwv^pZX{VG9uulL#14E)ikV5 zV)<`Gl!JcD8Qsn;B^%QpY(Ntk#es8Y6z6;p`Ph|D)+*JGoYgqeRel`R!dMvp8-?-} z8b~EHPLuOHs7r9wZ`DsdDC7piJv?-;O>O^e_lHqF(y72;krR3jE6byz%Zu6NDX@by zJeyQHM)ZTZ{Iv1Bu8j1N_rqB?4WAnl49eBdCa( zLlr-H!O<+`xu$`dJH@NDFT^d!DkYNhDy(m%1C5i1EK_29oQy~KyRc}U^KDi^Oz z5qN&G_UEL0WX58xv)7LHL6Cg+DZ592-7wa1oC}^|k;XZs2&Z;zpG7kE9I2R6qco8x zk+g@Bl_8bXDC>MIzWwc&p!H*eVpNa_pj>bS-+##Rl5gIA+W+79W6)e^aXtE5)>F9% zeVX)g%b8@<8L@YcfpFaDU$f`JL&gcs1I{kSq zvrT7r{TM4beyOm-WOxY^GKnsE&WOeh+08>P3~Rvuz1ZujbXW(F-sjRg==i5;1BVjY z^9r_A)pmBhCm%cWO(59yBtiEkSk(#K>MK?Hx%m4XJcfnuCN@&v9APdOVT56lGhO-` zsmRu%b4g5El&a)#-%5MW3wB9z`xZ0>3)we9@-(n14{=?3y)$2EpOF(!M!?@UOw}I{ z{k8`cC7WhlX6W5rFeogg{va)2|H^yE39-qP-5Bczc4e7^k;)HAm2s?&wzhq!47ch1 z#wVG$GGq6f(DE?1cbKjaVU$e5d*0E6StQEh$P|3RJG8RT8QtlbW?i0jgQZU6bkE<+ zP`kxfBru!)sXGQoOj(ng=A|(gGxYCu^#X5PLjvSbrlTaQQc0Sp+x?c8}b?Oh7>#Y0g~Od%Y{W{+@VqLeB9hn;>a|alJ>8>N`_e5mYwpf zL{_W=?bgej;Qd)oU7O~{GNPv*tVBzl-OdE2^u~9D5hC=#y6S=U1GUNhcO1)jX70n! zF!7OD;x4$4HD7Hw)parUcLtu}If%7VqC2umN#D_6bX5FE5Kub@B^o!I^>pIJu1m1) z&gq^YH#VAU7F;>5a8rEJb!}&?K6e=7+vg=e{J`JT3I@xLl^5^EM3f+wazJrErQ`cY zB>jqDGh1Tx^igqpqqM5iF*lX)w{_~c&!V=Fyu5Xr-y%kDj4LigQN z7q11N-Btv8PKraBim)JD=%lusLm)I)k0jhXli0-_wsz*TQ9zt?Rk$K+5R5%E>a)+8 zbXKQp^20m_Bo*D;aV=9xXi!dptGD*Ar@6m3_zoANIF$ z#)Pm3z$7*0y$?Gk7Abj>U3lO5rq%4#H?nYNif4NB$g?4@$}@rpff(BM3jaku9clkp?$-1*`~tttnN0J0ev({XMXsHN7vF-U_uT zsKEI}X@;rhh^zGwMH@!e!|7IM^L2W-UQ(lqBZE3fNW!64FK_3M^d{AQ!m@R)J!@yV9U5=u!U?_{c6ayU5|MP`e|#jHv;&vgj| zo#S^_@dg&r8F;&Cc3~yZ15tm;FyP^F!V>p&E^p>!yI=Ftk848Z&G$k6X+-gF(r5Hr zu9X+F!wgc1f98#-YK&3vy(`#xD796k~F zAeWxl{gGk-PFQJgqxm5ReU4aV(s6LXA0}`vetA%F#h-F@Q zXQ1u;3$Kp2)5t(24S4Y1nZ>2J+lYHSd&MR_gu|) zRrwtkDcw972AlU#h6q*gPpYBgBW@EVK?Sa2`89)-+)xSafDe~edEPahC zC~y7byweQPR}|unu|J1V{mVT@l{A=MNbqG^d{RH8I9Xs9*jgn=$wQf49W$qgljfXXheJ=O#HcwnLL@UYf8>(}3 zS3GrXG|<59_T!g23b$WmcJm0;Wpm2rp!c{8{K_9x8u;>Y$}ngU7^jo=0o;$qqujW_(e zZj#tS(O@_Xa_loR;9V>sR5*M$k&Qs=r7C5rHHI)EqmQAa;RQr4T7Fu1BcH=4s6KF= z&Ey&tqPHo6hRt`sE^+A+3#Ow#m7!k6ZdilB?ySqNRM$w%T)E$qS%0#zQ*n(6X(;l1 zsm=Ju5f=6#WxF|3Go^mVj}R#$DvjOeMb_U=SZPwclXr+uq&P0C>AN)KB$A@2-~tCh z8>L~$aI!uu!`l0*T5jPWF^kPJZ9Tx8fPUa#B8)x1MKf?V6N5e#4rPaJN(TeJ6Dc;GAr&sy__C%7$OtP*Ug@Fy-=fN{Qu4pKvNCC_)80Oxf#k@{ zDu_B&RX|)ZXzJ^P*-S%I&+Wab{^6ih4-8-Dy` z?rGUgP?UZo6 zy`<&rgKqw>Me?DQ*E2EcM4PJVrsC<^96QFXH|Bspe_dmo>&X7g?RUVa6OA7Xf**W= z$WcTKS@_xqHxYO)j!$lz@iO>QG=KZ^GOrsT>r$$)%hZE-l^{d`nZS}@$%d}OtveH7 zk^%CY;uA)4<~Zif(Xm&lF)SJCd$NWAqjxIJ!21LRL6*)ba@jMt181iZ5yT45+!!ly zRx^AqLr#iI)oT7k(X^1bU>jd9g8XxeAzJ_;PxA5^QF1~S$8!VVz;J4lLnLS2?46>^ zUH$aOMCzKL!I2c;O>XEl#);n)6&xm+=0XN3NRT!Mp-XDQepw9G z4Vua-TGx?%T7Ca$@<8Ni#`sbCZ0XFjoB(>(IFaVq!$@?|X{tEW##z@C>TE?n5{q~g+h!G;^@hql(;nyb)fLwCy@7A9f+TCdXe*isR7Y=B;vH35BrnUOclpoFc}NJQ z_X$9*tCvn9Q!U`S%76F&sNX$VVa%_6^3}PX!+W!0G2i5p=#>i!mDV z01M256lP{!K6XIv8HN9r@#{T}754`VJRbNFe=lk@~6YTH7=z{sSqqFky1lPIfzW&3y{WY6g( zz5>Q3rUzFi)lWOjRmFFt(g2hKH{DgG6Z9B|(Z z2*oC>IVl`8Ef!hMQID9F3U74gr%QIl2&@cqaYc`xia4;|Z~B!wt3fgUe9LMZ9fy-A zMVDTH1h)YfSfn)KE3T?v3X{R2>zv%mB{xPLrCyN48-cIoGLa;M#2!IE>J+0u=ox=f zwNnRKY~1K5=0<+K8uz(c`>v7;XZ(ZA$|W=dirE;$e^TEw%#l{+IWE(ClzEzR!O0s>B3Bt9 zHC(0n=>?2*j~Hl}SnAkM>}|OV?)n}T#}Kgj5KVE1+}{d=WF>_JqDDR|$dLYj{dOuv bZ{DEV(XwO?RrMA>K>lO_N|LqW#zFrB8+H&u literal 0 HcmV?d00001 diff --git a/assets/logo.svg b/assets/logo.svg new file mode 100644 index 0000000..ebddf81 --- /dev/null +++ b/assets/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/logo_transparent.png b/assets/logo_transparent.png new file mode 100644 index 0000000000000000000000000000000000000000..280bfd438d2e745b5ed4522d6c0cd1c8c9330cdd GIT binary patch literal 50100 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 bZ{DEV(XwO?RrMA>K>lO_N|LqW#zFrB8+H&u literal 0 HcmV?d00001 diff --git a/assets/sas-emoji.json b/assets/sas-emoji.json new file mode 100644 index 0000000..f0eb702 --- /dev/null +++ b/assets/sas-emoji.json @@ -0,0 +1,2178 @@ +[ + { + "number": 0, + "emoji": "🐶", + "description": "Dog", + "unicode": "U+1F436", + "translated_descriptions": { + "ar": "كَلب", + "bg": "Куче", + "ca": "Gos", + "cs": "Pes", + "de": "Hund", + "eo": "Hundo", + "es": "Perro", + "et": "Koer", + "fi": "Koira", + "fr": "Chien", + "hr": "pas", + "hu": "Kutya", + "it": "Cane", + "ja": "犬", + "nb_NO": "Hund", + "nl": "Hond", + "pt_BR": "Cachorro", + "ru": "Собака", + "si": "බල්ලා", + "sk": "Hlava psa", + "sr": "пас", + "sv": "Hund", + "szl": null, + "tzm": "Aydi", + "uk": "Пес", + "zh_Hans": "狗" + } + }, + { + "number": 1, + "emoji": "🐱", + "description": "Cat", + "unicode": "U+1F431", + "translated_descriptions": { + "ar": "هِرَّة", + "bg": "Котка", + "ca": "Gat", + "cs": "Kočka", + "de": "Katze", + "eo": "Kato", + "es": "Gato", + "et": "Kass", + "fi": "Kissa", + "fr": "Chat", + "hr": "mačka", + "hu": "Macska", + "it": "Gatto", + "ja": "猫", + "nb_NO": "Katt", + "nl": "Kat", + "pt_BR": "Gato", + "ru": "Кошка", + "si": "පූසා", + "sk": "Hlava mačky", + "sr": "мачка", + "sv": "Katt", + "szl": null, + "tzm": "Amuc", + "uk": "Кіт", + "zh_Hans": "猫" + } + }, + { + "number": 2, + "emoji": "🦁", + "description": "Lion", + "unicode": "U+1F981", + "translated_descriptions": { + "ar": "أَسَد", + "bg": "Лъв", + "ca": "Lleó", + "cs": "Lev", + "de": "Löwe", + "eo": "Leono", + "es": "León", + "et": "Lõvi", + "fi": "Leijona", + "fr": "Lion", + "hr": "lav", + "hu": "Oroszlán", + "it": "Leone", + "ja": "ライオン", + "nb_NO": "Løve", + "nl": "Leeuw", + "pt_BR": "Leão", + "ru": "Лев", + "si": "සිංහයා", + "sk": "Hlava leva", + "sr": "лав", + "sv": "Lejon", + "szl": null, + "tzm": "Izem", + "uk": "Лев", + "zh_Hans": "狮子" + } + }, + { + "number": 3, + "emoji": "🐎", + "description": "Horse", + "unicode": "U+1F40E", + "translated_descriptions": { + "ar": "حِصَان", + "bg": "Кон", + "ca": "Cavall", + "cs": "Kůň", + "de": "Pferd", + "eo": "Ĉevalo", + "es": "Caballo", + "et": "Hobune", + "fi": "Hevonen", + "fr": "Cheval", + "hr": "konj", + "hu": "Ló", + "it": "Cavallo", + "ja": "馬", + "nb_NO": "Hest", + "nl": "Paard", + "pt_BR": "Cavalo", + "ru": "Лошадь", + "si": "අශ්වයා", + "sk": "Kôň", + "sr": "коњ", + "sv": "Häst", + "szl": null, + "tzm": "Ayyis", + "uk": "Кінь", + "zh_Hans": "马" + } + }, + { + "number": 4, + "emoji": "🦄", + "description": "Unicorn", + "unicode": "U+1F984", + "translated_descriptions": { + "ar": "حِصَانٌ بِقَرن", + "bg": "Еднорог", + "ca": "Unicorn", + "cs": "Jednorožec", + "de": "Einhorn", + "eo": "Unukorno", + "es": "Unicornio", + "et": "Ükssarvik", + "fi": "Yksisarvinen", + "fr": "Licorne", + "hr": "jednorog", + "hu": "Egyszarvú", + "it": "Unicorno", + "ja": "ユニコーン", + "nb_NO": "Enhjørning", + "nl": "Eenhoorn", + "pt_BR": "Unicórnio", + "ru": "Единорог", + "si": null, + "sk": "Hlava jednorožca", + "sr": "једнорог", + "sv": "Enhörning", + "szl": null, + "tzm": null, + "uk": "Єдиноріг", + "zh_Hans": "独角兽" + } + }, + { + "number": 5, + "emoji": "🐷", + "description": "Pig", + "unicode": "U+1F437", + "translated_descriptions": { + "ar": "خِنزِير", + "bg": "Прасе", + "ca": "Porc", + "cs": "Prase", + "de": "Schwein", + "eo": "Porko", + "es": "Cerdo", + "et": "Siga", + "fi": "Sika", + "fr": "Cochon", + "hr": "svinja", + "hu": "Malac", + "it": "Maiale", + "ja": "ブタ", + "nb_NO": "Gris", + "nl": "Varken", + "pt_BR": "Porco", + "ru": "Свинья", + "si": null, + "sk": "Hlava prasaťa", + "sr": "прасе", + "sv": "Gris", + "szl": null, + "tzm": "Ilef", + "uk": "Свиня", + "zh_Hans": "猪" + } + }, + { + "number": 6, + "emoji": "🐘", + "description": "Elephant", + "unicode": "U+1F418", + "translated_descriptions": { + "ar": "فِيل", + "bg": "Слон", + "ca": "Elefant", + "cs": "Slon", + "de": "Elefant", + "eo": "Elefanto", + "es": "Elefante", + "et": "Elevant", + "fi": "Norsu", + "fr": "Éléphant", + "hr": "slon", + "hu": "Elefánt", + "it": "Elefante", + "ja": "ゾウ", + "nb_NO": "Elefant", + "nl": "Olifant", + "pt_BR": "Elefante", + "ru": "Слон", + "si": null, + "sk": "Slon", + "sr": "слон", + "sv": "Elefant", + "szl": null, + "tzm": "Ilu", + "uk": "Слон", + "zh_Hans": "大象" + } + }, + { + "number": 7, + "emoji": "🐰", + "description": "Rabbit", + "unicode": "U+1F430", + "translated_descriptions": { + "ar": "أَرنَب", + "bg": "Заек", + "ca": "Conill", + "cs": "Králík", + "de": "Hase", + "eo": "Kuniklo", + "es": "Conejo", + "et": "Jänes", + "fi": "Kani", + "fr": "Lapin", + "hr": "zec", + "hu": "Nyúl", + "it": "Coniglio", + "ja": "うさぎ", + "nb_NO": "Kanin", + "nl": "Konijn", + "pt_BR": "Coelho", + "ru": "Кролик", + "si": null, + "sk": "Hlava zajaca", + "sr": "зец", + "sv": "Kanin", + "szl": null, + "tzm": "Agnin", + "uk": "Кріль", + "zh_Hans": "兔子" + } + }, + { + "number": 8, + "emoji": "🐼", + "description": "Panda", + "unicode": "U+1F43C", + "translated_descriptions": { + "ar": "باندَا", + "bg": "Панда", + "ca": "Panda", + "cs": "Panda", + "de": "Panda", + "eo": "Pando", + "es": "Panda", + "et": "Panda", + "fi": "Panda", + "fr": "Panda", + "hr": "panda", + "hu": "Panda", + "it": "Panda", + "ja": "パンダ", + "nb_NO": "Panda", + "nl": "Panda", + "pt_BR": "Panda", + "ru": "Панда", + "si": null, + "sk": "Hlava pandy", + "sr": "панда", + "sv": "Panda", + "szl": null, + "tzm": null, + "uk": "Панда", + "zh_Hans": "熊猫" + } + }, + { + "number": 9, + "emoji": "🐓", + "description": "Rooster", + "unicode": "U+1F413", + "translated_descriptions": { + "ar": "دِيك", + "bg": "Петел", + "ca": "Gall", + "cs": "Kohout", + "de": "Hahn", + "eo": "Virkoko", + "es": "Gallo", + "et": "Kukk", + "fi": "Kukko", + "fr": "Coq", + "hr": "kokot", + "hu": "Kakas", + "it": "Gallo", + "ja": "ニワトリ", + "nb_NO": "Hane", + "nl": "Haan", + "pt_BR": "Galo", + "ru": "Петух", + "si": null, + "sk": "Kohút", + "sr": "петао", + "sv": "Tupp", + "szl": null, + "tzm": "Ayaẓiḍ", + "uk": "Когут", + "zh_Hans": "公鸡" + } + }, + { + "number": 10, + "emoji": "🐧", + "description": "Penguin", + "unicode": "U+1F427", + "translated_descriptions": { + "ar": "بِطريق", + "bg": "Пингвин", + "ca": "Pingüí", + "cs": "Tučňák", + "de": "Pinguin", + "eo": "Pingveno", + "es": "Pingüino", + "et": "Pingviin", + "fi": "Pingviini", + "fr": "Manchot", + "hr": "pingvin", + "hu": "Pingvin", + "it": "Pinguino", + "ja": "ペンギン", + "nb_NO": "Pingvin", + "nl": "Pinguïn", + "pt_BR": "Pinguim", + "ru": "Пингвин", + "si": null, + "sk": "Tučniak", + "sr": "пингвин", + "sv": "Pingvin", + "szl": null, + "tzm": null, + "uk": "Пінгвін", + "zh_Hans": "企鹅" + } + }, + { + "number": 11, + "emoji": "🐢", + "description": "Turtle", + "unicode": "U+1F422", + "translated_descriptions": { + "ar": "سُلحفاة", + "bg": "Костенурка", + "ca": "Tortuga", + "cs": "Želva", + "de": "Schildkröte", + "eo": "Testudo", + "es": "Tortuga", + "et": "Kilpkonn", + "fi": "Kilpikonna", + "fr": "Tortue", + "hr": "kornjača", + "hu": "Teknős", + "it": "Tartaruga", + "ja": "亀", + "nb_NO": "Skilpadde", + "nl": "Schildpad", + "pt_BR": "Tartaruga", + "ru": "Черепаха", + "si": null, + "sk": "Korytnačka", + "sr": "корњача", + "sv": "Sköldpadda", + "szl": null, + "tzm": "Ifker", + "uk": "Черепаха", + "zh_Hans": "乌龟" + } + }, + { + "number": 12, + "emoji": "🐟", + "description": "Fish", + "unicode": "U+1F41F", + "translated_descriptions": { + "ar": "سَمَكَة", + "bg": "Риба", + "ca": "Peix", + "cs": "Ryba", + "de": "Fisch", + "eo": "Fiŝo", + "es": "Pez", + "et": "Kala", + "fi": "Kala", + "fr": "Poisson", + "hr": "riba", + "hu": "Hal", + "it": "Pesce", + "ja": "魚", + "nb_NO": "Fisk", + "nl": "Vis", + "pt_BR": "Peixe", + "ru": "Рыба", + "si": null, + "sk": "Ryba", + "sr": "риба", + "sv": "Fisk", + "szl": null, + "tzm": "Aselm", + "uk": "Риба", + "zh_Hans": "鱼" + } + }, + { + "number": 13, + "emoji": "🐙", + "description": "Octopus", + "unicode": "U+1F419", + "translated_descriptions": { + "ar": "أُخطُبُوط", + "bg": "Октопод", + "ca": "Pop", + "cs": "Chobotnice", + "de": "Oktopus", + "eo": "Polpo", + "es": "Pulpo", + "et": "Kaheksajalg", + "fi": "Tursas", + "fr": "Poulpe", + "hr": "hobotnica", + "hu": "Polip", + "it": "Polpo", + "ja": "たこ", + "nb_NO": "Blekksprut", + "nl": "Octopus", + "pt_BR": "Polvo", + "ru": "Осьминог", + "si": null, + "sk": "Chobotnica", + "sr": "октопод", + "sv": "Bläckfisk", + "szl": null, + "tzm": null, + "uk": "Восьминіг", + "zh_Hans": "章鱼" + } + }, + { + "number": 14, + "emoji": "🦋", + "description": "Butterfly", + "unicode": "U+1F98B", + "translated_descriptions": { + "ar": "فَرَاشَة", + "bg": "Пеперуда", + "ca": "Papallona", + "cs": "Motýl", + "de": "Schmetterling", + "eo": "Papilio", + "es": "Mariposa", + "et": "Liblikas", + "fi": "Perhonen", + "fr": "Papillon", + "hr": "leptir", + "hu": "Pillangó", + "it": "Farfalla", + "ja": "ちょうちょ", + "nb_NO": "Sommerfugl", + "nl": "Vlinder", + "pt_BR": "Borboleta", + "ru": "Бабочка", + "si": null, + "sk": "Motýľ", + "sr": "лептир", + "sv": "Fjäril", + "szl": null, + "tzm": null, + "uk": "Метелик", + "zh_Hans": "蝴蝶" + } + }, + { + "number": 15, + "emoji": "🌷", + "description": "Flower", + "unicode": "U+1F337", + "translated_descriptions": { + "ar": "زَهرَة", + "bg": "Цвете", + "ca": "Flor", + "cs": "Květina", + "de": "Blume", + "eo": "Floro", + "es": "Flor", + "et": "Lill", + "fi": "Kukka", + "fr": "Fleur", + "hr": "svijet", + "hu": "Virág", + "it": "Fiore", + "ja": "花", + "nb_NO": "Blomst", + "nl": "Bloem", + "pt_BR": "Flor", + "ru": "Цветок", + "si": null, + "sk": "Tulipán", + "sr": "цвет", + "sv": "Blomma", + "szl": null, + "tzm": null, + "uk": "Квітка", + "zh_Hans": "花" + } + }, + { + "number": 16, + "emoji": "🌳", + "description": "Tree", + "unicode": "U+1F333", + "translated_descriptions": { + "ar": "شَجَرَة", + "bg": "Дърво", + "ca": "Arbre", + "cs": "Strom", + "de": "Baum", + "eo": "Arbo", + "es": "Árbol", + "et": "Puu", + "fi": "Puu", + "fr": "Arbre", + "hr": "drvo", + "hu": "Fa", + "it": "Albero", + "ja": "木", + "nb_NO": "Tre", + "nl": "Boom", + "pt_BR": "Árvore", + "ru": "Дерево", + "si": null, + "sk": "Listnatý strom", + "sr": "дрво", + "sv": "Träd", + "szl": null, + "tzm": "Aseklu", + "uk": "Дерево", + "zh_Hans": "树" + } + }, + { + "number": 17, + "emoji": "🌵", + "description": "Cactus", + "unicode": "U+1F335", + "translated_descriptions": { + "ar": "صبار", + "bg": "Кактус", + "ca": "Cactus", + "cs": "Kaktus", + "de": "Kaktus", + "eo": "Kakto", + "es": "Cactus", + "et": "Kaktus", + "fi": "Kaktus", + "fr": "Cactus", + "hr": "kaktus", + "hu": "Kaktusz", + "it": "Cactus", + "ja": "サボテン", + "nb_NO": "Kaktus", + "nl": "Cactus", + "pt_BR": "Cacto", + "ru": "Кактус", + "si": null, + "sk": "Kaktus", + "sr": "кактус", + "sv": "Kaktus", + "szl": null, + "tzm": null, + "uk": "Кактус", + "zh_Hans": "仙人掌" + } + }, + { + "number": 18, + "emoji": "🍄", + "description": "Mushroom", + "unicode": "U+1F344", + "translated_descriptions": { + "ar": "فُطر", + "bg": "Гъба", + "ca": "Bolet", + "cs": "Houba", + "de": "Pilz", + "eo": "Fungo", + "es": "Seta", + "et": "Seen", + "fi": "Sieni", + "fr": "Champignon", + "hr": "gljiva", + "hu": "Gomba", + "it": "Fungo", + "ja": "きのこ", + "nb_NO": "Sopp", + "nl": "Paddenstoel", + "pt_BR": "Cogumelo", + "ru": "Гриб", + "si": null, + "sk": "Huba", + "sr": "печурка", + "sv": "Svamp", + "szl": null, + "tzm": "Agursel", + "uk": "Гриб", + "zh_Hans": "蘑菇" + } + }, + { + "number": 19, + "emoji": "🌏", + "description": "Globe", + "unicode": "U+1F30F", + "translated_descriptions": { + "ar": "كُرَةٌ أرضِيَّة", + "bg": "Глобус", + "ca": "Globus terraqüi", + "cs": "Zeměkoule", + "de": "Globus", + "eo": "Globo", + "es": "Globo", + "et": "Maakera", + "fi": "Maapallo", + "fr": "Globe", + "hr": "Globus", + "hu": "Földgömb", + "it": "Globo", + "ja": "地球", + "nb_NO": "Globus", + "nl": "Wereldbol", + "pt_BR": "Globo", + "ru": "Глобус", + "si": null, + "sk": "Zemeguľa", + "sr": "глобус", + "sv": "Jordklot", + "szl": null, + "tzm": null, + "uk": "Глобус", + "zh_Hans": "地球" + } + }, + { + "number": 20, + "emoji": "🌙", + "description": "Moon", + "unicode": "U+1F319", + "translated_descriptions": { + "ar": "قَمَر", + "bg": "Луна", + "ca": "Lluna", + "cs": "Měsíc", + "de": "Mond", + "eo": "Luno", + "es": "Luna", + "et": "Kuu", + "fi": "Kuu", + "fr": "Lune", + "hr": "mjesec", + "hu": "Hold", + "it": "Luna", + "ja": "月", + "nb_NO": "Måne", + "nl": "Maan", + "pt_BR": "Lua", + "ru": "Луна", + "si": null, + "sk": "Polmesiac", + "sr": "месец", + "sv": "Måne", + "szl": null, + "tzm": "Ayyur", + "uk": "Місяць", + "zh_Hans": "月亮" + } + }, + { + "number": 21, + "emoji": "☁️", + "description": "Cloud", + "unicode": "U+2601U+FE0F", + "translated_descriptions": { + "ar": "سَحابَة", + "bg": "Облак", + "ca": "Núvol", + "cs": "Mrak", + "de": "Wolke", + "eo": "Nubo", + "es": "Nube", + "et": "Pilv", + "fi": "Pilvi", + "fr": "Nuage", + "hr": "oblak", + "hu": "Felhő", + "it": "Nuvola", + "ja": "雲", + "nb_NO": "Sky", + "nl": "Wolk", + "pt_BR": "Nuvem", + "ru": "Облако", + "si": null, + "sk": "Oblak", + "sr": "облак", + "sv": "Moln", + "szl": null, + "tzm": null, + "uk": "Хмара", + "zh_Hans": "云" + } + }, + { + "number": 22, + "emoji": "🔥", + "description": "Fire", + "unicode": "U+1F525", + "translated_descriptions": { + "ar": "نار", + "bg": "Огън", + "ca": "Foc", + "cs": "Oheň", + "de": "Feuer", + "eo": "Fajro", + "es": "Fuego", + "et": "Tuli", + "fi": "Tuli", + "fr": "Feu", + "hr": "vatra", + "hu": "Tűz", + "it": "Fuoco", + "ja": "炎", + "nb_NO": "Flamme", + "nl": "Vuur", + "pt_BR": "Fogo", + "ru": "Огонь", + "si": null, + "sk": "Oheň", + "sr": "ватра", + "sv": "Eld", + "szl": null, + "tzm": "Timessi", + "uk": "Вогонь", + "zh_Hans": "火" + } + }, + { + "number": 23, + "emoji": "🍌", + "description": "Banana", + "unicode": "U+1F34C", + "translated_descriptions": { + "ar": "مَوزَة", + "bg": "Банан", + "ca": "Plàtan", + "cs": "Banán", + "de": "Banane", + "eo": "Banano", + "es": "Plátano", + "et": "Banaan", + "fi": "Banaani", + "fr": "Banane", + "hr": "banana", + "hu": "Banán", + "it": "Banana", + "ja": "バナナ", + "nb_NO": "Banan", + "nl": "Banaan", + "pt_BR": "Banana", + "ru": "Банан", + "si": null, + "sk": "Banán", + "sr": "банана", + "sv": "Banan", + "szl": null, + "tzm": "Tabanant", + "uk": "Банан", + "zh_Hans": "香蕉" + } + }, + { + "number": 24, + "emoji": "🍎", + "description": "Apple", + "unicode": "U+1F34E", + "translated_descriptions": { + "ar": "تُفَّاحَة", + "bg": "Ябълка", + "ca": "Poma", + "cs": "Jablko", + "de": "Apfel", + "eo": "Pomo", + "es": "Manzana", + "et": "Õun", + "fi": "Omena", + "fr": "Pomme", + "hr": "jabuka", + "hu": "Alma", + "it": "Mela", + "ja": "リンゴ", + "nb_NO": "Eple", + "nl": "Appel", + "pt_BR": "Maçã", + "ru": "Яблоко", + "si": null, + "sk": "Červené jablko", + "sr": "јабука", + "sv": "Äpple", + "szl": null, + "tzm": "Tadeffuyt", + "uk": "Яблуко", + "zh_Hans": "苹果" + } + }, + { + "number": 25, + "emoji": "🍓", + "description": "Strawberry", + "unicode": "U+1F353", + "translated_descriptions": { + "ar": "فَراوِلَة", + "bg": "Ягода", + "ca": "Maduixa", + "cs": "Jahoda", + "de": "Erdbeere", + "eo": "Frago", + "es": "Fresa", + "et": "Maasikas", + "fi": "Mansikka", + "fr": "Fraise", + "hr": "jagoda", + "hu": "Eper", + "it": "Fragola", + "ja": "いちご", + "nb_NO": "Jordbær", + "nl": "Aardbei", + "pt_BR": "Morango", + "ru": "Клубника", + "si": null, + "sk": "Jahoda", + "sr": "јагода", + "sv": "Jordgubbe", + "szl": null, + "tzm": null, + "uk": "Полуниця", + "zh_Hans": "草莓" + } + }, + { + "number": 26, + "emoji": "🌽", + "description": "Corn", + "unicode": "U+1F33D", + "translated_descriptions": { + "ar": "ذُرَة", + "bg": "Царевица", + "ca": "Blat de moro", + "cs": "Kukuřice", + "de": "Mais", + "eo": "Maizo", + "es": "Maíz", + "et": "Mais", + "fi": "Maissi", + "fr": "Maïs", + "hr": "kukuruza", + "hu": "Kukorica", + "it": "Mais", + "ja": "とうもろこし", + "nb_NO": "Mais", + "nl": "Maïs", + "pt_BR": "Milho", + "ru": "Кукуруза", + "si": null, + "sk": "Kukuričný klas", + "sr": "кукуруз", + "sv": "Majs", + "szl": null, + "tzm": null, + "uk": "Кукурудза", + "zh_Hans": "玉米" + } + }, + { + "number": 27, + "emoji": "🍕", + "description": "Pizza", + "unicode": "U+1F355", + "translated_descriptions": { + "ar": "بِيتزا", + "bg": "Пица", + "ca": "Pizza", + "cs": "Pizza", + "de": "Pizza", + "eo": "Pico", + "es": "Pizza", + "et": "Pitsa", + "fi": "Pizza", + "fr": "Pizza", + "hr": "pizza", + "hu": "Pizza", + "it": "Pizza", + "ja": "ピザ", + "nb_NO": "Pizza", + "nl": "Pizza", + "pt_BR": "Pizza", + "ru": "Пицца", + "si": null, + "sk": "Pizza", + "sr": "пица", + "sv": "Pizza", + "szl": null, + "tzm": null, + "uk": "Піца", + "zh_Hans": "披萨" + } + }, + { + "number": 28, + "emoji": "🎂", + "description": "Cake", + "unicode": "U+1F382", + "translated_descriptions": { + "ar": "كَعكَة", + "bg": "Торта", + "ca": "Pastís", + "cs": "Dort", + "de": "Kuchen", + "eo": "Torto", + "es": "Tarta", + "et": "Kook", + "fi": "Kakku", + "fr": "Gâteau", + "hr": "torta", + "hu": "Süti", + "it": "Torta", + "ja": "ケーキ", + "nb_NO": "Kake", + "nl": "Taart", + "pt_BR": "Bolo", + "ru": "Торт", + "si": null, + "sk": "Narodeninová torta", + "sr": "торта", + "sv": "Tårta", + "szl": null, + "tzm": null, + "uk": "Пиріг", + "zh_Hans": "蛋糕" + } + }, + { + "number": 29, + "emoji": "❤️", + "description": "Heart", + "unicode": "U+2764U+FE0F", + "translated_descriptions": { + "ar": "قَلب", + "bg": "Сърце", + "ca": "Cor", + "cs": "Srdce", + "de": "Herz", + "eo": "Koro", + "es": "Corazón", + "et": "Süda", + "fi": "Sydän", + "fr": "Cœur", + "hr": "srca", + "hu": "Szív", + "it": "Cuore", + "ja": "ハート", + "nb_NO": "Hjerte", + "nl": "Hart", + "pt_BR": "Coração", + "ru": "Сердце", + "si": null, + "sk": "červené srdce", + "sr": "срце", + "sv": "Hjärta", + "szl": null, + "tzm": "Ul", + "uk": "Серце", + "zh_Hans": "心" + } + }, + { + "number": 30, + "emoji": "😀", + "description": "Smiley", + "unicode": "U+1F600", + "translated_descriptions": { + "ar": "اِبتِسَامَة", + "bg": "Усмивка", + "ca": "Somrient", + "cs": "Smajlík", + "de": "Lächeln", + "eo": "Rideto", + "es": "Emoticono", + "et": "Smaili", + "fi": "Hymynaama", + "fr": "Sourire", + "hr": "smajlića", + "hu": "Mosoly", + "it": "Faccina sorridente", + "ja": "スマイル", + "nb_NO": "Smilefjes", + "nl": "Smiley", + "pt_BR": "Sorriso", + "ru": "Улыбка", + "si": null, + "sk": "Škeriaca sa tvár", + "sr": "смајли", + "sv": "Smiley", + "szl": null, + "tzm": null, + "uk": "Посмішка", + "zh_Hans": "笑脸" + } + }, + { + "number": 31, + "emoji": "🤖", + "description": "Robot", + "unicode": "U+1F916", + "translated_descriptions": { + "ar": "رُوبُوت", + "bg": "Робот", + "ca": "Robot", + "cs": "Robot", + "de": "Roboter", + "eo": "Roboto", + "es": "Robot", + "et": "Robot", + "fi": "Robotti", + "fr": "Robot", + "hr": "robot", + "hu": "Robot", + "it": "Robot", + "ja": "ロボと", + "nb_NO": "Robot", + "nl": "Robot", + "pt_BR": "Robô", + "ru": "Робот", + "si": null, + "sk": "Robot", + "sr": "робот", + "sv": "Robot", + "szl": null, + "tzm": "Aṛubu", + "uk": "Робот", + "zh_Hans": "机器人" + } + }, + { + "number": 32, + "emoji": "🎩", + "description": "Hat", + "unicode": "U+1F3A9", + "translated_descriptions": { + "ar": "قُبَّعَة", + "bg": "Шапка", + "ca": "Barret", + "cs": "Klobouk", + "de": "Hut", + "eo": "Ĉapelo", + "es": "Sombrero", + "et": "Kübar", + "fi": "Hattu", + "fr": "Chapeau", + "hr": "kapa", + "hu": "Kalap", + "it": "Cappello", + "ja": "帽子", + "nb_NO": "Hatt", + "nl": "Hoed", + "pt_BR": "Chapéu", + "ru": "Шляпа", + "si": null, + "sk": "Cilinder", + "sr": "шешир", + "sv": "Hatt", + "szl": null, + "tzm": "Taraza", + "uk": "Капелюх", + "zh_Hans": "帽子" + } + }, + { + "number": 33, + "emoji": "👓", + "description": "Glasses", + "unicode": "U+1F453", + "translated_descriptions": { + "ar": "نَظَّارَة", + "bg": "Очила", + "ca": "Ulleres", + "cs": "Brýle", + "de": "Brille", + "eo": "Okulvitroj", + "es": "Gafas", + "et": "Prillid", + "fi": "Silmälasit", + "fr": "Lunettes", + "hr": "naočale", + "hu": "Szemüveg", + "it": "Occhiali", + "ja": "めがね", + "nb_NO": "Briller", + "nl": "Bril", + "pt_BR": "Óculos", + "ru": "Очки", + "si": null, + "sk": "Okuliare", + "sr": "наочаре", + "sv": "Glasögon", + "szl": null, + "tzm": null, + "uk": "Окуляри", + "zh_Hans": "眼镜" + } + }, + { + "number": 34, + "emoji": "🔧", + "description": "Spanner", + "unicode": "U+1F527", + "translated_descriptions": { + "ar": "مِفتَاحُ رَبط", + "bg": "Гаечен ключ", + "ca": "Clau anglesa", + "cs": "Klíč", + "de": "Schraubenschlüssel", + "eo": "Ŝraŭbŝlosilo", + "es": "Llave inglesa", + "et": "Mutrivõti", + "fi": "Kiintoavain", + "fr": "Clé à molette", + "hr": "ključ", + "hu": "Csavarkulcs", + "it": "Chiave inglese", + "ja": "スパナ", + "nb_NO": "Fastnøkkel", + "nl": "Moersleutel", + "pt_BR": "Chave inglesa", + "ru": "Ключ", + "si": null, + "sk": "Francúzsky kľúč", + "sr": "кључ", + "sv": "Skruvnyckel", + "szl": null, + "tzm": null, + "uk": "Гайковий ключ", + "zh_Hans": "扳手" + } + }, + { + "number": 35, + "emoji": "🎅", + "description": "Santa", + "unicode": "U+1F385", + "translated_descriptions": { + "ar": "سانتا", + "bg": "Дядо Коледа", + "ca": "Pare Noél", + "cs": "Mikuláš", + "de": "Weihnachtsmann", + "eo": "Kristnaska viro", + "es": "Papá Noel", + "et": "Jõuluvana", + "fi": "Joulupukki", + "fr": "Père Noël", + "hr": "deda Mraz", + "hu": "Télapó", + "it": "Babbo Natale", + "ja": "サンタ", + "nb_NO": "Julenisse", + "nl": "Kerstman", + "pt_BR": "Papai-noel", + "ru": "Санта", + "si": null, + "sk": "Santa Claus", + "sr": "деда Мраз", + "sv": "Tomte", + "szl": null, + "tzm": null, + "uk": "Санта Клаус", + "zh_Hans": "圣诞老人" + } + }, + { + "number": 36, + "emoji": "👍", + "description": "Thumbs Up", + "unicode": "U+1F44D", + "translated_descriptions": { + "ar": "رَفعُ إِبهَام", + "bg": "Палец нагоре", + "ca": "Polzes amunt", + "cs": "Palec nahoru", + "de": "Daumen Hoch", + "eo": "Dikfingro supren", + "es": "Pulgar arriba", + "et": "Pöidlad püsti", + "fi": "Peukalo ylös", + "fr": "Pouce en l’air", + "hr": "palac gore", + "hu": "Hüvelykujj fel", + "it": "Pollice alzato", + "ja": "いいね", + "nb_NO": "Tommel Opp", + "nl": "Duim omhoog", + "pt_BR": "Joinha", + "ru": "Большой палец вверх", + "si": null, + "sk": "Palec nahor", + "sr": "палчић горе", + "sv": "Tummen upp", + "szl": null, + "tzm": null, + "uk": "Великий палець вгору", + "zh_Hans": "赞" + } + }, + { + "number": 37, + "emoji": "☂️", + "description": "Umbrella", + "unicode": "U+2602U+FE0F", + "translated_descriptions": { + "ar": "مِظَلَّة", + "bg": "Чадър", + "ca": "Paraigües", + "cs": "Deštník", + "de": "Regenschirm", + "eo": "Ombrelo", + "es": "Paraguas", + "et": "Vihmavari", + "fi": "Sateenvarjo", + "fr": "Parapluie", + "hr": "kišobran", + "hu": "Esernyő", + "it": "Ombrello", + "ja": "傘", + "nb_NO": "Paraply", + "nl": "Paraplu", + "pt_BR": "Guarda-chuva", + "ru": "Зонт", + "si": null, + "sk": "Dáždnik", + "sr": "кишобран", + "sv": "Paraply", + "szl": null, + "tzm": null, + "uk": "Парасолька", + "zh_Hans": "伞" + } + }, + { + "number": 38, + "emoji": "⌛", + "description": "Hourglass", + "unicode": "U+231B", + "translated_descriptions": { + "ar": "سَاعَةٌ رَملِيَّة", + "bg": "Пясъчен часовник", + "ca": "Rellotge de sorra", + "cs": "Přesýpací hodiny", + "de": "Sanduhr", + "eo": "Sablohorloĝo", + "es": "Reloj de arena", + "et": "Liivakell", + "fi": "Tiimalasi", + "fr": "Sablier", + "hr": "pješčani sat", + "hu": "Homokóra", + "it": "Clessidra", + "ja": "砂時計", + "nb_NO": "Timeglass", + "nl": "Zandloper", + "pt_BR": "Ampulheta", + "ru": "Песочные часы", + "si": null, + "sk": "Presýpacie hodiny", + "sr": "пешчаник", + "sv": "Timglas", + "szl": null, + "tzm": null, + "uk": "Пісковий годинник", + "zh_Hans": "沙漏" + } + }, + { + "number": 39, + "emoji": "⏰", + "description": "Clock", + "unicode": "U+23F0", + "translated_descriptions": { + "ar": "سَاعَة", + "bg": "Часовник", + "ca": "Rellotge", + "cs": "Hodiny", + "de": "Uhr", + "eo": "Horloĝo", + "es": "Reloj", + "et": "Kell", + "fi": "Pöytäkello", + "fr": "Réveil", + "hr": "sat", + "hu": "Óra", + "it": "Orologio", + "ja": "時計", + "nb_NO": "Klokke", + "nl": "Wekker", + "pt_BR": "Relógio", + "ru": "Часы", + "si": null, + "sk": "Budík", + "sr": "сат", + "sv": "Klocka", + "szl": null, + "tzm": null, + "uk": "Годинник", + "zh_Hans": "时钟" + } + }, + { + "number": 40, + "emoji": "🎁", + "description": "Gift", + "unicode": "U+1F381", + "translated_descriptions": { + "ar": "هَدِيَّة", + "bg": "Подарък", + "ca": "Regal", + "cs": "Dárek", + "de": "Geschenk", + "eo": "Donaco", + "es": "Regalo", + "et": "Kingitus", + "fi": "Lahja", + "fr": "Cadeau", + "hr": "poklon", + "hu": "Ajándék", + "it": "Regalo", + "ja": "ギフト", + "nb_NO": "Gave", + "nl": "Geschenk", + "pt_BR": "Presente", + "ru": "Подарок", + "si": null, + "sk": "Zabalený darček", + "sr": "поклон", + "sv": "Present", + "szl": null, + "tzm": null, + "uk": "Подарунок", + "zh_Hans": "礼物" + } + }, + { + "number": 41, + "emoji": "💡", + "description": "Light Bulb", + "unicode": "U+1F4A1", + "translated_descriptions": { + "ar": "مِصبَاح", + "bg": "Лампа", + "ca": "Bombeta", + "cs": "Žárovka", + "de": "Glühbirne", + "eo": "Lampo", + "es": "Bombilla", + "et": "Lambipirn", + "fi": "Hehkulamppu", + "fr": "Ampoule", + "hr": "žarulja", + "hu": "Égő", + "it": "Lampadina", + "ja": "電球", + "nb_NO": "Lyspære", + "nl": "Gloeilamp", + "pt_BR": "Lâmpada", + "ru": "Лампочка", + "si": null, + "sk": "Žiarovka", + "sr": "сијалица", + "sv": "Lampa", + "szl": null, + "tzm": null, + "uk": "Лампочка", + "zh_Hans": "灯泡" + } + }, + { + "number": 42, + "emoji": "📕", + "description": "Book", + "unicode": "U+1F4D5", + "translated_descriptions": { + "ar": "كِتَاب", + "bg": "Книга", + "ca": "Llibre", + "cs": "Kniha", + "de": "Buch", + "eo": "Libro", + "es": "Libro", + "et": "Raamat", + "fi": "Kirja", + "fr": "Livre", + "hr": "knjiga", + "hu": "Könyv", + "it": "Libro", + "ja": "本", + "nb_NO": "Bok", + "nl": "Boek", + "pt_BR": "Livro", + "ru": "Книга", + "si": null, + "sk": "Zatvorená kniha", + "sr": "књига", + "sv": "Bok", + "szl": null, + "tzm": "Adlis", + "uk": "Книга", + "zh_Hans": "书" + } + }, + { + "number": 43, + "emoji": "✏️", + "description": "Pencil", + "unicode": "U+270FU+FE0F", + "translated_descriptions": { + "ar": "قَلَمُ رَصاص", + "bg": "Молив", + "ca": "Llapis", + "cs": "Tužka", + "de": "Bleistift", + "eo": "Krajono", + "es": "Lápiz", + "et": "Pliiats", + "fi": "Lyijykynä", + "fr": "Crayon", + "hr": "olovka", + "hu": "Ceruza", + "it": "Matita", + "ja": "鉛筆", + "nb_NO": "Blyant", + "nl": "Potlood", + "pt_BR": "Lápis", + "ru": "Карандаш", + "si": null, + "sk": "Ceruzka", + "sr": "оловка", + "sv": "Penna", + "szl": null, + "tzm": null, + "uk": "Олівець", + "zh_Hans": "铅笔" + } + }, + { + "number": 44, + "emoji": "📎", + "description": "Paperclip", + "unicode": "U+1F4CE", + "translated_descriptions": { + "ar": "مِشبَكُ وَرَق", + "bg": "Кламер", + "ca": "Clip", + "cs": "Sponka", + "de": "Büroklammer", + "eo": "Paperkuntenilo", + "es": "Clip", + "et": "Kirjaklamber", + "fi": "Paperiliitin", + "fr": "Trombone", + "hr": "spajalica", + "hu": "Gémkapocs", + "it": "Graffetta", + "ja": "クリップ", + "nb_NO": "BInders", + "nl": "Papierklemmetje", + "pt_BR": "Clipe de papel", + "ru": "Скрепка", + "si": null, + "sk": "Sponka na papier", + "sr": "спајалица", + "sv": "Gem", + "szl": null, + "tzm": null, + "uk": "Спиначка", + "zh_Hans": "回形针" + } + }, + { + "number": 45, + "emoji": "✂️", + "description": "Scissors", + "unicode": "U+2702U+FE0F", + "translated_descriptions": { + "ar": "مِقَصّ", + "bg": "Ножици", + "ca": "Tisores", + "cs": "Nůžky", + "de": "Schere", + "eo": "Tondilo", + "es": "Tijeras", + "et": "Käärid", + "fi": "Sakset", + "fr": "Ciseaux", + "hr": "škare", + "hu": "Olló", + "it": "Forbici", + "ja": "はさみ", + "nb_NO": "Saks", + "nl": "Schaar", + "pt_BR": "Tesoura", + "ru": "Ножницы", + "si": null, + "sk": "Nožnice", + "sr": "маказе", + "sv": "Sax", + "szl": null, + "tzm": null, + "uk": "Ножиці", + "zh_Hans": "剪刀" + } + }, + { + "number": 46, + "emoji": "🔒", + "description": "Lock", + "unicode": "U+1F512", + "translated_descriptions": { + "ar": "قُفل", + "bg": "Катинар", + "ca": "Cadenat", + "cs": "Zámek", + "de": "Schloss", + "eo": "Seruro", + "es": "Candado", + "et": "Lukk", + "fi": "Lukko", + "fr": "Cadenas", + "hr": "zaključati", + "hu": "Lakat", + "it": "Lucchetto", + "ja": "錠前", + "nb_NO": "Lås", + "nl": "Slot", + "pt_BR": "Cadeado", + "ru": "Замок", + "si": null, + "sk": "Zatvorená zámka", + "sr": "катанац", + "sv": "Lås", + "szl": null, + "tzm": null, + "uk": "Замок", + "zh_Hans": "锁" + } + }, + { + "number": 47, + "emoji": "🔑", + "description": "Key", + "unicode": "U+1F511", + "translated_descriptions": { + "ar": "مِفتَاح", + "bg": "Ключ", + "ca": "Clau", + "cs": "Klíč", + "de": "Schlüssel", + "eo": "Ŝlosilo", + "es": "Llave", + "et": "Võti", + "fi": "Avain", + "fr": "Clé", + "hr": "ključ", + "hu": "Kulcs", + "it": "Chiave", + "ja": "鍵", + "nb_NO": "Nøkkel", + "nl": "Sleutel", + "pt_BR": "Chave", + "ru": "Ключ", + "si": null, + "sk": "Kľúč", + "sr": "кључ", + "sv": "Nyckel", + "szl": null, + "tzm": "Tasarut", + "uk": "Ключ", + "zh_Hans": "钥匙" + } + }, + { + "number": 48, + "emoji": "🔨", + "description": "Hammer", + "unicode": "U+1F528", + "translated_descriptions": { + "ar": "مِطرَقَة", + "bg": "Чук", + "ca": "Martell", + "cs": "Kladivo", + "de": "Hammer", + "eo": "Martelo", + "es": "Martillo", + "et": "Haamer", + "fi": "Vasara", + "fr": "Marteau", + "hr": "čekić", + "hu": "Kalapács", + "it": "Martello", + "ja": "金槌", + "nb_NO": "Hammer", + "nl": "Hamer", + "pt_BR": "Martelo", + "ru": "Молоток", + "si": null, + "sk": "Kladivo", + "sr": "чекић", + "sv": "Hammare", + "szl": null, + "tzm": null, + "uk": "Молоток", + "zh_Hans": "锤子" + } + }, + { + "number": 49, + "emoji": "☎️", + "description": "Telephone", + "unicode": "U+260EU+FE0F", + "translated_descriptions": { + "ar": "تِلِفُون", + "bg": "Телефон", + "ca": "Telèfon", + "cs": "Telefon", + "de": "Telefon", + "eo": "Telefono", + "es": "Telefono", + "et": "Telefon", + "fi": "Puhelin", + "fr": "Téléphone", + "hr": "telefon", + "hu": "Telefon", + "it": "Telefono", + "ja": "電話機", + "nb_NO": "Telefon", + "nl": "Telefoon", + "pt_BR": "Telefone", + "ru": "Телефон", + "si": null, + "sk": "Telefón", + "sr": "телефон", + "sv": "Telefon", + "szl": null, + "tzm": "Atilifun", + "uk": "Телефон", + "zh_Hans": "电话" + } + }, + { + "number": 50, + "emoji": "🏁", + "description": "Flag", + "unicode": "U+1F3C1", + "translated_descriptions": { + "ar": "عَلَم", + "bg": "Флаг", + "ca": "Bandera", + "cs": "Vlajka", + "de": "Flagge", + "eo": "Flago", + "es": "Bandera", + "et": "Lipp", + "fi": "Lippu", + "fr": "Drapeau", + "hr": "zastava", + "hu": "Zászló", + "it": "Bandiera", + "ja": "旗", + "nb_NO": "Flagg", + "nl": "Vlag", + "pt_BR": "Bandeira", + "ru": "Флаг", + "si": null, + "sk": "Kockovaná zástava", + "sr": "застава", + "sv": "Flagga", + "szl": null, + "tzm": "Acenyal", + "uk": "Прапор", + "zh_Hans": "旗帜" + } + }, + { + "number": 51, + "emoji": "🚂", + "description": "Train", + "unicode": "U+1F682", + "translated_descriptions": { + "ar": "قِطَار", + "bg": "Влак", + "ca": "Tren", + "cs": "Vlak", + "de": "Zug", + "eo": "Vagonaro", + "es": "Tren", + "et": "Rong", + "fi": "Juna", + "fr": "Train", + "hr": "vlak", + "hu": "Vonat", + "it": "Treno", + "ja": "電車", + "nb_NO": "Tog", + "nl": "Trein", + "pt_BR": "Trem", + "ru": "Поезд", + "si": null, + "sk": "Rušeň", + "sr": "воз", + "sv": "Tåg", + "szl": null, + "tzm": null, + "uk": "Потяг", + "zh_Hans": "火车" + } + }, + { + "number": 52, + "emoji": "🚲", + "description": "Bicycle", + "unicode": "U+1F6B2", + "translated_descriptions": { + "ar": "دَرّاجَة", + "bg": "Колело", + "ca": "Bicicleta", + "cs": "Kolo", + "de": "Fahrrad", + "eo": "Biciklo", + "es": "Bicicleta", + "et": "Jalgratas", + "fi": "Polkupyörä", + "fr": "Vélo", + "hr": "bicikl", + "hu": "Kerékpár", + "it": "Bicicletta", + "ja": "自転車", + "nb_NO": "Sykkel", + "nl": "Fiets", + "pt_BR": "Bicicleta", + "ru": "Велосипед", + "si": null, + "sk": "Bicykel", + "sr": "бицикл", + "sv": "Cykel", + "szl": null, + "tzm": null, + "uk": "Велосипед", + "zh_Hans": "自行车" + } + }, + { + "number": 53, + "emoji": "✈️", + "description": "Aeroplane", + "unicode": "U+2708U+FE0F", + "translated_descriptions": { + "ar": "طَائِرة", + "bg": "Самолет", + "ca": "Avió", + "cs": "Letadlo", + "de": "Flugzeug", + "eo": "Aviadilo", + "es": "Avión", + "et": "Lennuk", + "fi": "Lentokone", + "fr": "Avion", + "hr": "avion", + "hu": "Repülő", + "it": "Aeroplano", + "ja": "飛行機", + "nb_NO": "Fly", + "nl": "Vliegtuig", + "pt_BR": "Avião", + "ru": "Самолет", + "si": null, + "sk": "Lietadlo", + "sr": "авион", + "sv": "Flygplan", + "szl": null, + "tzm": null, + "uk": "Літак", + "zh_Hans": "飞机" + } + }, + { + "number": 54, + "emoji": "🚀", + "description": "Rocket", + "unicode": "U+1F680", + "translated_descriptions": { + "ar": "صَارُوخ", + "bg": "Ракета", + "ca": "Coet", + "cs": "Raketa", + "de": "Rakete", + "eo": "Raketo", + "es": "Cohete", + "et": "Rakett", + "fi": "Raketti", + "fr": "Fusée", + "hr": "raketa", + "hu": "Rakáta", + "it": "Razzo", + "ja": "ロケット", + "nb_NO": "Rakett", + "nl": "Raket", + "pt_BR": "Foguete", + "ru": "Ракета", + "si": null, + "sk": "Raketa", + "sr": "ракета", + "sv": "Raket", + "szl": null, + "tzm": null, + "uk": "Ракета", + "zh_Hans": "火箭" + } + }, + { + "number": 55, + "emoji": "🏆", + "description": "Trophy", + "unicode": "U+1F3C6", + "translated_descriptions": { + "ar": "كَأسُ النَّصر", + "bg": "Трофей", + "ca": "Trofeu", + "cs": "Pohár", + "de": "Pokal", + "eo": "Trofeo", + "es": "Trofeo", + "et": "Auhind", + "fi": "Palkinto", + "fr": "Trophée", + "hr": "trofej", + "hu": "Trófea", + "it": "Trofeo", + "ja": "トロフィー", + "nb_NO": "Pokal", + "nl": "Trofee", + "pt_BR": "Troféu", + "ru": "Кубок", + "si": null, + "sk": "Trofej", + "sr": "пехар", + "sv": "Trofé", + "szl": null, + "tzm": null, + "uk": "Приз", + "zh_Hans": "奖杯" + } + }, + { + "number": 56, + "emoji": "⚽", + "description": "Ball", + "unicode": "U+26BD", + "translated_descriptions": { + "ar": "كُرَة", + "bg": "Топка", + "ca": "Pilota", + "cs": "Míč", + "de": "Ball", + "eo": "Pilko", + "es": "Bola", + "et": "Pall", + "fi": "Pallo", + "fr": "Ballon", + "hr": "lopta", + "hu": "Labda", + "it": "Palla", + "ja": "ボール", + "nb_NO": "Ball", + "nl": "Bal", + "pt_BR": "Bola", + "ru": "Мяч", + "si": null, + "sk": "Futbal", + "sr": "лопта", + "sv": "Boll", + "szl": null, + "tzm": "Tcama", + "uk": "М'яч", + "zh_Hans": "球" + } + }, + { + "number": 57, + "emoji": "🎸", + "description": "Guitar", + "unicode": "U+1F3B8", + "translated_descriptions": { + "ar": "غيتار", + "bg": "Китара", + "ca": "Guitarra", + "cs": "Kytara", + "de": "Gitarre", + "eo": "Gitaro", + "es": "Guitarra", + "et": "Kitarr", + "fi": "Kitara", + "fr": "Guitare", + "hr": "gitara", + "hu": "Gitár", + "it": "Chitarra", + "ja": "ギター", + "nb_NO": "Gitar", + "nl": "Gitaar", + "pt_BR": "Guitarra", + "ru": "Гитара", + "si": null, + "sk": "Gitara", + "sr": "гитара", + "sv": "Gitarr", + "szl": null, + "tzm": "Agiṭaṛ", + "uk": "Гітара", + "zh_Hans": "吉他" + } + }, + { + "number": 58, + "emoji": "🎺", + "description": "Trumpet", + "unicode": "U+1F3BA", + "translated_descriptions": { + "ar": "بُوق", + "bg": "Тромпет", + "ca": "Trompeta", + "cs": "Trumpeta", + "de": "Trompete", + "eo": "Trumpeto", + "es": "Trompeta", + "et": "Trompet", + "fi": "Trumpetti", + "fr": "Trompette", + "hr": "truba", + "hu": "Trombita", + "it": "Trombetta", + "ja": "トランペット", + "nb_NO": "Trompet", + "nl": "Trompet", + "pt_BR": "Trombeta", + "ru": "Труба", + "si": null, + "sk": "Trúbka", + "sr": "труба", + "sv": "Trumpet", + "szl": null, + "tzm": null, + "uk": "Труба", + "zh_Hans": "喇叭" + } + }, + { + "number": 59, + "emoji": "🔔", + "description": "Bell", + "unicode": "U+1F514", + "translated_descriptions": { + "ar": "جَرَس", + "bg": "Звънец", + "ca": "Campana", + "cs": "Zvonek", + "de": "Glocke", + "eo": "Sonorilo", + "es": "Campana", + "et": "Kelluke", + "fi": "Soittokello", + "fr": "Cloche", + "hr": "zvono", + "hu": "Harang", + "it": "Campana", + "ja": "ベル", + "nb_NO": "Bjelle", + "nl": "Bel", + "pt_BR": "Sino", + "ru": "Колокол", + "si": null, + "sk": "Zvon", + "sr": "звоно", + "sv": "Bjällra", + "szl": null, + "tzm": null, + "uk": "Дзвін", + "zh_Hans": "铃铛" + } + }, + { + "number": 60, + "emoji": "⚓", + "description": "Anchor", + "unicode": "U+2693", + "translated_descriptions": { + "ar": "مِرسَاة", + "bg": "Котва", + "ca": "Àncora", + "cs": "Kotva", + "de": "Anker", + "eo": "Ankro", + "es": "Ancla", + "et": "Ankur", + "fi": "Ankkuri", + "fr": "Ancre", + "hr": "sidro", + "hu": "Horgony", + "it": "Ancora", + "ja": "いかり", + "nb_NO": "Anker", + "nl": "Anker", + "pt_BR": "Âncora", + "ru": "Якорь", + "si": null, + "sk": "Kotva", + "sr": "сидро", + "sv": "Ankare", + "szl": null, + "tzm": null, + "uk": "Якір", + "zh_Hans": "锚" + } + }, + { + "number": 61, + "emoji": "🎧", + "description": "Headphones", + "unicode": "U+1F3A7", + "translated_descriptions": { + "ar": "سَمّاعَة رَأس", + "bg": "Слушалки", + "ca": "Auriculars", + "cs": "Sluchátka", + "de": "Kopfhörer", + "eo": "Kapaŭdilo", + "es": "Cascos", + "et": "Kõrvaklapid", + "fi": "Kuulokkeet", + "fr": "Casque audio", + "hr": "slušalice", + "hu": "Fejhallgató", + "it": "Cuffie", + "ja": "ヘッドホン", + "nb_NO": "Hodetelefoner", + "nl": "Koptelefoon", + "pt_BR": "Fones de ouvido", + "ru": "Наушники", + "si": null, + "sk": "Slúchadlá", + "sr": "слушалице", + "sv": "Hörlurar", + "szl": null, + "tzm": null, + "uk": "Навушники", + "zh_Hans": "耳机" + } + }, + { + "number": 62, + "emoji": "📁", + "description": "Folder", + "unicode": "U+1F4C1", + "translated_descriptions": { + "ar": "مُجَلَّد", + "bg": "Папка", + "ca": "Carpeta", + "cs": "Složka", + "de": "Ordner", + "eo": "Dosierujo", + "es": "Carpeta", + "et": "Kaust", + "fi": "Kansio", + "fr": "Dossier", + "hr": "mapu", + "hu": "Mappa", + "it": "Cartella", + "ja": "フォルダ", + "nb_NO": "Mappe", + "nl": "Map", + "pt_BR": "Pasta", + "ru": "Папка", + "si": null, + "sk": "Fascikel", + "sr": "фасцикла", + "sv": "Mapp", + "szl": null, + "tzm": "Asdaw", + "uk": "Тека", + "zh_Hans": "文件夹" + } + }, + { + "number": 63, + "emoji": "📌", + "description": "Pin", + "unicode": "U+1F4CC", + "translated_descriptions": { + "ar": "دَبُّوس", + "bg": "Кабърче", + "ca": "Xinxeta", + "cs": "Špendlík", + "de": "Stecknadel", + "eo": "Pinglo", + "es": "Alfiler", + "et": "Nööpnõel", + "fi": "Nuppineula", + "fr": "Punaise", + "hr": "pribadača", + "hu": "Rajszeg", + "it": "Puntina", + "ja": "ピン", + "nb_NO": "Tegnestift", + "nl": "Duimspijker", + "pt_BR": "Alfinete", + "ru": "Булавка", + "si": null, + "sk": "Špendlík", + "sr": "чиода", + "sv": "Häftstift", + "szl": null, + "tzm": null, + "uk": "Кнопка", + "zh_Hans": "图钉" + } + } +] \ No newline at end of file diff --git a/assets/sounds/call.ogg b/assets/sounds/call.ogg new file mode 100644 index 0000000000000000000000000000000000000000..63b5d4d375510a8caf712232ff588681face281c GIT binary patch literal 22116 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 Ovo2HhZi6Zm0{ah9WAoSm literal 0 HcmV?d00001 diff --git a/assets/sounds/notification.ogg b/assets/sounds/notification.ogg new file mode 100644 index 0000000000000000000000000000000000000000..390f2bf8efe683d1b44c0b5d87f433d9b498b9dd GIT binary patch literal 24143 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 literal 0 HcmV?d00001 diff --git a/assets/sounds/phone.ogg b/assets/sounds/phone.ogg new file mode 100644 index 0000000000000000000000000000000000000000..7cd286488e2bbff61698a82e2dc7878ac111d902 GIT binary patch literal 297207 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 iyTM`XoEFDcq4au%hKL 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
    TMefTZ&lv6>4i#zmy94U6*odrTtdytC4f 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

    o+`LuDg%DgQ3;|}E`w~zC{*z;L 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 z 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 Ga{dVguKBP4 literal 0 HcmV?d00001 diff --git a/config.json b/config.json new file mode 100644 index 0000000..5aa0a4b --- /dev/null +++ b/config.json @@ -0,0 +1,29 @@ +{ + "applicationName": "FluffyChat", + "defaultHomeserver": "matrix.org", + "privacyUrl": "https://github.com/krille-chan/fluffychat/blob/main/PRIVACY.md", + "audioRecordingNumChannels": 1, + "audioRecordingAutoGain": true, + "audioRecordingEchoCancel": false, + "audioRecordingNoiseSuppress": true, + "audioRecordingBitRate": 64000, + "audioRecordingSamplingRate": 44100, + "renderHtml": true, + "fontSizeFactor": 1, + "hideRedactedEvents": false, + "hideUnknownEvents": true, + "separateChatTypes": false, + "autoplayImages": true, + "sendTypingNotifications": true, + "sendPublicReadReceipts": true, + "swipeRightToLeftToReply": true, + "sendOnEnter": false, + "showPresences": true, + "displayNavigationRail": false, + "experimentalVoip": false, + "shareKeysWith": "all", + "noEncryptionWarningShown": false, + "displayChatDetailsColumn": false, + "colorSchemeSeedInt": 4283835834, + "enableSoftLogout": false +} \ No newline at end of file diff --git a/config.sample.json b/config.sample.json new file mode 100644 index 0000000..5aa0a4b --- /dev/null +++ b/config.sample.json @@ -0,0 +1,29 @@ +{ + "applicationName": "FluffyChat", + "defaultHomeserver": "matrix.org", + "privacyUrl": "https://github.com/krille-chan/fluffychat/blob/main/PRIVACY.md", + "audioRecordingNumChannels": 1, + "audioRecordingAutoGain": true, + "audioRecordingEchoCancel": false, + "audioRecordingNoiseSuppress": true, + "audioRecordingBitRate": 64000, + "audioRecordingSamplingRate": 44100, + "renderHtml": true, + "fontSizeFactor": 1, + "hideRedactedEvents": false, + "hideUnknownEvents": true, + "separateChatTypes": false, + "autoplayImages": true, + "sendTypingNotifications": true, + "sendPublicReadReceipts": true, + "swipeRightToLeftToReply": true, + "sendOnEnter": false, + "showPresences": true, + "displayNavigationRail": false, + "experimentalVoip": false, + "shareKeysWith": "all", + "noEncryptionWarningShown": false, + "displayChatDetailsColumn": false, + "colorSchemeSeedInt": 4283835834, + "enableSoftLogout": false +} \ No newline at end of file diff --git a/devtools_options.yaml b/devtools_options.yaml new file mode 100644 index 0000000..fa0b357 --- /dev/null +++ b/devtools_options.yaml @@ -0,0 +1,3 @@ +description: This file stores settings for Dart & Flutter DevTools. +documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states +extensions: diff --git a/docs/.well-known/org.flathub.VerifiedApps.txt b/docs/.well-known/org.flathub.VerifiedApps.txt new file mode 100644 index 0000000..a9a5eb4 --- /dev/null +++ b/docs/.well-known/org.flathub.VerifiedApps.txt @@ -0,0 +1,2 @@ +# im.fluffychat.Fluffychat +8b25b37b-f160-4350-b4f6-9a04554e8f9e \ No newline at end of file diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..e5974b5 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,19 @@ + + + + + Redirecting to fluffy.chat + + + + + +

    + Redirecting... +

    +

    Note: If your browser does not redirect you, please use this link: +

    +
    https://fluffy.chat + + + \ No newline at end of file diff --git a/integration_test/.gitignore b/integration_test/.gitignore new file mode 100644 index 0000000..3284fe0 --- /dev/null +++ b/integration_test/.gitignore @@ -0,0 +1,6 @@ +synapse/data/homeserver.db +dendrite/data/server.* +dendrite/data/matrix_key.pem +dendrite/data/logs +dendrite/data/jetstream +dendrite/data/*.db \ No newline at end of file diff --git a/integration_test/app_test.dart b/integration_test/app_test.dart new file mode 100644 index 0000000..3a01393 --- /dev/null +++ b/integration_test/app_test.dart @@ -0,0 +1,187 @@ +import 'package:fluffychat/pages/chat/chat_view.dart'; +import 'package:fluffychat/pages/chat_list/chat_list_body.dart'; +import 'package:fluffychat/pages/chat_list/search_title.dart'; +import 'package:fluffychat/pages/invitation_selection/invitation_selection_view.dart'; + +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:integration_test/integration_test.dart'; + +import 'package:fluffychat/main.dart' as app; +import 'package:shared_preferences/shared_preferences.dart'; + +import 'extensions/default_flows.dart'; +import 'extensions/wait_for.dart'; +import 'users.dart'; + +void main() { + IntegrationTestWidgetsFlutterBinding.ensureInitialized(); + + group( + 'Integration Test', + () { + setUpAll( + () async { + // this random dialog popping up is super hard to cover in tests + SharedPreferences.setMockInitialValues({ + 'chat.fluffy.show_no_google': false, + }); + }, + ); + + testWidgets( + 'Start app, login and logout', + (WidgetTester tester) async { + app.main(); + await tester.ensureAppStartedHomescreen(); + await tester.ensureLoggedOut(); + }, + ); + + testWidgets( + 'Login again', + (WidgetTester tester) async { + app.main(); + await tester.ensureAppStartedHomescreen(); + }, + ); + + testWidgets( + 'Start chat and send message', + (WidgetTester tester) async { + app.main(); + await tester.ensureAppStartedHomescreen(); + await tester.waitFor(find.byType(TextField)); + await tester.enterText(find.byType(TextField), Users.user2.name); + await tester.pumpAndSettle(); + + await tester.scrollUntilVisible( + find.text('Chats').first, + 500, + scrollable: find + .descendant( + of: find.byType(ChatListViewBody), + matching: find.byType(Scrollable), + ) + .first, + ); + await tester.pumpAndSettle(); + await tester.tap(find.text('Chats')); + await tester.pumpAndSettle(); + await tester.waitFor(find.byType(SearchTitle)); + await tester.pumpAndSettle(); + + await tester.scrollUntilVisible( + find.text(Users.user2.name).first, + 500, + scrollable: find + .descendant( + of: find.byType(ChatListViewBody), + matching: find.byType(Scrollable), + ) + .first, + ); + await tester.pumpAndSettle(); + await tester.tap(find.text(Users.user2.name).first); + + try { + await tester.waitFor( + find.byType(ChatView), + timeout: const Duration(seconds: 5), + ); + } catch (_) { + // in case the homeserver sends the username as search result + if (find.byIcon(Icons.send_outlined).evaluate().isNotEmpty) { + await tester.tap(find.byIcon(Icons.send_outlined)); + await tester.pumpAndSettle(); + } + } + + await tester.waitFor(find.byType(ChatView)); + await tester.enterText(find.byType(TextField).last, 'Test'); + await tester.pumpAndSettle(); + try { + await tester.waitFor(find.byIcon(Icons.send_outlined)); + await tester.tap(find.byIcon(Icons.send_outlined)); + } catch (_) { + await tester.testTextInput.receiveAction(TextInputAction.done); + } + await tester.pumpAndSettle(); + await tester.waitFor(find.text('Test')); + await tester.pumpAndSettle(); + }, + ); + + testWidgets('Spaces', (tester) async { + app.main(); + await tester.ensureAppStartedHomescreen(); + + await tester.waitFor(find.byTooltip('Show menu')); + await tester.tap(find.byTooltip('Show menu')); + await tester.pumpAndSettle(); + + await tester.waitFor(find.byIcon(Icons.workspaces_outlined)); + await tester.tap(find.byIcon(Icons.workspaces_outlined)); + await tester.pumpAndSettle(); + + await tester.waitFor(find.byType(TextField)); + await tester.enterText(find.byType(TextField).last, 'Test Space'); + await tester.pumpAndSettle(); + + await tester.testTextInput.receiveAction(TextInputAction.done); + await tester.pumpAndSettle(); + + await tester.waitFor(find.text('Invite contact')); + + await tester.tap(find.text('Invite contact')); + await tester.pumpAndSettle(); + + await tester.waitFor( + find.descendant( + of: find.byType(InvitationSelectionView), + matching: find.byType(TextField), + ), + ); + await tester.enterText( + find.descendant( + of: find.byType(InvitationSelectionView), + matching: find.byType(TextField), + ), + Users.user2.name, + ); + + await Future.delayed(const Duration(milliseconds: 250)); + await tester.testTextInput.receiveAction(TextInputAction.done); + + await Future.delayed(const Duration(milliseconds: 1000)); + await tester.pumpAndSettle(); + + await tester.tap( + find + .descendant( + of: find.descendant( + of: find.byType(InvitationSelectionView), + matching: find.byType(ListTile), + ), + matching: find.text(Users.user2.name), + ) + .last, + ); + await tester.pumpAndSettle(); + + await tester.waitFor(find.maybeUppercaseText('Yes')); + await tester.tap(find.maybeUppercaseText('Yes')); + await tester.pumpAndSettle(); + + await tester.tap(find.byTooltip('Back')); + await tester.pumpAndSettle(); + + await tester.waitFor(find.text('Load 2 more participants')); + await tester.tap(find.text('Load 2 more participants')); + await tester.pumpAndSettle(); + + expect(find.text(Users.user2.name), findsOneWidget); + }); + }, + ); +} diff --git a/integration_test/dendrite/data/dendrite.yaml b/integration_test/dendrite/data/dendrite.yaml new file mode 100644 index 0000000..f1e95fd --- /dev/null +++ b/integration_test/dendrite/data/dendrite.yaml @@ -0,0 +1,327 @@ +# This is the Dendrite configuration file. +# +# The configuration is split up into sections - each Dendrite component has a +# configuration section, in addition to the "global" section which applies to +# all components. + +# The version of the configuration file. +version: 2 + +# Global Matrix configuration. This configuration applies to all components. +global: + # The domain name of this homeserver. + server_name: localhost + + # The path to the signing private key file, used to sign requests and events. + # Note that this is NOT the same private key as used for TLS! To generate a + # signing key, use "./bin/generate-keys --private-key matrix_key.pem". + private_key: matrix_key.pem + + # The paths and expiry timestamps (as a UNIX timestamp in millisecond precision) + # to old signing private keys that were formerly in use on this domain. These + # keys will not be used for federation request or event signing, but will be + # provided to any other homeserver that asks when trying to verify old events. + old_private_keys: + # - private_key: old_matrix_key.pem + # expired_at: 1601024554498 + + # How long a remote server can cache our server signing key before requesting it + # again. Increasing this number will reduce the number of requests made by other + # servers for our key but increases the period that a compromised key will be + # considered valid by other homeservers. + key_validity_period: 168h0m0s + + # Global database connection pool, for PostgreSQL monolith deployments only. If + # this section is populated then you can omit the "database" blocks in all other + # sections. For polylith deployments, or monolith deployments using SQLite databases, + # you must configure the "database" block for each component instead. + database: + connection_string: + max_open_conns: + max_idle_conns: + conn_max_lifetime: + + # Configuration for in-memory caches. Caches can often improve performance by + # keeping frequently accessed items (like events, identifiers etc.) in memory + # rather than having to read them from the database. + cache: + # The estimated maximum size for the global cache in bytes, or in terabytes, + # gigabytes, megabytes or kilobytes when the appropriate 'tb', 'gb', 'mb' or + # 'kb' suffix is specified. Note that this is not a hard limit, nor is it a + # memory limit for the entire process. A cache that is too small may ultimately + # provide little or no benefit. + max_size_estimated: 1gb + + # The maximum amount of time that a cache entry can live for in memory before + # it will be evicted and/or refreshed from the database. Lower values result in + # easier admission of new cache entries but may also increase database load in + # comparison to higher values, so adjust conservatively. Higher values may make + # it harder for new items to make it into the cache, e.g. if new rooms suddenly + # become popular. + max_age: 1h + + # The server name to delegate server-server communications to, with optional port + # e.g. localhost:443 + well_known_server_name: "" + + # Lists of domains that the server will trust as identity servers to verify third + # party identifiers such as phone numbers and email addresses. + trusted_third_party_id_servers: + - matrix.org + - vector.im + + # Disables federation. Dendrite will not be able to communicate with other servers + # in the Matrix federation and the federation API will not be exposed. + disable_federation: false + + # Configures the handling of presence events. Inbound controls whether we receive + # presence events from other servers, outbound controls whether we send presence + # events for our local users to other servers. + presence: + enable_inbound: false + enable_outbound: false + + # Configures phone-home statistics reporting. These statistics contain the server + # name, number of active users and some information on your deployment config. + # We use this information to understand how Dendrite is being used in the wild. + report_stats: + enabled: false + endpoint: https://matrix.org/report-usage-stats/push + + # Server notices allows server admins to send messages to all users on the server. + server_notices: + enabled: false + # The local part, display name and avatar URL (as a mxc:// URL) for the user that + # will send the server notices. These are visible to all users on the deployment. + local_part: "_server" + display_name: "Server Alerts" + avatar_url: "" + # The room name to be used when sending server notices. This room name will + # appear in user clients. + room_name: "Server Alerts" + + # Configuration for NATS JetStream + jetstream: + # A list of NATS Server addresses to connect to. If none are specified, an + # internal NATS server will be started automatically when running Dendrite in + # monolith mode. For polylith deployments, it is required to specify the address + # of at least one NATS Server node. + addresses: + # - localhost:4222 + + # Persistent directory to store JetStream streams in. This directory should be + # preserved across Dendrite restarts. + storage_path: ./ + + # The prefix to use for stream names for this homeserver - really only useful + # if you are running more than one Dendrite server on the same NATS deployment. + topic_prefix: Dendrite + + # Configuration for Prometheus metric collection. + metrics: + enabled: false + basic_auth: + username: metrics + password: metrics + + # Optional DNS cache. The DNS cache may reduce the load on DNS servers if there + # is no local caching resolver available for use. + dns_cache: + enabled: false + cache_size: 256 + cache_lifetime: "5m" # 5 minutes; https://pkg.go.dev/time@master#ParseDuration + +# Configuration for the Appservice API. +app_service_api: + database: + connection_string: file:app_service_api.db + + # Disable the validation of TLS certificates of appservices. This is + # not recommended in production since it may allow appservice traffic + # to be sent to an insecure endpoint. + disable_tls_validation: true + + # Appservice configuration files to load into this homeserver. + config_files: + # - /path/to/appservice_registration.yaml + +# Configuration for the Client API. +client_api: + # Prevents new users from being able to register on this homeserver, except when + # using the registration shared secret below. + registration_disabled: false + + # Prevents new guest accounts from being created. Guest registration is also + # disabled implicitly by setting 'registration_disabled' above. + guests_disabled: true + + # If set, allows registration by anyone who knows the shared secret, regardless + # of whether registration is otherwise disabled. + registration_shared_secret: "" + + # Whether to require reCAPTCHA for registration. If you have enabled registration + # then this is HIGHLY RECOMMENDED to reduce the risk of your homeserver being used + # for coordinated spam attacks. + enable_registration_captcha: false + + # Settings for ReCAPTCHA. + recaptcha_public_key: "" + recaptcha_private_key: "" + recaptcha_bypass_secret: "" + recaptcha_siteverify_api: "" + + # TURN server information that this homeserver should send to clients. + turn: + turn_user_lifetime: "" + turn_uris: + # - turn:turn.server.org?transport=udp + # - turn:turn.server.org?transport=tcp + turn_shared_secret: "" + turn_username: "" + turn_password: "" + + # Settings for rate-limited endpoints. Rate limiting kicks in after the threshold + # number of "slots" have been taken by requests from a specific host. Each "slot" + # will be released after the cooloff time in milliseconds. Server administrators + # and appservice users are exempt from rate limiting by default. + rate_limiting: + enabled: true + threshold: 5 + cooloff_ms: 500 + exempt_user_ids: + # - "@user:domain.com" + +# Configuration for the Federation API. +federation_api: + database: + connection_string: file:federation_api.db + + # How many times we will try to resend a failed transaction to a specific server. The + # backoff is 2**x seconds, so 1 = 2 seconds, 2 = 4 seconds, 3 = 8 seconds etc. Once + # the max retries are exceeded, Dendrite will no longer try to send transactions to + # that server until it comes back to life and connects to us again. + send_max_retries: 16 + + # Disable the validation of TLS certificates of remote federated homeservers. Do not + # enable this option in production as it presents a security risk! + disable_tls_validation: false + + # Perspective keyservers to use as a backup when direct key fetches fail. This may + # be required to satisfy key requests for servers that are no longer online when + # joining some rooms. + key_perspectives: + - server_name: matrix.org + keys: + - key_id: ed25519:auto + public_key: Noi6WqcDj0QmPxCNQqgezwTlBKrfqehY1u2FyWP9uYw + - key_id: ed25519:a_RXGa + public_key: l8Hft5qXKn1vfHrg3p4+W8gELQVo8N13JkluMfmn2sQ + + # This option will control whether Dendrite will prefer to look up keys directly + # or whether it should try perspective servers first, using direct fetches as a + # last resort. + prefer_direct_fetch: false + +# Configuration for the Media API. +media_api: + database: + connection_string: file:media_api.db + + # Storage path for uploaded media. May be relative or absolute. + base_path: ./media_store + + # The maximum allowed file size (in bytes) for media uploads to this homeserver + # (0 = unlimited). If using a reverse proxy, ensure it allows requests at least + #this large (e.g. the client_max_body_size setting in nginx). + max_file_size_bytes: 10485760 + + # Whether to dynamically generate thumbnails if needed. + dynamic_thumbnails: false + + # The maximum number of simultaneous thumbnail generators to run. + max_thumbnail_generators: 10 + + # A list of thumbnail sizes to be generated for media content. + thumbnail_sizes: + - width: 32 + height: 32 + method: crop + - width: 96 + height: 96 + method: crop + - width: 640 + height: 480 + method: scale + +# Configuration for enabling experimental MSCs on this homeserver. +mscs: + database: + connection_string: file:mscs.db + mscs: + # - msc2836 # (Threading, see https://github.com/matrix-org/matrix-doc/pull/2836) + # - msc2946 # (Spaces Summary, see https://github.com/matrix-org/matrix-doc/pull/2946) + +# Configuration for the Sync API. +sync_api: + # This option controls which HTTP header to inspect to find the real remote IP + # address of the client. This is likely required if Dendrite is running behind + # a reverse proxy server. + # real_ip_header: X-Real-IP + database: + connection_string: file:sync_api.db + +key_server: + database: + connection_string: file:key_server.db + +room_server: + database: + connection_string: file:room_server.db + + +# Configuration for the User API. +user_api: + account_database: + connection_string: file:user_api.db + + # The cost when hashing passwords on registration/login. Default: 10. Min: 4, Max: 31 + # See https://pkg.go.dev/golang.org/x/crypto/bcrypt for more information. + # Setting this lower makes registration/login consume less CPU resources at the cost + # of security should the database be compromised. Setting this higher makes registration/login + # consume more CPU resources but makes it harder to brute force password hashes. This value + # can be lowered if performing tests or on embedded Dendrite instances (e.g WASM builds). + bcrypt_cost: 10 + + # The length of time that a token issued for a relying party from + # /_matrix/client/r0/user/{userId}/openid/request_token endpoint + # is considered to be valid in milliseconds. + # The default lifetime is 3600000ms (60 minutes). + # openid_token_lifetime_ms: 3600000 + +# Configuration for Opentracing. +# See https://github.com/matrix-org/dendrite/tree/master/docs/tracing for information on +# how this works and how to set it up. +tracing: + enabled: false + jaeger: + serviceName: "" + disabled: false + rpc_metrics: false + tags: [] + sampler: null + reporter: null + headers: null + baggage_restrictions: null + throttler: null + +# Logging configuration. The "std" logging type controls the logs being sent to +# stdout. The "file" logging type controls logs being written to a log folder on +# the disk. Supported log levels are "debug", "info", "warn", "error". +logging: + - type: std + level: info + - type: file + level: info + params: + path: ./logs + diff --git a/integration_test/extensions/default_flows.dart b/integration_test/extensions/default_flows.dart new file mode 100644 index 0000000..6609969 --- /dev/null +++ b/integration_test/extensions/default_flows.dart @@ -0,0 +1,171 @@ +import 'dart:developer'; + +import 'package:fluffychat/pages/chat_list/chat_list_body.dart'; +import 'package:fluffychat/pages/homeserver_picker/homeserver_picker.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; + +import '../users.dart'; +import 'wait_for.dart'; + +extension DefaultFlowExtensions on WidgetTester { + Future login() async { + final tester = this; + + await tester.pumpAndSettle(); + + await tester.waitFor(find.text('Let\'s start')); + + expect(find.text('Let\'s start'), findsOneWidget); + + final input = find.byType(TextField); + + expect(input, findsOneWidget); + + // getting the placeholder in place + await tester.tap(find.byIcon(Icons.search)); + await tester.pumpAndSettle(); + await tester.enterText(input, homeserver); + await tester.pumpAndSettle(); + await tester.testTextInput.receiveAction(TextInputAction.done); + await tester.pumpAndSettle(); + + // in case registration is allowed + // try { + await Future.delayed(const Duration(milliseconds: 50)); + + await tester.scrollUntilVisible( + find.text('Login'), + 500, + scrollable: find.descendant( + of: find.byKey(const Key('ConnectPageListView')), + matching: find.byType(Scrollable).first, + ), + ); + await tester.pumpAndSettle(); + + await tester.tap(find.text('Login')); + await tester.pumpAndSettle(); + /*} catch (e) { + log('Registration is not allowed. Proceeding with login...'); + }*/ + await tester.pumpAndSettle(); + + await Future.delayed(const Duration(milliseconds: 50)); + + final inputs = find.byType(TextField); + + await tester.enterText(inputs.first, Users.user1.name); + await tester.enterText(inputs.last, Users.user1.password); + await tester.pumpAndSettle(); + await tester.testTextInput.receiveAction(TextInputAction.done); + + try { + // pumpAndSettle does not work in here as setState is called + // asynchronously + await tester.waitFor( + find.byType(LinearProgressIndicator), + timeout: const Duration(milliseconds: 1500), + skipPumpAndSettle: true, + ); + } catch (_) { + // in case the input action does not work on the desired platform + if (find.text('Login').evaluate().isNotEmpty) { + await tester.tap(find.text('Login')); + } + } + + try { + await tester.pumpAndSettle(); + } catch (_) { + // may fail because of ongoing animation below dialog + } + + await tester.waitFor( + find.byType(ChatListViewBody), + skipPumpAndSettle: true, + ); + } + + /// ensure PushProvider check passes + Future acceptPushWarning() async { + final tester = this; + + final matcher = find.maybeUppercaseText('Do not show again'); + + try { + await tester.waitFor(matcher, timeout: const Duration(seconds: 5)); + + // the FCM push error dialog to be handled... + await tester.tap(matcher); + await tester.pumpAndSettle(); + } catch (_) {} + } + + Future ensureLoggedOut() async { + final tester = this; + await tester.pumpAndSettle(); + if (find.byType(ChatListViewBody).evaluate().isNotEmpty) { + await tester.tap(find.byTooltip('Show menu')); + await tester.pumpAndSettle(); + await tester.tap(find.text('Settings')); + await tester.pumpAndSettle(); + await tester.scrollUntilVisible( + find.text('Account'), + 500, + scrollable: find.descendant( + of: find.byKey(const Key('SettingsListViewContent')), + matching: find.byType(Scrollable), + ), + ); + await tester.pumpAndSettle(); + await tester.tap(find.text('Logout')); + await tester.pumpAndSettle(); + await tester.tap(find.maybeUppercaseText('Yes')); + await tester.pumpAndSettle(); + } + } + + Future ensureAppStartedHomescreen({ + Duration timeout = const Duration(seconds: 20), + }) async { + final tester = this; + await tester.pumpAndSettle(); + + final homeserverPickerFinder = find.byType(HomeserverPicker); + final chatListFinder = find.byType(ChatListViewBody); + + final end = DateTime.now().add(timeout); + + log( + 'Waiting for HomeserverPicker or ChatListViewBody...', + name: 'Test Runner', + ); + do { + if (DateTime.now().isAfter(end)) { + throw Exception( + 'Timed out waiting for HomeserverPicker or ChatListViewBody', + ); + } + + await pumpAndSettle(); + await Future.delayed(const Duration(milliseconds: 100)); + } while (homeserverPickerFinder.evaluate().isEmpty && + chatListFinder.evaluate().isEmpty); + + if (homeserverPickerFinder.evaluate().isNotEmpty) { + log( + 'Found HomeserverPicker, performing login.', + name: 'Test Runner', + ); + await tester.login(); + } else { + log( + 'Found ChatListViewBody, skipping login.', + name: 'Test Runner', + ); + } + + await tester.acceptPushWarning(); + } +} diff --git a/integration_test/extensions/wait_for.dart b/integration_test/extensions/wait_for.dart new file mode 100644 index 0000000..cfd9d64 --- /dev/null +++ b/integration_test/extensions/wait_for.dart @@ -0,0 +1,49 @@ +import 'package:flutter_test/flutter_test.dart'; + +/// Workaround for https://github.com/flutter/flutter/issues/88765 +extension WaitForExtension on WidgetTester { + Future waitFor( + Finder finder, { + Duration timeout = const Duration(seconds: 20), + bool skipPumpAndSettle = false, + }) async { + final end = DateTime.now().add(timeout); + + do { + if (DateTime.now().isAfter(end)) { + throw Exception('Timed out waiting for $finder'); + } + + if (!skipPumpAndSettle) { + await pumpAndSettle(); + } + await Future.delayed(const Duration(milliseconds: 100)); + } while (finder.evaluate().isEmpty); + } +} + +extension MaybeUppercaseFinder on CommonFinders { + /// On Android some button labels are in uppercase while on iOS they + /// are not. This method tries both. + Finder maybeUppercaseText( + String text, { + bool findRichText = false, + bool skipOffstage = true, + }) { + try { + final finder = find.text( + text.toUpperCase(), + findRichText: findRichText, + skipOffstage: skipOffstage, + ); + expect(finder, findsOneWidget); + return finder; + } catch (_) { + return find.text( + text, + findRichText: findRichText, + skipOffstage: skipOffstage, + ); + } + } +} diff --git a/integration_test/synapse/data/homeserver.yaml b/integration_test/synapse/data/homeserver.yaml new file mode 100644 index 0000000..b6963fd --- /dev/null +++ b/integration_test/synapse/data/homeserver.yaml @@ -0,0 +1,2781 @@ +# Configuration file for Synapse. +# +# This is a YAML file: see [1] for a quick introduction. Note in particular +# that *indentation is important*: all the elements of a list or dictionary +# should have the same indentation. +# +# [1] https://docs.ansible.com/ansible/latest/reference_appendices/YAMLSyntax.html + + +## Modules ## + +# Server admins can expand Synapse's functionality with external modules. +# +# See https://matrix-org.github.io/synapse/latest/modules/index.html for more +# documentation on how to configure or create custom modules for Synapse. +# +modules: + #- module: my_super_module.MySuperClass + # config: + # do_thing: true + #- module: my_other_super_module.SomeClass + # config: {} + + +## Server ## + +# The public-facing domain of the server +# +# The server_name name will appear at the end of usernames and room addresses +# created on this server. For example if the server_name was example.com, +# usernames on this server would be in the format @user:example.com +# +# In most cases you should avoid using a matrix specific subdomain such as +# matrix.example.com or synapse.example.com as the server_name for the same +# reasons you wouldn't use user@email.example.com as your email address. +# See https://matrix-org.github.io/synapse/latest/delegate.html +# for information on how to host Synapse on a subdomain while preserving +# a clean server_name. +# +# The server_name cannot be changed later so it is important to +# configure this correctly before you start Synapse. It should be all +# lowercase and may contain an explicit port. +# Examples: matrix.org, localhost:8080 +# +server_name: "localhost" + +# When running as a daemon, the file to store the pid in +# +pid_file: /data/homeserver.pid + +# The absolute URL to the web client which / will redirect to. +# +#web_client_location: https://riot.example.com/ + +# The public-facing base URL that clients use to access this Homeserver (not +# including _matrix/...). This is the same URL a user might enter into the +# 'Custom Homeserver URL' field on their client. If you use Synapse with a +# reverse proxy, this should be the URL to reach Synapse via the proxy. +# Otherwise, it should be the URL to reach Synapse's client HTTP listener (see +# 'listeners' below). +# +# Defaults to 'https:///'. +# +#public_baseurl: https://example.com/ + +# Uncomment the following to tell other servers to send federation traffic on +# port 443. +# +# By default, other servers will try to reach our server on port 8448, which can +# be inconvenient in some environments. +# +# Provided 'https:///' on port 443 is routed to Synapse, this +# option configures Synapse to serve a file at +# 'https:///.well-known/matrix/server'. This will tell other +# servers to send traffic to port 443 instead. +# +# See https://matrix-org.github.io/synapse/latest/delegate.html for more +# information. +# +# Defaults to 'false'. +# +#serve_server_wellknown: true + +# Set the soft limit on the number of file descriptors synapse can use +# Zero is used to indicate synapse should set the soft limit to the +# hard limit. +# +#soft_file_limit: 0 + +# Presence tracking allows users to see the state (e.g online/offline) +# of other local and remote users. +# +presence: + # Uncomment to disable presence tracking on this homeserver. This option + # replaces the previous top-level 'use_presence' option. + # + #enabled: false + +# Whether to require authentication to retrieve profile data (avatars, +# display names) of other users through the client API. Defaults to +# 'false'. Note that profile data is also available via the federation +# API, unless allow_profile_lookup_over_federation is set to false. +# +#require_auth_for_profile_requests: true + +# Uncomment to require a user to share a room with another user in order +# to retrieve their profile information. Only checked on Client-Server +# requests. Profile requests from other servers should be checked by the +# requesting server. Defaults to 'false'. +# +#limit_profile_requests_to_users_who_share_rooms: true + +# Uncomment to prevent a user's profile data from being retrieved and +# displayed in a room until they have joined it. By default, a user's +# profile data is included in an invite event, regardless of the values +# of the above two settings, and whether or not the users share a server. +# Defaults to 'true'. +# +#include_profile_data_on_invite: false + +# If set to 'true', removes the need for authentication to access the server's +# public rooms directory through the client API, meaning that anyone can +# query the room directory. Defaults to 'false'. +# +#allow_public_rooms_without_auth: true + +# If set to 'true', allows any other homeserver to fetch the server's public +# rooms directory via federation. Defaults to 'false'. +# +#allow_public_rooms_over_federation: true + +# The default room version for newly created rooms. +# +# Known room versions are listed here: +# https://spec.matrix.org/latest/rooms/#complete-list-of-room-versions +# +# For example, for room version 1, default_room_version should be set +# to "1". +# +#default_room_version: "9" + +# The GC threshold parameters to pass to `gc.set_threshold`, if defined +# +#gc_thresholds: [700, 10, 10] + +# The minimum time in seconds between each GC for a generation, regardless of +# the GC thresholds. This ensures that we don't do GC too frequently. +# +# A value of `[1s, 10s, 30s]` indicates that a second must pass between consecutive +# generation 0 GCs, etc. +# +# Defaults to `[1s, 10s, 30s]`. +# +#gc_min_interval: [0.5s, 30s, 1m] + +# Set the limit on the returned events in the timeline in the get +# and sync operations. The default value is 100. -1 means no upper limit. +# +# Uncomment the following to increase the limit to 5000. +# +#filter_timeline_limit: 5000 + +# Whether room invites to users on this server should be blocked +# (except those sent by local server admins). The default is False. +# +#block_non_admin_invites: true + +# Room searching +# +# If disabled, new messages will not be indexed for searching and users +# will receive errors when searching for messages. Defaults to enabled. +# +#enable_search: false + +# Prevent outgoing requests from being sent to the following blacklisted IP address +# CIDR ranges. If this option is not specified then it defaults to private IP +# address ranges (see the example below). +# +# The blacklist applies to the outbound requests for federation, identity servers, +# push servers, and for checking key validity for third-party invite events. +# +# (0.0.0.0 and :: are always blacklisted, whether or not they are explicitly +# listed here, since they correspond to unroutable addresses.) +# +# This option replaces federation_ip_range_blacklist in Synapse v1.25.0. +# +# Note: The value is ignored when an HTTP proxy is in use +# +#ip_range_blacklist: +# - '127.0.0.0/8' +# - '10.0.0.0/8' +# - '172.16.0.0/12' +# - '192.168.0.0/16' +# - '100.64.0.0/10' +# - '192.0.0.0/24' +# - '169.254.0.0/16' +# - '192.88.99.0/24' +# - '198.18.0.0/15' +# - '192.0.2.0/24' +# - '198.51.100.0/24' +# - '203.0.113.0/24' +# - '224.0.0.0/4' +# - '::1/128' +# - 'fe80::/10' +# - 'fc00::/7' +# - '2001:db8::/32' +# - 'ff00::/8' +# - 'fec0::/10' + +# List of IP address CIDR ranges that should be allowed for federation, +# identity servers, push servers, and for checking key validity for +# third-party invite events. This is useful for specifying exceptions to +# wide-ranging blacklisted target IP ranges - e.g. for communication with +# a push server only visible in your network. +# +# This whitelist overrides ip_range_blacklist and defaults to an empty +# list. +# +#ip_range_whitelist: +# - '192.168.1.1' + +# List of ports that Synapse should listen on, their purpose and their +# configuration. +# +# Options for each listener include: +# +# port: the TCP port to bind to +# +# bind_addresses: a list of local addresses to listen on. The default is +# 'all local interfaces'. +# +# type: the type of listener. Normally 'http', but other valid options are: +# 'manhole' (see https://matrix-org.github.io/synapse/latest/manhole.html), +# 'metrics' (see https://matrix-org.github.io/synapse/latest/metrics-howto.html), +# 'replication' (see https://matrix-org.github.io/synapse/latest/workers.html). +# +# tls: set to true to enable TLS for this listener. Will use the TLS +# key/cert specified in tls_private_key_path / tls_certificate_path. +# +# x_forwarded: Only valid for an 'http' listener. Set to true to use the +# X-Forwarded-For header as the client IP. Useful when Synapse is +# behind a reverse-proxy. +# +# resources: Only valid for an 'http' listener. A list of resources to host +# on this port. Options for each resource are: +# +# names: a list of names of HTTP resources. See below for a list of +# valid resource names. +# +# compress: set to true to enable HTTP compression for this resource. +# +# additional_resources: Only valid for an 'http' listener. A map of +# additional endpoints which should be loaded via dynamic modules. +# +# Valid resource names are: +# +# client: the client-server API (/_matrix/client), and the synapse admin +# API (/_synapse/admin). Also implies 'media' and 'static'. +# +# consent: user consent forms (/_matrix/consent). +# See https://matrix-org.github.io/synapse/latest/consent_tracking.html. +# +# federation: the server-server API (/_matrix/federation). Also implies +# 'media', 'keys', 'openid' +# +# keys: the key discovery API (/_matrix/keys). +# +# media: the media API (/_matrix/media). +# +# metrics: the metrics interface. +# See https://matrix-org.github.io/synapse/latest/metrics-howto.html. +# +# openid: OpenID authentication. +# +# replication: the HTTP replication API (/_synapse/replication). +# See https://matrix-org.github.io/synapse/latest/workers.html. +# +# static: static resources under synapse/static (/_matrix/static). (Mostly +# useful for 'fallback authentication'.) +# +listeners: + # TLS-enabled listener: for when matrix traffic is sent directly to synapse. + # + # Disabled by default. To enable it, uncomment the following. (Note that you + # will also need to give Synapse a TLS key and certificate: see the TLS section + # below.) + # + #- port: 8448 + # type: http + # tls: true + # resources: + # - names: [client, federation] + + # Unsecure HTTP listener: for when matrix traffic passes through a reverse proxy + # that unwraps TLS. + # + # If you plan to use a reverse proxy, please see + # https://matrix-org.github.io/synapse/latest/reverse_proxy.html. + # + - port: 80 + tls: false + type: http + x_forwarded: false + + resources: + - names: [client, federation] + compress: false + + # example additional_resources: + # + #additional_resources: + # "/_matrix/my/custom/endpoint": + # module: my_module.CustomRequestHandler + # config: {} + + # Turn on the twisted ssh manhole service on localhost on the given + # port. + # + #- port: 9000 + # bind_addresses: ['::1', '127.0.0.1'] + # type: manhole + +# Connection settings for the manhole +# +manhole_settings: + # The username for the manhole. This defaults to 'matrix'. + # + #username: manhole + + # The password for the manhole. This defaults to 'rabbithole'. + # + #password: mypassword + + # The private and public SSH key pair used to encrypt the manhole traffic. + # If these are left unset, then hardcoded and non-secret keys are used, + # which could allow traffic to be intercepted if sent over a public network. + # + #ssh_priv_key_path: /data/id_rsa + #ssh_pub_key_path: /data/id_rsa.pub + +# Forward extremities can build up in a room due to networking delays between +# homeservers. Once this happens in a large room, calculation of the state of +# that room can become quite expensive. To mitigate this, once the number of +# forward extremities reaches a given threshold, Synapse will send an +# org.matrix.dummy_event event, which will reduce the forward extremities +# in the room. +# +# This setting defines the threshold (i.e. number of forward extremities in the +# room) at which dummy events are sent. The default value is 10. +# +#dummy_events_threshold: 5 + + +## Homeserver blocking ## + +# How to reach the server admin, used in ResourceLimitError +# +#admin_contact: 'mailto:admin@server.com' + +# Global blocking +# +#hs_disabled: false +#hs_disabled_message: 'Human readable reason for why the HS is blocked' + +# Monthly Active User Blocking +# +# Used in cases where the admin or server owner wants to limit to the +# number of monthly active users. +# +# 'limit_usage_by_mau' disables/enables monthly active user blocking. When +# enabled and a limit is reached the server returns a 'ResourceLimitError' +# with error type Codes.RESOURCE_LIMIT_EXCEEDED +# +# 'max_mau_value' is the hard limit of monthly active users above which +# the server will start blocking user actions. +# +# 'mau_trial_days' is a means to add a grace period for active users. It +# means that users must be active for this number of days before they +# can be considered active and guards against the case where lots of users +# sign up in a short space of time never to return after their initial +# session. +# +# The option `mau_appservice_trial_days` is similar to `mau_trial_days`, but +# applies a different trial number if the user was registered by an appservice. +# A value of 0 means no trial days are applied. Appservices not listed in this +# dictionary use the value of `mau_trial_days` instead. +# +# 'mau_limit_alerting' is a means of limiting client side alerting +# should the mau limit be reached. This is useful for small instances +# where the admin has 5 mau seats (say) for 5 specific people and no +# interest increasing the mau limit further. Defaults to True, which +# means that alerting is enabled +# +#limit_usage_by_mau: false +#max_mau_value: 50 +#mau_trial_days: 2 +#mau_limit_alerting: false +#mau_appservice_trial_days: +# "appservice-id": 1 + +# If enabled, the metrics for the number of monthly active users will +# be populated, however no one will be limited. If limit_usage_by_mau +# is true, this is implied to be true. +# +#mau_stats_only: false + +# Sometimes the server admin will want to ensure certain accounts are +# never blocked by mau checking. These accounts are specified here. +# +#mau_limit_reserved_threepids: +# - medium: 'email' +# address: 'reserved_user@example.com' + +# Used by phonehome stats to group together related servers. +#server_context: context + +# Resource-constrained homeserver settings +# +# When this is enabled, the room "complexity" will be checked before a user +# joins a new remote room. If it is above the complexity limit, the server will +# disallow joining, or will instantly leave. +# +# Room complexity is an arbitrary measure based on factors such as the number of +# users in the room. +# +limit_remote_rooms: + # Uncomment to enable room complexity checking. + # + #enabled: true + + # the limit above which rooms cannot be joined. The default is 1.0. + # + #complexity: 0.5 + + # override the error which is returned when the room is too complex. + # + #complexity_error: "This room is too complex." + + # allow server admins to join complex rooms. Default is false. + # + #admins_can_join: true + +# Whether to require a user to be in the room to add an alias to it. +# Defaults to 'true'. +# +#require_membership_for_aliases: false + +# Whether to allow per-room membership profiles through the send of membership +# events with profile information that differ from the target's global profile. +# Defaults to 'true'. +# +#allow_per_room_profiles: false + +# The largest allowed file size for a user avatar. Defaults to no restriction. +# +# Note that user avatar changes will not work if this is set without +# using Synapse's media repository. +# +#max_avatar_size: 10M + +# The MIME types allowed for user avatars. Defaults to no restriction. +# +# Note that user avatar changes will not work if this is set without +# using Synapse's media repository. +# +#allowed_avatar_mimetypes: ["image/png", "image/jpeg", "image/gif"] + +# How long to keep redacted events in unredacted form in the database. After +# this period redacted events get replaced with their redacted form in the DB. +# +# Defaults to `7d`. Set to `null` to disable. +# +#redaction_retention_period: 28d + +# How long to track users' last seen time and IPs in the database. +# +# Defaults to `28d`. Set to `null` to disable clearing out of old rows. +# +#user_ips_max_age: 14d + +# Inhibits the /requestToken endpoints from returning an error that might leak +# information about whether an e-mail address is in use or not on this +# homeserver. +# Note that for some endpoints the error situation is the e-mail already being +# used, and for others the error is entering the e-mail being unused. +# If this option is enabled, instead of returning an error, these endpoints will +# act as if no error happened and return a fake session ID ('sid') to clients. +# +#request_token_inhibit_3pid_errors: true + +# A list of domains that the domain portion of 'next_link' parameters +# must match. +# +# This parameter is optionally provided by clients while requesting +# validation of an email or phone number, and maps to a link that +# users will be automatically redirected to after validation +# succeeds. Clients can make use this parameter to aid the validation +# process. +# +# The whitelist is applied whether the homeserver or an +# identity server is handling validation. +# +# The default value is no whitelist functionality; all domains are +# allowed. Setting this value to an empty list will instead disallow +# all domains. +# +#next_link_domain_whitelist: ["matrix.org"] + +# Templates to use when generating email or HTML page contents. +# +templates: + # Directory in which Synapse will try to find template files to use to generate + # email or HTML page contents. + # If not set, or a file is not found within the template directory, a default + # template from within the Synapse package will be used. + # + # See https://matrix-org.github.io/synapse/latest/templates.html for more + # information about using custom templates. + # + #custom_template_directory: /path/to/custom/templates/ + +# List of rooms to exclude from sync responses. This is useful for server +# administrators wishing to group users into a room without these users being able +# to see it from their client. +# +# By default, no room is excluded. +# +#exclude_rooms_from_sync: +# - !foo:example.com + + +# Message retention policy at the server level. +# +# Room admins and mods can define a retention period for their rooms using the +# 'm.room.retention' state event, and server admins can cap this period by setting +# the 'allowed_lifetime_min' and 'allowed_lifetime_max' config options. +# +# If this feature is enabled, Synapse will regularly look for and purge events +# which are older than the room's maximum retention period. Synapse will also +# filter events received over federation so that events that should have been +# purged are ignored and not stored again. +# +retention: + # The message retention policies feature is disabled by default. Uncomment the + # following line to enable it. + # + #enabled: true + + # Default retention policy. If set, Synapse will apply it to rooms that lack the + # 'm.room.retention' state event. Currently, the value of 'min_lifetime' doesn't + # matter much because Synapse doesn't take it into account yet. + # + #default_policy: + # min_lifetime: 1d + # max_lifetime: 1y + + # Retention policy limits. If set, and the state of a room contains a + # 'm.room.retention' event in its state which contains a 'min_lifetime' or a + # 'max_lifetime' that's out of these bounds, Synapse will cap the room's policy + # to these limits when running purge jobs. + # + #allowed_lifetime_min: 1d + #allowed_lifetime_max: 1y + + # Server admins can define the settings of the background jobs purging the + # events which lifetime has expired under the 'purge_jobs' section. + # + # If no configuration is provided, a single job will be set up to delete expired + # events in every room daily. + # + # Each job's configuration defines which range of message lifetimes the job + # takes care of. For example, if 'shortest_max_lifetime' is '2d' and + # 'longest_max_lifetime' is '3d', the job will handle purging expired events in + # rooms whose state defines a 'max_lifetime' that's both higher than 2 days, and + # lower than or equal to 3 days. Both the minimum and the maximum value of a + # range are optional, e.g. a job with no 'shortest_max_lifetime' and a + # 'longest_max_lifetime' of '3d' will handle every room with a retention policy + # which 'max_lifetime' is lower than or equal to three days. + # + # The rationale for this per-job configuration is that some rooms might have a + # retention policy with a low 'max_lifetime', where history needs to be purged + # of outdated messages on a more frequent basis than for the rest of the rooms + # (e.g. every 12h), but not want that purge to be performed by a job that's + # iterating over every room it knows, which could be heavy on the server. + # + # If any purge job is configured, it is strongly recommended to have at least + # a single job with neither 'shortest_max_lifetime' nor 'longest_max_lifetime' + # set, or one job without 'shortest_max_lifetime' and one job without + # 'longest_max_lifetime' set. Otherwise some rooms might be ignored, even if + # 'allowed_lifetime_min' and 'allowed_lifetime_max' are set, because capping a + # room's policy to these values is done after the policies are retrieved from + # Synapse's database (which is done using the range specified in a purge job's + # configuration). + # + #purge_jobs: + # - longest_max_lifetime: 3d + # interval: 12h + # - shortest_max_lifetime: 3d + # interval: 1d + + +## TLS ## + +# PEM-encoded X509 certificate for TLS. +# This certificate, as of Synapse 1.0, will need to be a valid and verifiable +# certificate, signed by a recognised Certificate Authority. +# +# Be sure to use a `.pem` file that includes the full certificate chain including +# any intermediate certificates (for instance, if using certbot, use +# `fullchain.pem` as your certificate, not `cert.pem`). +# +#tls_certificate_path: "/data/localhost.tls.crt" + +# PEM-encoded private key for TLS +# +#tls_private_key_path: "/data/localhost.tls.key" + +# Whether to verify TLS server certificates for outbound federation requests. +# +# Defaults to `true`. To disable certificate verification, uncomment the +# following line. +# +#federation_verify_certificates: false + +# The minimum TLS version that will be used for outbound federation requests. +# +# Defaults to `1`. Configurable to `1`, `1.1`, `1.2`, or `1.3`. Note +# that setting this value higher than `1.2` will prevent federation to most +# of the public Matrix network: only configure it to `1.3` if you have an +# entirely private federation setup and you can ensure TLS 1.3 support. +# +#federation_client_minimum_tls_version: 1.2 + +# Skip federation certificate verification on the following whitelist +# of domains. +# +# This setting should only be used in very specific cases, such as +# federation over Tor hidden services and similar. For private networks +# of homeservers, you likely want to use a private CA instead. +# +# Only effective if federation_verify_certicates is `true`. +# +#federation_certificate_verification_whitelist: +# - lon.example.com +# - "*.domain.com" +# - "*.onion" + +# List of custom certificate authorities for federation traffic. +# +# This setting should only normally be used within a private network of +# homeservers. +# +# Note that this list will replace those that are provided by your +# operating environment. Certificates must be in PEM format. +# +#federation_custom_ca_list: +# - myCA1.pem +# - myCA2.pem +# - myCA3.pem + + +## Federation ## + +# Restrict federation to the following whitelist of domains. +# N.B. we recommend also firewalling your federation listener to limit +# inbound federation traffic as early as possible, rather than relying +# purely on this application-layer restriction. If not specified, the +# default is to whitelist everything. +# +#federation_domain_whitelist: +# - lon.example.com +# - nyc.example.com +# - syd.example.com + +# Report prometheus metrics on the age of PDUs being sent to and received from +# the following domains. This can be used to give an idea of "delay" on inbound +# and outbound federation, though be aware that any delay can be due to problems +# at either end or with the intermediate network. +# +# By default, no domains are monitored in this way. +# +#federation_metrics_domains: +# - matrix.org +# - example.com + +# Uncomment to disable profile lookup over federation. By default, the +# Federation API allows other homeservers to obtain profile data of any user +# on this homeserver. Defaults to 'true'. +# +#allow_profile_lookup_over_federation: false + +# Uncomment to allow device display name lookup over federation. By default, the +# Federation API prevents other homeservers from obtaining the display names of +# user devices on this homeserver. Defaults to 'false'. +# +#allow_device_name_lookup_over_federation: true + + +## Caching ## + +# Caching can be configured through the following options. +# +# A cache 'factor' is a multiplier that can be applied to each of +# Synapse's caches in order to increase or decrease the maximum +# number of entries that can be stored. + +# The number of events to cache in memory. Not affected by +# caches.global_factor. +# +#event_cache_size: 10K + +caches: + # Controls the global cache factor, which is the default cache factor + # for all caches if a specific factor for that cache is not otherwise + # set. + # + # This can also be set by the "SYNAPSE_CACHE_FACTOR" environment + # variable. Setting by environment variable takes priority over + # setting through the config file. + # + # Defaults to 0.5, which will half the size of all caches. + # + #global_factor: 1.0 + + # A dictionary of cache name to cache factor for that individual + # cache. Overrides the global cache factor for a given cache. + # + # These can also be set through environment variables comprised + # of "SYNAPSE_CACHE_FACTOR_" + the name of the cache in capital + # letters and underscores. Setting by environment variable + # takes priority over setting through the config file. + # Ex. SYNAPSE_CACHE_FACTOR_GET_USERS_WHO_SHARE_ROOM_WITH_USER=2.0 + # + # Some caches have '*' and other characters that are not + # alphanumeric or underscores. These caches can be named with or + # without the special characters stripped. For example, to specify + # the cache factor for `*stateGroupCache*` via an environment + # variable would be `SYNAPSE_CACHE_FACTOR_STATEGROUPCACHE=2.0`. + # + per_cache_factors: + #get_users_who_share_room_with_user: 2.0 + + # Controls whether cache entries are evicted after a specified time + # period. Defaults to true. Uncomment to disable this feature. + # + #expire_caches: false + + # If expire_caches is enabled, this flag controls how long an entry can + # be in a cache without having been accessed before being evicted. + # Defaults to 30m. Uncomment to set a different time to live for cache entries. + # + #cache_entry_ttl: 30m + + # Controls how long the results of a /sync request are cached for after + # a successful response is returned. A higher duration can help clients with + # intermittent connections, at the cost of higher memory usage. + # + # By default, this is zero, which means that sync responses are not cached + # at all. + # + #sync_response_cache_duration: 2m + + +## Database ## + +# The 'database' setting defines the database that synapse uses to store all of +# its data. +# +# 'name' gives the database engine to use: either 'sqlite3' (for SQLite) or +# 'psycopg2' (for PostgreSQL). +# +# 'txn_limit' gives the maximum number of transactions to run per connection +# before reconnecting. Defaults to 0, which means no limit. +# +# 'allow_unsafe_locale' is an option specific to Postgres. Under the default behavior, Synapse will refuse to +# start if the postgres db is set to a non-C locale. You can override this behavior (which is *not* recommended) +# by setting 'allow_unsafe_locale' to true. Note that doing so may corrupt your database. You can find more information +# here: https://matrix-org.github.io/synapse/latest/postgres.html#fixing-incorrect-collate-or-ctype and here: +# https://wiki.postgresql.org/wiki/Locale_data_changes +# +# 'args' gives options which are passed through to the database engine, +# except for options starting 'cp_', which are used to configure the Twisted +# connection pool. For a reference to valid arguments, see: +# * for sqlite: https://docs.python.org/3/library/sqlite3.html#sqlite3.connect +# * for postgres: https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-PARAMKEYWORDS +# * for the connection pool: https://twistedmatrix.com/documents/current/api/twisted.enterprise.adbapi.ConnectionPool.html#__init__ +# +# +# Example SQLite configuration: +# +#database: +# name: sqlite3 +# args: +# database: /path/to/homeserver.db +# +# +# Example Postgres configuration: +# +#database: +# name: psycopg2 +# txn_limit: 10000 +# args: +# user: synapse_user +# password: secretpassword +# database: synapse +# host: localhost +# port: 5432 +# cp_min: 5 +# cp_max: 10 +# +# For more information on using Synapse with Postgres, +# see https://matrix-org.github.io/synapse/latest/postgres.html. +# +database: + name: sqlite3 + args: + database: /data/homeserver.db + + +## Logging ## + +# A yaml python logging config file as described by +# https://docs.python.org/3.7/library/logging.config.html#configuration-dictionary-schema +# +log_config: "/data/localhost.log.config" + + +## Ratelimiting ## + +# Ratelimiting settings for client actions (registration, login, messaging). +# +# Each ratelimiting configuration is made of two parameters: +# - per_second: number of requests a client can send per second. +# - burst_count: number of requests a client can send before being throttled. +# +# Synapse currently uses the following configurations: +# - one for messages that ratelimits sending based on the account the client +# is using +# - one for registration that ratelimits registration requests based on the +# client's IP address. +# - one for checking the validity of registration tokens that ratelimits +# requests based on the client's IP address. +# - one for login that ratelimits login requests based on the client's IP +# address. +# - one for login that ratelimits login requests based on the account the +# client is attempting to log into. +# - one for login that ratelimits login requests based on the account the +# client is attempting to log into, based on the amount of failed login +# attempts for this account. +# - one for ratelimiting redactions by room admins. If this is not explicitly +# set then it uses the same ratelimiting as per rc_message. This is useful +# to allow room admins to deal with abuse quickly. +# - two for ratelimiting number of rooms a user can join, "local" for when +# users are joining rooms the server is already in (this is cheap) vs +# "remote" for when users are trying to join rooms not on the server (which +# can be more expensive) +# - one for ratelimiting how often a user or IP can attempt to validate a 3PID. +# - two for ratelimiting how often invites can be sent in a room or to a +# specific user. +# - one for ratelimiting 3PID invites (i.e. invites sent to a third-party ID +# such as an email address or a phone number) based on the account that's +# sending the invite. +# +# The defaults are as shown below. +# +#rc_message: +# per_second: 0.2 +# burst_count: 10 +# +#rc_registration: +# per_second: 0.17 +# burst_count: 3 +# +#rc_registration_token_validity: +# per_second: 0.1 +# burst_count: 5 +# +#rc_login: +# address: +# per_second: 0.17 +# burst_count: 3 +# account: +# per_second: 0.17 +# burst_count: 3 +# failed_attempts: +# per_second: 0.17 +# burst_count: 3 +# +#rc_admin_redaction: +# per_second: 1 +# burst_count: 50 +# +#rc_joins: +# local: +# per_second: 0.1 +# burst_count: 10 +# remote: +# per_second: 0.01 +# burst_count: 10 +# +#rc_3pid_validation: +# per_second: 0.003 +# burst_count: 5 +# +#rc_invites: +# per_room: +# per_second: 0.3 +# burst_count: 10 +# per_user: +# per_second: 0.003 +# burst_count: 5 +# +#rc_third_party_invite: +# per_second: 0.2 +# burst_count: 10 + +# Ratelimiting settings for incoming federation +# +# The rc_federation configuration is made up of the following settings: +# - window_size: window size in milliseconds +# - sleep_limit: number of federation requests from a single server in +# a window before the server will delay processing the request. +# - sleep_delay: duration in milliseconds to delay processing events +# from remote servers by if they go over the sleep limit. +# - reject_limit: maximum number of concurrent federation requests +# allowed from a single server +# - concurrent: number of federation requests to concurrently process +# from a single server +# +# The defaults are as shown below. +# +#rc_federation: +# window_size: 1000 +# sleep_limit: 10 +# sleep_delay: 500 +# reject_limit: 50 +# concurrent: 3 + +# Target outgoing federation transaction frequency for sending read-receipts, +# per-room. +# +# If we end up trying to send out more read-receipts, they will get buffered up +# into fewer transactions. +# +#federation_rr_transactions_per_room_per_second: 50 + + + +## Media Store ## + +# Enable the media store service in the Synapse master. Uncomment the +# following if you are using a separate media store worker. +# +#enable_media_repo: false + +# Directory where uploaded images and attachments are stored. +# +media_store_path: "/data/media_store" + +# Media storage providers allow media to be stored in different +# locations. +# +#media_storage_providers: +# - module: file_system +# # Whether to store newly uploaded local files +# store_local: false +# # Whether to store newly downloaded remote files +# store_remote: false +# # Whether to wait for successful storage for local uploads +# store_synchronous: false +# config: +# directory: /mnt/some/other/directory + +# The largest allowed upload size in bytes +# +# If you are using a reverse proxy you may also need to set this value in +# your reverse proxy's config. Notably Nginx has a small max body size by default. +# See https://matrix-org.github.io/synapse/latest/reverse_proxy.html. +# +#max_upload_size: 50M + +# Maximum number of pixels that will be thumbnailed +# +#max_image_pixels: 32M + +# Whether to generate new thumbnails on the fly to precisely match +# the resolution requested by the client. If true then whenever +# a new resolution is requested by the client the server will +# generate a new thumbnail. If false the server will pick a thumbnail +# from a precalculated list. +# +#dynamic_thumbnails: false + +# List of thumbnails to precalculate when an image is uploaded. +# +#thumbnail_sizes: +# - width: 32 +# height: 32 +# method: crop +# - width: 96 +# height: 96 +# method: crop +# - width: 320 +# height: 240 +# method: scale +# - width: 640 +# height: 480 +# method: scale +# - width: 800 +# height: 600 +# method: scale + +# Is the preview URL API enabled? +# +# 'false' by default: uncomment the following to enable it (and specify a +# url_preview_ip_range_blacklist blacklist). +# +#url_preview_enabled: true + +# List of IP address CIDR ranges that the URL preview spider is denied +# from accessing. There are no defaults: you must explicitly +# specify a list for URL previewing to work. You should specify any +# internal services in your network that you do not want synapse to try +# to connect to, otherwise anyone in any Matrix room could cause your +# synapse to issue arbitrary GET requests to your internal services, +# causing serious security issues. +# +# (0.0.0.0 and :: are always blacklisted, whether or not they are explicitly +# listed here, since they correspond to unroutable addresses.) +# +# This must be specified if url_preview_enabled is set. It is recommended that +# you uncomment the following list as a starting point. +# +# Note: The value is ignored when an HTTP proxy is in use +# +#url_preview_ip_range_blacklist: +# - '127.0.0.0/8' +# - '10.0.0.0/8' +# - '172.16.0.0/12' +# - '192.168.0.0/16' +# - '100.64.0.0/10' +# - '192.0.0.0/24' +# - '169.254.0.0/16' +# - '192.88.99.0/24' +# - '198.18.0.0/15' +# - '192.0.2.0/24' +# - '198.51.100.0/24' +# - '203.0.113.0/24' +# - '224.0.0.0/4' +# - '::1/128' +# - 'fe80::/10' +# - 'fc00::/7' +# - '2001:db8::/32' +# - 'ff00::/8' +# - 'fec0::/10' + +# List of IP address CIDR ranges that the URL preview spider is allowed +# to access even if they are specified in url_preview_ip_range_blacklist. +# This is useful for specifying exceptions to wide-ranging blacklisted +# target IP ranges - e.g. for enabling URL previews for a specific private +# website only visible in your network. +# +#url_preview_ip_range_whitelist: +# - '192.168.1.1' + +# Optional list of URL matches that the URL preview spider is +# denied from accessing. You should use url_preview_ip_range_blacklist +# in preference to this, otherwise someone could define a public DNS +# entry that points to a private IP address and circumvent the blacklist. +# This is more useful if you know there is an entire shape of URL that +# you know that will never want synapse to try to spider. +# +# Each list entry is a dictionary of url component attributes as returned +# by urlparse.urlsplit as applied to the absolute form of the URL. See +# https://docs.python.org/2/library/urlparse.html#urlparse.urlsplit +# The values of the dictionary are treated as an filename match pattern +# applied to that component of URLs, unless they start with a ^ in which +# case they are treated as a regular expression match. If all the +# specified component matches for a given list item succeed, the URL is +# blacklisted. +# +#url_preview_url_blacklist: +# # blacklist any URL with a username in its URI +# - username: '*' +# +# # blacklist all *.google.com URLs +# - netloc: 'google.com' +# - netloc: '*.google.com' +# +# # blacklist all plain HTTP URLs +# - scheme: 'http' +# +# # blacklist http(s)://www.acme.com/foo +# - netloc: 'www.acme.com' +# path: '/foo' +# +# # blacklist any URL with a literal IPv4 address +# - netloc: '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$' + +# The largest allowed URL preview spidering size in bytes +# +#max_spider_size: 10M + +# A list of values for the Accept-Language HTTP header used when +# downloading webpages during URL preview generation. This allows +# Synapse to specify the preferred languages that URL previews should +# be in when communicating with remote servers. +# +# Each value is a IETF language tag; a 2-3 letter identifier for a +# language, optionally followed by subtags separated by '-', specifying +# a country or region variant. +# +# Multiple values can be provided, and a weight can be added to each by +# using quality value syntax (;q=). '*' translates to any language. +# +# Defaults to "en". +# +# Example: +# +# url_preview_accept_language: +# - en-UK +# - en-US;q=0.9 +# - fr;q=0.8 +# - *;q=0.7 +# +url_preview_accept_language: +# - en + + +# oEmbed allows for easier embedding content from a website. It can be +# used for generating URLs previews of services which support it. +# +oembed: + # A default list of oEmbed providers is included with Synapse. + # + # Uncomment the following to disable using these default oEmbed URLs. + # Defaults to 'false'. + # + #disable_default_providers: true + + # Additional files with oEmbed configuration (each should be in the + # form of providers.json). + # + # By default, this list is empty (so only the default providers.json + # is used). + # + #additional_providers: + # - oembed/my_providers.json + + +## Captcha ## +# See docs/CAPTCHA_SETUP.md for full details of configuring this. + +# This homeserver's ReCAPTCHA public key. Must be specified if +# enable_registration_captcha is enabled. +# +#recaptcha_public_key: "YOUR_PUBLIC_KEY" + +# This homeserver's ReCAPTCHA private key. Must be specified if +# enable_registration_captcha is enabled. +# +#recaptcha_private_key: "YOUR_PRIVATE_KEY" + +# Uncomment to enable ReCaptcha checks when registering, preventing signup +# unless a captcha is answered. Requires a valid ReCaptcha +# public/private key. Defaults to 'false'. +# +#enable_registration_captcha: true + +# The API endpoint to use for verifying m.login.recaptcha responses. +# Defaults to "https://www.recaptcha.net/recaptcha/api/siteverify". +# +#recaptcha_siteverify_api: "https://my.recaptcha.site" + + +## TURN ## + +# The public URIs of the TURN server to give to clients +# +#turn_uris: [] + +# The shared secret used to compute passwords for the TURN server +# +#turn_shared_secret: "YOUR_SHARED_SECRET" + +# The Username and password if the TURN server needs them and +# does not use a token +# +#turn_username: "TURNSERVER_USERNAME" +#turn_password: "TURNSERVER_PASSWORD" + +# How long generated TURN credentials last +# +#turn_user_lifetime: 1h + +# Whether guests should be allowed to use the TURN server. +# This defaults to True, otherwise VoIP will be unreliable for guests. +# However, it does introduce a slight security risk as it allows users to +# connect to arbitrary endpoints without having first signed up for a +# valid account (e.g. by passing a CAPTCHA). +# +#turn_allow_guests: true + + +## Registration ## +# +# Registration can be rate-limited using the parameters in the "Ratelimiting" +# section of this file. + +# Enable registration for new users. Defaults to 'false'. It is highly recommended that if you enable registration, +# you use either captcha, email, or token-based verification to verify that new users are not bots. In order to enable registration +# without any verification, you must also set `enable_registration_without_verification`, found below. +# +enable_registration: true + +# Enable registration without email or captcha verification. Note: this option is *not* recommended, +# as registration without verification is a known vector for spam and abuse. Defaults to false. Has no effect +# unless `enable_registration` is also enabled. +# +enable_registration_without_verification: true + +# Time that a user's session remains valid for, after they log in. +# +# Note that this is not currently compatible with guest logins. +# +# Note also that this is calculated at login time: changes are not applied +# retrospectively to users who have already logged in. +# +# By default, this is infinite. +# +#session_lifetime: 24h + +# Time that an access token remains valid for, if the session is +# using refresh tokens. +# For more information about refresh tokens, please see the manual. +# Note that this only applies to clients which advertise support for +# refresh tokens. +# +# Note also that this is calculated at login time and refresh time: +# changes are not applied to existing sessions until they are refreshed. +# +# By default, this is 5 minutes. +# +#refreshable_access_token_lifetime: 5m + +# Time that a refresh token remains valid for (provided that it is not +# exchanged for another one first). +# This option can be used to automatically log-out inactive sessions. +# Please see the manual for more information. +# +# Note also that this is calculated at login time and refresh time: +# changes are not applied to existing sessions until they are refreshed. +# +# By default, this is infinite. +# +#refresh_token_lifetime: 24h + +# Time that an access token remains valid for, if the session is NOT +# using refresh tokens. +# Please note that not all clients support refresh tokens, so setting +# this to a short value may be inconvenient for some users who will +# then be logged out frequently. +# +# Note also that this is calculated at login time: changes are not applied +# retrospectively to existing sessions for users that have already logged in. +# +# By default, this is infinite. +# +#nonrefreshable_access_token_lifetime: 24h + +# The user must provide all of the below types of 3PID when registering. +# +#registrations_require_3pid: +# - email +# - msisdn + +# Explicitly disable asking for MSISDNs from the registration +# flow (overrides registrations_require_3pid if MSISDNs are set as required) +# +#disable_msisdn_registration: true + +# Mandate that users are only allowed to associate certain formats of +# 3PIDs with accounts on this server. +# +#allowed_local_3pids: +# - medium: email +# pattern: '^[^@]+@matrix\.org$' +# - medium: email +# pattern: '^[^@]+@vector\.im$' +# - medium: msisdn +# pattern: '\+44' + +# Enable 3PIDs lookup requests to identity servers from this server. +# +#enable_3pid_lookup: true + +# Require users to submit a token during registration. +# Tokens can be managed using the admin API: +# https://matrix-org.github.io/synapse/latest/usage/administration/admin_api/registration_tokens.html +# Note that `enable_registration` must be set to `true`. +# Disabling this option will not delete any tokens previously generated. +# Defaults to false. Uncomment the following to require tokens: +# +#registration_requires_token: true + +# Allow users to submit a token during registration to bypass any required 3pid +# steps configured in `registrations_require_3pid`. +# Defaults to false, requiring that registration tokens (if enabled) complete a 3pid flow. +# +#enable_registration_token_3pid_bypass: false + +# If set, allows registration of standard or admin accounts by anyone who +# has the shared secret, even if registration is otherwise disabled. +# +registration_shared_secret: "*_854H=YMj.QsE;~~3S,+785vsc#f9f=~nw8aa0Da&~Ye=24=l" + +# Set the number of bcrypt rounds used to generate password hash. +# Larger numbers increase the work factor needed to generate the hash. +# The default number is 12 (which equates to 2^12 rounds). +# N.B. that increasing this will exponentially increase the time required +# to register or login - e.g. 24 => 2^24 rounds which will take >20 mins. +# +#bcrypt_rounds: 12 + +# Allows users to register as guests without a password/email/etc, and +# participate in rooms hosted on this server which have been made +# accessible to anonymous users. +# +#allow_guest_access: false + +# The identity server which we suggest that clients should use when users log +# in on this server. +# +# (By default, no suggestion is made, so it is left up to the client. +# This setting is ignored unless public_baseurl is also explicitly set.) +# +#default_identity_server: https://matrix.org + +# Handle threepid (email/phone etc) registration and password resets through a set of +# *trusted* identity servers. Note that this allows the configured identity server to +# reset passwords for accounts! +# +# Be aware that if `email` is not set, and SMTP options have not been +# configured in the email config block, registration and user password resets via +# email will be globally disabled. +# +# Additionally, if `msisdn` is not set, registration and password resets via msisdn +# will be disabled regardless, and users will not be able to associate an msisdn +# identifier to their account. This is due to Synapse currently not supporting +# any method of sending SMS messages on its own. +# +# To enable using an identity server for operations regarding a particular third-party +# identifier type, set the value to the URL of that identity server as shown in the +# examples below. +# +# Servers handling the these requests must answer the `/requestToken` endpoints defined +# by the Matrix Identity Service API specification: +# https://matrix.org/docs/spec/identity_service/latest +# +account_threepid_delegates: + #email: https://example.com # Delegate email sending to example.com + #msisdn: http://localhost:8090 # Delegate SMS sending to this local process + +# Whether users are allowed to change their displayname after it has +# been initially set. Useful when provisioning users based on the +# contents of a third-party directory. +# +# Does not apply to server administrators. Defaults to 'true' +# +#enable_set_displayname: false + +# Whether users are allowed to change their avatar after it has been +# initially set. Useful when provisioning users based on the contents +# of a third-party directory. +# +# Does not apply to server administrators. Defaults to 'true' +# +#enable_set_avatar_url: false + +# Whether users can change the 3PIDs associated with their accounts +# (email address and msisdn). +# +# Defaults to 'true' +# +#enable_3pid_changes: false + +# Users who register on this homeserver will automatically be joined +# to these rooms. +# +# By default, any room aliases included in this list will be created +# as a publicly joinable room when the first user registers for the +# homeserver. This behaviour can be customised with the settings below. +# If the room already exists, make certain it is a publicly joinable +# room. The join rule of the room must be set to 'public'. +# +#auto_join_rooms: +# - "#example:example.com" + +# Where auto_join_rooms are specified, setting this flag ensures that the +# the rooms exist by creating them when the first user on the +# homeserver registers. +# +# By default the auto-created rooms are publicly joinable from any federated +# server. Use the autocreate_auto_join_rooms_federated and +# autocreate_auto_join_room_preset settings below to customise this behaviour. +# +# Setting to false means that if the rooms are not manually created, +# users cannot be auto-joined since they do not exist. +# +# Defaults to true. Uncomment the following line to disable automatically +# creating auto-join rooms. +# +#autocreate_auto_join_rooms: false + +# Whether the auto_join_rooms that are auto-created are available via +# federation. Only has an effect if autocreate_auto_join_rooms is true. +# +# Note that whether a room is federated cannot be modified after +# creation. +# +# Defaults to true: the room will be joinable from other servers. +# Uncomment the following to prevent users from other homeservers from +# joining these rooms. +# +#autocreate_auto_join_rooms_federated: false + +# The room preset to use when auto-creating one of auto_join_rooms. Only has an +# effect if autocreate_auto_join_rooms is true. +# +# This can be one of "public_chat", "private_chat", or "trusted_private_chat". +# If a value of "private_chat" or "trusted_private_chat" is used then +# auto_join_mxid_localpart must also be configured. +# +# Defaults to "public_chat", meaning that the room is joinable by anyone, including +# federated servers if autocreate_auto_join_rooms_federated is true (the default). +# Uncomment the following to require an invitation to join these rooms. +# +#autocreate_auto_join_room_preset: private_chat + +# The local part of the user id which is used to create auto_join_rooms if +# autocreate_auto_join_rooms is true. If this is not provided then the +# initial user account that registers will be used to create the rooms. +# +# The user id is also used to invite new users to any auto-join rooms which +# are set to invite-only. +# +# It *must* be configured if autocreate_auto_join_room_preset is set to +# "private_chat" or "trusted_private_chat". +# +# Note that this must be specified in order for new users to be correctly +# invited to any auto-join rooms which have been set to invite-only (either +# at the time of creation or subsequently). +# +# Note that, if the room already exists, this user must be joined and +# have the appropriate permissions to invite new members. +# +#auto_join_mxid_localpart: system + +# When auto_join_rooms is specified, setting this flag to false prevents +# guest accounts from being automatically joined to the rooms. +# +# Defaults to true. +# +#auto_join_rooms_for_guests: false + +# Whether to inhibit errors raised when registering a new account if the user ID +# already exists. If turned on, that requests to /register/available will always +# show a user ID as available, and Synapse won't raise an error when starting +# a registration with a user ID that already exists. However, Synapse will still +# raise an error if the registration completes and the username conflicts. +# +# Defaults to false. +# +#inhibit_user_in_use_error: true + + +## Metrics ### + +# Enable collection and rendering of performance metrics +# +#enable_metrics: false + +# Enable sentry integration +# NOTE: While attempts are made to ensure that the logs don't contain +# any sensitive information, this cannot be guaranteed. By enabling +# this option the sentry server may therefore receive sensitive +# information, and it in turn may then diseminate sensitive information +# through insecure notification channels if so configured. +# +#sentry: +# dsn: "..." + +# Flags to enable Prometheus metrics which are not suitable to be +# enabled by default, either for performance reasons or limited use. +# +metrics_flags: + # Publish synapse_federation_known_servers, a gauge of the number of + # servers this homeserver knows about, including itself. May cause + # performance problems on large homeservers. + # + #known_servers: true + +# Whether or not to report anonymized homeserver usage statistics. +# +report_stats: false + +# The endpoint to report the anonymized homeserver usage statistics to. +# Defaults to https://matrix.org/report-usage-stats/push +# +#report_stats_endpoint: https://example.com/report-usage-stats/push + + +## API Configuration ## + +# Controls for the state that is shared with users who receive an invite +# to a room +# +room_prejoin_state: + # By default, the following state event types are shared with users who + # receive invites to the room: + # + # - m.room.join_rules + # - m.room.canonical_alias + # - m.room.avatar + # - m.room.encryption + # - m.room.name + # - m.room.create + # - m.room.topic + # + # Uncomment the following to disable these defaults (so that only the event + # types listed in 'additional_event_types' are shared). Defaults to 'false'. + # + #disable_default_event_types: true + + # Additional state event types to share with users when they are invited + # to a room. + # + # By default, this list is empty (so only the default event types are shared). + # + #additional_event_types: + # - org.example.custom.event.type + +# We record the IP address of clients used to access the API for various +# reasons, including displaying it to the user in the "Where you're signed in" +# dialog. +# +# By default, when puppeting another user via the admin API, the client IP +# address is recorded against the user who created the access token (ie, the +# admin user), and *not* the puppeted user. +# +# Uncomment the following to also record the IP address against the puppeted +# user. (This also means that the puppeted user will count as an "active" user +# for the purpose of monthly active user tracking - see 'limit_usage_by_mau' etc +# above.) +# +#track_puppeted_user_ips: true + + +# A list of application service config files to use +# +#app_service_config_files: +# - app_service_1.yaml +# - app_service_2.yaml + +# Uncomment to enable tracking of application service IP addresses. Implicitly +# enables MAU tracking for application service users. +# +#track_appservice_user_ips: true + + +# a secret which is used to sign access tokens. If none is specified, +# the registration_shared_secret is used, if one is given; otherwise, +# a secret key is derived from the signing key. +# +macaroon_secret_key: "V^82zhIr=:JrekhnYrePOdvLCAut:9Va,AU@-7NTU3EKXipo*4" + +# a secret which is used to calculate HMACs for form values, to stop +# falsification of values. Must be specified for the User Consent +# forms to work. +# +form_secret: "&fZC5o5Co@cX5xeBMIv1wkxR5SKOdg=p19F#lB^PE^qSJftzc&" + +## Signing Keys ## + +# Path to the signing key to sign messages with +# +signing_key_path: "/data/localhost.signing.key" + +# The keys that the server used to sign messages with but won't use +# to sign new messages. +# +old_signing_keys: + # For each key, `key` should be the base64-encoded public key, and + # `expired_ts`should be the time (in milliseconds since the unix epoch) that + # it was last used. + # + # It is possible to build an entry from an old signing.key file using the + # `export_signing_key` script which is provided with synapse. + # + # For example: + # + #"ed25519:id": { key: "base64string", expired_ts: 123456789123 } + +# How long key response published by this server is valid for. +# Used to set the valid_until_ts in /key/v2 APIs. +# Determines how quickly servers will query to check which keys +# are still valid. +# +#key_refresh_interval: 1d + +# The trusted servers to download signing keys from. +# +# When we need to fetch a signing key, each server is tried in parallel. +# +# Normally, the connection to the key server is validated via TLS certificates. +# Additional security can be provided by configuring a `verify key`, which +# will make synapse check that the response is signed by that key. +# +# This setting supercedes an older setting named `perspectives`. The old format +# is still supported for backwards-compatibility, but it is deprecated. +# +# 'trusted_key_servers' defaults to matrix.org, but using it will generate a +# warning on start-up. To suppress this warning, set +# 'suppress_key_server_warning' to true. +# +# Options for each entry in the list include: +# +# server_name: the name of the server. required. +# +# verify_keys: an optional map from key id to base64-encoded public key. +# If specified, we will check that the response is signed by at least +# one of the given keys. +# +# accept_keys_insecurely: a boolean. Normally, if `verify_keys` is unset, +# and federation_verify_certificates is not `true`, synapse will refuse +# to start, because this would allow anyone who can spoof DNS responses +# to masquerade as the trusted key server. If you know what you are doing +# and are sure that your network environment provides a secure connection +# to the key server, you can set this to `true` to override this +# behaviour. +# +# An example configuration might look like: +# +#trusted_key_servers: +# - server_name: "my_trusted_server.example.com" +# verify_keys: +# "ed25519:auto": "abcdefghijklmnopqrstuvwxyzabcdefghijklmopqr" +# - server_name: "my_other_trusted_server.example.com" +# +trusted_key_servers: + - server_name: "matrix.org" + +# Uncomment the following to disable the warning that is emitted when the +# trusted_key_servers include 'matrix.org'. See above. +# +#suppress_key_server_warning: true + +# The signing keys to use when acting as a trusted key server. If not specified +# defaults to the server signing key. +# +# Can contain multiple keys, one per line. +# +#key_server_signing_keys_path: "key_server_signing_keys.key" + + +## Single sign-on integration ## + +# The following settings can be used to make Synapse use a single sign-on +# provider for authentication, instead of its internal password database. +# +# You will probably also want to set the following options to `false` to +# disable the regular login/registration flows: +# * enable_registration +# * password_config.enabled +# +# You will also want to investigate the settings under the "sso" configuration +# section below. + +# Enable SAML2 for registration and login. Uses pysaml2. +# +# At least one of `sp_config` or `config_path` must be set in this section to +# enable SAML login. +# +# Once SAML support is enabled, a metadata file will be exposed at +# https://:/_synapse/client/saml2/metadata.xml, which you may be able to +# use to configure your SAML IdP with. Alternatively, you can manually configure +# the IdP to use an ACS location of +# https://:/_synapse/client/saml2/authn_response. +# +saml2_config: + # `sp_config` is the configuration for the pysaml2 Service Provider. + # See pysaml2 docs for format of config. + # + # Default values will be used for the 'entityid' and 'service' settings, + # so it is not normally necessary to specify them unless you need to + # override them. + # + sp_config: + # Point this to the IdP's metadata. You must provide either a local + # file via the `local` attribute or (preferably) a URL via the + # `remote` attribute. + # + #metadata: + # local: ["saml2/idp.xml"] + # remote: + # - url: https://our_idp/metadata.xml + + # Allowed clock difference in seconds between the homeserver and IdP. + # + # Uncomment the below to increase the accepted time difference from 0 to 3 seconds. + # + #accepted_time_diff: 3 + + # By default, the user has to go to our login page first. If you'd like + # to allow IdP-initiated login, set 'allow_unsolicited: true' in a + # 'service.sp' section: + # + #service: + # sp: + # allow_unsolicited: true + + # The examples below are just used to generate our metadata xml, and you + # may well not need them, depending on your setup. Alternatively you + # may need a whole lot more detail - see the pysaml2 docs! + + #description: ["My awesome SP", "en"] + #name: ["Test SP", "en"] + + #ui_info: + # display_name: + # - lang: en + # text: "Display Name is the descriptive name of your service." + # description: + # - lang: en + # text: "Description should be a short paragraph explaining the purpose of the service." + # information_url: + # - lang: en + # text: "https://example.com/terms-of-service" + # privacy_statement_url: + # - lang: en + # text: "https://example.com/privacy-policy" + # keywords: + # - lang: en + # text: ["Matrix", "Element"] + # logo: + # - lang: en + # text: "https://example.com/logo.svg" + # width: "200" + # height: "80" + + #organization: + # name: Example com + # display_name: + # - ["Example co", "en"] + # url: "http://example.com" + + #contact_person: + # - given_name: Bob + # sur_name: "the Sysadmin" + # email_address": ["admin@example.com"] + # contact_type": technical + + # Instead of putting the config inline as above, you can specify a + # separate pysaml2 configuration file: + # + #config_path: "/data/sp_conf.py" + + # The lifetime of a SAML session. This defines how long a user has to + # complete the authentication process, if allow_unsolicited is unset. + # The default is 15 minutes. + # + #saml_session_lifetime: 5m + + # An external module can be provided here as a custom solution to + # mapping attributes returned from a saml provider onto a matrix user. + # + user_mapping_provider: + # The custom module's class. Uncomment to use a custom module. + # + #module: mapping_provider.SamlMappingProvider + + # Custom configuration values for the module. Below options are + # intended for the built-in provider, they should be changed if + # using a custom module. This section will be passed as a Python + # dictionary to the module's `parse_config` method. + # + config: + # The SAML attribute (after mapping via the attribute maps) to use + # to derive the Matrix ID from. 'uid' by default. + # + # Note: This used to be configured by the + # saml2_config.mxid_source_attribute option. If that is still + # defined, its value will be used instead. + # + #mxid_source_attribute: displayName + + # The mapping system to use for mapping the saml attribute onto a + # matrix ID. + # + # Options include: + # * 'hexencode' (which maps unpermitted characters to '=xx') + # * 'dotreplace' (which replaces unpermitted characters with + # '.'). + # The default is 'hexencode'. + # + # Note: This used to be configured by the + # saml2_config.mxid_mapping option. If that is still defined, its + # value will be used instead. + # + #mxid_mapping: dotreplace + + # In previous versions of synapse, the mapping from SAML attribute to + # MXID was always calculated dynamically rather than stored in a + # table. For backwards- compatibility, we will look for user_ids + # matching such a pattern before creating a new account. + # + # This setting controls the SAML attribute which will be used for this + # backwards-compatibility lookup. Typically it should be 'uid', but if + # the attribute maps are changed, it may be necessary to change it. + # + # The default is 'uid'. + # + #grandfathered_mxid_source_attribute: upn + + # It is possible to configure Synapse to only allow logins if SAML attributes + # match particular values. The requirements can be listed under + # `attribute_requirements` as shown below. All of the listed attributes must + # match for the login to be permitted. + # + #attribute_requirements: + # - attribute: userGroup + # value: "staff" + # - attribute: department + # value: "sales" + + # If the metadata XML contains multiple IdP entities then the `idp_entityid` + # option must be set to the entity to redirect users to. + # + # Most deployments only have a single IdP entity and so should omit this + # option. + # + #idp_entityid: 'https://our_idp/entityid' + + +# List of OpenID Connect (OIDC) / OAuth 2.0 identity providers, for registration +# and login. +# +# Options for each entry include: +# +# idp_id: a unique identifier for this identity provider. Used internally +# by Synapse; should be a single word such as 'github'. +# +# Note that, if this is changed, users authenticating via that provider +# will no longer be recognised as the same user! +# +# (Use "oidc" here if you are migrating from an old "oidc_config" +# configuration.) +# +# idp_name: A user-facing name for this identity provider, which is used to +# offer the user a choice of login mechanisms. +# +# idp_icon: An optional icon for this identity provider, which is presented +# by clients and Synapse's own IdP picker page. If given, must be an +# MXC URI of the format mxc:///. (An easy way to +# obtain such an MXC URI is to upload an image to an (unencrypted) room +# and then copy the "url" from the source of the event.) +# +# idp_brand: An optional brand for this identity provider, allowing clients +# to style the login flow according to the identity provider in question. +# See the spec for possible options here. +# +# discover: set to 'false' to disable the use of the OIDC discovery mechanism +# to discover endpoints. Defaults to true. +# +# issuer: Required. The OIDC issuer. Used to validate tokens and (if discovery +# is enabled) to discover the provider's endpoints. +# +# client_id: Required. oauth2 client id to use. +# +# client_secret: oauth2 client secret to use. May be omitted if +# client_secret_jwt_key is given, or if client_auth_method is 'none'. +# +# client_secret_jwt_key: Alternative to client_secret: details of a key used +# to create a JSON Web Token to be used as an OAuth2 client secret. If +# given, must be a dictionary with the following properties: +# +# key: a pem-encoded signing key. Must be a suitable key for the +# algorithm specified. Required unless 'key_file' is given. +# +# key_file: the path to file containing a pem-encoded signing key file. +# Required unless 'key' is given. +# +# jwt_header: a dictionary giving properties to include in the JWT +# header. Must include the key 'alg', giving the algorithm used to +# sign the JWT, such as "ES256", using the JWA identifiers in +# RFC7518. +# +# jwt_payload: an optional dictionary giving properties to include in +# the JWT payload. Normally this should include an 'iss' key. +# +# client_auth_method: auth method to use when exchanging the token. Valid +# values are 'client_secret_basic' (default), 'client_secret_post' and +# 'none'. +# +# scopes: list of scopes to request. This should normally include the "openid" +# scope. Defaults to ["openid"]. +# +# authorization_endpoint: the oauth2 authorization endpoint. Required if +# provider discovery is disabled. +# +# token_endpoint: the oauth2 token endpoint. Required if provider discovery is +# disabled. +# +# userinfo_endpoint: the OIDC userinfo endpoint. Required if discovery is +# disabled and the 'openid' scope is not requested. +# +# jwks_uri: URI where to fetch the JWKS. Required if discovery is disabled and +# the 'openid' scope is used. +# +# skip_verification: set to 'true' to skip metadata verification. Use this if +# you are connecting to a provider that is not OpenID Connect compliant. +# Defaults to false. Avoid this in production. +# +# user_profile_method: Whether to fetch the user profile from the userinfo +# endpoint, or to rely on the data returned in the id_token from the +# token_endpoint. +# +# Valid values are: 'auto' or 'userinfo_endpoint'. +# +# Defaults to 'auto', which uses the userinfo endpoint if 'openid' is +# not included in 'scopes'. Set to 'userinfo_endpoint' to always use the +# userinfo endpoint. +# +# allow_existing_users: set to 'true' to allow a user logging in via OIDC to +# match a pre-existing account instead of failing. This could be used if +# switching from password logins to OIDC. Defaults to false. +# +# user_mapping_provider: Configuration for how attributes returned from a OIDC +# provider are mapped onto a matrix user. This setting has the following +# sub-properties: +# +# module: The class name of a custom mapping module. Default is +# 'synapse.handlers.oidc.JinjaOidcMappingProvider'. +# See https://matrix-org.github.io/synapse/latest/sso_mapping_providers.html#openid-mapping-providers +# for information on implementing a custom mapping provider. +# +# config: Configuration for the mapping provider module. This section will +# be passed as a Python dictionary to the user mapping provider +# module's `parse_config` method. +# +# For the default provider, the following settings are available: +# +# subject_claim: name of the claim containing a unique identifier +# for the user. Defaults to 'sub', which OpenID Connect +# compliant providers should provide. +# +# localpart_template: Jinja2 template for the localpart of the MXID. +# If this is not set, the user will be prompted to choose their +# own username (see the documentation for the +# 'sso_auth_account_details.html' template). This template can +# use the 'localpart_from_email' filter. +# +# confirm_localpart: Whether to prompt the user to validate (or +# change) the generated localpart (see the documentation for the +# 'sso_auth_account_details.html' template), instead of +# registering the account right away. +# +# display_name_template: Jinja2 template for the display name to set +# on first login. If unset, no displayname will be set. +# +# email_template: Jinja2 template for the email address of the user. +# If unset, no email address will be added to the account. +# +# extra_attributes: a map of Jinja2 templates for extra attributes +# to send back to the client during login. +# Note that these are non-standard and clients will ignore them +# without modifications. +# +# When rendering, the Jinja2 templates are given a 'user' variable, +# which is set to the claims returned by the UserInfo Endpoint and/or +# in the ID Token. +# +# It is possible to configure Synapse to only allow logins if certain attributes +# match particular values in the OIDC userinfo. The requirements can be listed under +# `attribute_requirements` as shown below. All of the listed attributes must +# match for the login to be permitted. Additional attributes can be added to +# userinfo by expanding the `scopes` section of the OIDC config to retrieve +# additional information from the OIDC provider. +# +# If the OIDC claim is a list, then the attribute must match any value in the list. +# Otherwise, it must exactly match the value of the claim. Using the example +# below, the `family_name` claim MUST be "Stephensson", but the `groups` +# claim MUST contain "admin". +# +# attribute_requirements: +# - attribute: family_name +# value: "Stephensson" +# - attribute: groups +# value: "admin" +# +# See https://matrix-org.github.io/synapse/latest/openid.html +# for information on how to configure these options. +# +# For backwards compatibility, it is also possible to configure a single OIDC +# provider via an 'oidc_config' setting. This is now deprecated and admins are +# advised to migrate to the 'oidc_providers' format. (When doing that migration, +# use 'oidc' for the idp_id to ensure that existing users continue to be +# recognised.) +# +oidc_providers: + # Generic example + # + #- idp_id: my_idp + # idp_name: "My OpenID provider" + # idp_icon: "mxc://example.com/mediaid" + # discover: false + # issuer: "https://accounts.example.com/" + # client_id: "provided-by-your-issuer" + # client_secret: "provided-by-your-issuer" + # client_auth_method: client_secret_post + # scopes: ["openid", "profile"] + # authorization_endpoint: "https://accounts.example.com/oauth2/auth" + # token_endpoint: "https://accounts.example.com/oauth2/token" + # userinfo_endpoint: "https://accounts.example.com/userinfo" + # jwks_uri: "https://accounts.example.com/.well-known/jwks.json" + # skip_verification: true + # user_mapping_provider: + # config: + # subject_claim: "id" + # localpart_template: "{{ user.login }}" + # display_name_template: "{{ user.name }}" + # email_template: "{{ user.email }}" + # attribute_requirements: + # - attribute: userGroup + # value: "synapseUsers" + + +# Enable Central Authentication Service (CAS) for registration and login. +# +cas_config: + # Uncomment the following to enable authorization against a CAS server. + # Defaults to false. + # + #enabled: true + + # The URL of the CAS authorization endpoint. + # + #server_url: "https://cas-server.com" + + # The attribute of the CAS response to use as the display name. + # + # If unset, no displayname will be set. + # + #displayname_attribute: name + + # It is possible to configure Synapse to only allow logins if CAS attributes + # match particular values. All of the keys in the mapping below must exist + # and the values must match the given value. Alternately if the given value + # is None then any value is allowed (the attribute just must exist). + # All of the listed attributes must match for the login to be permitted. + # + #required_attributes: + # userGroup: "staff" + # department: None + + +# Additional settings to use with single-sign on systems such as OpenID Connect, +# SAML2 and CAS. +# +# Server admins can configure custom templates for pages related to SSO. See +# https://matrix-org.github.io/synapse/latest/templates.html for more information. +# +sso: + # A list of client URLs which are whitelisted so that the user does not + # have to confirm giving access to their account to the URL. Any client + # whose URL starts with an entry in the following list will not be subject + # to an additional confirmation step after the SSO login is completed. + # + # WARNING: An entry such as "https://my.client" is insecure, because it + # will also match "https://my.client.evil.site", exposing your users to + # phishing attacks from evil.site. To avoid this, include a slash after the + # hostname: "https://my.client/". + # + # The login fallback page (used by clients that don't natively support the + # required login flows) is whitelisted in addition to any URLs in this list. + # + # By default, this list contains only the login fallback page. + # + #client_whitelist: + # - https://riot.im/develop + # - https://my.custom.client/ + + # Uncomment to keep a user's profile fields in sync with information from + # the identity provider. Currently only syncing the displayname is + # supported. Fields are checked on every SSO login, and are updated + # if necessary. + # + # Note that enabling this option will override user profile information, + # regardless of whether users have opted-out of syncing that + # information when first signing in. Defaults to false. + # + #update_profile_information: true + + +# JSON web token integration. The following settings can be used to make +# Synapse JSON web tokens for authentication, instead of its internal +# password database. +# +# Each JSON Web Token needs to contain a "sub" (subject) claim, which is +# used as the localpart of the mxid. +# +# Additionally, the expiration time ("exp"), not before time ("nbf"), +# and issued at ("iat") claims are validated if present. +# +# Note that this is a non-standard login type and client support is +# expected to be non-existent. +# +# See https://matrix-org.github.io/synapse/latest/jwt.html. +# +#jwt_config: + # Uncomment the following to enable authorization using JSON web + # tokens. Defaults to false. + # + #enabled: true + + # This is either the private shared secret or the public key used to + # decode the contents of the JSON web token. + # + # Required if 'enabled' is true. + # + #secret: "provided-by-your-issuer" + + # The algorithm used to sign the JSON web token. + # + # Supported algorithms are listed at + # https://pyjwt.readthedocs.io/en/latest/algorithms.html + # + # Required if 'enabled' is true. + # + #algorithm: "provided-by-your-issuer" + + # Name of the claim containing a unique identifier for the user. + # + # Optional, defaults to `sub`. + # + #subject_claim: "sub" + + # The issuer to validate the "iss" claim against. + # + # Optional, if provided the "iss" claim will be required and + # validated for all JSON web tokens. + # + #issuer: "provided-by-your-issuer" + + # A list of audiences to validate the "aud" claim against. + # + # Optional, if provided the "aud" claim will be required and + # validated for all JSON web tokens. + # + # Note that if the "aud" claim is included in a JSON web token then + # validation will fail without configuring audiences. + # + #audiences: + # - "provided-by-your-issuer" + + +password_config: + # Uncomment to disable password login + # + #enabled: false + + # Uncomment to disable authentication against the local password + # database. This is ignored if `enabled` is false, and is only useful + # if you have other password_providers. + # + #localdb_enabled: false + + # Uncomment and change to a secret random string for extra security. + # DO NOT CHANGE THIS AFTER INITIAL SETUP! + # + #pepper: "EVEN_MORE_SECRET" + + # Define and enforce a password policy. Each parameter is optional. + # This is an implementation of MSC2000. + # + policy: + # Whether to enforce the password policy. + # Defaults to 'false'. + # + #enabled: true + + # Minimum accepted length for a password. + # Defaults to 0. + # + #minimum_length: 15 + + # Whether a password must contain at least one digit. + # Defaults to 'false'. + # + #require_digit: true + + # Whether a password must contain at least one symbol. + # A symbol is any character that's not a number or a letter. + # Defaults to 'false'. + # + #require_symbol: true + + # Whether a password must contain at least one lowercase letter. + # Defaults to 'false'. + # + #require_lowercase: true + + # Whether a password must contain at least one uppercase letter. + # Defaults to 'false'. + # + #require_uppercase: true + +ui_auth: + # The amount of time to allow a user-interactive authentication session + # to be active. + # + # This defaults to 0, meaning the user is queried for their credentials + # before every action, but this can be overridden to allow a single + # validation to be re-used. This weakens the protections afforded by + # the user-interactive authentication process, by allowing for multiple + # (and potentially different) operations to use the same validation session. + # + # This is ignored for potentially "dangerous" operations (including + # deactivating an account, modifying an account password, and + # adding a 3PID). + # + # Uncomment below to allow for credential validation to last for 15 + # seconds. + # + #session_timeout: "15s" + + +# Configuration for sending emails from Synapse. +# +# Server admins can configure custom templates for email content. See +# https://matrix-org.github.io/synapse/latest/templates.html for more information. +# +email: + # The hostname of the outgoing SMTP server to use. Defaults to 'localhost'. + # + #smtp_host: mail.server + + # The port on the mail server for outgoing SMTP. Defaults to 25. + # + #smtp_port: 587 + + # Username/password for authentication to the SMTP server. By default, no + # authentication is attempted. + # + #smtp_user: "exampleusername" + #smtp_pass: "examplepassword" + + # Uncomment the following to require TLS transport security for SMTP. + # By default, Synapse will connect over plain text, and will then switch to + # TLS via STARTTLS *if the SMTP server supports it*. If this option is set, + # Synapse will refuse to connect unless the server supports STARTTLS. + # + #require_transport_security: true + + # Uncomment the following to disable TLS for SMTP. + # + # By default, if the server supports TLS, it will be used, and the server + # must present a certificate that is valid for 'smtp_host'. If this option + # is set to false, TLS will not be used. + # + #enable_tls: false + + # notif_from defines the "From" address to use when sending emails. + # It must be set if email sending is enabled. + # + # The placeholder '%(app)s' will be replaced by the application name, + # which is normally 'app_name' (below), but may be overridden by the + # Matrix client application. + # + # Note that the placeholder must be written '%(app)s', including the + # trailing 's'. + # + #notif_from: "Your Friendly %(app)s homeserver " + + # app_name defines the default value for '%(app)s' in notif_from and email + # subjects. It defaults to 'Matrix'. + # + #app_name: my_branded_matrix_server + + # Uncomment the following to enable sending emails for messages that the user + # has missed. Disabled by default. + # + #enable_notifs: true + + # Uncomment the following to disable automatic subscription to email + # notifications for new users. Enabled by default. + # + #notif_for_new_users: false + + # Custom URL for client links within the email notifications. By default + # links will be based on "https://matrix.to". + # + # (This setting used to be called riot_base_url; the old name is still + # supported for backwards-compatibility but is now deprecated.) + # + #client_base_url: "http://localhost/riot" + + # Configure the time that a validation email will expire after sending. + # Defaults to 1h. + # + #validation_token_lifetime: 15m + + # The web client location to direct users to during an invite. This is passed + # to the identity server as the org.matrix.web_client_location key. Defaults + # to unset, giving no guidance to the identity server. + # + #invite_client_location: https://app.element.io + + # Subjects to use when sending emails from Synapse. + # + # The placeholder '%(app)s' will be replaced with the value of the 'app_name' + # setting above, or by a value dictated by the Matrix client application. + # + # If a subject isn't overridden in this configuration file, the value used as + # its example will be used. + # + #subjects: + + # Subjects for notification emails. + # + # On top of the '%(app)s' placeholder, these can use the following + # placeholders: + # + # * '%(person)s', which will be replaced by the display name of the user(s) + # that sent the message(s), e.g. "Alice and Bob". + # * '%(room)s', which will be replaced by the name of the room the + # message(s) have been sent to, e.g. "My super room". + # + # See the example provided for each setting to see which placeholder can be + # used and how to use them. + # + # Subject to use to notify about one message from one or more user(s) in a + # room which has a name. + #message_from_person_in_room: "[%(app)s] You have a message on %(app)s from %(person)s in the %(room)s room..." + # + # Subject to use to notify about one message from one or more user(s) in a + # room which doesn't have a name. + #message_from_person: "[%(app)s] You have a message on %(app)s from %(person)s..." + # + # Subject to use to notify about multiple messages from one or more users in + # a room which doesn't have a name. + #messages_from_person: "[%(app)s] You have messages on %(app)s from %(person)s..." + # + # Subject to use to notify about multiple messages in a room which has a + # name. + #messages_in_room: "[%(app)s] You have messages on %(app)s in the %(room)s room..." + # + # Subject to use to notify about multiple messages in multiple rooms. + #messages_in_room_and_others: "[%(app)s] You have messages on %(app)s in the %(room)s room and others..." + # + # Subject to use to notify about multiple messages from multiple persons in + # multiple rooms. This is similar to the setting above except it's used when + # the room in which the notification was triggered has no name. + #messages_from_person_and_others: "[%(app)s] You have messages on %(app)s from %(person)s and others..." + # + # Subject to use to notify about an invite to a room which has a name. + #invite_from_person_to_room: "[%(app)s] %(person)s has invited you to join the %(room)s room on %(app)s..." + # + # Subject to use to notify about an invite to a room which doesn't have a + # name. + #invite_from_person: "[%(app)s] %(person)s has invited you to chat on %(app)s..." + + # Subject for emails related to account administration. + # + # On top of the '%(app)s' placeholder, these one can use the + # '%(server_name)s' placeholder, which will be replaced by the value of the + # 'server_name' setting in your Synapse configuration. + # + # Subject to use when sending a password reset email. + #password_reset: "[%(server_name)s] Password reset" + # + # Subject to use when sending a verification email to assert an address's + # ownership. + #email_validation: "[%(server_name)s] Validate your email" + + + +## Push ## + +push: + # Clients requesting push notifications can either have the body of + # the message sent in the notification poke along with other details + # like the sender, or just the event ID and room ID (`event_id_only`). + # If clients choose the former, this option controls whether the + # notification request includes the content of the event (other details + # like the sender are still included). For `event_id_only` push, it + # has no effect. + # + # For modern android devices the notification content will still appear + # because it is loaded by the app. iPhone, however will send a + # notification saying only that a message arrived and who it came from. + # + # The default value is "true" to include message details. Uncomment to only + # include the event ID and room ID in push notification payloads. + # + #include_content: false + + # When a push notification is received, an unread count is also sent. + # This number can either be calculated as the number of unread messages + # for the user, or the number of *rooms* the user has unread messages in. + # + # The default value is "true", meaning push clients will see the number of + # rooms with unread messages in them. Uncomment to instead send the number + # of unread messages. + # + #group_unread_count_by_room: false + + +## Rooms ## + +# Controls whether locally-created rooms should be end-to-end encrypted by +# default. +# +# Possible options are "all", "invite", and "off". They are defined as: +# +# * "all": any locally-created room +# * "invite": any room created with the "private_chat" or "trusted_private_chat" +# room creation presets +# * "off": this option will take no effect +# +# The default value is "off". +# +# Note that this option will only affect rooms created after it is set. It +# will also not affect rooms created by other servers. +# +#encryption_enabled_by_default_for_room_type: invite + + +# Uncomment to allow non-server-admin users to create groups on this server +# +#enable_group_creation: true + +# If enabled, non server admins can only create groups with local parts +# starting with this prefix +# +#group_creation_prefix: "unofficial_" + + + +# User Directory configuration +# +user_directory: + # Defines whether users can search the user directory. If false then + # empty responses are returned to all queries. Defaults to true. + # + # Uncomment to disable the user directory. + # + #enabled: false + + # Defines whether to search all users visible to your HS when searching + # the user directory. If false, search results will only contain users + # visible in public rooms and users sharing a room with the requester. + # Defaults to false. + # + # NB. If you set this to true, and the last time the user_directory search + # indexes were (re)built was before Synapse 1.44, you'll have to + # rebuild the indexes in order to search through all known users. + # These indexes are built the first time Synapse starts; admins can + # manually trigger a rebuild via API following the instructions at + # https://matrix-org.github.io/synapse/latest/usage/administration/admin_api/background_updates.html#run + # + # Uncomment to return search results containing all known users, even if that + # user does not share a room with the requester. + # + #search_all_users: true + + # Defines whether to prefer local users in search query results. + # If True, local users are more likely to appear above remote users + # when searching the user directory. Defaults to false. + # + # Uncomment to prefer local over remote users in user directory search + # results. + # + #prefer_local_users: true + + +# User Consent configuration +# +# for detailed instructions, see +# https://matrix-org.github.io/synapse/latest/consent_tracking.html +# +# Parts of this section are required if enabling the 'consent' resource under +# 'listeners', in particular 'template_dir' and 'version'. +# +# 'template_dir' gives the location of the templates for the HTML forms. +# This directory should contain one subdirectory per language (eg, 'en', 'fr'), +# and each language directory should contain the policy document (named as +# '.html') and a success page (success.html). +# +# 'version' specifies the 'current' version of the policy document. It defines +# the version to be served by the consent resource if there is no 'v' +# parameter. +# +# 'server_notice_content', if enabled, will send a user a "Server Notice" +# asking them to consent to the privacy policy. The 'server_notices' section +# must also be configured for this to work. Notices will *not* be sent to +# guest users unless 'send_server_notice_to_guests' is set to true. +# +# 'block_events_error', if set, will block any attempts to send events +# until the user consents to the privacy policy. The value of the setting is +# used as the text of the error. +# +# 'require_at_registration', if enabled, will add a step to the registration +# process, similar to how captcha works. Users will be required to accept the +# policy before their account is created. +# +# 'policy_name' is the display name of the policy users will see when registering +# for an account. Has no effect unless `require_at_registration` is enabled. +# Defaults to "Privacy Policy". +# +#user_consent: +# template_dir: res/templates/privacy +# version: 1.0 +# server_notice_content: +# msgtype: m.text +# body: >- +# To continue using this homeserver you must review and agree to the +# terms and conditions at %(consent_uri)s +# send_server_notice_to_guests: true +# block_events_error: >- +# To continue using this homeserver you must review and agree to the +# terms and conditions at %(consent_uri)s +# require_at_registration: false +# policy_name: Privacy Policy +# + + + +# Settings for local room and user statistics collection. See +# https://matrix-org.github.io/synapse/latest/room_and_user_statistics.html. +# +stats: + # Uncomment the following to disable room and user statistics. Note that doing + # so may cause certain features (such as the room directory) not to work + # correctly. + # + #enabled: false + + +# Server Notices room configuration +# +# Uncomment this section to enable a room which can be used to send notices +# from the server to users. It is a special room which cannot be left; notices +# come from a special "notices" user id. +# +# If you uncomment this section, you *must* define the system_mxid_localpart +# setting, which defines the id of the user which will be used to send the +# notices. +# +# It's also possible to override the room name, the display name of the +# "notices" user, and the avatar for the user. +# +#server_notices: +# system_mxid_localpart: notices +# system_mxid_display_name: "Server Notices" +# system_mxid_avatar_url: "mxc://server.com/oumMVlgDnLYFaPVkExemNVVZ" +# room_name: "Server Notices" + + + +# Uncomment to disable searching the public room list. When disabled +# blocks searching local and remote room lists for local and remote +# users by always returning an empty list for all queries. +# +#enable_room_list_search: false + +# The `alias_creation` option controls who's allowed to create aliases +# on this server. +# +# The format of this option is a list of rules that contain globs that +# match against user_id, room_id and the new alias (fully qualified with +# server name). The action in the first rule that matches is taken, +# which can currently either be "allow" or "deny". +# +# Missing user_id/room_id/alias fields default to "*". +# +# If no rules match the request is denied. An empty list means no one +# can create aliases. +# +# Options for the rules include: +# +# user_id: Matches against the creator of the alias +# alias: Matches against the alias being created +# room_id: Matches against the room ID the alias is being pointed at +# action: Whether to "allow" or "deny" the request if the rule matches +# +# The default is: +# +#alias_creation_rules: +# - user_id: "*" +# alias: "*" +# room_id: "*" +# action: allow + +# The `room_list_publication_rules` option controls who can publish and +# which rooms can be published in the public room list. +# +# The format of this option is the same as that for +# `alias_creation_rules`. +# +# If the room has one or more aliases associated with it, only one of +# the aliases needs to match the alias rule. If there are no aliases +# then only rules with `alias: *` match. +# +# If no rules match the request is denied. An empty list means no one +# can publish rooms. +# +# Options for the rules include: +# +# user_id: Matches against the creator of the alias +# room_id: Matches against the room ID being published +# alias: Matches against any current local or canonical aliases +# associated with the room +# action: Whether to "allow" or "deny" the request if the rule matches +# +# The default is: +# +#room_list_publication_rules: +# - user_id: "*" +# alias: "*" +# room_id: "*" +# action: allow + + +## Opentracing ## + +# These settings enable opentracing, which implements distributed tracing. +# This allows you to observe the causal chains of events across servers +# including requests, key lookups etc., across any server running +# synapse or any other other services which supports opentracing +# (specifically those implemented with Jaeger). +# +opentracing: + # tracing is disabled by default. Uncomment the following line to enable it. + # + #enabled: true + + # The list of homeservers we wish to send and receive span contexts and span baggage. + # See https://matrix-org.github.io/synapse/latest/opentracing.html. + # + # This is a list of regexes which are matched against the server_name of the + # homeserver. + # + # By default, it is empty, so no servers are matched. + # + #homeserver_whitelist: + # - ".*" + + # A list of the matrix IDs of users whose requests will always be traced, + # even if the tracing system would otherwise drop the traces due to + # probabilistic sampling. + # + # By default, the list is empty. + # + #force_tracing_for_users: + # - "@user1:server_name" + # - "@user2:server_name" + + # Jaeger can be configured to sample traces at different rates. + # All configuration options provided by Jaeger can be set here. + # Jaeger's configuration is mostly related to trace sampling which + # is documented here: + # https://www.jaegertracing.io/docs/latest/sampling/. + # + #jaeger_config: + # sampler: + # type: const + # param: 1 + # logging: + # false + + +## Workers ## + +# Disables sending of outbound federation transactions on the main process. +# Uncomment if using a federation sender worker. +# +#send_federation: false + +# It is possible to run multiple federation sender workers, in which case the +# work is balanced across them. +# +# This configuration must be shared between all federation sender workers, and if +# changed all federation sender workers must be stopped at the same time and then +# started, to ensure that all instances are running with the same config (otherwise +# events may be dropped). +# +#federation_sender_instances: +# - federation_sender1 + +# When using workers this should be a map from `worker_name` to the +# HTTP replication listener of the worker, if configured. +# +#instance_map: +# worker1: +# host: localhost +# port: 8034 + +# Experimental: When using workers you can define which workers should +# handle event persistence and typing notifications. Any worker +# specified here must also be in the `instance_map`. +# +#stream_writers: +# events: worker1 +# typing: worker1 + +# The worker that is used to run background tasks (e.g. cleaning up expired +# data). If not provided this defaults to the main process. +# +#run_background_tasks_on: worker1 + +# A shared secret used by the replication APIs to authenticate HTTP requests +# from workers. +# +# By default this is unused and traffic is not authenticated. +# +#worker_replication_secret: "" + + +# Configuration for Redis when using workers. This *must* be enabled when +# using workers (unless using old style direct TCP configuration). +# +redis: + # Uncomment the below to enable Redis support. + # + #enabled: true + + # Optional host and port to use to connect to redis. Defaults to + # localhost and 6379 + # + #host: localhost + #port: 6379 + + # Optional password if configured on the Redis instance + # + #password: + + +## Background Updates ## + +# Background updates are database updates that are run in the background in batches. +# The duration, minimum batch size, default batch size, whether to sleep between batches and if so, how long to +# sleep can all be configured. This is helpful to speed up or slow down the updates. +# +background_updates: + # How long in milliseconds to run a batch of background updates for. Defaults to 100. Uncomment and set + # a time to change the default. + # + #background_update_duration_ms: 500 + + # Whether to sleep between updates. Defaults to True. Uncomment to change the default. + # + #sleep_enabled: false + + # If sleeping between updates, how long in milliseconds to sleep for. Defaults to 1000. Uncomment + # and set a duration to change the default. + # + #sleep_duration_ms: 300 + + # Minimum size a batch of background updates can be. Must be greater than 0. Defaults to 1. Uncomment and + # set a size to change the default. + # + #min_batch_size: 10 + + # The batch size to use for the first iteration of a new background update. The default is 100. + # Uncomment and set a size to change the default. + # + #default_batch_size: 50 + + +# vim:ft=yaml diff --git a/integration_test/synapse/data/localhost.log.config b/integration_test/synapse/data/localhost.log.config new file mode 100644 index 0000000..eeec5ed --- /dev/null +++ b/integration_test/synapse/data/localhost.log.config @@ -0,0 +1,27 @@ +version: 1 + +formatters: + precise: + format: '%(asctime)s - %(name)s - %(lineno)d - %(levelname)s - %(request)s - %(message)s' + +handlers: + + + console: + class: logging.StreamHandler + formatter: precise + +loggers: + synapse.storage.SQL: + # beware: increasing this to DEBUG will make synapse log sensitive + # information such as access tokens. + level: INFO + +root: + level: INFO + + + handlers: [console] + + +disable_existing_loggers: false \ No newline at end of file diff --git a/integration_test/synapse/data/localhost.signing.key b/integration_test/synapse/data/localhost.signing.key new file mode 100644 index 0000000..bba0e02 --- /dev/null +++ b/integration_test/synapse/data/localhost.signing.key @@ -0,0 +1 @@ +ed25519 a_SLrz 0Ho/81rZZve88zdRxhaXWHUT6K3OqzmP35rNMZBUr6I diff --git a/integration_test/users.dart b/integration_test/users.dart new file mode 100644 index 0000000..617bcb0 --- /dev/null +++ b/integration_test/users.dart @@ -0,0 +1,36 @@ +abstract class Users { + const Users._(); + + static const user1 = User( + String.fromEnvironment( + 'USER1_NAME', + defaultValue: 'alice', + ), + String.fromEnvironment( + 'USER1_PW', + defaultValue: 'AliceInWonderland', + ), + ); + static const user2 = User( + String.fromEnvironment( + 'USER2_NAME', + defaultValue: 'bob', + ), + String.fromEnvironment( + 'USER2_PW', + defaultValue: 'JoWirSchaffenDas', + ), + ); +} + +class User { + final String name; + final String password; + + const User(this.name, this.password); +} + +const homeserver = 'http://${String.fromEnvironment( + 'HOMESERVER', + defaultValue: 'localhost', +)}'; diff --git a/ios/.gitignore b/ios/.gitignore new file mode 100644 index 0000000..9a29ebd --- /dev/null +++ b/ios/.gitignore @@ -0,0 +1,33 @@ +*.mode1v3 +*.mode2v3 +*.moved-aside +*.pbxuser +*.perspectivev3 +**/*sync/ +.sconsign.dblite +.tags* +**/.vagrant/ +**/DerivedData/ +Icon? +**/Pods/ +**/.symlinks/ +profile +xcuserdata +**/.generated/ +Flutter/App.framework +Flutter/Flutter.framework +Flutter/Flutter.podspec +Flutter/Generated.xcconfig +Flutter/app.flx +Flutter/app.zip +Flutter/flutter_assets/ +Flutter/flutter_export_environment.sh +ServiceDefinitions.json +Runner/GeneratedPluginRegistrant.* +build/ + +# Exceptions to above rules. +!default.mode1v3 +!default.mode2v3 +!default.pbxuser +!default.perspectivev3 diff --git a/ios/FluffyChat Share/Base.lproj/MainInterface.storyboard b/ios/FluffyChat Share/Base.lproj/MainInterface.storyboard new file mode 100644 index 0000000..286a508 --- /dev/null +++ b/ios/FluffyChat Share/Base.lproj/MainInterface.storyboard @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/FluffyChat Share/FluffyChat Share.entitlements b/ios/FluffyChat Share/FluffyChat Share.entitlements new file mode 100644 index 0000000..932f3e0 --- /dev/null +++ b/ios/FluffyChat Share/FluffyChat Share.entitlements @@ -0,0 +1,10 @@ + + + + + com.apple.security.application-groups + + group.im.fluffychat.app + + + diff --git a/ios/FluffyChat Share/Info.plist b/ios/FluffyChat Share/Info.plist new file mode 100644 index 0000000..876e559 --- /dev/null +++ b/ios/FluffyChat Share/Info.plist @@ -0,0 +1,52 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + FluffyChat Share + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + $(MARKETING_VERSION) + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + NSExtension + + NSExtensionAttributes + + NSExtensionActivationRule + + NSExtensionActivationSupportsFileWithMaxCount + 10 + NSExtensionActivationSupportsImageWithMaxCount + 10 + NSExtensionActivationSupportsMovieWithMaxCount + 10 + NSExtensionActivationSupportsText + + NSExtensionActivationSupportsWebURLWithMaxCount + 1 + + PHSupportedMediaTypes + + Video + Image + + + NSExtensionMainStoryboard + MainInterface + NSExtensionPointIdentifier + com.apple.share-services + + + diff --git a/ios/FluffyChat Share/ShareViewController.swift b/ios/FluffyChat Share/ShareViewController.swift new file mode 100644 index 0000000..4d10e6b --- /dev/null +++ b/ios/FluffyChat Share/ShareViewController.swift @@ -0,0 +1,14 @@ +// If you get no such module 'receive_sharing_intent' error. +// Go to Build Phases of your Runner target and +// move `Embed Foundation Extension` to the top of `Thin Binary`. +import receive_sharing_intent + +class ShareViewController: RSIShareViewController { + + // Use this method to return false if you don't want to redirect to host app automatically. + // Default is true + override func shouldAutoRedirect() -> Bool { + return false + } + +} diff --git a/ios/Flutter/AppFrameworkInfo.plist b/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 0000000..d57061d --- /dev/null +++ b/ios/Flutter/AppFrameworkInfo.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + App + CFBundleIdentifier + io.flutter.flutter.app + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + App + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + MinimumOSVersion + 13.0 + + diff --git a/ios/Flutter/Debug.xcconfig b/ios/Flutter/Debug.xcconfig new file mode 100644 index 0000000..e8efba1 --- /dev/null +++ b/ios/Flutter/Debug.xcconfig @@ -0,0 +1,2 @@ +#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" +#include "Generated.xcconfig" diff --git a/ios/Flutter/Release.xcconfig b/ios/Flutter/Release.xcconfig new file mode 100644 index 0000000..399e934 --- /dev/null +++ b/ios/Flutter/Release.xcconfig @@ -0,0 +1,2 @@ +#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" +#include "Generated.xcconfig" diff --git a/ios/Flutter/ephemeral/flutter_lldb_helper.py b/ios/Flutter/ephemeral/flutter_lldb_helper.py new file mode 100644 index 0000000..a88caf9 --- /dev/null +++ b/ios/Flutter/ephemeral/flutter_lldb_helper.py @@ -0,0 +1,32 @@ +# +# Generated file, do not edit. +# + +import lldb + +def handle_new_rx_page(frame: lldb.SBFrame, bp_loc, extra_args, intern_dict): + """Intercept NOTIFY_DEBUGGER_ABOUT_RX_PAGES and touch the pages.""" + base = frame.register["x0"].GetValueAsAddress() + page_len = frame.register["x1"].GetValueAsUnsigned() + + # Note: NOTIFY_DEBUGGER_ABOUT_RX_PAGES will check contents of the + # first page to see if handled it correctly. This makes diagnosing + # misconfiguration (e.g. missing breakpoint) easier. + data = bytearray(page_len) + data[0:8] = b'IHELPED!' + + error = lldb.SBError() + frame.GetThread().GetProcess().WriteMemory(base, data, error) + if not error.Success(): + print(f'Failed to write into {base}[+{page_len}]', error) + return + +def __lldb_init_module(debugger: lldb.SBDebugger, _): + target = debugger.GetDummyTarget() + # Caveat: must use BreakpointCreateByRegEx here and not + # BreakpointCreateByName. For some reasons callback function does not + # get carried over from dummy target for the later. + bp = target.BreakpointCreateByRegex("^NOTIFY_DEBUGGER_ABOUT_RX_PAGES$") + bp.SetScriptCallbackFunction('{}.handle_new_rx_page'.format(__name__)) + bp.SetAutoContinue(True) + print("-- LLDB integration loaded --") diff --git a/ios/Flutter/ephemeral/flutter_lldbinit b/ios/Flutter/ephemeral/flutter_lldbinit new file mode 100644 index 0000000..e3ba6fb --- /dev/null +++ b/ios/Flutter/ephemeral/flutter_lldbinit @@ -0,0 +1,5 @@ +# +# Generated file, do not edit. +# + +command script import --relative-to-command-file flutter_lldb_helper.py diff --git a/ios/Gemfile b/ios/Gemfile new file mode 100644 index 0000000..0bc467d --- /dev/null +++ b/ios/Gemfile @@ -0,0 +1,8 @@ +source "https://rubygems.org" + +gem "fastlane" + +# Workaround for ruby 3.4 https://github.com/fastlane/fastlane/issues/29183 +gem "abbrev" +gem "mutex_m" +gem "ostruct" \ No newline at end of file diff --git a/ios/Gemfile.lock b/ios/Gemfile.lock new file mode 100644 index 0000000..005265c --- /dev/null +++ b/ios/Gemfile.lock @@ -0,0 +1,211 @@ +GEM + remote: https://rubygems.org/ + specs: + CFPropertyList (3.0.3) + abbrev (0.1.2) + addressable (2.8.4) + public_suffix (>= 2.0.2, < 6.0) + artifactory (3.0.15) + atomos (0.1.3) + aws-eventstream (1.1.1) + aws-partitions (1.469.0) + aws-sdk-core (3.114.3) + aws-eventstream (~> 1, >= 1.0.2) + aws-partitions (~> 1, >= 1.239.0) + aws-sigv4 (~> 1.1) + jmespath (~> 1.0) + aws-sdk-kms (1.44.0) + aws-sdk-core (~> 3, >= 3.112.0) + aws-sigv4 (~> 1.1) + aws-sdk-s3 (1.96.1) + aws-sdk-core (~> 3, >= 3.112.0) + aws-sdk-kms (~> 1) + aws-sigv4 (~> 1.1) + aws-sigv4 (1.2.3) + aws-eventstream (~> 1, >= 1.0.2) + babosa (1.0.4) + claide (1.0.3) + colored (1.2) + colored2 (3.1.2) + commander (4.6.0) + highline (~> 2.0.0) + declarative (0.0.20) + digest-crc (0.6.3) + rake (>= 12.0.0, < 14.0.0) + domain_name (0.5.20190701) + unf (>= 0.0.5, < 1.0.0) + dotenv (2.7.6) + emoji_regex (3.2.2) + excon (0.82.0) + faraday (1.4.2) + faraday-em_http (~> 1.0) + faraday-em_synchrony (~> 1.0) + faraday-excon (~> 1.1) + faraday-net_http (~> 1.0) + faraday-net_http_persistent (~> 1.1) + multipart-post (>= 1.2, < 3) + ruby2_keywords (>= 0.0.4) + faraday-cookie_jar (0.0.7) + faraday (>= 0.8.0) + http-cookie (~> 1.0.0) + faraday-em_http (1.0.0) + faraday-em_synchrony (1.0.0) + faraday-excon (1.1.0) + faraday-net_http (1.0.1) + faraday-net_http_persistent (1.1.0) + faraday_middleware (1.0.0) + faraday (~> 1.0) + fastimage (2.2.4) + fastlane (2.185.1) + CFPropertyList (>= 2.3, < 4.0.0) + addressable (>= 2.3, < 3.0.0) + artifactory (~> 3.0) + aws-sdk-s3 (~> 1.0) + babosa (>= 1.0.3, < 2.0.0) + bundler (>= 1.12.0, < 3.0.0) + colored + commander (~> 4.6) + dotenv (>= 2.1.1, < 3.0.0) + emoji_regex (>= 0.1, < 4.0) + excon (>= 0.71.0, < 1.0.0) + faraday (~> 1.0) + faraday-cookie_jar (~> 0.0.6) + faraday_middleware (~> 1.0) + fastimage (>= 2.1.0, < 3.0.0) + gh_inspector (>= 1.1.2, < 2.0.0) + google-apis-androidpublisher_v3 (~> 0.1) + google-apis-playcustomapp_v1 (~> 0.1) + google-cloud-storage (~> 1.31) + highline (~> 2.0) + json (< 3.0.0) + jwt (>= 2.1.0, < 3) + mini_magick (>= 4.9.4, < 5.0.0) + multipart-post (~> 2.0.0) + naturally (~> 2.2) + plist (>= 3.1.0, < 4.0.0) + rubyzip (>= 2.0.0, < 3.0.0) + security (= 0.1.3) + simctl (~> 1.6.3) + terminal-notifier (>= 2.0.0, < 3.0.0) + terminal-table (>= 1.4.5, < 2.0.0) + tty-screen (>= 0.6.3, < 1.0.0) + tty-spinner (>= 0.8.0, < 1.0.0) + word_wrap (~> 1.0.0) + xcodeproj (>= 1.13.0, < 2.0.0) + xcpretty (~> 0.3.0) + xcpretty-travis-formatter (>= 0.0.3) + gh_inspector (1.1.3) + google-apis-androidpublisher_v3 (0.6.0) + google-apis-core (~> 0.1) + google-apis-core (0.3.0) + addressable (~> 2.5, >= 2.5.1) + googleauth (~> 0.14) + httpclient (>= 2.8.1, < 3.0) + mini_mime (~> 1.0) + representable (~> 3.0) + retriable (>= 2.0, < 4.0) + rexml + signet (~> 0.14) + webrick + google-apis-iamcredentials_v1 (0.4.0) + google-apis-core (~> 0.1) + google-apis-playcustomapp_v1 (0.3.0) + google-apis-core (~> 0.1) + google-apis-storage_v1 (0.4.0) + google-apis-core (~> 0.1) + google-cloud-core (1.6.0) + google-cloud-env (~> 1.0) + google-cloud-errors (~> 1.0) + google-cloud-env (1.5.0) + faraday (>= 0.17.3, < 2.0) + google-cloud-errors (1.1.0) + google-cloud-storage (1.31.1) + addressable (~> 2.5) + digest-crc (~> 0.4) + google-apis-iamcredentials_v1 (~> 0.1) + google-apis-storage_v1 (~> 0.1) + google-cloud-core (~> 1.2) + googleauth (~> 0.9) + mini_mime (~> 1.0) + googleauth (0.16.2) + faraday (>= 0.17.3, < 2.0) + jwt (>= 1.4, < 3.0) + memoist (~> 0.16) + multi_json (~> 1.11) + os (>= 0.9, < 2.0) + signet (~> 0.14) + highline (2.0.3) + http-cookie (1.0.4) + domain_name (~> 0.5) + httpclient (2.8.3) + jmespath (1.6.2) + json (2.5.1) + jwt (2.2.3) + memoist (0.16.2) + mini_magick (4.11.0) + mini_mime (1.1.0) + multi_json (1.15.0) + multipart-post (2.0.0) + mutex_m (0.3.0) + nanaimo (0.3.0) + naturally (2.2.1) + os (1.1.1) + ostruct (0.6.3) + plist (3.6.0) + public_suffix (5.0.3) + rake (13.0.3) + representable (3.1.1) + declarative (< 0.1.0) + trailblazer-option (>= 0.1.1, < 0.2.0) + uber (< 0.2.0) + retriable (3.1.2) + rexml (3.4.2) + rouge (2.0.7) + ruby2_keywords (0.0.4) + rubyzip (2.3.0) + security (0.1.3) + signet (0.15.0) + addressable (~> 2.3) + faraday (>= 0.17.3, < 2.0) + jwt (>= 1.5, < 3.0) + multi_json (~> 1.10) + simctl (1.6.8) + CFPropertyList + naturally + terminal-notifier (2.0.0) + terminal-table (1.8.0) + unicode-display_width (~> 1.1, >= 1.1.1) + trailblazer-option (0.1.1) + tty-cursor (0.7.1) + tty-screen (0.8.1) + tty-spinner (0.9.3) + tty-cursor (~> 0.7) + uber (0.1.0) + unf (0.1.4) + unf_ext + unf_ext (0.0.7.7) + unicode-display_width (1.7.0) + webrick (1.8.2) + word_wrap (1.0.0) + xcodeproj (1.19.0) + CFPropertyList (>= 2.3.3, < 4.0) + atomos (~> 0.1.3) + claide (>= 1.0.2, < 2.0) + colored2 (~> 3.1) + nanaimo (~> 0.3.0) + xcpretty (0.3.0) + rouge (~> 2.0.7) + xcpretty-travis-formatter (1.0.1) + xcpretty (~> 0.2, >= 0.0.7) + +PLATFORMS + ruby + +DEPENDENCIES + abbrev + fastlane + mutex_m + ostruct + +BUNDLED WITH + 2.1.4 diff --git a/ios/Localizable.xcstrings b/ios/Localizable.xcstrings new file mode 100644 index 0000000..7895903 --- /dev/null +++ b/ios/Localizable.xcstrings @@ -0,0 +1,58 @@ +{ + "sourceLanguage" : "en", + "strings" : { + "%lld unread messages" : { + "comment" : "Default notification title", + "localizations" : { + "de" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Ungelesene Nachricht" + } + }, + "other" : { + "stringUnit" : { + "state" : "translated", + "value" : "%lld ungelesene nachrichten" + } + } + } + } + }, + "en" : { + "variations" : { + "plural" : { + "one" : { + "stringUnit" : { + "state" : "translated", + "value" : "Unread message" + } + }, + "other" : { + "stringUnit" : { + "state" : "new", + "value" : "%lld unread messages" + } + } + } + } + } + } + }, + "New message - open app to read" : { + "comment" : "Default notification body", + "localizations" : { + "de" : { + "stringUnit" : { + "state" : "translated", + "value" : "Neue Nachricht - App öffnen zum lesen" + } + } + } + } + }, + "version" : "1.0" +} \ No newline at end of file diff --git a/ios/Notification Service Extension/Info.plist b/ios/Notification Service Extension/Info.plist new file mode 100644 index 0000000..57421eb --- /dev/null +++ b/ios/Notification Service Extension/Info.plist @@ -0,0 +1,13 @@ + + + + + NSExtension + + NSExtensionPointIdentifier + com.apple.usernotifications.service + NSExtensionPrincipalClass + $(PRODUCT_MODULE_NAME).NotificationService + + + diff --git a/ios/Notification Service Extension/Notification Service Extension.entitlements b/ios/Notification Service Extension/Notification Service Extension.entitlements new file mode 100644 index 0000000..932f3e0 --- /dev/null +++ b/ios/Notification Service Extension/Notification Service Extension.entitlements @@ -0,0 +1,10 @@ + + + + + com.apple.security.application-groups + + group.im.fluffychat.app + + + diff --git a/ios/Notification Service Extension/NotificationService.swift b/ios/Notification Service Extension/NotificationService.swift new file mode 100644 index 0000000..9d464e1 --- /dev/null +++ b/ios/Notification Service Extension/NotificationService.swift @@ -0,0 +1,63 @@ +// +// NotificationService.swift +// Notification Extension +// +// Created by Christian Pauly on 26.08.25. +// + +import UserNotifications +import os + +class NotificationService: UNNotificationServiceExtension { + + var contentHandler: ((UNNotificationContent) -> Void)? + var bestAttemptContent: UNMutableNotificationContent? + + override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) { + self.contentHandler = contentHandler + bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent) + + if let bestAttemptContent = bestAttemptContent { + // Uncomment to read the push message payload: + // os_log("[FluffyChatPushHelper] New message received: %{public}@", log: .default, type: .error, bestAttemptContent.userInfo) + os_log("[FluffyChatPushHelper] New message received") + + guard let roomId = bestAttemptContent.userInfo["room_id"] as? String, + let eventId = bestAttemptContent.userInfo["event_id"] as? String else { + os_log("[FluffyChatPushHelper] Room ID or Event ID is missing!") + let emptyContent = UNMutableNotificationContent() + contentHandler(emptyContent) + return + } + bestAttemptContent.threadIdentifier = roomId + + if + let jsonString = bestAttemptContent.userInfo["counts"] as? String, + let jsonData = jsonString.data(using: .utf8), + let jsonMap = try? JSONSerialization.jsonObject(with: jsonData, options: []) as? [String: Any], + let unread = jsonMap["unread"] as? Int { + bestAttemptContent.title = String( + localized: "\(unread) unread messages", + comment: "Default notification title" + ) + bestAttemptContent.badge = NSNumber(integerLiteral: unread) + } + + // TODO: Download and decrypt event to display a better body: + bestAttemptContent.body = String( + localized: "New message - open app to read", + comment: "Default notification body" + ) + + contentHandler(bestAttemptContent) + } + } + + override func serviceExtensionTimeWillExpire() { + // Called just before the extension will be terminated by the system. + // Use this as an opportunity to deliver your "best attempt" at modified content, otherwise the original push payload will be used. + if let contentHandler = contentHandler, let bestAttemptContent = bestAttemptContent { + contentHandler(bestAttemptContent) + } + } +} diff --git a/ios/Podfile b/ios/Podfile new file mode 100644 index 0000000..4c88a11 --- /dev/null +++ b/ios/Podfile @@ -0,0 +1,66 @@ +# Uncomment this line to define a global platform for your project +platform :ios, '13.0' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_ios_podfile_setup + +target 'Runner' do + use_frameworks! + use_modular_headers! + + flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) + + # From package https://pub.dev/packages/receive_sharing_intent + target 'FluffyChat Share' do + inherit! :search_paths + end +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_ios_build_settings(target) + target.build_configurations.each do |config| + # ensure all dependencies are using SQLCipher instead of SQLite + xcconfig_path = config.base_configuration_reference.real_path + xcconfig = File.read(xcconfig_path) + new_xcconfig = xcconfig.sub(' -l"sqlite3"', '') + File.open(xcconfig_path, "w") { |file| file << new_xcconfig } + + config.build_settings['ENABLE_BITCODE'] = 'NO' + + # see https://github.com/flutter-webrtc/flutter-webrtc/issues/1054 + config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '11.0' + config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = 'arm64 i386' + + config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [ + '$(inherited)', + # dart: PermissionGroup.microphone + 'PERMISSION_MICROPHONE=1', + ] + end + end + flutter_post_install(installer) if defined?(flutter_post_install) +end diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 0000000..8de7eea --- /dev/null +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,1100 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 609046320A2D7D2B0D36583B /* Pods_FluffyChat_Share.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C9EB6E6475A19949A37A2634 /* Pods_FluffyChat_Share.framework */; }; + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; + AB0F2865DE230DE37373E0E0 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50DEFC207B70632D9C56ED78 /* Pods_Runner.framework */; }; + C1005C45261071B5002F4F32 /* ShareViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1005C44261071B5002F4F32 /* ShareViewController.swift */; }; + C1005C48261071B5002F4F32 /* MainInterface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = C1005C46261071B5002F4F32 /* MainInterface.storyboard */; }; + C1005C4C261071B5002F4F32 /* FluffyChat Share.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = C1005C42261071B5002F4F32 /* FluffyChat Share.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; + C137635E2AD1446100A8F905 /* notification.caf in Resources */ = {isa = PBXBuildFile; fileRef = C137635D2AD1446100A8F905 /* notification.caf */; }; + C14695592E642D400075F2F7 /* Notification Service Extension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = C14695522E642D400075F2F7 /* Notification Service Extension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; + C14695662E642E450075F2F7 /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = C14695652E642E450075F2F7 /* Localizable.xcstrings */; }; + C14695672E642E450075F2F7 /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = C14695652E642E450075F2F7 /* Localizable.xcstrings */; }; + C14695682E642E450075F2F7 /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = C14695652E642E450075F2F7 /* Localizable.xcstrings */; }; + C149567C25C7274F00A16396 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = C149567B25C7274F00A16396 /* GoogleService-Info.plist */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + C1005C4A261071B5002F4F32 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 97C146E61CF9000F007C117D /* Project object */; + proxyType = 1; + remoteGlobalIDString = C1005C41261071B5002F4F32; + remoteInfo = "FluffyChat Share"; + }; + C14695572E642D400075F2F7 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 97C146E61CF9000F007C117D /* Project object */; + proxyType = 1; + remoteGlobalIDString = C14695512E642D400075F2F7; + remoteInfo = "Notification Service Extension"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 9705A1C41CF9048500538489 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + C1005C4D261071B5002F4F32 /* Embed App Extensions */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 13; + files = ( + C1005C4C261071B5002F4F32 /* FluffyChat Share.appex in Embed App Extensions */, + C14695592E642D400075F2F7 /* Notification Service Extension.appex in Embed App Extensions */, + ); + name = "Embed App Extensions"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 09545B0C8C397F94966EA956 /* Pods-FluffyChat Share.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FluffyChat Share.debug.xcconfig"; path = "Target Support Files/Pods-FluffyChat Share/Pods-FluffyChat Share.debug.xcconfig"; sourceTree = ""; }; + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 50DEFC207B70632D9C56ED78 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 58F7B95D036AD8E67B27588D /* Pods-FluffyChat Share.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FluffyChat Share.profile.xcconfig"; path = "Target Support Files/Pods-FluffyChat Share/Pods-FluffyChat Share.profile.xcconfig"; sourceTree = ""; }; + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 76737C9A857D5FD6D2634A3F /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; + 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; + 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 9DB2F3524376810E74C799A8 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + C1005C42261071B5002F4F32 /* FluffyChat Share.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "FluffyChat Share.appex"; sourceTree = BUILT_PRODUCTS_DIR; }; + C1005C44261071B5002F4F32 /* ShareViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareViewController.swift; sourceTree = ""; }; + C1005C47261071B5002F4F32 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/MainInterface.storyboard; sourceTree = ""; }; + C1005C49261071B5002F4F32 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + C1005C53261072D4002F4F32 /* FluffyChat Share.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "FluffyChat Share.entitlements"; sourceTree = ""; }; + C137635D2AD1446100A8F905 /* notification.caf */ = {isa = PBXFileReference; lastKnownFileType = file; path = notification.caf; sourceTree = ""; }; + C14695522E642D400075F2F7 /* Notification Service Extension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "Notification Service Extension.appex"; sourceTree = BUILT_PRODUCTS_DIR; }; + C14695652E642E450075F2F7 /* Localizable.xcstrings */ = {isa = PBXFileReference; lastKnownFileType = text.json.xcstrings; path = Localizable.xcstrings; sourceTree = ""; }; + C149567B25C7274F00A16396 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; + C149567D25C7276200A16396 /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = ""; }; + C9EB6E6475A19949A37A2634 /* Pods_FluffyChat_Share.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_FluffyChat_Share.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + EA246783222E02DD03959891 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; + F3778959E67CDA0CDB0D97BC /* Pods-FluffyChat Share.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FluffyChat Share.release.xcconfig"; path = "Target Support Files/Pods-FluffyChat Share/Pods-FluffyChat Share.release.xcconfig"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */ + C146955D2E642D400075F2F7 /* Exceptions for "Notification Service Extension" folder in "Notification Service Extension" target */ = { + isa = PBXFileSystemSynchronizedBuildFileExceptionSet; + membershipExceptions = ( + Info.plist, + ); + target = C14695512E642D400075F2F7 /* Notification Service Extension */; + }; +/* End PBXFileSystemSynchronizedBuildFileExceptionSet section */ + +/* Begin PBXFileSystemSynchronizedRootGroup section */ + C14695532E642D400075F2F7 /* Notification Service Extension */ = { + isa = PBXFileSystemSynchronizedRootGroup; + exceptions = ( + C146955D2E642D400075F2F7 /* Exceptions for "Notification Service Extension" folder in "Notification Service Extension" target */, + ); + path = "Notification Service Extension"; + sourceTree = ""; + }; +/* End PBXFileSystemSynchronizedRootGroup section */ + +/* Begin PBXFrameworksBuildPhase section */ + 97C146EB1CF9000F007C117D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + AB0F2865DE230DE37373E0E0 /* Pods_Runner.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + C1005C3F261071B5002F4F32 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 609046320A2D7D2B0D36583B /* Pods_FluffyChat_Share.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + C146954F2E642D400075F2F7 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 075EE1BE25359E34308E0B78 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 50DEFC207B70632D9C56ED78 /* Pods_Runner.framework */, + C9EB6E6475A19949A37A2634 /* Pods_FluffyChat_Share.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 9740EEB11CF90186004384FC /* Flutter */ = { + isa = PBXGroup; + children = ( + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 9740EEB31CF90195004384FC /* Generated.xcconfig */, + ); + name = Flutter; + sourceTree = ""; + }; + 97C146E51CF9000F007C117D = { + isa = PBXGroup; + children = ( + C14695652E642E450075F2F7 /* Localizable.xcstrings */, + 9740EEB11CF90186004384FC /* Flutter */, + 97C146F01CF9000F007C117D /* Runner */, + C1005C43261071B5002F4F32 /* FluffyChat Share */, + C14695532E642D400075F2F7 /* Notification Service Extension */, + 97C146EF1CF9000F007C117D /* Products */, + E89DCAC000D371640E94E65B /* Pods */, + 075EE1BE25359E34308E0B78 /* Frameworks */, + ); + sourceTree = ""; + }; + 97C146EF1CF9000F007C117D /* Products */ = { + isa = PBXGroup; + children = ( + 97C146EE1CF9000F007C117D /* Runner.app */, + C1005C42261071B5002F4F32 /* FluffyChat Share.appex */, + C14695522E642D400075F2F7 /* Notification Service Extension.appex */, + ); + name = Products; + sourceTree = ""; + }; + 97C146F01CF9000F007C117D /* Runner */ = { + isa = PBXGroup; + children = ( + C149567D25C7276200A16396 /* Runner.entitlements */, + 97C146FA1CF9000F007C117D /* Main.storyboard */, + 97C146FD1CF9000F007C117D /* Assets.xcassets */, + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, + 97C147021CF9000F007C117D /* Info.plist */, + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, + C149567B25C7274F00A16396 /* GoogleService-Info.plist */, + C137635D2AD1446100A8F905 /* notification.caf */, + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, + ); + path = Runner; + sourceTree = ""; + }; + C1005C43261071B5002F4F32 /* FluffyChat Share */ = { + isa = PBXGroup; + children = ( + C1005C53261072D4002F4F32 /* FluffyChat Share.entitlements */, + C1005C44261071B5002F4F32 /* ShareViewController.swift */, + C1005C46261071B5002F4F32 /* MainInterface.storyboard */, + C1005C49261071B5002F4F32 /* Info.plist */, + ); + path = "FluffyChat Share"; + sourceTree = ""; + }; + E89DCAC000D371640E94E65B /* Pods */ = { + isa = PBXGroup; + children = ( + 76737C9A857D5FD6D2634A3F /* Pods-Runner.debug.xcconfig */, + EA246783222E02DD03959891 /* Pods-Runner.release.xcconfig */, + 9DB2F3524376810E74C799A8 /* Pods-Runner.profile.xcconfig */, + 09545B0C8C397F94966EA956 /* Pods-FluffyChat Share.debug.xcconfig */, + F3778959E67CDA0CDB0D97BC /* Pods-FluffyChat Share.release.xcconfig */, + 58F7B95D036AD8E67B27588D /* Pods-FluffyChat Share.profile.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 97C146ED1CF9000F007C117D /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 8C9CCA7C5C45651F90C7BFDD /* [CP] Check Pods Manifest.lock */, + 9740EEB61CF901F6004384FC /* Run Script */, + 97C146EA1CF9000F007C117D /* Sources */, + 97C146EB1CF9000F007C117D /* Frameworks */, + 97C146EC1CF9000F007C117D /* Resources */, + C1005C4D261071B5002F4F32 /* Embed App Extensions */, + 9705A1C41CF9048500538489 /* Embed Frameworks */, + F9C8EE392B9AB471149C306E /* [CP] Embed Pods Frameworks */, + 064CBD7CE0D4CD6850C6880A /* [CP] Copy Pods Resources */, + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + ); + buildRules = ( + ); + dependencies = ( + C1005C4B261071B5002F4F32 /* PBXTargetDependency */, + C14695582E642D400075F2F7 /* PBXTargetDependency */, + ); + name = Runner; + productName = Runner; + productReference = 97C146EE1CF9000F007C117D /* Runner.app */; + productType = "com.apple.product-type.application"; + }; + C1005C41261071B5002F4F32 /* FluffyChat Share */ = { + isa = PBXNativeTarget; + buildConfigurationList = C1005C51261071B5002F4F32 /* Build configuration list for PBXNativeTarget "FluffyChat Share" */; + buildPhases = ( + 67579C1EA0B5C7B918473158 /* [CP] Check Pods Manifest.lock */, + C1005C3E261071B5002F4F32 /* Sources */, + C1005C3F261071B5002F4F32 /* Frameworks */, + C1005C40261071B5002F4F32 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "FluffyChat Share"; + productName = "FluffyChat Share"; + productReference = C1005C42261071B5002F4F32 /* FluffyChat Share.appex */; + productType = "com.apple.product-type.app-extension"; + }; + C14695512E642D400075F2F7 /* Notification Service Extension */ = { + isa = PBXNativeTarget; + buildConfigurationList = C146955E2E642D400075F2F7 /* Build configuration list for PBXNativeTarget "Notification Service Extension" */; + buildPhases = ( + C146954E2E642D400075F2F7 /* Sources */, + C146954F2E642D400075F2F7 /* Frameworks */, + C14695502E642D400075F2F7 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + fileSystemSynchronizedGroups = ( + C14695532E642D400075F2F7 /* Notification Service Extension */, + ); + name = "Notification Service Extension"; + productName = "Notification Service Extension"; + productReference = C14695522E642D400075F2F7 /* Notification Service Extension.appex */; + productType = "com.apple.product-type.app-extension"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 97C146E61CF9000F007C117D /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1640; + LastUpgradeCheck = 1510; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 97C146ED1CF9000F007C117D = { + CreatedOnToolsVersion = 7.3.1; + LastSwiftMigration = 1100; + }; + C1005C41261071B5002F4F32 = { + CreatedOnToolsVersion = 12.4; + }; + C14695512E642D400075F2F7 = { + CreatedOnToolsVersion = 16.4; + }; + }; + }; + buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + de, + ); + mainGroup = 97C146E51CF9000F007C117D; + preferredProjectObjectVersion = 77; + productRefGroup = 97C146EF1CF9000F007C117D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 97C146ED1CF9000F007C117D /* Runner */, + C1005C41261071B5002F4F32 /* FluffyChat Share */, + C14695512E642D400075F2F7 /* Notification Service Extension */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 97C146EC1CF9000F007C117D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, + C149567C25C7274F00A16396 /* GoogleService-Info.plist in Resources */, + C137635E2AD1446100A8F905 /* notification.caf in Resources */, + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, + C14695672E642E450075F2F7 /* Localizable.xcstrings in Resources */, + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + C1005C40261071B5002F4F32 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + C14695682E642E450075F2F7 /* Localizable.xcstrings in Resources */, + C1005C48261071B5002F4F32 /* MainInterface.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + C14695502E642D400075F2F7 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + C14695662E642E450075F2F7 /* Localizable.xcstrings in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 064CBD7CE0D4CD6850C6880A /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Copy Pods Resources"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + ); + name = "Thin Binary"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin\n"; + }; + 67579C1EA0B5C7B918473158 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-FluffyChat Share-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 8C9CCA7C5C45651F90C7BFDD /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 9740EEB61CF901F6004384FC /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build\n"; + }; + F9C8EE392B9AB471149C306E /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 97C146EA1CF9000F007C117D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + C1005C3E261071B5002F4F32 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + C1005C45261071B5002F4F32 /* ShareViewController.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + C146954E2E642D400075F2F7 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + C1005C4B261071B5002F4F32 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = C1005C41261071B5002F4F32 /* FluffyChat Share */; + targetProxy = C1005C4A261071B5002F4F32 /* PBXContainerItemProxy */; + }; + C14695582E642D400075F2F7 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = C14695512E642D400075F2F7 /* Notification Service Extension */; + targetProxy = C14695572E642D400075F2F7 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 97C146FA1CF9000F007C117D /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C146FB1CF9000F007C117D /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C147001CF9000F007C117D /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; + C1005C46261071B5002F4F32 /* MainInterface.storyboard */ = { + isa = PBXVariantGroup; + children = ( + C1005C47261071B5002F4F32 /* Base */, + ); + name = MainInterface.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 249021D3217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.1; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_EMIT_LOC_STRINGS = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Profile; + }; + 249021D4217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 4NXF6Z997G; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + MARKETING_VERSION = 0.32.1; + PRODUCT_BUNDLE_IDENTIFIER = im.fluffychat.app; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Profile; + }; + 97C147031CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.1; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_EMIT_LOC_STRINGS = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 97C147041CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.1; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 97C147061CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 4NXF6Z997G; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + MARKETING_VERSION = 0.32.1; + PRODUCT_BUNDLE_IDENTIFIER = im.fluffychat.app; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 97C147071CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 4NXF6Z997G; + ENABLE_BITCODE = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter", + ); + MARKETING_VERSION = 0.32.1; + PRODUCT_BUNDLE_IDENTIFIER = im.fluffychat.app; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; + C1005C4E261071B5002F4F32 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 09545B0C8C397F94966EA956 /* Pods-FluffyChat Share.debug.xcconfig */; + buildSettings = { + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_ENTITLEMENTS = "FluffyChat Share/FluffyChat Share.entitlements"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 4NXF6Z997G; + GCC_C_LANGUAGE_STANDARD = gnu11; + INFOPLIST_FILE = "FluffyChat Share/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 14.4; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@executable_path/../../Frameworks", + ); + MARKETING_VERSION = 1.0.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = "im.fluffychat.app.FluffyChat-Share"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_ENABLE_EXPLICIT_MODULES = NO; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + C1005C4F261071B5002F4F32 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = F3778959E67CDA0CDB0D97BC /* Pods-FluffyChat Share.release.xcconfig */; + buildSettings = { + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_ENTITLEMENTS = "FluffyChat Share/FluffyChat Share.entitlements"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 4NXF6Z997G; + GCC_C_LANGUAGE_STANDARD = gnu11; + INFOPLIST_FILE = "FluffyChat Share/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 14.4; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@executable_path/../../Frameworks", + ); + MARKETING_VERSION = 1.0.0; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = "im.fluffychat.app.FluffyChat-Share"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SWIFT_ENABLE_EXPLICIT_MODULES = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + C1005C50261071B5002F4F32 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 58F7B95D036AD8E67B27588D /* Pods-FluffyChat Share.profile.xcconfig */; + buildSettings = { + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_ENTITLEMENTS = "FluffyChat Share/FluffyChat Share.entitlements"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 4NXF6Z997G; + GCC_C_LANGUAGE_STANDARD = gnu11; + INFOPLIST_FILE = "FluffyChat Share/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 14.4; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@executable_path/../../Frameworks", + ); + MARKETING_VERSION = 1.0.0; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = "im.fluffychat.app.FluffyChat-Share"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SWIFT_ENABLE_EXPLICIT_MODULES = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Profile; + }; + C146955A2E642D400075F2F7 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_ENTITLEMENTS = "Notification Service Extension/Notification Service Extension.entitlements"; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 4NXF6Z997G; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = "Notification Service Extension/Info.plist"; + INFOPLIST_KEY_CFBundleDisplayName = "Notification Service Extension"; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; + IPHONEOS_DEPLOYMENT_TARGET = 18.5; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@executable_path/../../Frameworks", + ); + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MARKETING_VERSION = 1.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = "im.fluffychat.app.Notification-Service-Extension"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + C146955B2E642D400075F2F7 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_ENTITLEMENTS = "Notification Service Extension/Notification Service Extension.entitlements"; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 4NXF6Z997G; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = "Notification Service Extension/Info.plist"; + INFOPLIST_KEY_CFBundleDisplayName = "Notification Service Extension"; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; + IPHONEOS_DEPLOYMENT_TARGET = 18.5; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@executable_path/../../Frameworks", + ); + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MARKETING_VERSION = 1.0; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = "im.fluffychat.app.Notification-Service-Extension"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + C146955C2E642D400075F2F7 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_ENTITLEMENTS = "Notification Service Extension/Notification Service Extension.entitlements"; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 4NXF6Z997G; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = "Notification Service Extension/Info.plist"; + INFOPLIST_KEY_CFBundleDisplayName = "Notification Service Extension"; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; + IPHONEOS_DEPLOYMENT_TARGET = 18.5; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@executable_path/../../Frameworks", + ); + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MARKETING_VERSION = 1.0; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = "im.fluffychat.app.Notification-Service-Extension"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Profile; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147031CF9000F007C117D /* Debug */, + 97C147041CF9000F007C117D /* Release */, + 249021D3217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147061CF9000F007C117D /* Debug */, + 97C147071CF9000F007C117D /* Release */, + 249021D4217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + C1005C51261071B5002F4F32 /* Build configuration list for PBXNativeTarget "FluffyChat Share" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C1005C4E261071B5002F4F32 /* Debug */, + C1005C4F261071B5002F4F32 /* Release */, + C1005C50261071B5002F4F32 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + C146955E2E642D400075F2F7 /* Build configuration list for PBXNativeTarget "Notification Service Extension" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C146955A2E642D400075F2F7 /* Debug */, + C146955B2E642D400075F2F7 /* Release */, + C146955C2E642D400075F2F7 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 97C146E61CF9000F007C117D /* Project object */; +} diff --git a/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..f9b0d7c --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 0000000..fc5ae03 --- /dev/null +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Runner.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..21a3cc1 --- /dev/null +++ b/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..f9b0d7c --- /dev/null +++ b/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift new file mode 100644 index 0000000..7f38bb2 --- /dev/null +++ b/ios/Runner/AppDelegate.swift @@ -0,0 +1,16 @@ +import UIKit +import Flutter + +@main +@objc class AppDelegate: FlutterAppDelegate { + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + GeneratedPluginRegistrant.register(with: self) + if #available(iOS 10.0, *) { + UNUserNotificationCenter.current().delegate = self as? UNUserNotificationCenterDelegate + } + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } +} diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..d36b1fa --- /dev/null +++ b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,122 @@ +{ + "images" : [ + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@3x.png", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@3x.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@3x.png", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@3x.png", + "scale" : "3x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@1x.png", + "scale" : "1x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@1x.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@1x.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@2x.png", + "scale" : "2x" + }, + { + "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "Icon-App-83.5x83.5@2x.png", + "scale" : "2x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "Icon-App-1024x1024@1x.png", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..fb1434bfef67dc0405b9a4738a2f0bdc0e7817dd GIT binary patch literal 70704 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

    w=C5ao|3ECyfU$H6MHq5 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

    {7BP9k|};L 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

    btG_lg;HE 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 XpbGRlGxs(900000NkvXXu0mjf!B6*} literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..614e86e702f0f81dcf2c45ec4b3639b5eac31c83 GIT binary patch literal 1771 zcmV;P)EX>4Tx0C=2zkv&MmKp2MK{z!{d9PA*)AxL$yAS&XhRVYG*P%E_RU~=gnG-*gu zTpR`0f`dPcRRjWHa-`QDULg#c~(3vY`@B5yur(qkMnP zWrgz=XSG^q?R)YUMhe=>GS_JhA%#UOL4*JqbyQG=g#_&yDJC*>p7ij?9KT2|nOqex zax9<*6_Voz|AXJXHH(uIZc-!(^t{;i#|RMG1zHW;{yw(t)(H@J2ClS@zt#k1K1pwM zwD=LwzYSbmcQknqxZD8-pLEHP94SD{Un~OeXY@^ZVBi+$U32@^KF8?;kfmOwZ-9eC zV6;Tp>mKh8clYhzns)zw05Q{YjTV3H4*&oKAxT6*RCodHmwQZ;R}{eM14;#2THeq? zO9e!kv}y~Z8V4#Y8gM=s!gRu1%(CF-7RZK1G;YaOABkcZGZ==%2w~|Y!WhWQC=duJ z2nZB;43S5XmeL9>r7b)2)7ll*&r&x3@#N;_=G^n$-@Ui@Jc^&6pSOAwf`22_x8OGk z?&%u)C97_3PD}HqtPk-C;rrSUma;juTGLqD-&jBJXP*S#Z$cuE|DK;Ia8Y4v$Ab|V zh&shpW!+>);{HP+QPDvd32j?R5GJqR+xVu1w1@72|bBy%V0SV_DiN@%FOe(>+kfXoQNV2@F!A=L=VNV71&2X zZWCC_r2gs}SzFT!Q;rm(f1o=oI6NeSW&|<@&rGYK|MJ_d zyf7vl4v;xN)wVPZeRD*(dmpE(eGF#vvK#dFcdL5=1F=A@)|M4_jEziz4at#s=yU$& zEde+@c64~^a6+DPMvVf-s) zH6khy8M}LuY;15kopG2l2HV*apvU4cddr=~|Se4SJ(jVIj^1?=_QqNj6AE>l*Qb(@RS zi)>N}eQ8nqmiGho%bEhS{9K?fFL{`DdOKXWPHRyLSsCD3EPMb1c-vm zX1n^F!a?S(;9tW6# zD=Or#JaBwWaX9|!*{oQWpQ|abMx(7L{Rb67%Gu1lbOsfcJO0%Tcy|UQjJ|S$&7D5K zb1jFap4EJJtfaMhNN+Ybr-PJ(0>^u zs>4IpglN~y^w5YAp;I{8I4CY?0gNmU4(bHeA zH6u#cS<+{GGKE+yY?D6U&ESCa!Vi^^JJyVg<>0>h&u3>fM?Wpd&OeA`0aM`Cdryos z!t3{;8EW9k2u_t5nN^o}LtD6@LO%OUp+X1m`jFEr8izo?aB2zSK_hS5zS_-$Y@}ZV zyn3x?PGMql()Gs!Qp>?{2e?R{KnH_#b&M_x6{PHDhZ$gquJCBVBP|CnOb@2Ou5P4@ zSN4fI$MSO<#iNR)A>$Ld+;^Ff8O;ELKwS;Z&@s#v0>RpEm2px+2P47_W85m~G>Zr2 z6;$2eJRu9Bl^NjVl!%?N?CeW-TAPiX``=_w{JNM}HiTYlYuwVo5CS1YLtUWP;BXl2 z%gO}GN2G3rxX9bcyj%4Mjteo4NVGxSANv2Inp@oniO!%v^k2vGK9ZCVbwA7BZ^8eY`~^Fi2>f`cNpt`J N002ovPDHLkV1ms?OVt1X literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..6470c4af256af567e9a52bf1f827ce985558bb24 GIT binary patch literal 2608 zcmV-03eWY4P)EX>4Tx0C=2zkv&MmKp2MK{z!{d9PA*)AxL$yAS&XhRVYG*P%E_RU~=gnG-*gu zTpR`0f`dPcRRjWHa-`QDULg#c~(3vY`@B5yur(qkMnP zWrgz=XSG^q?R)YUMhe=>GS_JhA%#UOL4*JqbyQG=g#_&yDJC*>p7ij?9KT2|nOqex zax9<*6_Voz|AXJXHH(uIZc-!(^t{;i#|RMG1zHW;{yw(t)(H@J2ClS@zt#k1K1pwM zwD=LwzYSbmcQknqxZD8-pLEHP94SD{Un~OeXY@^ZVBi+$U32@^KF8?;kfmOwZ-9eC zV6;Tp>mKh8clYhzns)zw05Q{YjTV3H4*&oNW=TXrRCodHnhQ`~T@JN_rboO{l9@A=(x&;8E#oeTZRlP8q_ zH_`vw0G8-Ew5{|U+E)6>K@Sd$^~p!riLaUv=TiP-*!sk)-0t5YfTbT${dS3W#4q&BXfn9zRnugV+Oo8EqJO-Q&9t*@zUZ<6)~hk1lX zc)|@I{==oJiVmnhbF%!SFSqdpjy>H&MVA{G3|iXy5cD?MWrKhJ%eBWXgLt>pEa@cy z-PbdUmOYm`2Zp#S6{<&d-4iM;)X2L>-uv~p+xNt6-4$nNXLtVV2Pgk|7cqYQ%|uU; z3qlNnJBQYcjbZQZKZ~4u?Q+8>Ctq`LwEw=KHs_N&8qG9f$zH^Wi1zXj@;cj<_se8D zjNW++)6g)u-qC}e9K|E8o_kGgUF5s;lXG+}i(j?tK(@+wQn^nPK)U2Ic9@{MD{JK-b4G3wo{#ipa+W zAqFv-^o-1~ms0)VnO5FwgPNi%l96Hc;J`TMMdq(I^Gr;3CbwMHs+$sy9Q*9t?R-~9 zv=xRaJlYe1o|(bEAT~6ct*h6+93ptK0E!;oyZxA$*jOkr2wqm%4}%81xCk5!FbsrU z>&VghHMno%R(ba@Sx^Eg6^0LrI@c)-5aub^(CEF6kIfG%u>R08u-Jo3qfvh>sh*l7 zy{d5y_`a01Ko|aOzcBnr6MqiFJZQcHgGtkBrhB?Z;GKgz7Z*xCdS7fXI~PP(3+jf>9`CnC9i4_r*YM1cRvLk=KssjjIjAw}p4Qnz|fc5XduCLgH!N!6Jrr(|| zCnr?8AS5{41J4o{+Skub;O02cH%56n+msa5f>Rm`C58zd8}E&0h6@c3D{X!7nVgCR zCo@Npv0iSAxp=Kaq5XzmM0|gt4nlG(P!Wkrv)i#Zp1^Ce*JK10U4FEnR3^lP~P#`r(mn^yvqsr%&8F zdOXW>sSBn7E;Klx5B_=`kJx9KVDt89h(jPoJA1maA17MJR7zR^gc*>uR+YD1$ghT6 z&e#URk4xtt9(X5(9JEHGMf{zymUub+?RXaJY0MrN;t>_Q^x*EiN%fSz4frgGtEQ$5 zf!1vbJMd02QVxq0!m^irv;?!4Y5W%n7n;RlhDQl&tGkSwezqG-(L0ss8vaQ#cAt_}P$`xd0023>%|g(lL_px+(J zID6_oWOeF^XGW20w2Q!Vnty3t+4+L6pDR-4a9JtofwyloSKO89&gDIGE}c$u;Mf~L zC#U&mZI2Q82rPl-a@l(hB(^m6HPrU#*FUW4grpihgxOzR(S{yAC~pf0o_AQ2YOSSrG=$&R?nerrRUJL(tiLQ5Ko=K SrOwU(0000EX>4Tx0C=2zkv&MmKp2MK{z!{d9PA*)AxL$yAS&XhRVYG*P%E_RU~=gnG-*gu zTpR`0f`dPcRRjWHa-`QDULg#c~(3vY`@B5yur(qkMnP zWrgz=XSG^q?R)YUMhe=>GS_JhA%#UOL4*JqbyQG=g#_&yDJC*>p7ij?9KT2|nOqex zax9<*6_Voz|AXJXHH(uIZc-!(^t{;i#|RMG1zHW;{yw(t)(H@J2ClS@zt#k1K1pwM zwD=LwzYSbmcQknqxZD8-pLEHP94SD{Un~OeXY@^ZVBi+$U32@^KF8?;kfmOwZ-9eC zV6;Tp>mKh8clYhzns)zw05Q{YjTV3H4*&oInMp)JRCobn`Tzev0}TKREexfXxlbRz z|Mc;Pypk{%7aQ?LeEstC?yXlGoUCe^5?IXr_~Bc2!m_`A{;{wy**L03Cz(q~@xx_* z{rq$4_nF< z*(dk!zQJNHP#us2nx&;H1@u~L&DJSB`!%#Bo<8~jL=ZJV%|HZX%%6Vr*^>`q5`29# z!}<6*UOxYn60s0s0=l`J;4tOpW(Scx?99weK*o)$FR+H`)5jp2-oN|C&BF#vsa)J3 zy_}qgSV5R8BFY0+`t{b0mkVbe`}*}KRuho{Fwlctr<+*F$E8^Txx!!*(9IQ-;N|3E zJ%8r$hj-sTe)vw%Pzd<@_uu_HZ_b^12xQAC2w^doiHS+qP-f$*^T1Fe(ohKa^y$Z< zS;v)BMR@r*u$T)3uAZ8wj^2O%^dm{;{`meIq}NLeSrElsa~mZ~TczWN?~!CK5Qt0g z;xl*mwri)3J%DqKOyz(H^WL2|m<9=paI0%eoIUXnlD1yH_*_-6zIR3#c5{I-0E`C+ z+b2jbJ>MRfQ}R<+0JDstsT?pZzj^&-@Am5qj0`=~!$ib*jvv0;RkYr|I0;XjkBO=}um|uSV`g3Ie?LWW&ar3f))j;z!4=;ODZvakn zFJE{HF%$^aEIaq}$Dem^zh1la49M+m*#!*2i)SBy{|1VshSE(y9{|G*qWH__pR*<& ztZMPbZY~E0D-$#0zrUc89+>9WE!|Gi$}52qRp!;;fIiZMY0{vQMC{ zccA|EjhFWAyiro?zIp9MU^P)%=K;(Jkb<9NbA5yL%k`un6?0Ug1rPxl8rqV0%p%HM l6AJ|*jUdfj3IVOm1pw|ncD&@V(I5Z-002ovPDHLkV1iGlo38)> literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..82f590cb44a6f13324cff60e8c448c6e075546b0 GIT binary patch literal 2466 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..82e64450f8afe363e5354a30336e3d030544d7d9 GIT binary patch literal 3751 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 R{nr2h002ovPDHLkV1k3*FHHad literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..614e86e702f0f81dcf2c45ec4b3639b5eac31c83 GIT binary patch literal 1771 zcmV;P)EX>4Tx0C=2zkv&MmKp2MK{z!{d9PA*)AxL$yAS&XhRVYG*P%E_RU~=gnG-*gu zTpR`0f`dPcRRjWHa-`QDULg#c~(3vY`@B5yur(qkMnP zWrgz=XSG^q?R)YUMhe=>GS_JhA%#UOL4*JqbyQG=g#_&yDJC*>p7ij?9KT2|nOqex zax9<*6_Voz|AXJXHH(uIZc-!(^t{;i#|RMG1zHW;{yw(t)(H@J2ClS@zt#k1K1pwM zwD=LwzYSbmcQknqxZD8-pLEHP94SD{Un~OeXY@^ZVBi+$U32@^KF8?;kfmOwZ-9eC zV6;Tp>mKh8clYhzns)zw05Q{YjTV3H4*&oKAxT6*RCodHmwQZ;R}{eM14;#2THeq? zO9e!kv}y~Z8V4#Y8gM=s!gRu1%(CF-7RZK1G;YaOABkcZGZ==%2w~|Y!WhWQC=duJ z2nZB;43S5XmeL9>r7b)2)7ll*&r&x3@#N;_=G^n$-@Ui@Jc^&6pSOAwf`22_x8OGk z?&%u)C97_3PD}HqtPk-C;rrSUma;juTGLqD-&jBJXP*S#Z$cuE|DK;Ia8Y4v$Ab|V zh&shpW!+>);{HP+QPDvd32j?R5GJqR+xVu1w1@72|bBy%V0SV_DiN@%FOe(>+kfXoQNV2@F!A=L=VNV71&2X zZWCC_r2gs}SzFT!Q;rm(f1o=oI6NeSW&|<@&rGYK|MJ_d zyf7vl4v;xN)wVPZeRD*(dmpE(eGF#vvK#dFcdL5=1F=A@)|M4_jEziz4at#s=yU$& zEde+@c64~^a6+DPMvVf-s) zH6khy8M}LuY;15kopG2l2HV*apvU4cddr=~|Se4SJ(jVIj^1?=_QqNj6AE>l*Qb(@RS zi)>N}eQ8nqmiGho%bEhS{9K?fFL{`DdOKXWPHRyLSsCD3EPMb1c-vm zX1n^F!a?S(;9tW6# zD=Or#JaBwWaX9|!*{oQWpQ|abMx(7L{Rb67%Gu1lbOsfcJO0%Tcy|UQjJ|S$&7D5K zb1jFap4EJJtfaMhNN+Ybr-PJ(0>^u zs>4IpglN~y^w5YAp;I{8I4CY?0gNmU4(bHeA zH6u#cS<+{GGKE+yY?D6U&ESCa!Vi^^JJyVg<>0>h&u3>fM?Wpd&OeA`0aM`Cdryos z!t3{;8EW9k2u_t5nN^o}LtD6@LO%OUp+X1m`jFEr8izo?aB2zSK_hS5zS_-$Y@}ZV zyn3x?PGMql()Gs!Qp>?{2e?R{KnH_#b&M_x6{PHDhZ$gquJCBVBP|CnOb@2Ou5P4@ zSN4fI$MSO<#iNR)A>$Ld+;^Ff8O;ELKwS;Z&@s#v0>RpEm2px+2P47_W85m~G>Zr2 z6;$2eJRu9Bl^NjVl!%?N?CeW-TAPiX``=_w{JNM}HiTYlYuwVo5CS1YLtUWP;BXl2 z%gO}GN2G3rxX9bcyj%4Mjteo4NVGxSANv2Inp@oniO!%v^k2vGK9ZCVbwA7BZ^8eY`~^Fi2>f`cNpt`J N002ovPDHLkV1ms?OVt1X literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..4cea61db8413e3389199d469ebd9564962957eda GIT binary patch literal 3370 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 A>i_@% literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..a526a33e476340205171ad740da3a5b23657f8fa GIT binary patch literal 4965 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 X?YGb=kd3>u&+xR=^i-?Ckcj^SoNu0g literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..bbf764529bd97e63da389459acb0c395cb0754ef GIT binary patch literal 2201 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..37766e74a082cc0c0689e07a2478c569d611e37e GIT binary patch literal 4735 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 HScd%{fQBff literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..a526a33e476340205171ad740da3a5b23657f8fa GIT binary patch literal 4965 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 X?YGb=kd3>u&+xR=^i-?Ckcj^SoNu0g literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..a21531ac06d95b36073cba522666dc1ccfb5b18c GIT binary patch literal 7396 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 z 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..477aa9700de766bdeeb5cbdf411e52a9eb652df6 GIT binary patch literal 3081 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 a!d#Kr0d+CHPx+UdW2h_ZDAg)hhyNdt)q(;5 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..f02c1af0df5291df80e82f930dc3402b3ce453fd GIT binary patch literal 3240 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 XUMi?#bmjm10sxfc)MZPc=7IkQvl-%K literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..93bc6523620929afbf7b8459ad2db2d4301995f4 GIT binary patch literal 6860 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 KQ-LXc2>Tyc{*$r* literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchBackground.imageset/Contents.json b/ios/Runner/Assets.xcassets/LaunchBackground.imageset/Contents.json new file mode 100644 index 0000000..fa31327 --- /dev/null +++ b/ios/Runner/Assets.xcassets/LaunchBackground.imageset/Contents.json @@ -0,0 +1,52 @@ +{ + "images" : [ + { + "filename" : "background.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "darkbackground.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ios/Runner/Assets.xcassets/LaunchBackground.imageset/background.png b/ios/Runner/Assets.xcassets/LaunchBackground.imageset/background.png new file mode 100644 index 0000000000000000000000000000000000000000..e29b3b59f99290135b0cf3745bc9993ce935b27c GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1|;Q0k8}blZci7-kP61+pZqKgT>LDI5tB{+ Q0fiYnUHx3vIVCg!0BB+iu>b%7 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchBackground.imageset/darkbackground.png b/ios/Runner/Assets.xcassets/LaunchBackground.imageset/darkbackground.png new file mode 100644 index 0000000000000000000000000000000000000000..1b5df34e7b11f0f86b98ee1597aa936078ce13fb GIT binary patch literal 70 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1|;Q0k92}1TpU9x7?Tqd5`OSAFiJ481h8%G Q0!lD=y85}Sb4q9e0En~=M*si- literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json new file mode 100644 index 0000000..00cabce --- /dev/null +++ b/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "LaunchImage.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "LaunchImage@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "LaunchImage@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png new file mode 100644 index 0000000000000000000000000000000000000000..f4c0bdb922597c27f2e8d2eaccadf53aa8a8caff GIT binary patch literal 5267 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 DE3n96 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..b627f52801ffb9f2d7ebde438c873a738424907d GIT binary patch literal 25762 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ios/Runner/Base.lproj/Main.storyboard b/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 0000000..f3c2851 --- /dev/null +++ b/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Runner/GoogleService-Info.plist b/ios/Runner/GoogleService-Info.plist new file mode 100644 index 0000000..917ea3b --- /dev/null +++ b/ios/Runner/GoogleService-Info.plist @@ -0,0 +1,34 @@ + + + + + CLIENT_ID + 865731724731-ofdr7e6m04murgb1bvchlj9oaos0q5i3.apps.googleusercontent.com + REVERSED_CLIENT_ID + com.googleusercontent.apps.865731724731-ofdr7e6m04murgb1bvchlj9oaos0q5i3 + API_KEY + AIzaSyA8ZUBcuny0HjPwF2Q2fvDyQTC5dG2VHlE + GCM_SENDER_ID + 865731724731 + PLIST_VERSION + 1 + BUNDLE_ID + im.fluffychat.app + PROJECT_ID + fluffychat-ef3e8 + STORAGE_BUCKET + fluffychat-ef3e8.appspot.com + IS_ADS_ENABLED + + IS_ANALYTICS_ENABLED + + IS_APPINVITE_ENABLED + + IS_GCM_ENABLED + + IS_SIGNIN_ENABLED + + GOOGLE_APP_ID + 1:865731724731:ios:79fd983ce46cb40c64309e + + \ No newline at end of file diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist new file mode 100644 index 0000000..c94401f --- /dev/null +++ b/ios/Runner/Info.plist @@ -0,0 +1,116 @@ + + + + + BGTaskSchedulerPermittedIdentifiers + + im.fluffychat.app + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + FluffyChat + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + fluffychat + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleURLTypes + + + CFBundleTypeRole + Editor + CFBundleURLName + im.fluffychat.app.uris + CFBundleURLSchemes + + ShareMedia-$(PRODUCT_BUNDLE_IDENTIFIER) + im.fluffychat + matrix + + + + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + ITSAppUsesNonExemptEncryption + + LSRequiresIPhoneOS + + NSAppleMusicUsageDescription + Play audio and voice messages in the app. + NSBluetoothAlwaysUsageDescription + Play audio and voice messages via bluetooth devices. + NSBluetoothPeripheralUsageDescription + Play audio and voice messages on bluetooth devices + NSCalendarsUsageDescription + Share calendar dates with your contacts in FluffyChat. + NSCameraUsageDescription + Open the camera and take a picture to share them with your contacts on FluffyChat. + NSContactsUsageDescription + Share contacts with your contacts in FluffyChat. + NSFaceIDUsageDescription + FluffyChat uses an app lock for an additional security level + NSLocationAlwaysUsageDescription + Share your location with your contacts in FluffyChat. + NSLocationWhenInUseUsageDescription + Share your location with your contacts in FluffyChat. + NSLocationAlwaysAndWhenInUseUsageDescription + Share your location with your contacts in FluffyChat. + NSMicrophoneUsageDescription + Record voice message and share them with your contacts on FluffyChat. + NSMotionUsageDescription + Share motions with your contacts in FluffyChat. + NSPhotoLibraryUsageDescription + Open photos from your gallery and share them with your contacts on FluffyChat. + NSSpeechRecognitionUsageDescription + Share data with your contacts in FluffyChat. + UIBackgroundModes + + audio + fetch + processing + remote-notification + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIStatusBarHidden + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIViewControllerBasedStatusBarAppearance + + io.flutter.embedded_views_preview + + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + + CADisableMinimumFrameDurationOnPhone + + UIApplicationSupportsIndirectInputEvents + + + diff --git a/ios/Runner/Runner-Bridging-Header.h b/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 0000000..7335fdf --- /dev/null +++ b/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" \ No newline at end of file diff --git a/ios/Runner/Runner.entitlements b/ios/Runner/Runner.entitlements new file mode 100644 index 0000000..8407112 --- /dev/null +++ b/ios/Runner/Runner.entitlements @@ -0,0 +1,16 @@ + + + + + aps-environment + development + com.apple.developer.associated-domains + + applinks:example.com + + com.apple.security.application-groups + + group.im.fluffychat.app + + + diff --git a/ios/Runner/ar.lproj/LaunchScreen.strings b/ios/Runner/ar.lproj/LaunchScreen.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/ar.lproj/LaunchScreen.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/ar.lproj/Main.strings b/ios/Runner/ar.lproj/Main.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/ar.lproj/Main.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/ca.lproj/LaunchScreen.strings b/ios/Runner/ca.lproj/LaunchScreen.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/ca.lproj/LaunchScreen.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/ca.lproj/Main.strings b/ios/Runner/ca.lproj/Main.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/ca.lproj/Main.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/cs.lproj/LaunchScreen.strings b/ios/Runner/cs.lproj/LaunchScreen.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/cs.lproj/LaunchScreen.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/cs.lproj/Main.strings b/ios/Runner/cs.lproj/Main.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/cs.lproj/Main.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/de.lproj/LaunchScreen.strings b/ios/Runner/de.lproj/LaunchScreen.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/de.lproj/LaunchScreen.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/de.lproj/Main.strings b/ios/Runner/de.lproj/Main.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/de.lproj/Main.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/eo.lproj/LaunchScreen.strings b/ios/Runner/eo.lproj/LaunchScreen.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/eo.lproj/LaunchScreen.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/eo.lproj/Main.strings b/ios/Runner/eo.lproj/Main.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/eo.lproj/Main.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/es.lproj/LaunchScreen.strings b/ios/Runner/es.lproj/LaunchScreen.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/es.lproj/LaunchScreen.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/es.lproj/Main.strings b/ios/Runner/es.lproj/Main.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/es.lproj/Main.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/et.lproj/LaunchScreen.strings b/ios/Runner/et.lproj/LaunchScreen.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/et.lproj/LaunchScreen.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/et.lproj/Main.strings b/ios/Runner/et.lproj/Main.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/et.lproj/Main.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/eu.lproj/LaunchScreen.strings b/ios/Runner/eu.lproj/LaunchScreen.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/eu.lproj/LaunchScreen.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/eu.lproj/Main.strings b/ios/Runner/eu.lproj/Main.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/eu.lproj/Main.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/fr.lproj/LaunchScreen.strings b/ios/Runner/fr.lproj/LaunchScreen.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/fr.lproj/LaunchScreen.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/fr.lproj/Main.strings b/ios/Runner/fr.lproj/Main.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/fr.lproj/Main.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/gl.lproj/LaunchScreen.strings b/ios/Runner/gl.lproj/LaunchScreen.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/gl.lproj/LaunchScreen.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/gl.lproj/Main.strings b/ios/Runner/gl.lproj/Main.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/gl.lproj/Main.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/hr-HR.lproj/LaunchScreen.strings b/ios/Runner/hr-HR.lproj/LaunchScreen.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/hr-HR.lproj/LaunchScreen.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/hr-HR.lproj/Main.strings b/ios/Runner/hr-HR.lproj/Main.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/hr-HR.lproj/Main.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/hu-HU.lproj/LaunchScreen.strings b/ios/Runner/hu-HU.lproj/LaunchScreen.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/hu-HU.lproj/LaunchScreen.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/hu-HU.lproj/Main.strings b/ios/Runner/hu-HU.lproj/Main.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/hu-HU.lproj/Main.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/hu.lproj/LaunchScreen.strings b/ios/Runner/hu.lproj/LaunchScreen.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/hu.lproj/LaunchScreen.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/hu.lproj/Main.strings b/ios/Runner/hu.lproj/Main.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/hu.lproj/Main.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/hy.lproj/LaunchScreen.strings b/ios/Runner/hy.lproj/LaunchScreen.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/hy.lproj/LaunchScreen.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/hy.lproj/Main.strings b/ios/Runner/hy.lproj/Main.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/hy.lproj/Main.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/it.lproj/LaunchScreen.strings b/ios/Runner/it.lproj/LaunchScreen.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/it.lproj/LaunchScreen.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/it.lproj/Main.strings b/ios/Runner/it.lproj/Main.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/it.lproj/Main.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/ja.lproj/LaunchScreen.strings b/ios/Runner/ja.lproj/LaunchScreen.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/ja.lproj/LaunchScreen.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/ja.lproj/Main.strings b/ios/Runner/ja.lproj/Main.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/ja.lproj/Main.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/nb-NO.lproj/LaunchScreen.strings b/ios/Runner/nb-NO.lproj/LaunchScreen.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/nb-NO.lproj/LaunchScreen.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/nb-NO.lproj/Main.strings b/ios/Runner/nb-NO.lproj/Main.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/nb-NO.lproj/Main.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/notification.caf b/ios/Runner/notification.caf new file mode 100644 index 0000000000000000000000000000000000000000..20fa944a4b0d955037d437ded9b91b95896f1823 GIT binary patch literal 178050 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®L{-9MRl+eb%5#Y&w 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%0Aha$eXQiR6dsfw2Mvm4K~99OONiQ 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∈b68;`XMZU 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 J=~DHO{|h^ILUaHC literal 0 HcmV?d00001 diff --git a/ios/Runner/pl.lproj/LaunchScreen.strings b/ios/Runner/pl.lproj/LaunchScreen.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/pl.lproj/LaunchScreen.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/pl.lproj/Main.strings b/ios/Runner/pl.lproj/Main.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/pl.lproj/Main.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/pt.lproj/LaunchScreen.strings b/ios/Runner/pt.lproj/LaunchScreen.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/pt.lproj/LaunchScreen.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/pt.lproj/Main.strings b/ios/Runner/pt.lproj/Main.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/pt.lproj/Main.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/ru-RU.lproj/LaunchScreen.strings b/ios/Runner/ru-RU.lproj/LaunchScreen.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/ru-RU.lproj/LaunchScreen.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/ru-RU.lproj/Main.strings b/ios/Runner/ru-RU.lproj/Main.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/ru-RU.lproj/Main.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/sk-SK.lproj/LaunchScreen.strings b/ios/Runner/sk-SK.lproj/LaunchScreen.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/sk-SK.lproj/LaunchScreen.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/sk-SK.lproj/Main.strings b/ios/Runner/sk-SK.lproj/Main.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/sk-SK.lproj/Main.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/sv-SE.lproj/LaunchScreen.strings b/ios/Runner/sv-SE.lproj/LaunchScreen.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/sv-SE.lproj/LaunchScreen.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/sv-SE.lproj/Main.strings b/ios/Runner/sv-SE.lproj/Main.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/sv-SE.lproj/Main.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/tr.lproj/LaunchScreen.strings b/ios/Runner/tr.lproj/LaunchScreen.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/tr.lproj/LaunchScreen.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/tr.lproj/Main.strings b/ios/Runner/tr.lproj/Main.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/tr.lproj/Main.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/uk.lproj/LaunchScreen.strings b/ios/Runner/uk.lproj/LaunchScreen.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/uk.lproj/LaunchScreen.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/uk.lproj/Main.strings b/ios/Runner/uk.lproj/Main.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/uk.lproj/Main.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/vi-VN.lproj/LaunchScreen.strings b/ios/Runner/vi-VN.lproj/LaunchScreen.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/vi-VN.lproj/LaunchScreen.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/vi-VN.lproj/Main.strings b/ios/Runner/vi-VN.lproj/Main.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/vi-VN.lproj/Main.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/zh-Hans.lproj/LaunchScreen.strings b/ios/Runner/zh-Hans.lproj/LaunchScreen.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/zh-Hans.lproj/LaunchScreen.strings @@ -0,0 +1 @@ + diff --git a/ios/Runner/zh-Hans.lproj/Main.strings b/ios/Runner/zh-Hans.lproj/Main.strings new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ios/Runner/zh-Hans.lproj/Main.strings @@ -0,0 +1 @@ + diff --git a/ios/fastlane/Appfile b/ios/fastlane/Appfile new file mode 100644 index 0000000..86dcebf --- /dev/null +++ b/ios/fastlane/Appfile @@ -0,0 +1,8 @@ +app_identifier("im.fluffychat.app") # The bundle identifier of your app +apple_id("christian-kussowski@posteo.de") # Your Apple email address + +itc_team_id("122628977") # App Store Connect Team ID +team_id("4NXF6Z997G") # Developer Portal Team ID + +# For more information about the Appfile, see: +# https://docs.fastlane.tools/advanced/#appfile diff --git a/ios/fastlane/Fastfile b/ios/fastlane/Fastfile new file mode 100644 index 0000000..6078ad5 --- /dev/null +++ b/ios/fastlane/Fastfile @@ -0,0 +1,44 @@ +# This file contains the fastlane.tools configuration +# You can find the documentation at https://docs.fastlane.tools +# +# For a list of all available actions, check out +# +# https://docs.fastlane.tools/actions +# +# For a list of all available plugins, check out +# +# https://docs.fastlane.tools/plugins/available-plugins +# + +# Uncomment the line if you want fastlane to automatically update itself +# update_fastlane + +default_platform(:ios) + +platform :ios do + desc "Push a new beta build to TestFlight" + lane :beta do + increment_build_number( + xcodeproj: "Runner.xcodeproj", + build_number: latest_testflight_build_number + 1 + ) + re = /version:\s([0-9]*\.[0-9]*\.[0-9]*)\+[0-9]*/i + config = File.read("../../pubspec.yaml") + version_name = config.match(re).captures[0] + increment_version_number(version_number: version_name) + build_app(workspace: "Runner.xcworkspace", scheme: "Runner") + upload_to_testflight( + distribute_external: true, + groups: "FluffyChat Betatest", + changelog: "This is a release candidate for FluffyChat. Please test if the app is overall in a good condition before we push this to production.", + ) + end +end + +lane :release do + capture_screenshots # generate new screenshots for the App Store + sync_code_signing(type: "appstore") # see code signing guide for more information + build_app(scheme: "Runner") + upload_to_app_store # upload your app to App Store Connect + slack(message: "Successfully uploaded a new App Store build") +end diff --git a/ios/fastlane/README.md b/ios/fastlane/README.md new file mode 100644 index 0000000..c7d6f91 --- /dev/null +++ b/ios/fastlane/README.md @@ -0,0 +1,37 @@ +fastlane documentation +================ +# Installation + +Make sure you have the latest version of the Xcode command line tools installed: + +``` +xcode-select --install +``` + +Install _fastlane_ using +``` +[sudo] gem install fastlane -NV +``` +or alternatively using `brew install fastlane` + +# Available Actions +### release +``` +fastlane release +``` + + +---- + +## iOS +### ios beta +``` +fastlane ios beta +``` +Push a new beta build to TestFlight + +---- + +This README.md is auto-generated and will be re-generated every time [fastlane](https://fastlane.tools) is run. +More information about fastlane can be found on [fastlane.tools](https://fastlane.tools). +The documentation of fastlane can be found on [docs.fastlane.tools](https://docs.fastlane.tools). diff --git a/ios/fastlane/report.xml b/ios/fastlane/report.xml new file mode 100644 index 0000000..aa3917b --- /dev/null +++ b/ios/fastlane/report.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/l10n.yaml b/l10n.yaml new file mode 100644 index 0000000..cc496de --- /dev/null +++ b/l10n.yaml @@ -0,0 +1,7 @@ +arb-dir: lib/l10n +template-arb-file: intl_en.arb +output-localization-file: l10n.dart +output-class: L10n +preferred-supported-locales: ["en"] +use-deferred-loading: true +nullable-getter: false \ No newline at end of file diff --git a/lib/config/app_config.dart b/lib/config/app_config.dart new file mode 100644 index 0000000..2e166ef --- /dev/null +++ b/lib/config/app_config.dart @@ -0,0 +1,62 @@ +import 'dart:ui'; + +abstract class AppConfig { + // Const and final configuration values (immutable) + static const Color primaryColor = Color(0xFFD18616); + static const Color primaryColorLight = Color(0xFFCCBDEA); + static const Color secondaryColor = Color(0xff93774e); + + static const Color chatColor = primaryColor; + static const double messageFontSize = 16.0; + static const bool allowOtherHomeservers = true; + static const bool enableRegistration = true; + static const bool hideTypingUsernames = false; + + static const String inviteLinkPrefix = 'https://matrix.to/#/'; + static const String deepLinkPrefix = 'space.hunni://chat/'; + static const String schemePrefix = 'matrix:'; + static const String pushNotificationsChannelId = 'hunnichat_push'; + static const String pushNotificationsAppId = 'chat.smithtech.matrix'; + static const double borderRadius = 18.0; + static const double columnWidth = 360.0; + + static const String website = 'https://www.smithandtech.com'; + static const String enablePushTutorial = + 'https://fluffy.chat/faq/#push_without_google_services'; + static const String encryptionTutorial = + 'https://fluffy.chat/faq/#how_to_use_end_to_end_encryption'; + static const String startChatTutorial = + 'https://fluffy.chat/faq/#how_do_i_find_other_users'; + static const String appId = 'chat.smithtech.matrix'; + static const String appOpenUrlScheme = 'com.smithandtech'; + + static const String sourceCodeUrl = + 'https://github.com/krille-chan/fluffychat'; + static const String supportUrl = + 'https://github.com/krille-chan/fluffychat/issues'; + static const String changelogUrl = 'https://fluffy.chat/en/changelog/'; + static const String donationUrl = 'https://ko-fi.com/krille'; + + static const Set defaultReactions = {'👍', '❤️', '😂', '😮', '😢'}; + + static final Uri newIssueUrl = Uri( + scheme: 'https', + host: 'github.com', + path: '/krille-chan/fluffychat/issues/new', + ); + + static final Uri homeserverList = Uri( + scheme: 'https', + host: 'servers.joinmatrix.org', + path: 'servers.json', + ); + + static final Uri privacyUrl = Uri( + scheme: 'https', + host: 'smithandtech.com', + path: '/hunnichat-privacy', + ); + + static const String mainIsolatePortName = 'main_isolate'; + static const String pushIsolatePortName = 'push_isolate'; +} diff --git a/lib/config/app_emojis.dart b/lib/config/app_emojis.dart new file mode 100644 index 0000000..3c38e2f --- /dev/null +++ b/lib/config/app_emojis.dart @@ -0,0 +1,30 @@ +abstract class AppEmojis { + static const List emojis = [ + '👍', + '😊', + '😀', + '❤️', + '😍', + '😘', + '😇', + '😅', + '😭', + '😜', + '😱', + '😆', + '😉', + '😡', + '👋', + '🤔', + '🙁', + '🥳', + '😟', + '😄', + '😁', + '🙄', + '😂', + '🤣', + '😌', + '😬', + ]; +} diff --git a/lib/config/isrg_x1.dart b/lib/config/isrg_x1.dart new file mode 100644 index 0000000..6a6d0ac --- /dev/null +++ b/lib/config/isrg_x1.dart @@ -0,0 +1,32 @@ +// ignore: constant_identifier_names +const String ISRG_X1 = """-----BEGIN CERTIFICATE----- +MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw +TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh +cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4 +WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu +ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY +MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc +h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+ +0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U +A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW +T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH +B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC +B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv +KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn +OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn +jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw +qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI +rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq +hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL +ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ +3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK +NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5 +ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur +TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC +jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc +oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq +4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA +mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d +emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc= +-----END CERTIFICATE-----"""; diff --git a/lib/config/routes.dart b/lib/config/routes.dart new file mode 100644 index 0000000..8f92d4c --- /dev/null +++ b/lib/config/routes.dart @@ -0,0 +1,505 @@ +import 'dart:async'; + +import 'package:flutter/material.dart'; + +import 'package:go_router/go_router.dart'; +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/config/themes.dart'; +import 'package:fluffychat/pages/archive/archive.dart'; +import 'package:fluffychat/pages/chat/chat.dart'; +import 'package:fluffychat/pages/chat_access_settings/chat_access_settings_controller.dart'; +import 'package:fluffychat/pages/chat_details/chat_details.dart'; +import 'package:fluffychat/pages/chat_encryption_settings/chat_encryption_settings.dart'; +import 'package:fluffychat/pages/chat_list/chat_list.dart'; +import 'package:fluffychat/pages/chat_members/chat_members.dart'; +import 'package:fluffychat/pages/chat_permissions_settings/chat_permissions_settings.dart'; +import 'package:fluffychat/pages/chat_search/chat_search_page.dart'; +import 'package:fluffychat/pages/device_settings/device_settings.dart'; +import 'package:fluffychat/pages/homeserver_picker/homeserver_picker.dart'; +import 'package:fluffychat/pages/invitation_selection/invitation_selection.dart'; +import 'package:fluffychat/pages/login/login.dart'; +import 'package:fluffychat/pages/new_group/new_group.dart'; +import 'package:fluffychat/pages/new_private_chat/new_private_chat.dart'; +import 'package:fluffychat/pages/settings/settings.dart'; +import 'package:fluffychat/pages/settings_3pid/settings_3pid.dart'; +import 'package:fluffychat/pages/settings_chat/settings_chat.dart'; +import 'package:fluffychat/pages/settings_emotes/settings_emotes.dart'; +import 'package:fluffychat/pages/settings_homeserver/settings_homeserver.dart'; +import 'package:fluffychat/pages/settings_ignore_list/settings_ignore_list.dart'; +import 'package:fluffychat/pages/settings_multiple_emotes/settings_multiple_emotes.dart'; +import 'package:fluffychat/pages/settings_notifications/settings_notifications.dart'; +import 'package:fluffychat/pages/settings_password/settings_password.dart'; +import 'package:fluffychat/pages/settings_security/settings_security.dart'; +import 'package:fluffychat/pages/settings_style/settings_style.dart'; +import 'package:fluffychat/widgets/config_viewer.dart'; +import 'package:fluffychat/widgets/layouts/empty_page.dart'; +import 'package:fluffychat/widgets/layouts/two_column_layout.dart'; +import 'package:fluffychat/widgets/log_view.dart'; +import 'package:fluffychat/widgets/matrix.dart'; +import 'package:fluffychat/widgets/share_scaffold_dialog.dart'; + +abstract class AppRoutes { + static FutureOr loggedInRedirect( + BuildContext context, + GoRouterState state, + ) => + Matrix.of(context).widget.clients.any((client) => client.isLogged()) + ? '/rooms' + : null; + + static FutureOr loggedOutRedirect( + BuildContext context, + GoRouterState state, + ) => + Matrix.of(context).widget.clients.any((client) => client.isLogged()) + ? null + : '/home'; + + AppRoutes(); + + static final List routes = [ + GoRoute( + path: '/', + redirect: (context, state) => + Matrix.of(context).widget.clients.any((client) => client.isLogged()) + ? '/rooms' + : '/home', + ), + GoRoute( + path: '/home', + pageBuilder: (context, state) => defaultPageBuilder( + context, + state, + const HomeserverPicker(addMultiAccount: false), + ), + redirect: loggedInRedirect, + routes: [ + GoRoute( + path: 'login', + pageBuilder: (context, state) => defaultPageBuilder( + context, + state, + Login(client: state.extra as Client), + ), + redirect: loggedInRedirect, + ), + ], + ), + GoRoute( + path: '/logs', + pageBuilder: (context, state) => defaultPageBuilder( + context, + state, + const LogViewer(), + ), + ), + GoRoute( + path: '/configs', + pageBuilder: (context, state) => defaultPageBuilder( + context, + state, + const ConfigViewer(), + ), + ), + ShellRoute( + // Never use a transition on the shell route. Changing the PageBuilder + // here based on a MediaQuery causes the child to briefly be rendered + // twice with the same GlobalKey, blowing up the rendering. + pageBuilder: (context, state, child) => noTransitionPageBuilder( + context, + state, + FluffyThemes.isColumnMode(context) && + state.fullPath?.startsWith('/rooms/settings') == false + ? TwoColumnLayout( + mainView: ChatList( + activeChat: state.pathParameters['roomid'], + activeSpace: state.uri.queryParameters['spaceId'], + displayNavigationRail: + state.path?.startsWith('/rooms/settings') != true, + ), + sideView: child, + ) + : child, + ), + routes: [ + GoRoute( + path: '/rooms', + redirect: loggedOutRedirect, + pageBuilder: (context, state) => defaultPageBuilder( + context, + state, + FluffyThemes.isColumnMode(context) + ? const EmptyPage() + : ChatList( + activeChat: state.pathParameters['roomid'], + activeSpace: state.uri.queryParameters['spaceId'], + ), + ), + routes: [ + GoRoute( + path: 'archive', + pageBuilder: (context, state) => defaultPageBuilder( + context, + state, + const Archive(), + ), + routes: [ + GoRoute( + path: ':roomid', + pageBuilder: (context, state) => defaultPageBuilder( + context, + state, + ChatPage( + roomId: state.pathParameters['roomid']!, + eventId: state.uri.queryParameters['event'], + ), + ), + redirect: loggedOutRedirect, + ), + ], + redirect: loggedOutRedirect, + ), + GoRoute( + path: 'newprivatechat', + pageBuilder: (context, state) => defaultPageBuilder( + context, + state, + const NewPrivateChat(), + ), + redirect: loggedOutRedirect, + ), + GoRoute( + path: 'newgroup', + pageBuilder: (context, state) => defaultPageBuilder( + context, + state, + const NewGroup(), + ), + redirect: loggedOutRedirect, + ), + GoRoute( + path: 'newspace', + pageBuilder: (context, state) => defaultPageBuilder( + context, + state, + const NewGroup(createGroupType: CreateGroupType.space), + ), + redirect: loggedOutRedirect, + ), + ShellRoute( + pageBuilder: (context, state, child) => defaultPageBuilder( + context, + state, + FluffyThemes.isColumnMode(context) + ? TwoColumnLayout( + mainView: Settings(key: state.pageKey), + sideView: child, + ) + : child, + ), + routes: [ + GoRoute( + path: 'settings', + pageBuilder: (context, state) => defaultPageBuilder( + context, + state, + FluffyThemes.isColumnMode(context) + ? const EmptyPage() + : const Settings(), + ), + routes: [ + GoRoute( + path: 'notifications', + pageBuilder: (context, state) => defaultPageBuilder( + context, + state, + const SettingsNotifications(), + ), + redirect: loggedOutRedirect, + ), + GoRoute( + path: 'style', + pageBuilder: (context, state) => defaultPageBuilder( + context, + state, + const SettingsStyle(), + ), + redirect: loggedOutRedirect, + ), + GoRoute( + path: 'devices', + pageBuilder: (context, state) => defaultPageBuilder( + context, + state, + const DevicesSettings(), + ), + redirect: loggedOutRedirect, + ), + GoRoute( + path: 'chat', + pageBuilder: (context, state) => defaultPageBuilder( + context, + state, + const SettingsChat(), + ), + routes: [ + GoRoute( + path: 'emotes', + pageBuilder: (context, state) => defaultPageBuilder( + context, + state, + const EmotesSettings(), + ), + ), + ], + redirect: loggedOutRedirect, + ), + GoRoute( + path: 'addaccount', + redirect: loggedOutRedirect, + pageBuilder: (context, state) => defaultPageBuilder( + context, + state, + const HomeserverPicker(addMultiAccount: true), + ), + routes: [ + GoRoute( + path: 'login', + pageBuilder: (context, state) => defaultPageBuilder( + context, + state, + Login(client: state.extra as Client), + ), + redirect: loggedOutRedirect, + ), + ], + ), + GoRoute( + path: 'homeserver', + pageBuilder: (context, state) { + return defaultPageBuilder( + context, + state, + const SettingsHomeserver(), + ); + }, + redirect: loggedOutRedirect, + ), + GoRoute( + path: 'security', + redirect: loggedOutRedirect, + pageBuilder: (context, state) => defaultPageBuilder( + context, + state, + const SettingsSecurity(), + ), + routes: [ + GoRoute( + path: 'password', + pageBuilder: (context, state) { + return defaultPageBuilder( + context, + state, + const SettingsPassword(), + ); + }, + redirect: loggedOutRedirect, + ), + GoRoute( + path: 'ignorelist', + pageBuilder: (context, state) { + return defaultPageBuilder( + context, + state, + SettingsIgnoreList( + initialUserId: state.extra?.toString(), + ), + ); + }, + redirect: loggedOutRedirect, + ), + GoRoute( + path: '3pid', + pageBuilder: (context, state) => defaultPageBuilder( + context, + state, + const Settings3Pid(), + ), + redirect: loggedOutRedirect, + ), + ], + ), + ], + redirect: loggedOutRedirect, + ), + ], + ), + GoRoute( + path: ':roomid', + pageBuilder: (context, state) { + final body = state.uri.queryParameters['body']; + var shareItems = state.extra is List + ? state.extra as List + : null; + if (body != null && body.isNotEmpty) { + shareItems ??= []; + shareItems.add(TextShareItem(body)); + } + return defaultPageBuilder( + context, + state, + ChatPage( + roomId: state.pathParameters['roomid']!, + shareItems: shareItems, + eventId: state.uri.queryParameters['event'], + ), + ); + }, + redirect: loggedOutRedirect, + routes: [ + GoRoute( + path: 'search', + pageBuilder: (context, state) => defaultPageBuilder( + context, + state, + ChatSearchPage( + roomId: state.pathParameters['roomid']!, + ), + ), + redirect: loggedOutRedirect, + ), + GoRoute( + path: 'encryption', + pageBuilder: (context, state) => defaultPageBuilder( + context, + state, + const ChatEncryptionSettings(), + ), + redirect: loggedOutRedirect, + ), + GoRoute( + path: 'invite', + pageBuilder: (context, state) => defaultPageBuilder( + context, + state, + InvitationSelection( + roomId: state.pathParameters['roomid']!, + ), + ), + redirect: loggedOutRedirect, + ), + GoRoute( + path: 'details', + pageBuilder: (context, state) => defaultPageBuilder( + context, + state, + ChatDetails( + roomId: state.pathParameters['roomid']!, + ), + ), + routes: [ + GoRoute( + path: 'access', + pageBuilder: (context, state) => defaultPageBuilder( + context, + state, + ChatAccessSettings( + roomId: state.pathParameters['roomid']!, + ), + ), + redirect: loggedOutRedirect, + ), + GoRoute( + path: 'members', + pageBuilder: (context, state) => defaultPageBuilder( + context, + state, + ChatMembersPage( + roomId: state.pathParameters['roomid']!, + ), + ), + redirect: loggedOutRedirect, + ), + GoRoute( + path: 'permissions', + pageBuilder: (context, state) => defaultPageBuilder( + context, + state, + const ChatPermissionsSettings(), + ), + redirect: loggedOutRedirect, + ), + GoRoute( + path: 'invite', + pageBuilder: (context, state) => defaultPageBuilder( + context, + state, + InvitationSelection( + roomId: state.pathParameters['roomid']!, + ), + ), + redirect: loggedOutRedirect, + ), + GoRoute( + path: 'multiple_emotes', + pageBuilder: (context, state) => defaultPageBuilder( + context, + state, + const MultipleEmotesSettings(), + ), + redirect: loggedOutRedirect, + ), + GoRoute( + path: 'emotes', + pageBuilder: (context, state) => defaultPageBuilder( + context, + state, + const EmotesSettings(), + ), + redirect: loggedOutRedirect, + ), + GoRoute( + path: 'emotes/:state_key', + pageBuilder: (context, state) => defaultPageBuilder( + context, + state, + const EmotesSettings(), + ), + redirect: loggedOutRedirect, + ), + ], + redirect: loggedOutRedirect, + ), + ], + ), + ], + ), + ], + ), + ]; + + static Page noTransitionPageBuilder( + BuildContext context, + GoRouterState state, + Widget child, + ) => + NoTransitionPage( + key: state.pageKey, + restorationId: state.pageKey.value, + child: child, + ); + + static Page defaultPageBuilder( + BuildContext context, + GoRouterState state, + Widget child, + ) => + FluffyThemes.isColumnMode(context) + ? noTransitionPageBuilder(context, state, child) + : MaterialPage( + key: state.pageKey, + restorationId: state.pageKey.value, + child: child, + ); +} diff --git a/lib/config/setting_keys.dart b/lib/config/setting_keys.dart new file mode 100644 index 0000000..604068e --- /dev/null +++ b/lib/config/setting_keys.dart @@ -0,0 +1,193 @@ +import 'dart:convert'; + +import 'package:flutter/foundation.dart'; + +import 'package:async/async.dart'; +import 'package:http/http.dart' as http; +import 'package:matrix/matrix_api_lite/utils/logs.dart'; +import 'package:shared_preferences/shared_preferences.dart'; + +import 'package:fluffychat/utils/platform_infos.dart'; + +enum AppSettings { + textMessageMaxLength('textMessageMaxLength', 16384), + audioRecordingNumChannels('audioRecordingNumChannels', 1), + audioRecordingAutoGain('audioRecordingAutoGain', true), + audioRecordingEchoCancel('audioRecordingEchoCancel', false), + audioRecordingNoiseSuppress('audioRecordingNoiseSuppress', true), + audioRecordingBitRate('audioRecordingBitRate', 64000), + audioRecordingSamplingRate('audioRecordingSamplingRate', 44100), + showNoGoogle('chat.fluffy.show_no_google', false), + unifiedPushRegistered('chat.fluffy.unifiedpush.registered', false), + unifiedPushEndpoint('chat.fluffy.unifiedpush.endpoint', ''), + pushNotificationsGatewayUrl( + 'pushNotificationsGatewayUrl', + 'https://push.fluffychat.im/_matrix/push/v1/notify', + ), + pushNotificationsPusherFormat( + 'pushNotificationsPusherFormat', + 'event_id_only', + ), + renderHtml('chat.fluffy.renderHtml', true), + fontSizeFactor('chat.fluffy.font_size_factor', 1.0), + hideRedactedEvents('chat.fluffy.hideRedactedEvents', false), + hideUnknownEvents('chat.fluffy.hideUnknownEvents', true), + separateChatTypes('chat.fluffy.separateChatTypes', false), + autoplayImages('chat.fluffy.autoplay_images', true), + sendTypingNotifications('chat.fluffy.send_typing_notifications', true), + sendPublicReadReceipts('chat.fluffy.send_public_read_receipts', true), + swipeRightToLeftToReply('chat.fluffy.swipeRightToLeftToReply', true), + sendOnEnter('chat.fluffy.send_on_enter', false), + showPresences('chat.fluffy.show_presences', true), + displayNavigationRail('chat.fluffy.display_navigation_rail', false), + experimentalVoip('chat.fluffy.experimental_voip', false), + shareKeysWith('chat.fluffy.share_keys_with_2', 'all'), + noEncryptionWarningShown( + 'chat.fluffy.no_encryption_warning_shown', + false, + ), + displayChatDetailsColumn( + 'chat.fluffy.display_chat_details_column', + false, + ), + // AppConfig-mirrored settings + applicationName('chat.fluffy.application_name', 'HunniChat'), + defaultHomeserver('chat.fluffy.default_homeserver', 'matrix.smithandtech.com'), + // colorSchemeSeed stored as ARGB int + colorSchemeSeedInt( + 'chat.fluffy.color_scheme_seed', + 0xFF5625BA, + ), + enableSoftLogout('chat.fluffy.enable_soft_logout', false); + + final String key; + final T defaultValue; + + const AppSettings(this.key, this.defaultValue); + + static SharedPreferences get store => _store!; + static SharedPreferences? _store; + + static Future init({loadWebConfigFile = true}) async { + if (AppSettings._store != null) return AppSettings.store; + + final store = AppSettings._store = await SharedPreferences.getInstance(); + + // Migrate wrong datatype for fontSizeFactor + final fontSizeFactorString = + Result(() => store.getString(AppSettings.fontSizeFactor.key)) + .asValue + ?.value; + if (fontSizeFactorString != null) { + Logs().i('Migrate wrong datatype for fontSizeFactor!'); + await store.remove(AppSettings.fontSizeFactor.key); + final fontSizeFactor = double.tryParse(fontSizeFactorString); + if (fontSizeFactor != null) { + await store.setDouble(AppSettings.fontSizeFactor.key, fontSizeFactor); + } + } + + if (store.getBool(AppSettings.sendOnEnter.key) == null) { + await store.setBool(AppSettings.sendOnEnter.key, !PlatformInfos.isMobile); + } + if (kIsWeb && loadWebConfigFile) { + try { + final configJsonString = + utf8.decode((await http.get(Uri.parse('config.json'))).bodyBytes); + final configJson = + json.decode(configJsonString) as Map; + for (final setting in AppSettings.values) { + if (store.get(setting.key) != null) continue; + final configValue = configJson[setting.name]; + if (configValue == null) continue; + if (configValue is bool) { + await store.setBool(setting.key, configValue); + } + if (configValue is String) { + await store.setString(setting.key, configValue); + } + if (configValue is int) { + await store.setInt(setting.key, configValue); + } + if (configValue is double) { + await store.setDouble(setting.key, configValue); + } + } + } on FormatException catch (_) { + Logs().v('[ConfigLoader] config.json not found'); + } catch (e) { + Logs().v('[ConfigLoader] config.json not found', e); + } + } + + return store; + } +} + +extension AppSettingsBoolExtension on AppSettings { + bool get value { + final value = Result(() => AppSettings.store.getBool(key)); + final error = value.asError; + if (error != null) { + Logs().e( + 'Unable to fetch $key from storage. Removing entry...', + error.error, + error.stackTrace, + ); + } + return value.asValue?.value ?? defaultValue; + } + + Future setItem(bool value) => AppSettings.store.setBool(key, value); +} + +extension AppSettingsStringExtension on AppSettings { + String get value { + final value = Result(() => AppSettings.store.getString(key)); + final error = value.asError; + if (error != null) { + Logs().e( + 'Unable to fetch $key from storage. Removing entry...', + error.error, + error.stackTrace, + ); + } + return value.asValue?.value ?? defaultValue; + } + + Future setItem(String value) => AppSettings.store.setString(key, value); +} + +extension AppSettingsIntExtension on AppSettings { + int get value { + final value = Result(() => AppSettings.store.getInt(key)); + final error = value.asError; + if (error != null) { + Logs().e( + 'Unable to fetch $key from storage. Removing entry...', + error.error, + error.stackTrace, + ); + } + return value.asValue?.value ?? defaultValue; + } + + Future setItem(int value) => AppSettings.store.setInt(key, value); +} + +extension AppSettingsDoubleExtension on AppSettings { + double get value { + final value = Result(() => AppSettings.store.getDouble(key)); + final error = value.asError; + if (error != null) { + Logs().e( + 'Unable to fetch $key from storage. Removing entry...', + error.error, + error.stackTrace, + ); + } + return value.asValue?.value ?? defaultValue; + } + + Future setItem(double value) => AppSettings.store.setDouble(key, value); +} diff --git a/lib/config/themes.dart b/lib/config/themes.dart new file mode 100644 index 0000000..b409dc2 --- /dev/null +++ b/lib/config/themes.dart @@ -0,0 +1,164 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +import 'package:fluffychat/config/setting_keys.dart'; +import 'app_config.dart'; + +abstract class FluffyThemes { + static const double columnWidth = 380.0; + + static const double maxTimelineWidth = columnWidth * 2; + + static const double navRailWidth = 80.0; + + static bool isColumnModeByWidth(double width) => + width > columnWidth * 2 + navRailWidth; + + static bool isColumnMode(BuildContext context) => + isColumnModeByWidth(MediaQuery.sizeOf(context).width); + + static bool isThreeColumnMode(BuildContext context) => + MediaQuery.sizeOf(context).width > FluffyThemes.columnWidth * 3.5; + + static LinearGradient backgroundGradient( + BuildContext context, + int alpha, + ) { + final colorScheme = Theme.of(context).colorScheme; + return LinearGradient( + begin: Alignment.topCenter, + colors: [ + colorScheme.primaryContainer.withAlpha(alpha), + colorScheme.secondaryContainer.withAlpha(alpha), + colorScheme.tertiaryContainer.withAlpha(alpha), + colorScheme.primaryContainer.withAlpha(alpha), + ], + ); + } + + static const Duration animationDuration = Duration(milliseconds: 250); + static const Curve animationCurve = Curves.easeInOut; + + static ThemeData buildTheme( + BuildContext context, + Brightness brightness, [ + Color? seed, + ]) { + final colorScheme = ColorScheme.fromSeed( + brightness: brightness, + seedColor: seed ?? Color(AppSettings.colorSchemeSeedInt.value), + ); + final isColumnMode = FluffyThemes.isColumnMode(context); + return ThemeData( + visualDensity: VisualDensity.standard, + useMaterial3: true, + brightness: brightness, + colorScheme: colorScheme, + dividerColor: brightness == Brightness.dark + ? colorScheme.surfaceContainerHighest + : colorScheme.surfaceContainer, + popupMenuTheme: PopupMenuThemeData( + color: colorScheme.surfaceContainerLow, + iconColor: colorScheme.onSurface, + textStyle: TextStyle(color: colorScheme.onSurface), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(AppConfig.borderRadius / 2), + ), + ), + segmentedButtonTheme: SegmentedButtonThemeData( + style: SegmentedButton.styleFrom( + iconColor: colorScheme.onSurface, + disabledIconColor: colorScheme.onSurface, + ), + ), + textSelectionTheme: TextSelectionThemeData( + selectionColor: colorScheme.onSurface.withAlpha(128), + selectionHandleColor: colorScheme.secondary, + ), + inputDecorationTheme: InputDecorationTheme( + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(AppConfig.borderRadius), + ), + contentPadding: const EdgeInsets.all(12), + ), + chipTheme: ChipThemeData( + showCheckmark: false, + backgroundColor: colorScheme.surfaceContainer, + side: BorderSide.none, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(AppConfig.borderRadius), + ), + ), + appBarTheme: AppBarTheme( + toolbarHeight: isColumnMode ? 72 : 56, + shadowColor: + isColumnMode ? colorScheme.surfaceContainer.withAlpha(128) : null, + surfaceTintColor: isColumnMode ? colorScheme.surface : null, + backgroundColor: isColumnMode ? colorScheme.surface : null, + actionsPadding: + isColumnMode ? const EdgeInsets.symmetric(horizontal: 16.0) : null, + systemOverlayStyle: SystemUiOverlayStyle( + statusBarColor: Colors.transparent, + statusBarIconBrightness: brightness.reversed, + statusBarBrightness: brightness, + systemNavigationBarIconBrightness: brightness.reversed, + systemNavigationBarColor: colorScheme.surface, + ), + ), + outlinedButtonTheme: OutlinedButtonThemeData( + style: OutlinedButton.styleFrom( + side: BorderSide( + width: 1, + color: colorScheme.primary, + ), + shape: RoundedRectangleBorder( + side: BorderSide(color: colorScheme.primary), + borderRadius: BorderRadius.circular(AppConfig.borderRadius / 2), + ), + ), + ), + progressIndicatorTheme: ProgressIndicatorThemeData( + strokeCap: StrokeCap.round, + color: colorScheme.primary, + refreshBackgroundColor: colorScheme.primaryContainer, + ), + snackBarTheme: isColumnMode + ? const SnackBarThemeData( + showCloseIcon: true, + behavior: SnackBarBehavior.floating, + width: FluffyThemes.columnWidth * 1.5, + ) + : const SnackBarThemeData(behavior: SnackBarBehavior.floating), + elevatedButtonTheme: ElevatedButtonThemeData( + style: ElevatedButton.styleFrom( + backgroundColor: colorScheme.secondaryContainer, + foregroundColor: colorScheme.onSecondaryContainer, + elevation: 0, + padding: const EdgeInsets.all(16), + textStyle: const TextStyle(fontSize: 16), + ), + ), + ); + } +} + +extension on Brightness { + Brightness get reversed => + this == Brightness.dark ? Brightness.light : Brightness.dark; +} + +extension BubbleColorTheme on ThemeData { + Color get bubbleColor => brightness == Brightness.light + ? colorScheme.primary + : colorScheme.primaryContainer; + + Color get onBubbleColor => brightness == Brightness.light + ? colorScheme.onPrimary + : colorScheme.onPrimaryContainer; + + Color get secondaryBubbleColor => HSLColor.fromColor( + brightness == Brightness.light + ? colorScheme.tertiary + : colorScheme.tertiaryContainer, + ).withSaturation(0.5).toColor(); +} diff --git a/lib/l10n/intl_ar.arb b/lib/l10n/intl_ar.arb new file mode 100644 index 0000000..8bcfa71 --- /dev/null +++ b/lib/l10n/intl_ar.arb @@ -0,0 +1,3187 @@ +{ + "@@locale": "ar", + "@@last_modified": "2021-08-14 12:41:10.156221", + "about": "حول", + "@about": { + "type": "String", + "placeholders": {} + }, + "accept": "أقبل", + "@accept": { + "type": "String", + "placeholders": {} + }, + "acceptedTheInvitation": "👍 {username} قبل الدعوة", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "account": "الحساب", + "@account": { + "type": "String", + "placeholders": {} + }, + "activatedEndToEndEncryption": "🔐 تم تنشيط {username} التشفير من طرف إلى طرف", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "admin": "المدير", + "@admin": { + "type": "String", + "placeholders": {} + }, + "alias": "اللقب", + "@alias": { + "type": "String", + "placeholders": {} + }, + "answeredTheCall": "{senderName} أجاب على المكالمة", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "anyoneCanJoin": "يمكن لأي أحد الدخول", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "archive": "الأرشيف", + "@archive": { + "type": "String", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "هل يُسمح للزوار الدخول", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "أمتأكد؟", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "askSSSSSign": "لتتمكن من التأكد من الشخص الآخر، يرجى إدخال عبارة المرور أو مفتاح الاسترداد.", + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "askVerificationRequest": "أتقبل طلب تحقق {username}؟", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "banFromChat": "حظر من المحادثة", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "banned": "محظور", + "@banned": { + "type": "String", + "placeholders": {} + }, + "bannedUser": "{username} حظر {targetName}", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "blockDevice": "أُحظر الجهاز", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "cancel": "ألغِ", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "changedTheChatAvatar": "غيَّر {username} صورة المحادثة", + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheChatDescriptionTo": "غيَّر {username} وصف المحادثة الى: '{description}'", + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "changedTheChatNameTo": "غيَّر {username} اسم المحادثة الى: '{chatname}'", + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "changedTheChatPermissions": "غيَّر {username} أذون المحادثة", + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheDisplaynameTo": "{username} غير إسمه العلني إلى: '{displayname}'", + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "changedTheGuestAccessRules": "غيّر {username} قواعد وصول الزوار", + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheGuestAccessRulesTo": "غيّر {username} قواعد وصول الزوار الى: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheHistoryVisibility": "غيَّر {username} مرئية التأريخ", + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheHistoryVisibilityTo": "غيَّر {username} مرئية التأريخ الى: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheJoinRules": "غيَّر {username} قواعد الانضمام", + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheJoinRulesTo": "غيَّر {username} قواعد الانضمام الى: {joinRules}", + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "changedTheProfileAvatar": "غيّر {username} صورته الشخصية", + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomAliases": "غيّر {username} ألقاب الغرف", + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomInvitationLink": "غيّر {username} رابط الدعوة", + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changeTheHomeserver": "غيّر الخادم", + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "changeTheme": "غيّر أسلوبك", + "@changeTheme": { + "type": "String", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "غيِّر اسم المجموعة", + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "channelCorruptedDecryptError": "فسُد التشفير", + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "chat": "محادثة", + "@chat": { + "type": "String", + "placeholders": {} + }, + "chatDetails": "تفاصيل المحادثة", + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "chooseAStrongPassword": "اختر كلمة سر قوية", + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "close": "اغلق", + "@close": { + "type": "String", + "placeholders": {} + }, + "compareEmojiMatch": "يرجى مقارنة الرموز التعبيرية", + "@compareEmojiMatch": { + "type": "String", + "placeholders": {} + }, + "compareNumbersMatch": "الرجاء مقارنة الأرقام", + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "confirm": "أكّد", + "@confirm": { + "type": "String", + "placeholders": {} + }, + "connect": "اتصل", + "@connect": { + "type": "String", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "دعيَ المراسل للمجموعة", + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "copiedToClipboard": "نُسخ للحافظة", + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "copy": "انسخ", + "@copy": { + "type": "String", + "placeholders": {} + }, + "couldNotDecryptMessage": "تعذر فك تشفير الرسالة: {error}", + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "countParticipants": "{count} منتسبا", + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "create": "أنشئ", + "@create": { + "type": "String", + "placeholders": {} + }, + "createdTheChat": "💬 أنشأ {username} المحادثة", + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "currentlyActive": "نشطٌ حاليا", + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "darkTheme": "داكن", + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "dateWithoutYear": "{month}-{day}", + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "dateWithYear": "{day}/{month}/{year}", + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "deactivateAccountWarning": "لا مجال للعودة، أتأكد تعطيل حسابك؟", + "@deactivateAccountWarning": { + "type": "String", + "placeholders": {} + }, + "delete": "احذف", + "@delete": { + "type": "String", + "placeholders": {} + }, + "deleteAccount": "احذف الحساب", + "@deleteAccount": { + "type": "String", + "placeholders": {} + }, + "deleteMessage": "حذف الرسالة", + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "device": "جهاز", + "@device": { + "type": "String", + "placeholders": {} + }, + "devices": "الأجهزة", + "@devices": { + "type": "String", + "placeholders": {} + }, + "displaynameHasBeenChanged": "غُيِّر الاسم العلني", + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "downloadFile": "نزِّل الملف", + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "editDisplayname": "حرر الاسم العلني", + "@editDisplayname": { + "type": "String", + "placeholders": {} + }, + "emoteExists": "الانفعالة موجودة مسبقا!", + "@emoteExists": { + "type": "String", + "placeholders": {} + }, + "emoteInvalid": "رمز الانفعالة غير صالح!", + "@emoteInvalid": { + "type": "String", + "placeholders": {} + }, + "emoteSettings": "اعدادات الانفعالات", + "@emoteSettings": { + "type": "String", + "placeholders": {} + }, + "emoteShortcode": "رمز الانفعالة", + "@emoteShortcode": { + "type": "String", + "placeholders": {} + }, + "emoteWarnNeedToPick": "اختر صورة ورمزا للانفعالة!", + "@emoteWarnNeedToPick": { + "type": "String", + "placeholders": {} + }, + "emptyChat": "محادثة فارغة", + "@emptyChat": { + "type": "String", + "placeholders": {} + }, + "enableEncryptionWarning": "لن يمكنك تعطيل التشفير أبدا، أمتأكد؟", + "@enableEncryptionWarning": { + "type": "String", + "placeholders": {} + }, + "encryption": "التشفير", + "@encryption": { + "type": "String", + "placeholders": {} + }, + "encryptionNotEnabled": "التشفير معطل", + "@encryptionNotEnabled": { + "type": "String", + "placeholders": {} + }, + "endedTheCall": "أنهى {senderName} المكالمة", + "@endedTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "enterYourHomeserver": "أدخل الخادم", + "@enterYourHomeserver": { + "type": "String", + "placeholders": {} + }, + "fileName": "اسم الملف", + "@fileName": { + "type": "String", + "placeholders": {} + }, + "fluffychat": "فلافي-شات", + "@fluffychat": { + "type": "String", + "placeholders": {} + }, + "forward": "أعد التوجيه", + "@forward": { + "type": "String", + "placeholders": {} + }, + "fromJoining": "من بعد الانضمام", + "@fromJoining": { + "type": "String", + "placeholders": {} + }, + "fromTheInvitation": "من بعد الدعوة", + "@fromTheInvitation": { + "type": "String", + "placeholders": {} + }, + "group": "المجموعة", + "@group": { + "type": "String", + "placeholders": {} + }, + "groupIsPublic": "المجموعة عامة", + "@groupIsPublic": { + "type": "String", + "placeholders": {} + }, + "groupWith": "في مجموعة مع {displayname}", + "@groupWith": { + "type": "String", + "placeholders": { + "displayname": { + "type": "String" + } + } + }, + "guestsAreForbidden": "يمنع الزوار", + "@guestsAreForbidden": { + "type": "String", + "placeholders": {} + }, + "guestsCanJoin": "يمكن للزوار الانضمام", + "@guestsCanJoin": { + "type": "String", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "سحب {username} دعوة {targetName}", + "@hasWithdrawnTheInvitationFor": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "help": "المساعدة", + "@help": { + "type": "String", + "placeholders": {} + }, + "id": "المعرّف", + "@id": { + "type": "String", + "placeholders": {} + }, + "identity": "المُعرّف", + "@identity": { + "type": "String", + "placeholders": {} + }, + "ignoredUsers": "المستخدمون المتجاهلون", + "@ignoredUsers": { + "type": "String", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "عبارة مرور أو مفتاح استرداد خطأ", + "@incorrectPassphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "inviteContact": "دعوة مراسل", + "@inviteContact": { + "type": "String", + "placeholders": {} + }, + "inviteContactToGroup": "أدعو مراسلا الى {groupName}", + "@inviteContactToGroup": { + "type": "String", + "placeholders": { + "groupName": { + "type": "String" + } + } + }, + "invited": "دُعيَ", + "@invited": { + "type": "String", + "placeholders": {} + }, + "invitedUser": "📩 {username} دعا {targetName}", + "@invitedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "invitedUsersOnly": "المستخدمون المدعوون فقط", + "@invitedUsersOnly": { + "type": "String", + "placeholders": {} + }, + "inviteText": "دعاك {username} إلى FluffyChat.\n1. قم بزيارة موقع fluffychat.im وقم بتثبيت التطبيق\n2. قم بإنشاءحساب أو تسجيل الدخول\n3. افتح رابط الدعوة:\n {link}", + "@inviteText": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "link": { + "type": "String" + } + } + }, + "isTyping": "يكتب…", + "@isTyping": { + "type": "String", + "placeholders": {} + }, + "joinedTheChat": "👋 انضم {username} إلى المحادثة", + "@joinedTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "joinRoom": "انضم للمحادثة", + "@joinRoom": { + "type": "String", + "placeholders": {} + }, + "kicked": "👞 {username} ركل {targetName}", + "@kicked": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickedAndBanned": "🙅 {username} ركل وحظر {targetName}", + "@kickedAndBanned": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickFromChat": "طرد من المحادثة", + "@kickFromChat": { + "type": "String", + "placeholders": {} + }, + "lastActiveAgo": "آخر نشاط: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "String", + "placeholders": { + "localizedTimeShort": { + "type": "String" + } + } + }, + "leave": "غادر", + "@leave": { + "type": "String", + "placeholders": {} + }, + "leftTheChat": "غادر المحادثة", + "@leftTheChat": { + "type": "String", + "placeholders": {} + }, + "license": "الرخصة", + "@license": { + "type": "String", + "placeholders": {} + }, + "lightTheme": "فاتح", + "@lightTheme": { + "type": "String", + "placeholders": {} + }, + "loadCountMoreParticipants": "حمِّل {count} منتسبًا إضافيًا", + "@loadCountMoreParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "loadingPleaseWait": "يحمّل… يرجى الانتظار.", + "@loadingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "loadMore": "حمِّل المزيد…", + "@loadMore": { + "type": "String", + "placeholders": {} + }, + "login": "لِج", + "@login": { + "type": "String", + "placeholders": {} + }, + "logInTo": "لِج ل {homeserver}", + "@logInTo": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "logout": "اخرج", + "@logout": { + "type": "String", + "placeholders": {} + }, + "moderator": "مشرف", + "@moderator": { + "type": "String", + "placeholders": {} + }, + "muteChat": "أكتم الماحدثة", + "@muteChat": { + "type": "String", + "placeholders": {} + }, + "needPantalaimonWarning": "اعلم أننا نستخدم بانتاليمون للتشفير طرفا لطرف.", + "@needPantalaimonWarning": { + "type": "String", + "placeholders": {} + }, + "newMessageInFluffyChat": "💬 رسالة جديدة في FluffyChat", + "@newMessageInFluffyChat": { + "type": "String", + "placeholders": {} + }, + "newVerificationRequest": "طلب تحقق جديد!", + "@newVerificationRequest": { + "type": "String", + "placeholders": {} + }, + "no": "لا", + "@no": { + "type": "String", + "placeholders": {} + }, + "noEmotesFound": "لم يُعثر على انفعالة. 😕", + "@noEmotesFound": { + "type": "String", + "placeholders": {} + }, + "noGoogleServicesWarning": "يبدو أن خدمة Firebase Cloud Messaging غير متاحة على جهازك. لمواصلة تلقي الإشعارات، نوصي بتثبيت ntfy. باستخدام ntfy أو أي مزود خدمة Unified Push آخر، يمكنك تلقي إشعارات الدفع بطريقة آمنة للبيانات. يمكنك تنزيل ntfy من PlayStore أو من F-Droid.", + "@noGoogleServicesWarning": { + "type": "String", + "placeholders": {} + }, + "none": "بدون", + "@none": { + "type": "String", + "placeholders": {} + }, + "noPermission": "بدون اذن", + "@noPermission": { + "type": "String", + "placeholders": {} + }, + "noRoomsFound": "لم يُعثر على غرف…", + "@noRoomsFound": { + "type": "String", + "placeholders": {} + }, + "ok": "موافق", + "@ok": { + "type": "String", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "تم تفعيل النسخ الاحتياطي للمفاتيح عبر الإنترنت", + "@onlineKeyBackupEnabled": { + "type": "String", + "placeholders": {} + }, + "oopsSomethingWentWrong": "عفوًا، حدث خطأ ما…", + "@oopsSomethingWentWrong": { + "type": "String", + "placeholders": {} + }, + "openAppToReadMessages": "افتح التطبيق لقراءة الرسائل", + "@openAppToReadMessages": { + "type": "String", + "placeholders": {} + }, + "openCamera": "افتح الكميرا", + "@openCamera": { + "type": "String", + "placeholders": {} + }, + "passphraseOrKey": "عبارة المرور أو مفتاح الاستعادة", + "@passphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "password": "كلمة السر", + "@password": { + "type": "String", + "placeholders": {} + }, + "passwordHasBeenChanged": "غُيّرت كلمة السر", + "@passwordHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "pickImage": "اختر صورة", + "@pickImage": { + "type": "String", + "placeholders": {} + }, + "pin": "ثبِّت", + "@pin": { + "type": "String", + "placeholders": {} + }, + "play": "شغّل {fileName}", + "@play": { + "type": "String", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "pleaseEnterYourPassword": "أدخل كلمة السر", + "@pleaseEnterYourPassword": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourUsername": "أدخل اسم المستخدم", + "@pleaseEnterYourUsername": { + "type": "String", + "placeholders": {} + }, + "privacy": "الخصوصية", + "@privacy": { + "type": "String", + "placeholders": {} + }, + "publicRooms": "الغرف العامة", + "@publicRooms": { + "type": "String", + "placeholders": {} + }, + "recording": "يسجل", + "@recording": { + "type": "String", + "placeholders": {} + }, + "redactedAnEvent": "حذف {username} حدثًا", + "@redactedAnEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "reject": "رفض", + "@reject": { + "type": "String", + "placeholders": {} + }, + "rejectedTheInvitation": "رفض {username} الدعوة", + "@rejectedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "rejoin": "أعد الانضمام", + "@rejoin": { + "type": "String", + "placeholders": {} + }, + "remove": "أزِل", + "@remove": { + "type": "String", + "placeholders": {} + }, + "removeAllOtherDevices": "أزِل كل الأجهزة الأخرى", + "@removeAllOtherDevices": { + "type": "String", + "placeholders": {} + }, + "removedBy": "أزاله {username}", + "@removedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "removeDevice": "أزل جهازا", + "@removeDevice": { + "type": "String", + "placeholders": {} + }, + "unbanFromChat": "فك حجبه من المحادثة", + "@unbanFromChat": { + "type": "String", + "placeholders": {} + }, + "reply": "ردّ", + "@reply": { + "type": "String", + "placeholders": {} + }, + "requestPermission": "أطلب إذنا", + "@requestPermission": { + "type": "String", + "placeholders": {} + }, + "roomHasBeenUpgraded": "رُقيّت الغرفة", + "@roomHasBeenUpgraded": { + "type": "String", + "placeholders": {} + }, + "seenByUser": "رآه {username}", + "@seenByUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "send": "أرسل", + "@send": { + "type": "String", + "placeholders": {} + }, + "sendAMessage": "أرسل رسالة", + "@sendAMessage": { + "type": "String", + "placeholders": {} + }, + "sendAudio": "أرسل ملفًا صوتيًا", + "@sendAudio": { + "type": "String", + "placeholders": {} + }, + "sendFile": "أرسل ملف", + "@sendFile": { + "type": "String", + "placeholders": {} + }, + "sendImage": "أرسل صورة", + "@sendImage": { + "type": "String", + "placeholders": {} + }, + "sendOriginal": "أرسل الملف الأصلي", + "@sendOriginal": { + "type": "String", + "placeholders": {} + }, + "sendVideo": "أرسل فيديو", + "@sendVideo": { + "type": "String", + "placeholders": {} + }, + "sentAFile": "📁 أرسل {username} ملفا", + "@sentAFile": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAnAudio": "🎤 أرسل {username} ملفا صوتيا", + "@sentAnAudio": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAPicture": "🖼️ {username} أرسل صورة", + "@sentAPicture": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentASticker": "😊 أرسل {username} ملصقا", + "@sentASticker": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAVideo": "🎥 أرسل {username} مقطع فيديو", + "@sentAVideo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentCallInformations": "أرسل {senderName} معلومات مكالمة", + "@sentCallInformations": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "setInvitationLink": "عيّن رابط الدعوة", + "@setInvitationLink": { + "type": "String", + "placeholders": {} + }, + "setStatus": "عيّن الحالة", + "@setStatus": { + "type": "String", + "placeholders": {} + }, + "settings": "الإعدادات", + "@settings": { + "type": "String", + "placeholders": {} + }, + "share": "شارك", + "@share": { + "type": "String", + "placeholders": {} + }, + "sharedTheLocation": "شارك {username} موقعه", + "@sharedTheLocation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "skip": "تخط", + "@skip": { + "type": "String", + "placeholders": {} + }, + "sourceCode": "الشفرة المصدرية", + "@sourceCode": { + "type": "String", + "placeholders": {} + }, + "startedACall": "بدأ {senderName} مكالمة", + "@startedACall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "statusExampleMessage": "ماهو وضعك؟", + "@statusExampleMessage": { + "type": "String", + "placeholders": {} + }, + "submit": "أرسل", + "@submit": { + "type": "String", + "placeholders": {} + }, + "systemTheme": "النظام", + "@systemTheme": { + "type": "String", + "placeholders": {} + }, + "theyDontMatch": "لا يتطبقان", + "@theyDontMatch": { + "type": "String", + "placeholders": {} + }, + "theyMatch": "متطبقان", + "@theyMatch": { + "type": "String", + "placeholders": {} + }, + "title": "فلافي-شات", + "@title": { + "description": "Title for the application", + "type": "String", + "placeholders": {} + }, + "tryToSendAgain": "حاول إعادة الارسال", + "@tryToSendAgain": { + "type": "String", + "placeholders": {} + }, + "unbannedUser": "ألغى {username} حظر {targetName}", + "@unbannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "unblockDevice": "ألغ حظر الجهاز", + "@unblockDevice": { + "type": "String", + "placeholders": {} + }, + "unknownDevice": "جهز مجهول", + "@unknownDevice": { + "type": "String", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "خوارزمية تشفير مجهولة", + "@unknownEncryptionAlgorithm": { + "type": "String", + "placeholders": {} + }, + "unknownEvent": "حدث مجهول '{type}'", + "@unknownEvent": { + "type": "String", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "unmuteChat": "ألغِ كتم المحادثة", + "@unmuteChat": { + "type": "String", + "placeholders": {} + }, + "unpin": "ألغِ التثبيت", + "@unpin": { + "type": "String", + "placeholders": {} + }, + "unreadChats": "{unreadCount, plural, =1{1 محادثة غير مقروءة} other{{unreadCount} محادثات غير مقروءة}}", + "@unreadChats": { + "type": "String", + "placeholders": { + "unreadCount": { + "type": "int" + } + } + }, + "userAndOthersAreTyping": "{username} و {count} أخرون يكتبون…", + "@userAndOthersAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "userAndUserAreTyping": "{username} و {username2} يكتبان…", + "@userAndUserAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "username2": { + "type": "String" + } + } + }, + "userIsTyping": "{username} يكتب…", + "@userIsTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "userLeftTheChat": "🚪 {username} غادر المحادثة", + "@userLeftTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "username": "اسم المستخدم", + "@username": { + "type": "String", + "placeholders": {} + }, + "userSentUnknownEvent": "أرسل {username} حدث {type}", + "@userSentUnknownEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "type": { + "type": "String" + } + } + }, + "verify": "تحقق", + "@verify": { + "type": "String", + "placeholders": {} + }, + "verifyStart": "ابدأ التحقق", + "@verifyStart": { + "type": "String", + "placeholders": {} + }, + "verifySuccess": "تُحقق منك بنجاح!", + "@verifySuccess": { + "type": "String", + "placeholders": {} + }, + "verifyTitle": "يتحقق من الحساب الآخر", + "@verifyTitle": { + "type": "String", + "placeholders": {} + }, + "videoCall": "مكالمة فيديو", + "@videoCall": { + "type": "String", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "مرئية تأريخ المحادثة", + "@visibilityOfTheChatHistory": { + "type": "String", + "placeholders": {} + }, + "visibleForAllParticipants": "مرئي لكل المنتسبين", + "@visibleForAllParticipants": { + "type": "String", + "placeholders": {} + }, + "visibleForEveryone": "مرئي للجميع", + "@visibleForEveryone": { + "type": "String", + "placeholders": {} + }, + "voiceMessage": "رسالة صوتية", + "@voiceMessage": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "ينتظر قبول الشريك للطلب…", + "@waitingPartnerAcceptRequest": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerEmoji": "ينتظر قبول الشريك لإيموجي…", + "@waitingPartnerEmoji": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerNumbers": "ينتظر قبول الشريك للأرقام…", + "@waitingPartnerNumbers": { + "type": "String", + "placeholders": {} + }, + "wallpaper": "الخلفية:", + "@wallpaper": { + "type": "String", + "placeholders": {} + }, + "warning": "تحذير!", + "@warning": { + "type": "String", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "من يسمح له الانضمام للمجموعة", + "@whoIsAllowedToJoinThisGroup": { + "type": "String", + "placeholders": {} + }, + "writeAMessage": "اكتب رسالة…", + "@writeAMessage": { + "type": "String", + "placeholders": {} + }, + "yes": "نعم", + "@yes": { + "type": "String", + "placeholders": {} + }, + "you": "انت", + "@you": { + "type": "String", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "لم تعد منتسبا لهذه المحادثة", + "@youAreNoLongerParticipatingInThisChat": { + "type": "String", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "حُظرت من هذه المحادثة", + "@youHaveBeenBannedFromThisChat": { + "type": "String", + "placeholders": {} + }, + "people": "أشخاص", + "@people": { + "type": "String", + "placeholders": {} + }, + "scanQrCode": "امسح رمز الاستجابة السريعة", + "@scanQrCode": {}, + "noMatrixServer": "{server1} ليس خادم ماتريكس، بدلًا منه أتريد استخدام {server2}؟", + "@noMatrixServer": { + "type": "String", + "placeholders": { + "server1": { + "type": "String" + }, + "server2": { + "type": "String" + } + } + }, + "noConnectionToTheServer": "انقطع الاتصال بالخادم", + "@noConnectionToTheServer": { + "type": "String", + "placeholders": {} + }, + "next": "التالي", + "@next": { + "type": "String", + "placeholders": {} + }, + "newChat": "محادثة جديدة", + "@newChat": { + "type": "String", + "placeholders": {} + }, + "messages": "الرسائل", + "@messages": { + "type": "String", + "placeholders": {} + }, + "mention": "اذكر", + "@mention": { + "type": "String", + "placeholders": {} + }, + "memberChanges": "تغييرات تخص الأعضاء", + "@memberChanges": { + "type": "String", + "placeholders": {} + }, + "inoffensive": "غير مسيء", + "@inoffensive": { + "type": "String", + "placeholders": {} + }, + "iHaveClickedOnLink": "نقرت على الرابط", + "@iHaveClickedOnLink": { + "type": "String", + "placeholders": {} + }, + "ignore": "تجاهل", + "@ignore": { + "type": "String", + "placeholders": {} + }, + "howOffensiveIsThisContent": "ما مدى سوء هذا المحتوى؟", + "@howOffensiveIsThisContent": { + "type": "String", + "placeholders": {} + }, + "hideUnknownEvents": "اخف الأحداث المجهولة", + "@hideUnknownEvents": { + "type": "String", + "placeholders": {} + }, + "groups": "المجموعات", + "@groups": { + "type": "String", + "placeholders": {} + }, + "goToTheNewRoom": "انتقل للغرفة الجديدة", + "@goToTheNewRoom": { + "type": "String", + "placeholders": {} + }, + "fontSize": "حجم الخط", + "@fontSize": { + "type": "String", + "placeholders": {} + }, + "extremeOffensive": "مسيئة للغاية", + "@extremeOffensive": { + "type": "String", + "placeholders": {} + }, + "everythingReady": "كل شيء جاهز!", + "@everythingReady": { + "type": "String", + "placeholders": {} + }, + "homeserver": "الخادم", + "@homeserver": {}, + "enterAnEmailAddress": "أدخل عنوان بريد إلكتروني", + "@enterAnEmailAddress": { + "type": "String", + "placeholders": {} + }, + "encrypted": "مشفر", + "@encrypted": { + "type": "String", + "placeholders": {} + }, + "enableEncryption": "فعّل التشفير", + "@enableEncryption": { + "type": "String", + "placeholders": {} + }, + "emotePacks": "حزمة الوجوه التعبيرية للغرفة", + "@emotePacks": { + "type": "String", + "placeholders": {} + }, + "editRoomAvatar": "عدّل الصورة الرمزية للغرفة", + "@editRoomAvatar": { + "type": "String", + "placeholders": {} + }, + "editBlockedServers": "عدّل الخوادم المحجوبة", + "@editBlockedServers": { + "type": "String", + "placeholders": {} + }, + "edit": "عدّل", + "@edit": { + "type": "String", + "placeholders": {} + }, + "directChats": "محادثات مباشرة", + "@directChats": { + "type": "String", + "placeholders": {} + }, + "deviceId": "معرّف الجهاز", + "@deviceId": { + "type": "String", + "placeholders": {} + }, + "createNewSpace": "مساحة جديدة", + "@createNewSpace": { + "type": "String", + "placeholders": {} + }, + "copyToClipboard": "انسخ الى الحافظة", + "@copyToClipboard": { + "type": "String", + "placeholders": {} + }, + "contentHasBeenReported": "أّرسل الابلاغ الى مدير الخادم", + "@contentHasBeenReported": { + "type": "String", + "placeholders": {} + }, + "containsUserName": "يحوي اسم المستخدم", + "@containsUserName": { + "type": "String", + "placeholders": {} + }, + "containsDisplayName": "يحوي الاسم العلني", + "@containsDisplayName": { + "type": "String", + "placeholders": {} + }, + "commandMissing": "{command} ليس بأمر.", + "@commandMissing": { + "type": "String", + "placeholders": { + "command": { + "type": "String" + } + }, + "description": "State that {command} is not a valid /command." + }, + "commandInvalid": "أمر غير صالح", + "@commandInvalid": { + "type": "String" + }, + "commandHint_unban": "فك الحظر عن المستخدم المذكور في هذه الغرفة", + "@commandHint_unban": { + "type": "String", + "description": "Usage hint for the command /unban" + }, + "commandHint_send": "أرسل نصًا", + "@commandHint_send": { + "type": "String", + "description": "Usage hint for the command /send" + }, + "commandHint_react": "أرسل ردًا كتفاعل", + "@commandHint_react": { + "type": "String", + "description": "Usage hint for the command /react" + }, + "commandHint_plain": "أرسل نصًا غير منسق", + "@commandHint_plain": { + "type": "String", + "description": "Usage hint for the command /plain" + }, + "commandHint_op": "عين مستوى نفوذ المستخدم في هذه الغرفة (الافتراضي: 50)", + "@commandHint_op": { + "type": "String", + "description": "Usage hint for the command /op" + }, + "commandHint_myroomnick": "عين اسمًا لك مخصص لهذه الغرفة", + "@commandHint_myroomnick": { + "type": "String", + "description": "Usage hint for the command /myroomnick" + }, + "commandHint_me": "صف نفسك", + "@commandHint_me": { + "type": "String", + "description": "Usage hint for the command /me" + }, + "commandHint_leave": "تغادر هذه الغرفة", + "@commandHint_leave": { + "type": "String", + "description": "Usage hint for the command /leave" + }, + "commandHint_kick": "يزيل المستخدم المذكور من الغرفة", + "@commandHint_kick": { + "type": "String", + "description": "Usage hint for the command /kick" + }, + "commandHint_join": "تنضم الى الغرفة المذكورة", + "@commandHint_join": { + "type": "String", + "description": "Usage hint for the command /join" + }, + "commandHint_invite": "يدعو المستخدم المذكور الى الغرفة", + "@commandHint_invite": { + "type": "String", + "description": "Usage hint for the command /invite" + }, + "commandHint_html": "أرسل نصًا بتنسيق HTML", + "@commandHint_html": { + "type": "String", + "description": "Usage hint for the command /html" + }, + "commandHint_ban": "يحظر المستخدم المذكور من هذه الغرفة", + "@commandHint_ban": { + "type": "String", + "description": "Usage hint for the command /ban" + }, + "clearArchive": "امسح الأرشيف", + "@clearArchive": {}, + "chats": "المحادثات", + "@chats": { + "type": "String", + "placeholders": {} + }, + "chatHasBeenAddedToThisSpace": "أُضيفت المحادثة الى هذا المساحة", + "@chatHasBeenAddedToThisSpace": {}, + "chatBackup": "النسخ الاحتياطي للمحادثات", + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "changeYourAvatar": "غيّر الصورة الرمزية", + "@changeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "changePassword": "غيّر كلمة السر", + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "changeDeviceName": "غيّر اسم الجهاز", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "cantOpenUri": "تعذر فتح المسار {uri}", + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "blocked": "محجوب", + "@blocked": { + "type": "String", + "placeholders": {} + }, + "sendOnEnter": "أرسل عند الدخول", + "@sendOnEnter": {}, + "autoplayImages": "شغِّل الملصقات والوجوه المتحركة تلقائيا", + "@autoplayImages": { + "type": "String", + "placeholder": {} + }, + "areYouSureYouWantToLogout": "أمتأكد من الخروج؟", + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "appLock": "قفل التطبيق", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "allChats": "كل المحادثات", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "all": "الكل", + "@all": { + "type": "String", + "placeholders": {} + }, + "addToSpace": "أضف إلى المساحة", + "@addToSpace": {}, + "addEmail": "أضف بريدًا إلكترونيًا", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "لم تضف أي طريقة لاستعادة كلمة السر.", + "@noPasswordRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "notifications": "الإشعارات", + "@notifications": { + "type": "String", + "placeholders": {} + }, + "reason": "السبب", + "@reason": { + "type": "String", + "placeholders": {} + }, + "search": "ابحث", + "@search": { + "type": "String", + "placeholders": {} + }, + "locationDisabledNotice": "خدمات الموقع معطلة. مكنها لتتمكن من مشاركة موقعك.", + "@locationDisabledNotice": { + "type": "String", + "placeholders": {} + }, + "errorObtainingLocation": "خطأ أثناء الحصول على الموقع: {error}", + "@errorObtainingLocation": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "editRoomAliases": "عدّل الاسم المميز للغرفة", + "@editRoomAliases": { + "type": "String", + "placeholders": {} + }, + "configureChat": "ضبط المحادثة", + "@configureChat": { + "type": "String", + "placeholders": {} + }, + "chatBackupDescription": "يتم تأمين رسائلك القديمة باستخدام مفتاح الاسترداد. يرجى التأكد من أنك لا تضيعه.", + "@chatBackupDescription": { + "type": "String", + "placeholders": {} + }, + "shareLocation": "شارك الموقع", + "@shareLocation": { + "type": "String", + "placeholders": {} + }, + "pleaseChooseAPasscode": "اختر رمز المرور", + "@pleaseChooseAPasscode": { + "type": "String", + "placeholders": {} + }, + "pleaseChoose": "اختر رجاء", + "@pleaseChoose": { + "type": "String", + "placeholders": {} + }, + "passwordRecovery": "استعادة كلمة السر", + "@passwordRecovery": { + "type": "String", + "placeholders": {} + }, + "passwordForgotten": "نسيتَ كلمة السر", + "@passwordForgotten": { + "type": "String", + "placeholders": {} + }, + "participant": "منتسب", + "@participant": { + "type": "String", + "placeholders": {} + }, + "or": "أو", + "@or": { + "type": "String", + "placeholders": {} + }, + "serverRequiresEmail": "يتطلب هذا الخادم التحقق من بريدك الإلكتروني.", + "@serverRequiresEmail": {}, + "link": "رابط", + "@link": {}, + "openInMaps": "افتح في الخريطة", + "@openInMaps": { + "type": "String", + "placeholders": {} + }, + "enableMultiAccounts": "(ميزة تجربية) فعّل تعدد الحسابات", + "@enableMultiAccounts": {}, + "bundleName": "اسم الحزمة", + "@bundleName": {}, + "removeFromBundle": "أزله من الحزمة", + "@removeFromBundle": {}, + "addToBundle": "أضفه الى حزمة", + "@addToBundle": {}, + "editBundlesForAccount": "عدّل حزم هذا الحساب", + "@editBundlesForAccount": {}, + "addAccount": "أضف حسابًا", + "@addAccount": {}, + "online": "متصل", + "@online": { + "type": "String", + "placeholders": {} + }, + "offline": "غير متصل", + "@offline": { + "type": "String", + "placeholders": {} + }, + "numUsersTyping": "{count} يكتبون…", + "@numUsersTyping": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notificationsEnabledForThisAccount": "الإشعارات مفعلة لهذا الحساب", + "@notificationsEnabledForThisAccount": { + "type": "String", + "placeholders": {} + }, + "spaceIsPublic": "عام في المساحة", + "@spaceIsPublic": { + "type": "String", + "placeholders": {} + }, + "toggleFavorite": "بدّل حالة التفضيل", + "@toggleFavorite": { + "type": "String", + "placeholders": {} + }, + "toggleUnread": "علّمه كمقروء/غير مقروء", + "@toggleUnread": { + "type": "String", + "placeholders": {} + }, + "unavailable": "غير متوفر", + "@unavailable": { + "type": "String", + "placeholders": {} + }, + "whyDoYouWantToReportThis": "لماذا تريد الإبلاغ عنه؟", + "@whyDoYouWantToReportThis": { + "type": "String", + "placeholders": {} + }, + "withTheseAddressesRecoveryDescription": "يمكنك استعادة كلمة السر بهذه العناوين.", + "@withTheseAddressesRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "singlesignon": "تسجيل دخول أحادي", + "@singlesignon": { + "type": "String", + "placeholders": {} + }, + "toggleMuted": "بدّل حالة الكتم", + "@toggleMuted": { + "type": "String", + "placeholders": {} + }, + "showPassword": "أظهر كلمة السر", + "@showPassword": { + "type": "String", + "placeholders": {} + }, + "verified": "موثّق", + "@verified": { + "type": "String", + "placeholders": {} + }, + "spaceName": "اسم المساحة", + "@spaceName": { + "type": "String", + "placeholders": {} + }, + "synchronizingPleaseWait": "يُزامن… يرجى الانتظار.", + "@synchronizingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "tooManyRequestsWarning": "طابات كثيرة. حاول مجددًا لاحقًا!", + "@tooManyRequestsWarning": { + "type": "String", + "placeholders": {} + }, + "weSentYouAnEmail": "أرسلنا لك رسالة بالبريد الإلكتروني", + "@weSentYouAnEmail": { + "type": "String", + "placeholders": {} + }, + "yourPublicKey": "مفتاحك العمومي", + "@yourPublicKey": { + "type": "String", + "placeholders": {} + }, + "status": "الحالة", + "@status": { + "type": "String", + "placeholders": {} + }, + "transferFromAnotherDevice": "أنقله من جهاز آخر", + "@transferFromAnotherDevice": { + "type": "String", + "placeholders": {} + }, + "wipeChatBackup": "مسح نسخة المحادثة الاحتياطية لإنشاء مفتاح استرداد جديد؟", + "@wipeChatBackup": { + "type": "String", + "placeholders": {} + }, + "saveFile": "احفظ الملف", + "@saveFile": { + "type": "String", + "placeholders": {} + }, + "security": "الأمان", + "@security": { + "type": "String", + "placeholders": {} + }, + "removeYourAvatar": "أزل الصورة الرمزية", + "@removeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "botMessages": "رسائل البوت", + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "sendAsText": "أرسل نصًا", + "@sendAsText": { + "type": "String" + }, + "sendMessages": "إرسال رسائل", + "@sendMessages": { + "type": "String", + "placeholders": {} + }, + "inviteForMe": "دعوات لي", + "@inviteForMe": { + "type": "String", + "placeholders": {} + }, + "replaceRoomWithNewerVersion": "استبدل الغرفة باصدار أحدث", + "@replaceRoomWithNewerVersion": { + "type": "String", + "placeholders": {} + }, + "register": "سجّل", + "@register": { + "type": "String", + "placeholders": {} + }, + "obtainingLocation": "يحصل على الموقع…", + "@obtainingLocation": { + "type": "String", + "placeholders": {} + }, + "sendSticker": "أرسل ملصقًا", + "@sendSticker": { + "type": "String", + "placeholders": {} + }, + "defaultPermissionLevel": "مستوى الأذونات الافتراضية للمستخدمين الجدد", + "@defaultPermissionLevel": { + "type": "String", + "placeholders": {} + }, + "setPermissionsLevel": "تعيين مستوى الأذونات", + "@setPermissionsLevel": { + "type": "String", + "placeholders": {} + }, + "setCustomEmotes": "عيّن وجوهًا تعبيرية مخصصة", + "@setCustomEmotes": { + "type": "String", + "placeholders": {} + }, + "oneClientLoggedOut": "أُ خرج أحد العملاء الذي تسختدمها", + "@oneClientLoggedOut": {}, + "pleaseEnter4Digits": "أدخل 4 أرقام أو أتركه فارغ لتعطيل القفل.", + "@pleaseEnter4Digits": { + "type": "String", + "placeholders": {} + }, + "redactMessage": "احذف رسالة", + "@redactMessage": { + "type": "String", + "placeholders": {} + }, + "reportMessage": "أبلغ عن الرسالة", + "@reportMessage": { + "type": "String", + "placeholders": {} + }, + "roomVersion": "إصدار الغرفة", + "@roomVersion": { + "type": "String", + "placeholders": {} + }, + "repeatPassword": "كرّر كلمة السر", + "@repeatPassword": {}, + "removeFromSpace": "أزل من المساحة", + "@removeFromSpace": {}, + "unverified": "غير مؤكد", + "@unverified": {}, + "whoCanPerformWhichAction": "من يستطيع القيام بأي عمل", + "@whoCanPerformWhichAction": { + "type": "String", + "placeholders": {} + }, + "messageInfo": "معلومات الرسالة", + "@messageInfo": {}, + "messageType": "نوع الرسالة", + "@messageType": {}, + "sender": "المرسل", + "@sender": {}, + "openGallery": "افتخ المعرض", + "@openGallery": {}, + "time": "الوقت", + "@time": {}, + "badServerLoginTypesException": "يدعم الخادم المستخدم أنواع تسجيل الدخول التالية:\n{serverVersions}\nلكن هذا التطبيق يدعم فقط:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "commandHint_clearcache": "مسح الذاكرة المؤقتة", + "@commandHint_clearcache": { + "type": "String", + "description": "Usage hint for the command /clearcache" + }, + "enableEmotesGlobally": "تفعيل حزمة التعبيرات بشكل عام", + "@enableEmotesGlobally": { + "type": "String", + "placeholders": {} + }, + "hideRedactedEvents": "إخفاء الأحداث المنقحة", + "@hideRedactedEvents": { + "type": "String", + "placeholders": {} + }, + "commandHint_discardsession": "إنهاء الجلسة", + "@commandHint_discardsession": { + "type": "String", + "description": "Usage hint for the command /discardsession" + }, + "locationPermissionDeniedNotice": "تم رفض إذن الموقع. الرجاء منح الإذن للقدرة على مشاركة موقعك.", + "@locationPermissionDeniedNotice": { + "type": "String", + "placeholders": {} + }, + "badServerVersionsException": "يدعم الخادم الرئيسي المستخدم إصدارات المواصفات:\n{serverVersions}\nلكن هذا التطبيق يدعم فقط:\n{supportedVersions}", + "@badServerVersionsException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "offensive": "عدواني", + "@offensive": { + "type": "String", + "placeholders": {} + }, + "yourChatBackupHasBeenSetUp": "تم إعداد النسخ الاحتياطي لمحادثاتك.", + "@yourChatBackupHasBeenSetUp": {}, + "noEncryptionForPublicRooms": "يمكنك فقط تفعيل التشفير عندما تصبح الغرفة غير متاحة للعامة.", + "@noEncryptionForPublicRooms": { + "type": "String", + "placeholders": {} + }, + "emojis": "إيموجي", + "@emojis": {}, + "voiceCall": "مكالمة صوتية", + "@voiceCall": {}, + "unsupportedAndroidVersion": "نسخة أندرويد غير مدعومة", + "@unsupportedAndroidVersion": {}, + "unsupportedAndroidVersionLong": "تتطلب هذه الميزة إصدار Android أحدث. يرجى التحقق من وجود تحديثات أو دعم Lineage OS.", + "@unsupportedAndroidVersionLong": {}, + "experimentalVideoCalls": "مكالمات الفيديو التجريبية", + "@experimentalVideoCalls": {}, + "commandHint_create": "أنشأ محادثة جماعية فارغة\nاستخدم --لا-تشفير لتعطيل التشفير", + "@commandHint_create": { + "type": "String", + "description": "Usage hint for the command /create" + }, + "commandHint_dm": "إبدأ محادثة مباشرة\nاستخدم --لا-تشفير لتعطيل التشفير", + "@commandHint_dm": { + "type": "String", + "description": "Usage hint for the command /dm" + }, + "oopsPushError": "عذراً! للأسف، حدث خطأ أثناء إعداد الإشعارات.", + "@oopsPushError": { + "type": "String", + "placeholders": {} + }, + "pleaseFollowInstructionsOnWeb": "يرجى اتباع التعليمات الموجودة على الموقع والنقر على التالي.", + "@pleaseFollowInstructionsOnWeb": { + "type": "String", + "placeholders": {} + }, + "commandHint_myroomavatar": "حدد صورتك لهذه الغرفة (عن طريق mxc-uri)", + "@commandHint_myroomavatar": { + "type": "String", + "description": "Usage hint for the command /myroomavatar" + }, + "videoCallsBetaWarning": "يرجى ملاحظة أن مكالمات الفيديو حالياً في مرحلة تجريبية. قد لا تعمل كما هو متوقع أو تعمل على الإطلاق على جميع المنصات.", + "@videoCallsBetaWarning": {}, + "placeCall": "إجراء مكالمة", + "@placeCall": {}, + "videoWithSize": "فيديو ({size})", + "@videoWithSize": { + "type": "String", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "emailOrUsername": "البريد الإلكتروني أو اسم المستخدم", + "@emailOrUsername": {}, + "dismiss": "رفض", + "@dismiss": {}, + "setAsCanonicalAlias": "تعيين كاسم مستعار رئيسي", + "@setAsCanonicalAlias": { + "type": "String", + "placeholders": {} + }, + "pleaseClickOnLink": "يرجى النقر على الرابط الموجود في البريد الإلكتروني ثم المتابعة.", + "@pleaseClickOnLink": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPin": "الرجاء إدخال رقم التعريف الشخصي الخاص بك", + "@pleaseEnterYourPin": { + "type": "String", + "placeholders": {} + }, + "pushRules": "قواعد الإشعارات", + "@pushRules": { + "type": "String", + "placeholders": {} + }, + "reactedWith": "{sender} تفاعل ب {reaction}", + "@reactedWith": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "reaction": { + "type": "String" + } + } + }, + "markAsRead": "حدد كمقروء", + "@markAsRead": {}, + "openVideoCamera": "افتح الكاميرا لمقطع فيديو", + "@openVideoCamera": { + "type": "String", + "placeholders": {} + }, + "start": "إبدأ", + "@start": {}, + "publish": "انشر", + "@publish": {}, + "addToSpaceDescription": "إختر مساحة لإضافة هذه المحادثة إليها.", + "@addToSpaceDescription": {}, + "reportUser": "التبيلغ عن المستخدم", + "@reportUser": {}, + "openChat": "فتح المحادثة", + "@openChat": {}, + "pinMessage": "تثبيت في الغرفة", + "@pinMessage": {}, + "confirmEventUnpin": "هل أنت متأكد من إلغاء تثبيت الحدث بشكل دائم؟", + "@confirmEventUnpin": {}, + "fileHasBeenSavedAt": "تم حفظ الملف في {path}", + "@fileHasBeenSavedAt": { + "type": "String", + "placeholders": { + "path": { + "type": "String" + } + } + }, + "user": "مستخدم", + "@user": {}, + "custom": "مُخصّص", + "@custom": {}, + "googlyEyesContent": "{senderName} يرسل لك عيون googly", + "@googlyEyesContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "widgetVideo": "فيديو", + "@widgetVideo": {}, + "recoveryKeyLost": "هل فقدت مفتاح الاسترداد؟", + "@recoveryKeyLost": {}, + "pleaseEnterRecoveryKeyDescription": "لإلغاء قفل رسائلك القديمة ، يرجى إدخال مفتاح الاسترداد الذي تم إنشاؤه في جلسة سابقة. مفتاح الاسترداد ليس كلمة المرور الخاصة بك.", + "@pleaseEnterRecoveryKeyDescription": {}, + "confirmMatrixId": "يرجى تأكيد معرف Matrix الخاص بك من أجل حذف حسابك.", + "@confirmMatrixId": {}, + "supposedMxid": "يجب أن يكون هذا {mxid}", + "@supposedMxid": { + "type": "String", + "placeholders": { + "mxid": { + "type": "String" + } + } + }, + "hydrateTor": "مستخدمو تور: استيراد تصدير الجلسة", + "@hydrateTor": {}, + "commandHint_googly": "أرسل بعض عيون googly", + "@commandHint_googly": {}, + "commandHint_cuddle": "أرسل عناق", + "@commandHint_cuddle": {}, + "commandHint_hug": "إرسال حضن", + "@commandHint_hug": {}, + "cuddleContent": "{senderName} يحتضنك", + "@cuddleContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "unlockOldMessages": "إلغاء قفل الرسائل القديمة", + "@unlockOldMessages": {}, + "commandHint_markasdm": "وضع علامة على أنها غرفة رسائل مباشرة لمعرف المصفوفة", + "@commandHint_markasdm": {}, + "allRooms": "جميع الدردشات الجماعية", + "@allRooms": { + "type": "String", + "placeholders": {} + }, + "dehydrate": "تصدير الجلسة ومسح الجهاز", + "@dehydrate": {}, + "dehydrateWarning": "لا يمكن التراجع عن هذا الإجراء. تأكد من تخزين ملف النسخ الاحتياطي بأمان.", + "@dehydrateWarning": {}, + "dehydrateTorLong": "بالنسبة لمستخدمي تور ، يوصى بتصدير الجلسة قبل إغلاق النافذة.", + "@dehydrateTorLong": {}, + "dehydrateTor": "مستخدمو تور: تصدير الجلسة", + "@dehydrateTor": {}, + "hydrate": "استعادة من ملف النسخ الاحتياطي", + "@hydrate": {}, + "pleaseEnterRecoveryKey": "الرجاء إدخال مفتاح الاسترداد:", + "@pleaseEnterRecoveryKey": {}, + "recoveryKey": "مفتاح الاسترداد", + "@recoveryKey": {}, + "startFirstChat": "ابدأ محادثتك الأولى", + "@startFirstChat": {}, + "widgetCustom": "مُخصّص", + "@widgetCustom": {}, + "widgetNameError": "يرجى تقديم اسم العرض.", + "@widgetNameError": {}, + "errorAddingWidget": "خطأ في إضافة الأداة.", + "@errorAddingWidget": {}, + "youRejectedTheInvitation": "لقد رفضت الدعوة", + "@youRejectedTheInvitation": {}, + "youJoinedTheChat": "لقد انضممت إلى المحادثة", + "@youJoinedTheChat": {}, + "youAcceptedTheInvitation": "👍 لقد قبلت الدعوة", + "@youAcceptedTheInvitation": {}, + "youBannedUser": "لقد حظرت {user}", + "@youBannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youHaveWithdrawnTheInvitationFor": "لقد سحبت الدعوة لـ {user}", + "@youHaveWithdrawnTheInvitationFor": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youInvitedBy": "📩 لقد تمت دعوتك من قبل {user}", + "@youInvitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "storeInAndroidKeystore": "تخزين في سجل مفاتيح اندرويد", + "@storeInAndroidKeystore": {}, + "storeInAppleKeyChain": "تخزين في سلسلة مفاتيح ابل", + "@storeInAppleKeyChain": {}, + "storeSecurlyOnThisDevice": "احفظه بأمان على هذا الجهاز", + "@storeSecurlyOnThisDevice": {}, + "countFiles": "ملفات {count}", + "@countFiles": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "foregroundServiceRunning": "يظهر هذا الإشعار عند تشغيل الخدمة الأمامية.", + "@foregroundServiceRunning": {}, + "screenSharingTitle": "مشاركة الشاشة", + "@screenSharingTitle": {}, + "appearOnTop": "يظهر في الأعلى", + "@appearOnTop": {}, + "otherCallingPermissions": "الميكروفون والكاميرا وأذونات FluffyChat الأخرى", + "@otherCallingPermissions": {}, + "enterSpace": "أدخل المساحة", + "@enterSpace": {}, + "enterRoom": "أدخل الغرفة", + "@enterRoom": {}, + "deviceKeys": "مفاتيح الجهاز:", + "@deviceKeys": {}, + "whyIsThisMessageEncrypted": "لماذا هذه الرسالة غير قابلة للقراءة؟", + "@whyIsThisMessageEncrypted": {}, + "nextAccount": "الحساب التالي", + "@nextAccount": {}, + "previousAccount": "الحساب السابق", + "@previousAccount": {}, + "encryptThisChat": "تشفير هذه المحادثة", + "@encryptThisChat": {}, + "screenSharingDetail": "أنت تشارك شاشتك في FuffyChat", + "@screenSharingDetail": {}, + "hideUnimportantStateEvents": "إخفاء أحداث الحالة غير المهمة", + "@hideUnimportantStateEvents": {}, + "newGroup": "مجموعة جديدة", + "@newGroup": {}, + "youKicked": "👞 لقد ركلت {user}", + "@youKicked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "newSpace": "مساحة جديدة", + "@newSpace": {}, + "commandHint_markasgroup": "وضع علامة كمجموعة", + "@commandHint_markasgroup": {}, + "separateChatTypes": "الدردشات المباشرة والمجموعات المنفصلة", + "@separateChatTypes": { + "type": "String", + "placeholders": {} + }, + "hugContent": "{senderName} يعانقك", + "@hugContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "hydrateTorLong": "هل قمت بتصدير جلستك الأخيرة على تور؟ قم باستيرادها بسرعة واستمر في المحادثة.", + "@hydrateTorLong": {}, + "widgetUrlError": "هذا ليس عنوان URL صالحًا.", + "@widgetUrlError": {}, + "indexedDbErrorTitle": "مشاكل الوضع الخاص", + "@indexedDbErrorTitle": {}, + "indexedDbErrorLong": "للأسف ، لم يتم تمكين تخزين الرسائل في الوضع الخاص افتراضيا.\nيرجى زيارة\n - حول:التكوين\n - تعيين dom.indexedDB.privateBrowsing.enabled إلى true\nخلاف ذلك ، لا يمكن تشغيل FluffyChat.", + "@indexedDbErrorLong": {}, + "switchToAccount": "التبديل إلى الحساب {number}", + "@switchToAccount": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "addWidget": "إضافة اداة", + "@addWidget": {}, + "widgetEtherpad": "ملاحظة نصية", + "@widgetEtherpad": {}, + "youKickedAndBanned": "🙅 لقد ركلت وحظرت {user}", + "@youKickedAndBanned": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youUnbannedUser": "قمت بإلغاء الحظر {user}", + "@youUnbannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "saveKeyManuallyDescription": "احفظ هذا المفتاح يدويا عن طريق تشغيل مربع حوار مشاركة النظام أو الحافظة.", + "@saveKeyManuallyDescription": {}, + "widgetJitsi": "اجتماعات جيتسي", + "@widgetJitsi": {}, + "youInvitedUser": "📩 قمت بدعوة {user}", + "@youInvitedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "storeInSecureStorageDescription": "قم بتخزين مفتاح الاسترداد في التخزين الآمن لهذا الجهاز.", + "@storeInSecureStorageDescription": {}, + "widgetName": "الاسم", + "@widgetName": {}, + "users": "المستخدمون", + "@users": {}, + "callingPermissions": "أذونات الاتصال", + "@callingPermissions": {}, + "callingAccount": "الاتصال بالحساب", + "@callingAccount": {}, + "callingAccountDetails": "يسمح لـ FluffyChat باستخدام تطبيق android Dialer الأصلي.", + "@callingAccountDetails": {}, + "appearOnTopDetails": "يسمح للتطبيق بالظهور في الأعلى (ليست هناك حاجة إذا قمت بالفعل بإعداد Fluffychat كحساب اتصال)", + "@appearOnTopDetails": {}, + "numChats": "{number} الدردشات", + "@numChats": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "jump": "قفز", + "@jump": {}, + "report": "الإبلاغ", + "@report": {}, + "noKeyForThisMessage": "يمكن أن يحدث هذا إذا تم إرسال الرسالة قبل تسجيل الدخول إلى حسابك على هذا الجهاز.\n\nمن الممكن أيضا أن يكون المرسل قد حظر جهازك أو حدث خطأ ما في الاتصال بالإنترنت.\n\nهل يمكنك قراءة الرسالة في جلسة أخرى؟ ثم يمكنك نقل الرسالة منه! انتقل إلى الإعدادات > الأجهزة وتأكد من أن أجهزتك قد تحققت من بعضها البعض. عندما تفتح الغرفة في المرة التالية وتكون كلتا الجلستين في المقدمة ، سيتم إرسال المفاتيح تلقائيا.\n\nألا تريد أن تفقد المفاتيح عند تسجيل الخروج أو تبديل الأجهزة؟ تأكد من تمكين النسخ الاحتياطي للدردشة في الإعدادات.", + "@noKeyForThisMessage": {}, + "allSpaces": "كل المساحات", + "@allSpaces": {}, + "doNotShowAgain": "لا تظهر مرة أخرى", + "@doNotShowAgain": {}, + "wasDirectChatDisplayName": "محادثة فارغة (كانت {oldDisplayName})", + "@wasDirectChatDisplayName": { + "type": "String", + "placeholders": { + "oldDisplayName": { + "type": "String" + } + } + }, + "disableEncryptionWarning": "لأسباب أمنية ، لا يمكنك تعطيل التشفير في المحادثة ، حيث تم تمكينه من قبل.", + "@disableEncryptionWarning": {}, + "reportErrorDescription": "😭 أوه لا. هناك خطأ ما. إذا كنت تريد، يمكنك الإبلاغ عن هذا الخطأ إلى المطورين.", + "@reportErrorDescription": {}, + "newSpaceDescription": "يسمح لك تطبيق المساحات بتوحيد دردشاتك وبناء مجتمعات خاصة أو عامة.", + "@newSpaceDescription": {}, + "sorryThatsNotPossible": "معذرة... هذا غير ممكن", + "@sorryThatsNotPossible": {}, + "openLinkInBrowser": "فتح الرابط في المتصفح", + "@openLinkInBrowser": {}, + "reopenChat": "إعادة فتح المحادثة", + "@reopenChat": {}, + "noBackupWarning": "تحذير! بدون تمكين النسخ الاحتياطي للدردشة ، ستفقد الوصول إلى رسائلك المشفرة. يوصى بشدة بتمكين النسخ الاحتياطي للدردشة أولاً قبل تسجيل الخروج.", + "@noBackupWarning": {}, + "noOtherDevicesFound": "لم يتم العثور على أجهزة أخرى", + "@noOtherDevicesFound": {}, + "fileIsTooBigForServer": "تعذر الإرسال! لا يدعم الخادم سوى المرفقات التي تصل إلى {max}.", + "@fileIsTooBigForServer": {}, + "jumpToLastReadMessage": "الانتقال إلى آخر رسالة مقروءة", + "@jumpToLastReadMessage": {}, + "readUpToHere": "اقرأ حتى هنا", + "@readUpToHere": {}, + "signInWithPassword": "سجل الدخول بكلمة السر", + "@signInWithPassword": {}, + "pleaseTryAgainLaterOrChooseDifferentServer": "رجاء حاول مجددا أو اختر خادما مختلفا.", + "@pleaseTryAgainLaterOrChooseDifferentServer": {}, + "signInWith": "تسجيل الدخول باستخدام {provider}", + "@signInWith": { + "type": "String", + "placeholders": { + "provider": { + "type": "String" + } + } + }, + "importNow": "استيراد الآن", + "@importNow": {}, + "importEmojis": "استيراد الرموز التعبيرية", + "@importEmojis": {}, + "exportEmotePack": "تصدير حزمة الرموز التعبيرية بتنسيق zip", + "@exportEmotePack": {}, + "notAnImage": "ليس ملف صورة.", + "@notAnImage": {}, + "importFromZipFile": "الاستيراد من ملف .zip", + "@importFromZipFile": {}, + "replace": "استبدال", + "@replace": {}, + "sendTypingNotifications": "إرسال إشعارات الكتابة", + "@sendTypingNotifications": {}, + "createGroup": "إنشاء مجموعة", + "@createGroup": {}, + "messagesStyle": "الرسائل:", + "@messagesStyle": {}, + "shareInviteLink": "شارك رابط الدعوة", + "@shareInviteLink": {}, + "profileNotFound": "لا يمكن العثور على المستخدم على الخادم. ربما هناك مشكلة في الاتصال أو المستخدم غير موجود.", + "@profileNotFound": {}, + "setTheme": "تعيين السمة:", + "@setTheme": {}, + "setColorTheme": "تعيين لون السمة:", + "@setColorTheme": {}, + "inviteContactToGroupQuestion": "هل تريد دعوة {contact} إلى المحادثة \"{groupName}\"؟?", + "@inviteContactToGroupQuestion": {}, + "tryAgain": "أعد المحاولة", + "@tryAgain": {}, + "redactMessageDescription": "سيتم تنقيح الرسالة لجميع المشاركين في هذه المحادثة. هذا لا يمكن التراجع عنها.", + "@redactMessageDescription": {}, + "optionalRedactReason": "(اختياري) سبب تنقيح هذه الرسالة ...", + "@optionalRedactReason": {}, + "redactedBy": "منقح بواسطة {username}", + "@redactedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "redactedByBecause": "تم حجبه بواسطة {username} بسبب: \"{reason}\"", + "@redactedByBecause": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "reason": { + "type": "String" + } + } + }, + "invite": "دعوة", + "@invite": {}, + "addChatDescription": "أضف وصفًا للدردشة...", + "@addChatDescription": {}, + "chatPermissions": "صلاحيات المحادثة", + "@chatPermissions": {}, + "chatDescription": "وصف المحادثة", + "@chatDescription": {}, + "chatDescriptionHasBeenChanged": "تغير وصف المجموعة", + "@chatDescriptionHasBeenChanged": {}, + "noChatDescriptionYet": "لم يتم إنشاء وصف للمحادثة حتى الآن.", + "@noChatDescriptionYet": {}, + "invalidServerName": "اسم الخادم غير متاح", + "@invalidServerName": {}, + "setChatDescription": "تعيين وصفًا للدردشة", + "@setChatDescription": {}, + "directChat": "محادثة مباشرة", + "@directChat": {}, + "inviteGroupChat": "📨 دعوة للمحادثة الجماعية", + "@inviteGroupChat": {}, + "invitePrivateChat": "📨 دعوة دردشة خاصة", + "@invitePrivateChat": {}, + "emoteKeyboardNoRecents": "التعبيرات المستخدمة مؤخرًا ستظهر هنا ...", + "@emoteKeyboardNoRecents": { + "type": "String", + "placeholders": {} + }, + "invalidInput": "مدخل غير صالح!", + "@invalidInput": {}, + "wrongPinEntered": "تم إدخال رمز خاطئ! حاول مرة أخرى خلال {seconds} ثانية...", + "@wrongPinEntered": { + "type": "String", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "hasKnocked": "🚪 لقد طرق {user}", + "@hasKnocked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "pleaseEnterANumber": "الرجاء إدخال رقم أكبر من 0", + "@pleaseEnterANumber": {}, + "banUserDescription": "سيتم حظر المستخدم من المحادثة ولن يتمكن من الدخول إلى المحادثة مرة أخرى حتى يتم رفع الحظر عنه.", + "@banUserDescription": {}, + "removeDevicesDescription": "سيتم تسجيل خروجك من هذا الجهاز ولن تتمكن بعد ذلك من تلقي الرسائل.", + "@removeDevicesDescription": {}, + "unbanUserDescription": "سيتمكن المستخدم من الدخول إلى المحادثة مرة أخرى إذا حاول.", + "@unbanUserDescription": {}, + "pushNotificationsNotAvailable": "دفع الإخطارات غير متوفرة", + "@pushNotificationsNotAvailable": {}, + "makeAdminDescription": "بمجرد تعيين هذا المستخدم كمسؤول، قد لا تتمكن من التراجع عن هذا لأنه سيكون لديه نفس الأذونات التي تتمتع بها.", + "@makeAdminDescription": {}, + "archiveRoomDescription": "سيتم نقل المحادثة إلى الأرشيف. سيتمكن المستخدمون الآخرون من رؤية أنك غادرت المحادثة.", + "@archiveRoomDescription": {}, + "learnMore": "تعلم المزيد", + "@learnMore": {}, + "roomUpgradeDescription": "سيتم بعد ذلك إعادة إنشاء المحادثة باستخدام إصدار الغرفة الجديد. سيتم إخطار جميع المشاركين بأنهم بحاجة إلى التبديل إلى المحادثة الجديدة. يمكنك معرفة المزيد حول إصدارات الغرف على https://spec.matrix.org/latest/rooms/", + "@roomUpgradeDescription": {}, + "kickUserDescription": "يتم طرد المستخدم من المحادثة ولكن لا يتم حظره. في المحادثات العامة، يمكن للمستخدم الانضمام مرة أخرى في أي وقت.", + "@kickUserDescription": {}, + "createGroupAndInviteUsers": "إنشاء مجموعة ودعوة المستخدمين", + "@createGroupAndInviteUsers": {}, + "groupCanBeFoundViaSearch": "يمكن العثور على المجموعة عبر البحث", + "@groupCanBeFoundViaSearch": {}, + "noUsersFoundWithQuery": "لسوء الحظ، لا يمكن العثور على مستخدم لديه \"{query}\". يرجى التحقق مما إذا كنت قد ارتكبت خطأ كتابي.", + "@noUsersFoundWithQuery": { + "type": "String", + "placeholders": { + "query": { + "type": "String" + } + } + }, + "yourGlobalUserIdIs": "معرف المستخدم العمومي الخاص بك هو: ", + "@yourGlobalUserIdIs": {}, + "groupName": "أسم المجموعة", + "@groupName": {}, + "searchChatsRooms": "ابحث عن #الدردشات، @المستخدمين...", + "@searchChatsRooms": {}, + "startConversation": "بدء محادثة", + "@startConversation": {}, + "commandHint_sendraw": "إرسال جيسون الخام", + "@commandHint_sendraw": {}, + "wrongRecoveryKey": "عذرًا... لا يبدو أن هذا هو مفتاح الاسترداد الصحيح.", + "@wrongRecoveryKey": {}, + "blockListDescription": "يمكنك حظر المستخدمين الذين يزعجونك. لن تتمكن من تلقي أي رسائل أو دعوات للغرفة من المستخدمين الموجودين في قائمة الحظر الشخصية الخاصة بك.", + "@blockListDescription": {}, + "blockedUsers": "المستخدمون المحظورون", + "@blockedUsers": {}, + "block": "حظر", + "@block": {}, + "blockUsername": "تجاهل اسم المستخدم", + "@blockUsername": {}, + "databaseMigrationTitle": "تم تحسين قاعدة البيانات", + "@databaseMigrationTitle": {}, + "databaseMigrationBody": "انتظر من فضلك. قد يستغرق ذلك بعض الوقت.", + "@databaseMigrationBody": {}, + "thisDevice": "هذا الجهاز:", + "@thisDevice": {}, + "publicSpaces": "مساحة عامة", + "@publicSpaces": {}, + "passwordIsWrong": "كلمة السر للدخول خاطئة", + "@passwordIsWrong": {}, + "pleaseEnterYourCurrentPassword": "من فضلك أدخل كلمة السر الحالية", + "@pleaseEnterYourCurrentPassword": {}, + "publicLink": "رابط عام", + "@publicLink": {}, + "nothingFound": "لم نجد شيئاً.", + "@nothingFound": {}, + "decline": "رفض", + "@decline": {}, + "newPassword": "كلمة المرور الجديدة", + "@newPassword": {}, + "passwordsDoNotMatch": "كلمات المرور لا تتطابق", + "@passwordsDoNotMatch": {}, + "subspace": "مساحة فرعية", + "@subspace": {}, + "select": "اختر", + "@select": {}, + "pleaseChooseAStrongPassword": "الرجاء اختيار كلمة مرور قوية", + "@pleaseChooseAStrongPassword": {}, + "addChatOrSubSpace": "إضافة دردشة أو مساحة فرعية", + "@addChatOrSubSpace": {}, + "leaveEmptyToClearStatus": "اتركه فارغًا لمسح حالتك.", + "@leaveEmptyToClearStatus": {}, + "joinSpace": "انضم إلى المساحة", + "@joinSpace": {}, + "searchForUsers": "ابحث عن @users...", + "@searchForUsers": {}, + "databaseBuildErrorBody": "غير قادر على بناء قاعدة بيانات SQlite. يحاول التطبيق استخدام قاعدة بيانات قديمة في الوقت الحالي. الرجاء الإبلاغ عن هذا الخطأ للمطورين على {url}. رسالة الخطأ هي: {error}", + "@databaseBuildErrorBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "initAppError": "حدث خطأ بداخل التطبيق", + "@initAppError": {}, + "sessionLostBody": "جلستك مفقودة يرجى إبلاغ المطورين بهذا الخطأ في {url}. رسالة الخطأ هي: {error}", + "@sessionLostBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "restoreSessionBody": "يحاول التطبيق الآن استعادة جلستك من النسخة الاحتياطية. الرجاء الإبلاغ عن هذا الخطأ للمطورين على {url}. رسالة الخطأ هي:{error}", + "@restoreSessionBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "completedKeyVerification": "أكمل {sender} عملية التحقق من المفتاح", + "@completedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "requestedKeyVerification": "طلب {sender} التحقق من المفتاح", + "@requestedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "transparent": "شفّاف", + "@transparent": {}, + "youInvitedToBy": "📩 تمت دعوتك عبر الرابط إلى:\n{alias}", + "@youInvitedToBy": { + "placeholders": { + "alias": { + "type": "String" + } + } + }, + "formattedMessagesDescription": "عرض محتوى الرسالة الغنية مثل النص الغامق باستخدام الماركداون.", + "@formattedMessagesDescription": {}, + "verifyOtherUserDescription": "إذا قمت بالتحقق من مستخدم آخر، فيمكنك التأكد من أنك تعرف من تكتب إليه حقًا. 💪\n\nعند بدء عملية التحقق، سترى أنت والمستخدم الآخر نافذة منبثقة في التطبيق. هناك سترى بعد ذلك سلسلة من الرموز التعبيرية أو الأرقام التي يتعين عليك مقارنتها مع بعضها البعض.\n\nأفضل طريقة للقيام بذلك هي الالتقاء أو بدء مكالمة فيديو. 👭", + "@verifyOtherUserDescription": {}, + "verifyOtherDeviceDescription": "عند التحقق من جهاز آخر، يمكن لهذه الأجهزة تبادل المفاتيح، مما يزيد من أمانك بشكل عام. 💪 عند بدء عملية التحقق، ستظهر نافذة منبثقة في التطبيق على كلا الجهازين. هناك سترى بعد ذلك سلسلة من الرموز التعبيرية أو الأرقام التي يتعين عليك مقارنتها مع بعضها البعض. من الأفضل أن يكون كلا الجهازين في متناول يديك قبل بدء عملية التحقق. 🤳", + "@verifyOtherDeviceDescription": {}, + "formattedMessages": "رسائل منسقة", + "@formattedMessages": {}, + "sendReadReceipts": "إرسال بالقراءة", + "@sendReadReceipts": {}, + "verifyOtherDevice": "🔐 التحقق من الجهاز الآخر", + "@verifyOtherDevice": {}, + "forwardMessageTo": "هل تريد إعادة توجيه الرسالة إلى {roomName}؟", + "@forwardMessageTo": { + "type": "String", + "placeholders": { + "roomName": { + "type": "String" + } + } + }, + "sendTypingNotificationsDescription": "يستطيع المشاركون الآخرون في المحادثة رؤيتك عند كتابة رسالة جديدة.", + "@sendTypingNotificationsDescription": {}, + "sendReadReceiptsDescription": "يمكن للمشاركين الآخرين في المحادثة معرفة متى قرأت الرسالة.", + "@sendReadReceiptsDescription": {}, + "verifyOtherUser": "🔐 التحقق من المستخدم الآخر", + "@verifyOtherUser": {}, + "acceptedKeyVerification": "وافق {sender} على التحقق من المفتاح", + "@acceptedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "canceledKeyVerification": "قام {sender} بإلغاء التحقق من المفتاح", + "@canceledKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "isReadyForKeyVerification": "{sender} جاهز للتحقق من المفتاح", + "@isReadyForKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "startedKeyVerification": "بدأ {sender} عملية التحقق من المفتاح", + "@startedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "hidePresences": "إخفاء قائمة الحالة؟", + "@hidePresences": {}, + "incomingMessages": "الرسائل الواردة", + "@incomingMessages": {}, + "presenceStyle": "الحضور:", + "@presenceStyle": { + "type": "String", + "placeholders": {} + }, + "presencesToggle": "إظهار رسائل الحالة من المستخدمين الآخرين", + "@presencesToggle": { + "type": "String", + "placeholders": {} + }, + "stickers": "الملصقات", + "@stickers": {}, + "discover": "استكشف", + "@discover": {}, + "commandHint_ignore": "تجاهل معرف المصفوفة المعطى", + "@commandHint_ignore": {}, + "commandHint_unignore": "إلغاء تجاهل معرف المصفوفة المحدد", + "@commandHint_unignore": {}, + "unreadChatsInApp": "{appname}: {unread} الدردشات غير المقروءة", + "@unreadChatsInApp": { + "type": "String", + "placeholders": { + "appname": { + "type": "String" + }, + "unread": { + "type": "String" + } + } + }, + "noDatabaseEncryption": "تشفير قاعدة البيانات غير مدعوم على هذا النظام الأساسي", + "@noDatabaseEncryption": {}, + "appLockDescription": "قفل التطبيق عند عدم استخدامه بالرمز السري", + "@appLockDescription": {}, + "accessAndVisibility": "الوصول والرؤية", + "@accessAndVisibility": {}, + "calls": "المكالمات", + "@calls": {}, + "customEmojisAndStickers": "الرموز التعبيرية والملصقات المخصصة", + "@customEmojisAndStickers": {}, + "hideRedactedMessagesBody": "إذا قام شخص ما بتنقيح رسالة، فلن تكون هذه الرسالة مرئية في المحادثة بعد الآن.", + "@hideRedactedMessagesBody": {}, + "hideInvalidOrUnknownMessageFormats": "إخفاء تنسيقات الرسائل غير الصالحة أو غير المعروفة", + "@hideInvalidOrUnknownMessageFormats": {}, + "overview": "نظرة عامة", + "@overview": {}, + "notifyMeFor": "أعلمني بـ", + "@notifyMeFor": {}, + "passwordRecoverySettings": "إعدادات استعادة كلمة المرور", + "@passwordRecoverySettings": {}, + "globalChatId": "معرف المحادثة العامة", + "@globalChatId": {}, + "accessAndVisibilityDescription": "من المسموح له بالانضمام إلى هذه المحادثة وكيف يمكن اكتشاف المحادثة.", + "@accessAndVisibilityDescription": {}, + "customEmojisAndStickersBody": "قم بإضافة أو مشاركة الرموز التعبيرية أو الملصقات المخصصة التي يمكن استخدامها في أي دردشة.", + "@customEmojisAndStickersBody": {}, + "hideRedactedMessages": "إخفاء الرسائل المكررة", + "@hideRedactedMessages": {}, + "hideMemberChangesInPublicChats": "إخفاء تغييرات الأعضاء في الدردشات العامة", + "@hideMemberChangesInPublicChats": {}, + "hideMemberChangesInPublicChatsBody": "لا تظهر في المخطط الزمني للدردشة إذا انضم شخص ما إلى محادثة عامة أو غادرها لتحسين إمكانية القراءة.", + "@hideMemberChangesInPublicChatsBody": {}, + "usersMustKnock": "المستخدم يجب أن يطرق الباب", + "@usersMustKnock": {}, + "chatCanBeDiscoveredViaSearchOnServer": "يمكن اكتشاف الشات عن طريق البحث في {server}", + "@chatCanBeDiscoveredViaSearchOnServer": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "noOneCanJoin": "لا أحد يستطيع الانضمام", + "@noOneCanJoin": {}, + "knocking": "طرق", + "@knocking": {}, + "userWouldLikeToChangeTheChat": "{user} يرغب في الانضمام إلى المحادثة.", + "@userWouldLikeToChangeTheChat": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "noPublicLinkHasBeenCreatedYet": "لم يتم بعد إنشاء أي رابط عام", + "@noPublicLinkHasBeenCreatedYet": {}, + "knock": "دق", + "@knock": {}, + "thereAreCountUsersBlocked": "يوجد حاليًا {count} من المستخدمين المحظورين.", + "@thereAreCountUsersBlocked": { + "type": "String", + "count": {} + }, + "publicChatAddresses": "عناوين المحادثة العامة", + "@publicChatAddresses": {}, + "createNewAddress": "إنشاء عنوان جديد", + "@createNewAddress": {}, + "userRole": "دور المستخدم", + "@userRole": {}, + "minimumPowerLevel": "{level} هو الحد الأدنى من مستوى الطاقة.", + "@minimumPowerLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "String" + } + } + }, + "searchIn": "بحث في {chat}...", + "@searchIn": { + "type": "String", + "placeholders": { + "chat": { + "type": "String" + } + } + }, + "files": "الملفات", + "@files": {}, + "restricted": "مقيد", + "@restricted": {}, + "knockRestricted": "قيود النقر", + "@knockRestricted": {}, + "searchMore": "ابحث أكثر...", + "@searchMore": {}, + "gallery": "المعرض", + "@gallery": {}, + "swipeRightToLeftToReply": "اسحب من اليمين إلى اليسار للرد", + "@swipeRightToLeftToReply": {}, + "alwaysUse24HourFormat": "علّم لعرض الوقت بنسق 24 ساعة دائما.‏", + "@alwaysUse24HourFormat": { + "description": "Set to true to always display time of day in 24 hour format." + }, + "countChatsAndCountParticipants": "{chats} دردشات و {participants} مشاركين", + "@countChatsAndCountParticipants": { + "type": "String", + "placeholders": { + "chats": { + "type": "int" + }, + "participants": { + "type": "int" + } + } + }, + "noMoreChatsFound": "لم يتم العثور على دردشات...", + "@noMoreChatsFound": {}, + "joinedChats": "انضم إلى الدردشة", + "@joinedChats": {}, + "unread": "غير المقروءة", + "@unread": {}, + "space": "المساحة", + "@space": {}, + "spaces": "المساحات", + "@spaces": {}, + "markAsUnread": "تحديد كغير مقروء", + "@markAsUnread": {}, + "goToSpace": "انتقل إلى المساحة: {space}", + "@goToSpace": { + "type": "String", + "space": {} + }, + "userLevel": "{level} - مستخدم", + "@userLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "moderatorLevel": "{level} - مشرف", + "@moderatorLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "adminLevel": "{level} - مدير", + "@adminLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "changeGeneralChatSettings": "تغيير إعدادات الدردشة العامة", + "@changeGeneralChatSettings": {}, + "inviteOtherUsers": "دعوة مستخدمين آخرين إلى هذه الدردشة", + "@inviteOtherUsers": {}, + "changeTheChatPermissions": "تغيير أذونات الدردشة", + "@changeTheChatPermissions": {}, + "changeTheVisibilityOfChatHistory": "تغيير رؤية سجل الدردشة", + "@changeTheVisibilityOfChatHistory": {}, + "changeTheCanonicalRoomAlias": "تغيير عنوان الدردشة العامة الرئيسي", + "@changeTheCanonicalRoomAlias": {}, + "sendRoomNotifications": "إرسال إشعارات @room", + "@sendRoomNotifications": {}, + "changeTheDescriptionOfTheGroup": "تغيير وصف الدردشة", + "@changeTheDescriptionOfTheGroup": {}, + "invitedBy": "📩 تمت دعوته من قبل {user}", + "@invitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "chatPermissionsDescription": "‪حدد مستوى الصلاحية الضروري لإجراءات معينة في هذه الدردشة. عادة ما تمثل مستويات الصلاحية 0 و 50 و 100 المستخدمين والمشرفين ولكن أي تدرج ممكن.", + "@chatPermissionsDescription": {}, + "changelog": "سجل التغييرات", + "@changelog": {}, + "updateInstalled": "تم تثبيت🎉 تحديث {version}!", + "@updateInstalled": { + "type": "String", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "sendCanceled": "تم إلغاء الإرسال", + "@sendCanceled": {}, + "noChatsFoundHere": "لم يتم العثور على دردشات هنا حتى الآن. ابدأ محادثة جديدة مع شخص ما باستخدام الزر أدناه. ⤵️", + "@noChatsFoundHere": {}, + "loginWithMatrixId": "تسجيل الدخول باستخدام معرف ماتريكس", + "@loginWithMatrixId": {}, + "discoverHomeservers": "اكتشف الخوادم المنزلية", + "@discoverHomeservers": {}, + "whatIsAHomeserver": "ما هو خادم المنزل ؟", + "@whatIsAHomeserver": {}, + "homeserverDescription": "يتم تخزين جميع بياناتك على خادم المنزل، تمامًا مثل مزود خدمة البريد الإلكتروني. يمكنك اختيار خادم البيت الذي تريد استخدامه، بينما لا يزال بإمكانك التواصل مع الجميع. اعرف المزيد على https://matrix.org.", + "@homeserverDescription": {}, + "doesNotSeemToBeAValidHomeserver": "لا يبدو أنه خادم منزلي متوافق. عنوان URL غير صحيح ؟", + "@doesNotSeemToBeAValidHomeserver": {}, + "calculatingFileSize": "جارٍ حساب حجم الملف...", + "@calculatingFileSize": {}, + "prepareSendingAttachment": "إعداد مرفق الإرسال...", + "@prepareSendingAttachment": {}, + "sendingAttachment": "جارٍ إرسال المرفق...", + "@sendingAttachment": {}, + "generatingVideoThumbnail": "جارٍ إنشاء صورة مصغرة للفيديو...", + "@generatingVideoThumbnail": {}, + "compressVideo": "جارٍ ضغط الفيديو...", + "@compressVideo": {}, + "sendingAttachmentCountOfCount": "جارٍ إرسال المرفق {index} من {length}...", + "@sendingAttachmentCountOfCount": { + "type": "integer", + "placeholders": { + "index": { + "type": "int" + }, + "length": { + "type": "int" + } + } + }, + "serverLimitReached": "تم الوصول إلى حد الخادم! انتظر {seconds} ثانية...", + "@serverLimitReached": { + "type": "integer", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "oneOfYourDevicesIsNotVerified": "لم يتم التحقق من أحد أجهزتك", + "@oneOfYourDevicesIsNotVerified": {}, + "noticeChatBackupDeviceVerification": "ملاحظة: عند توصيل جميع أجهزتك بنسخة احتياطية للدردشة، يتم التحقق منها تلقائيًا.", + "@noticeChatBackupDeviceVerification": {}, + "continueText": "استمرار", + "@continueText": {}, + "welcomeText": "مرحبًا، 👋 معك FluffyChat. يمكنك تسجيل الدخول إلى أي خادم منزلي، وهو متوافق مع https://matrix.org. ثم دردش مع أي شخص. إنها شبكة مراسلة لا مركزية ضخمة!", + "@welcomeText": {}, + "blur": "الضبابية:", + "@blur": {}, + "setWallpaper": "تعيين الخلفية", + "@setWallpaper": {}, + "opacity": "التعتيم:", + "@opacity": {}, + "manageAccount": "‫إدارة الحساب‬", + "@manageAccount": {}, + "noContactInformationProvided": "لا يقدم السيرفر أي معلومات اتصال صحيحة", + "@noContactInformationProvided": {}, + "contactServerAdmin": "اتصل بمسؤول الخادم", + "@contactServerAdmin": {}, + "contactServerSecurity": "الاتصال بمسؤول أمان ااخادم", + "@contactServerSecurity": {}, + "supportPage": "صفحة الدعم", + "@supportPage": {}, + "serverInformation": "معلومات الخادم:", + "@serverInformation": {}, + "name": "الإسم", + "@name": {}, + "version": "اﻹصدار", + "@version": {}, + "website": "الموقع اﻹلكتروني", + "@website": {}, + "aboutHomeserver": "حول {homeserver}", + "@aboutHomeserver": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "boldText": "خط غامق", + "@boldText": {}, + "italicText": "خط مائل", + "@italicText": {}, + "strikeThrough": "يتوسطه خط", + "@strikeThrough": {}, + "invalidUrl": "رابط غير صحيح", + "@invalidUrl": {}, + "addLink": "إضافة رابط", + "@addLink": {}, + "pleaseFillOut": "من فضلك قم بتعبئته", + "@pleaseFillOut": {}, + "unableToJoinChat": "يتعذر الانضمام إلى الدردشة. ربما يكون الطرف الآخر قد أغلق المحادثة بالفعل.", + "@unableToJoinChat": {}, + "sendImages": "إرسال {count} صورة", + "@sendImages": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "compress": "ضغط", + "@compress": {}, + "previous": "السابق", + "@previous": {}, + "otherPartyNotLoggedIn": "لم يقم الطرف الآخر بتسجيل الدخول حالياً وبالتالي لا يمكنه تلقي الرسائل!", + "@otherPartyNotLoggedIn": {}, + "setCustomPermissionLevel": "حدد مستوى صلاحية مخصص", + "@setCustomPermissionLevel": {} +} diff --git a/lib/l10n/intl_be.arb b/lib/l10n/intl_be.arb new file mode 100644 index 0000000..9fb4cd0 --- /dev/null +++ b/lib/l10n/intl_be.arb @@ -0,0 +1,3478 @@ +{ + "alwaysUse24HourFormat": "адключана", + "@alwaysUse24HourFormat": { + "description": "Set to true to always display time of day in 24 hour format." + }, + "repeatPassword": "Паўтарыце пароль", + "@repeatPassword": {}, + "notAnImage": "Не файл выявы.", + "@notAnImage": {}, + "setCustomPermissionLevel": "Задаць карыстальніцкі ўзровень дазволу", + "@setCustomPermissionLevel": {}, + "setPermissionsLevelDescription": "Калі ласка, выберыце ролю ніжэй ці ўвядзіце карыстальніцкі ўзровень дазволу паміж 0 і 100.", + "@setPermissionsLevelDescription": {}, + "ignoreUser": "Ігнараваць карыстальніка", + "@ignoreUser": {}, + "normalUser": "Звычайны карыстальнік", + "@normalUser": {}, + "remove": "Прыбраць", + "@remove": { + "type": "String", + "placeholders": {} + }, + "importNow": "Імпартаваць зараз", + "@importNow": {}, + "importEmojis": "Імпартаваць эмодзі", + "@importEmojis": {}, + "importFromZipFile": "Імпартаваць з файла .zip", + "@importFromZipFile": {}, + "exportEmotePack": "Экспартаваць пак эмодзі як .zip", + "@exportEmotePack": {}, + "replace": "Замяніць", + "@replace": {}, + "about": "Пра праграму", + "@about": {}, + "aboutHomeserver": "Пра {homeserver}", + "@aboutHomeserver": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "accept": "Прыняць", + "@accept": { + "type": "String", + "placeholders": {} + }, + "acceptedTheInvitation": "👍 {username} прыняў запрашэнне", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "account": "Уліковы запіс", + "@account": { + "type": "String", + "placeholders": {} + }, + "activatedEndToEndEncryption": "🔐 {username} актывіраваў end to end шыфраванне", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "addEmail": "Дадаць email", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "confirmMatrixId": "Калі ласка, спраўдзіце свой Matrix ID перад выдаленнем свайго ўліковага запісу.", + "@confirmMatrixId": {}, + "supposedMxid": "Гэта павінна быць накшталт {mxid}", + "@supposedMxid": { + "type": "String", + "placeholders": { + "mxid": { + "type": "String" + } + } + }, + "addChatDescription": "Дадайце апісанне чату...", + "@addChatDescription": {}, + "addToSpace": "Дадаць у прастору", + "@addToSpace": {}, + "admin": "Адмін", + "@admin": { + "type": "String", + "placeholders": {} + }, + "alias": "псеўданім", + "@alias": { + "type": "String", + "placeholders": {} + }, + "all": "Усё", + "@all": { + "type": "String", + "placeholders": {} + }, + "allChats": "Усе чаты", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "commandHint_roomupgrade": "Абнавіце гэты пакой да згаданай версіі", + "@commandHint_roomupgrade": {}, + "commandHint_googly": "Даслаць смешныя вочы", + "@commandHint_googly": {}, + "commandHint_cuddle": "Даслаць усмешку", + "@commandHint_cuddle": {}, + "commandHint_hug": "Даслаць абдымашкі", + "@commandHint_hug": {}, + "googlyEyesContent": "{senderName} даслаў(-ла) вам смешныя вочы", + "@googlyEyesContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "cuddleContent": "{senderName} усміхаецца вам", + "@cuddleContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "hugContent": "{senderName} абдымае вас", + "@hugContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "answeredTheCall": "{senderName} адказаў(-ла) на выклік", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "anyoneCanJoin": "Усе могуць далучыцца", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "appLock": "Код-пароль", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "appLockDescription": "Блакіруе праграму, пакуль вы не ўвядзіце пін-код", + "@appLockDescription": {}, + "archive": "Архіў", + "@archive": { + "type": "String", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "Ці дазволена карыстальнікам-гасцям далучыцца", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "Вы ўпэўнены?", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "areYouSureYouWantToLogout": "Вы ўпэўнены, што хаціце выйсці?", + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "askSSSSSign": "Каб спраўдзіць іншага чалавека, калі ласка, увядзіце фразу-пароль ці ключ аднаўлення.", + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "askVerificationRequest": "Прыняць запрос на верыфікацыю ад {username}?", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "autoplayImages": "Аўтаматычна прайграваць аніміраваныя стыкеры і эмодзі", + "@autoplayImages": { + "type": "String", + "placeholder": {} + }, + "badServerLoginTypesException": "Хатні сервер падтрымлівае наступныя метады ўваходу:\n{serverVersions}\nАле гэта праграма падтрымлівае толькі:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "sendTypingNotifications": "Дасылаць паведамленне пра друк", + "@sendTypingNotifications": {}, + "swipeRightToLeftToReply": "Змахніце ўлева, каб адказаць", + "@swipeRightToLeftToReply": {}, + "sendOnEnter": "Дасылаць на enter", + "@sendOnEnter": {}, + "badServerVersionsException": "Хатні сервер падтрымлівае наступныя версіі спецыфікацыі:\n{serverVersions}\nАле гэта праграма падтрымлівае толькі:{supportedVersions}", + "@badServerVersionsException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "countChatsAndCountParticipants": "{chats} чатаў і {participants} удзельнікаў", + "@countChatsAndCountParticipants": { + "type": "String", + "placeholders": { + "chats": { + "type": "int" + }, + "participants": { + "type": "int" + } + } + }, + "noMoreChatsFound": "Болей чатаў не знойдзена...", + "@noMoreChatsFound": {}, + "noChatsFoundHere": "Здаецца, тут пуста. Пачніце новы чат з кімсьці праз кнопку ніжэй. ⤵️", + "@noChatsFoundHere": {}, + "joinedChats": "Чаты, да якіх вы далучыліся", + "@joinedChats": {}, + "unread": "Непрачытаные", + "@unread": {}, + "space": "Прастора", + "@space": {}, + "spaces": "Прасторы", + "@spaces": {}, + "banFromChat": "Заблакіраваць ў чаце", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "banned": "Заблакіраваны", + "@banned": { + "type": "String", + "placeholders": {} + }, + "bannedUser": "{username} заблакіраваў {targetName}", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "blockDevice": "Заблакіраваць прыладу", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "blocked": "Заблакіравана", + "@blocked": { + "type": "String", + "placeholders": {} + }, + "botMessages": "Паведамленні ботаў", + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "cancel": "Скасаваць", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "cantOpenUri": "Немагчыма адкрыць URI {uri}", + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "changeDeviceName": "Змяніць назву прылады", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "changedTheChatAvatar": "{username} змяніў выяву чата", + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheChatDescriptionTo": "{username} змяніў апісанне чата на :'{description}'", + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "changedTheChatNameTo": "{username} змяніў назву чата на '{chatname}'", + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "changedTheChatPermissions": "{username} змяніў дазволы чата", + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheDisplaynameTo": "{username} змяніў адлюстроўваемае імя на: '{displayname}'", + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "changedTheGuestAccessRules": "{username} змяніў правілы гасцявога доступу", + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheGuestAccessRulesTo": "{username} змяніў правілы гасцявога доступу на: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheHistoryVisibility": "{username} змяніў бачнасць гісторыі", + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheHistoryVisibilityTo": "{username} змяніў бачнасць гісторыі на: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheJoinRules": "{username} змяніў правілы падлучэння", + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheJoinRulesTo": "{username} змяніў правілы падлучэння на: {joinRules}", + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "changedTheProfileAvatar": "{username} змяніў свой аватар", + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "noMessagesYet": "Паведамленняў пакуль што няма", + "@noMessagesYet": {}, + "changedTheRoomAliases": "{username} змяніў псеўданімы пакою", + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomInvitationLink": "{username} змяніў(-ла) запрашальную спасылку", + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changePassword": "Змяніць пароль", + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "changeTheHomeserver": "Змяніць дамашні сервер", + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "changeTheme": "Змяніць ваш стыль", + "@changeTheme": { + "type": "String", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "Змяніць назву групы", + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "changeYourAvatar": "Змяніць вашу выяву", + "@changeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "channelCorruptedDecryptError": "Шыфраванне было сапсавана", + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "chat": "Чат", + "@chat": { + "type": "String", + "placeholders": {} + }, + "yourChatBackupHasBeenSetUp": "Рэзервовае капіраванне чатаў было наладжана.", + "@yourChatBackupHasBeenSetUp": {}, + "chatBackup": "Рэзервовае капіраванне чатаў", + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "chatBackupDescription": "Вашы старыя паведамленні абаронены ключом аднаўлення. Калі ласка, пераканайцеся ў тым, што вы яго не згубіце.", + "@chatBackupDescription": { + "type": "String", + "placeholders": {} + }, + "chatDetails": "Дэталі чата", + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "chatHasBeenAddedToThisSpace": "Чат быў дададзены ў гэту прастору", + "@chatHasBeenAddedToThisSpace": {}, + "chats": "Чаты", + "@chats": { + "type": "String", + "placeholders": {} + }, + "chooseAStrongPassword": "Стварыце надзейны пароль", + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "clearArchive": "Ачысціць архіў", + "@clearArchive": {}, + "close": "Закрыць", + "@close": { + "type": "String", + "placeholders": {} + }, + "commandHint_markasdm": "Пазначыць як пакой асабоных паведамленняў для дадання Matrix ID", + "@commandHint_markasdm": {}, + "commandHint_markasgroup": "Пазначыць як групу", + "@commandHint_markasgroup": {}, + "commandHint_ban": "Заблакіраваць карыстальніка у гэтым пакое", + "@commandHint_ban": { + "type": "String", + "description": "Usage hint for the command /ban" + }, + "commandHint_clearcache": "Ачысціць кэш", + "@commandHint_clearcache": { + "type": "String", + "description": "Usage hint for the command /clearcache" + }, + "commandHint_create": "Стварыць пусты групавы чат.\nВыкарыстоўвайце --no-encryption каб адключыць шыфраванне", + "@commandHint_create": { + "type": "String", + "description": "Usage hint for the command /create" + }, + "commandHint_discardsession": "Спыніць сеанс", + "@commandHint_discardsession": { + "type": "String", + "description": "Usage hint for the command /discardsession" + }, + "commandHint_dm": "Пачаць асобны чат.\nВыкарыстоўвайце --no-encryption, каб адключыць шыфраванне", + "@commandHint_dm": { + "type": "String", + "description": "Usage hint for the command /dm" + }, + "commandHint_html": "Даслаць тэкст з разметкай HTML", + "@commandHint_html": { + "type": "String", + "description": "Usage hint for the command /html" + }, + "commandHint_invite": "Запрасіць карыстальніка ў гэты пакой", + "@commandHint_invite": { + "type": "String", + "description": "Usage hint for the command /invite" + }, + "commandHint_join": "Далучыцца да гэтага пакою", + "@commandHint_join": { + "type": "String", + "description": "Usage hint for the command /join" + }, + "commandHint_kick": "Выдаліць карыстальніка з гэтага пакою", + "@commandHint_kick": { + "type": "String", + "description": "Usage hint for the command /kick" + }, + "commandHint_leave": "Пакінуць гэты пакой", + "@commandHint_leave": { + "type": "String", + "description": "Usage hint for the command /leave" + }, + "commandHint_me": "Апішыце сябе", + "@commandHint_me": { + "type": "String", + "description": "Usage hint for the command /me" + }, + "commandHint_myroomavatar": "Задаць выяву гэтага пакою (ад mxc-uri)", + "@commandHint_myroomavatar": { + "type": "String", + "description": "Usage hint for the command /myroomavatar" + }, + "commandHint_myroomnick": "Задайце адлюстроўваемае імя для гэтага пакою", + "@commandHint_myroomnick": { + "type": "String", + "description": "Usage hint for the command /myroomnick" + }, + "commandHint_op": "Задайце ўзровень правоў гэтага карыстальніка (па змаўчанні: 50)", + "@commandHint_op": { + "type": "String", + "description": "Usage hint for the command /op" + }, + "commandHint_plain": "Даслаць неадфарматыраваны тэкст", + "@commandHint_plain": { + "type": "String", + "description": "Usage hint for the command /plain" + }, + "commandHint_react": "Даслаць адказ як рэакцыю", + "@commandHint_react": { + "type": "String", + "description": "Usage hint for the command /react" + }, + "commandHint_send": "Даслаць тэкст", + "@commandHint_send": { + "type": "String", + "description": "Usage hint for the command /send" + }, + "commandHint_unban": "Разблакіраваць карыстальніка ў гэтым пакое", + "@commandHint_unban": { + "type": "String", + "description": "Usage hint for the command /unban" + }, + "commandInvalid": "Няслушная каманда", + "@commandInvalid": { + "type": "String" + }, + "commandMissing": "{command} не каманда.", + "@commandMissing": { + "type": "String", + "placeholders": { + "command": { + "type": "String" + } + }, + "description": "State that {command} is not a valid /command." + }, + "compareEmojiMatch": "Калі ласка, параўнайце эмодзі", + "@compareEmojiMatch": { + "type": "String", + "placeholders": {} + }, + "compareNumbersMatch": "Калі ласка, параўнайце лічбы", + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "configureChat": "Наладзіць чат", + "@configureChat": { + "type": "String", + "placeholders": {} + }, + "confirm": "Пацвердзіць", + "@confirm": { + "type": "String", + "placeholders": {} + }, + "connect": "Далучыцца", + "@connect": { + "type": "String", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "Кантакт быў запрошаны ў групу", + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "containsDisplayName": "Мае адлюстроўваемае імя", + "@containsDisplayName": { + "type": "String", + "placeholders": {} + }, + "containsUserName": "Мае імя карыстальніка", + "@containsUserName": { + "type": "String", + "placeholders": {} + }, + "contentHasBeenReported": "Пра кантэнт было паведамлена адміністратарам сервера", + "@contentHasBeenReported": { + "type": "String", + "placeholders": {} + }, + "copiedToClipboard": "Скапіравана ў буфер", + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "copy": "Капіраваць", + "@copy": { + "type": "String", + "placeholders": {} + }, + "copyToClipboard": "Скапіраваць у буфер", + "@copyToClipboard": { + "type": "String", + "placeholders": {} + }, + "couldNotDecryptMessage": "Немагчыма расшыфраваць паведамленне: {error}", + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "checkList": "Кантрольны спіс", + "@checkList": {}, + "countParticipants": "{count} удзельніка(-ў)", + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "countInvited": "Запрошана {count}", + "@countInvited": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "create": "Стварыць", + "@create": { + "type": "String", + "placeholders": {} + }, + "createdTheChat": "💬 {username} стварыў(-ла) чат", + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "createGroup": "Стварыць групу", + "@createGroup": {}, + "createNewSpace": "Новая прастора", + "@createNewSpace": { + "type": "String", + "placeholders": {} + }, + "currentlyActive": "Зараз актыўны", + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "darkTheme": "Цёмная", + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "dateWithoutYear": "{day}-{month}", + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "dateWithYear": "{year}-{month}-{day}", + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "deactivateAccountWarning": "Гэта дэактывіруе ваш уліковы запіс. Гэта дзеянне не можа быць адменена! Вы ўпэўнены?", + "@deactivateAccountWarning": { + "type": "String", + "placeholders": {} + }, + "defaultPermissionLevel": "Узровень дазволаў для новых карыстальнікаў па змаўчанні", + "@defaultPermissionLevel": { + "type": "String", + "placeholders": {} + }, + "delete": "Выдаліць", + "@delete": { + "type": "String", + "placeholders": {} + }, + "deleteAccount": "Выдаліць уліковы запіс", + "@deleteAccount": { + "type": "String", + "placeholders": {} + }, + "deleteMessage": "Выдаліць паведамленне", + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "device": "Прылада", + "@device": { + "type": "String", + "placeholders": {} + }, + "deviceId": "ID прылады", + "@deviceId": { + "type": "String", + "placeholders": {} + }, + "devices": "Прылады", + "@devices": { + "type": "String", + "placeholders": {} + }, + "directChats": "Асобныя чаты", + "@directChats": { + "type": "String", + "placeholders": {} + }, + "allRooms": "Усе групавыя чаты", + "@allRooms": { + "type": "String", + "placeholders": {} + }, + "displaynameHasBeenChanged": "Адлюстроўваемае імя было зменена", + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "downloadFile": "Спампаваць файл", + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "edit": "Змяніць", + "@edit": { + "type": "String", + "placeholders": {} + }, + "editBlockedServers": "Змяніць заблакіраваныя сервера", + "@editBlockedServers": { + "type": "String", + "placeholders": {} + }, + "chatPermissions": "Дазволы чату", + "@chatPermissions": {}, + "editDisplayname": "Змяніць адлюстроўваемае імя", + "@editDisplayname": { + "type": "String", + "placeholders": {} + }, + "editRoomAliases": "Змяніць псеўданімы пакою", + "@editRoomAliases": { + "type": "String", + "placeholders": {} + }, + "editRoomAvatar": "Змяніць выяву пакою", + "@editRoomAvatar": { + "type": "String", + "placeholders": {} + }, + "emoteExists": "Эмодзі ўжо існуе!", + "@emoteExists": { + "type": "String", + "placeholders": {} + }, + "emoteInvalid": "Недапушчальнае скарачэнне эмодзі!", + "@emoteInvalid": { + "type": "String", + "placeholders": {} + }, + "emoteKeyboardNoRecents": "Нядаўна ўжытыя эмодзі паявяцца тут...", + "@emoteKeyboardNoRecents": { + "type": "String", + "placeholders": {} + }, + "emotePacks": "Наборы эмодзі для пакою", + "@emotePacks": { + "type": "String", + "placeholders": {} + }, + "emoteSettings": "Налады эмодзі", + "@emoteSettings": { + "type": "String", + "placeholders": {} + }, + "globalChatId": "ID габальнага чату", + "@globalChatId": {}, + "accessAndVisibility": "Даступнасць і бачнасць", + "@accessAndVisibility": {}, + "accessAndVisibilityDescription": "Каму дазволена далучацца да гэтага чату і як ён можа быць знойдзены.", + "@accessAndVisibilityDescription": {}, + "calls": "Выклікі", + "@calls": {}, + "customEmojisAndStickers": "Карыстальніцкія эмодзі і стыкеры", + "@customEmojisAndStickers": {}, + "customEmojisAndStickersBody": "Дадаць ці падзяліцца карыстальніцкімі эмодзі ці стыкерамі, што могуць быць ужыты ў любым чаце.", + "@customEmojisAndStickersBody": {}, + "emoteShortcode": "Скарачэнне эмодзі", + "@emoteShortcode": { + "type": "String", + "placeholders": {} + }, + "emoteWarnNeedToPick": "Вы павінны задаць скарачэнне эмодзі і выяву!", + "@emoteWarnNeedToPick": { + "type": "String", + "placeholders": {} + }, + "emptyChat": "Пусты чат", + "@emptyChat": { + "type": "String", + "placeholders": {} + }, + "enableEmotesGlobally": "Уключыць набор эмодзі глабальна", + "@enableEmotesGlobally": { + "type": "String", + "placeholders": {} + }, + "enableEncryption": "Уключыць шыфраванне", + "@enableEncryption": { + "type": "String", + "placeholders": {} + }, + "enableEncryptionWarning": "Вы больш не зможаце адключыць шыфраванне. Вы ўпэўнены?", + "@enableEncryptionWarning": { + "type": "String", + "placeholders": {} + }, + "encrypted": "Зашыфравана", + "@encrypted": { + "type": "String", + "placeholders": {} + }, + "encryption": "Шыфраванне", + "@encryption": { + "type": "String", + "placeholders": {} + }, + "encryptionNotEnabled": "Шыфраванне не ўключана", + "@encryptionNotEnabled": { + "type": "String", + "placeholders": {} + }, + "endedTheCall": "{senderName} скончыў выклік", + "@endedTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "enableMultiAccounts": "(БЭТА) Уключыць некалькі ўліковых запісаў на гэтай прыладзе", + "@enableMultiAccounts": {}, + "enterAnEmailAddress": "Увядзіце электроную пошту (email)", + "@enterAnEmailAddress": { + "type": "String", + "placeholders": {} + }, + "homeserver": "Дамашні сервер", + "@homeserver": {}, + "enterYourHomeserver": "Увядзіце адрас дамашняга сервера", + "@enterYourHomeserver": { + "type": "String", + "placeholders": {} + }, + "errorObtainingLocation": "Памылка атрымання месцазнаходжання: {error}", + "@errorObtainingLocation": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "everythingReady": "Усё гатова!", + "@everythingReady": { + "type": "String", + "placeholders": {} + }, + "extremeOffensive": "Занадта абражальны", + "@extremeOffensive": { + "type": "String", + "placeholders": {} + }, + "fileName": "Назва файла", + "@fileName": { + "type": "String", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "String", + "placeholders": {} + }, + "fontSize": "Памер шрыфту", + "@fontSize": { + "type": "String", + "placeholders": {} + }, + "forward": "Пераслаць", + "@forward": { + "type": "String", + "placeholders": {} + }, + "fromJoining": "З далучэння", + "@fromJoining": { + "type": "String", + "placeholders": {} + }, + "fromTheInvitation": "З запрашэння", + "@fromTheInvitation": { + "type": "String", + "placeholders": {} + }, + "goToTheNewRoom": "Перайсці ў новы пакой", + "@goToTheNewRoom": { + "type": "String", + "placeholders": {} + }, + "group": "Група", + "@group": { + "type": "String", + "placeholders": {} + }, + "chatDescription": "Апісанне чату", + "@chatDescription": {}, + "chatDescriptionHasBeenChanged": "Апісанне чату зменена", + "@chatDescriptionHasBeenChanged": {}, + "groupIsPublic": "Група публічная", + "@groupIsPublic": { + "type": "String", + "placeholders": {} + }, + "groups": "Групы", + "@groups": { + "type": "String", + "placeholders": {} + }, + "groupWith": "Групы з {displayname}", + "@groupWith": { + "type": "String", + "placeholders": { + "displayname": { + "type": "String" + } + } + }, + "guestsAreForbidden": "Госці забаронены", + "@guestsAreForbidden": { + "type": "String", + "placeholders": {} + }, + "guestsCanJoin": "Госці могуць далучацца", + "@guestsCanJoin": { + "type": "String", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "{username} адазваў запрашэнне для {targetName}", + "@hasWithdrawnTheInvitationFor": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "help": "Дапамога", + "@help": { + "type": "String", + "placeholders": {} + }, + "hideRedactedEvents": "Схаваць адрэдагаваныя падзеі", + "@hideRedactedEvents": { + "type": "String", + "placeholders": {} + }, + "hideRedactedMessages": "Схаваць адрэдагаваныя паведамленні", + "@hideRedactedMessages": {}, + "hideRedactedMessagesBody": "Калі хтосьці рэдагуе паведамленне, яно будзе схавана ў чаце.", + "@hideRedactedMessagesBody": {}, + "hideInvalidOrUnknownMessageFormats": "Хаваць памылковыя ці невядомыя фарматы паведамленняў", + "@hideInvalidOrUnknownMessageFormats": {}, + "howOffensiveIsThisContent": "Наколькі абражальны гэты кантэнт?", + "@howOffensiveIsThisContent": { + "type": "String", + "placeholders": {} + }, + "id": "ID", + "@id": { + "type": "String", + "placeholders": {} + }, + "identity": "Ідэнтыфікацыя", + "@identity": { + "type": "String", + "placeholders": {} + }, + "block": "Заблакіраваць", + "@block": {}, + "blockedUsers": "Заблакіраваныя карыстальнікі", + "@blockedUsers": {}, + "blockListDescription": "Вы можаце заблакіраваць карыстальнікаў, якія вам перашкаджаюць. Вы не атрымаеце ад іх ні паведамленняў, ні запрашэнняў.", + "@blockListDescription": {}, + "blockUsername": "Ігнараваць імя карыстальніка", + "@blockUsername": {}, + "iHaveClickedOnLink": "Я перайшоў па спасылцы", + "@iHaveClickedOnLink": { + "type": "String", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "Няслушныя фраза-пароль ці ключ аднаўлення", + "@incorrectPassphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "inoffensive": "Безабідны", + "@inoffensive": { + "type": "String", + "placeholders": {} + }, + "inviteContact": "Запрасіць кантакт", + "@inviteContact": { + "type": "String", + "placeholders": {} + }, + "inviteContactToGroupQuestion": "Вы хаціце запрасіць {contact} да чату \"{groupName}\"?", + "@inviteContactToGroupQuestion": {}, + "inviteContactToGroup": "Запрасіць кантакт да {groupName}", + "@inviteContactToGroup": { + "type": "String", + "placeholders": { + "groupName": { + "type": "String" + } + } + }, + "noChatDescriptionYet": "Апісанне чату яшчэ няма.", + "@noChatDescriptionYet": {}, + "tryAgain": "Паспрабуйце зноў", + "@tryAgain": {}, + "invalidServerName": "Недапушчальная назва сервера", + "@invalidServerName": {}, + "invited": "Запрошаны", + "@invited": { + "type": "String", + "placeholders": {} + }, + "redactMessageDescription": "Гэта паведамленне будзе адрэдагавана для усіх карыстальнікаў. Вы не зможаце яго адмяніць.", + "@redactMessageDescription": {}, + "optionalRedactReason": "(Неабавязкова) Прычына рэдагавання паведамлення...", + "@optionalRedactReason": {}, + "invitedUser": "📩 {username} запрасіў(-ла) {targetName}", + "@invitedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "invitedUsersOnly": "Толькі запрошаныя карыстальнікі", + "@invitedUsersOnly": { + "type": "String", + "placeholders": {} + }, + "inviteForMe": "Запрашэнне для мяне", + "@inviteForMe": { + "type": "String", + "placeholders": {} + }, + "inviteText": "{username} запрасіў вас у FluffyChat.\n1. Перайдзіце на fluffychat.im і ўстанавіце праграму\n2. Зарэгестрыруйцесь альбо ўвайдзіце\n3. Перайдзіце па запрашальнай спасылцы:\n{link}", + "@inviteText": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "link": { + "type": "String" + } + } + }, + "isTyping": "піша…", + "@isTyping": { + "type": "String", + "placeholders": {} + }, + "joinedTheChat": "👋 {username} далучыўся(лася) да чату", + "@joinedTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "joinRoom": "Далучыцца да пакою", + "@joinRoom": { + "type": "String", + "placeholders": {} + }, + "kicked": "👞 {username} выгнаў(-ла) {targetName}", + "@kicked": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickedAndBanned": "🙅 {username} выгнаў(-ла) і заблакіраваў(-ла) {targetName}", + "@kickedAndBanned": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickFromChat": "Выгнаць з чату", + "@kickFromChat": { + "type": "String", + "placeholders": {} + }, + "lastActiveAgo": "Апошняя актыўнасць: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "String", + "placeholders": { + "localizedTimeShort": { + "type": "String" + } + } + }, + "leave": "Выйсці", + "@leave": { + "type": "String", + "placeholders": {} + }, + "leftTheChat": "Выйсці з чату", + "@leftTheChat": { + "type": "String", + "placeholders": {} + }, + "license": "Ліцэнзія", + "@license": { + "type": "String", + "placeholders": {} + }, + "lightTheme": "Светлая", + "@lightTheme": { + "type": "String", + "placeholders": {} + }, + "loadCountMoreParticipants": "Загрузіць яшчэ {count} удзельнікаў", + "@loadCountMoreParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "dehydrate": "Экспарт сеансу і ачыстка прылады", + "@dehydrate": {}, + "dehydrateWarning": "Гэта дзеянне не можа быць адменена. Пераканайцеся, што вы бяспечна захавалі файл рэзервовай копіі.", + "@dehydrateWarning": {}, + "dehydrateTor": "Карыстальнікі TOR: Экспарт сесіі", + "@dehydrateTor": {}, + "dehydrateTorLong": "Для карыстальнікаў TOR прапануем экспартаваць сесію перад тым, як закрыць акно.", + "@dehydrateTorLong": {}, + "hydrateTor": "Карыстальнікі TOR: Імпарт экспарту сесіі", + "@hydrateTor": {}, + "hydrateTorLong": "Вы экспартавалі сесію ў мінулы раз праз TOR? Хутка імпартуйце яе і працягніце размовы.", + "@hydrateTorLong": {}, + "hydrate": "Аднавіць з рэзервовай копіі", + "@hydrate": {}, + "loadingPleaseWait": "Загрузка... Калі ласка, пачакайце.", + "@loadingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "loadMore": "Загрузіць больш…", + "@loadMore": { + "type": "String", + "placeholders": {} + }, + "locationDisabledNotice": "Сервісы месцазнаходжанн, адключаны. Калі ласка, уключыце іх, каб зноў дзяліцца месцазнаходжаннем.", + "@locationDisabledNotice": { + "type": "String", + "placeholders": {} + }, + "locationPermissionDeniedNotice": "Дазвол атрымання месцазнаходжання скасаваны. Калі ласка, дайце яго каб дзяліцца месцазнаходжаннем.", + "@locationPermissionDeniedNotice": { + "type": "String", + "placeholders": {} + }, + "login": "Логін", + "@login": { + "type": "String", + "placeholders": {} + }, + "logInTo": "Увайсці ў {homeserver}", + "@logInTo": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "logout": "Выйсці", + "@logout": { + "type": "String", + "placeholders": {} + }, + "memberChanges": "Змяненні ўдзельнікаў", + "@memberChanges": { + "type": "String", + "placeholders": {} + }, + "mention": "Згадаць", + "@mention": { + "type": "String", + "placeholders": {} + }, + "messages": "Паведамленні", + "@messages": { + "type": "String", + "placeholders": {} + }, + "messagesStyle": "Паведамленні:", + "@messagesStyle": {}, + "moderator": "Мадэратар", + "@moderator": { + "type": "String", + "placeholders": {} + }, + "muteChat": "Заглушыць чат", + "@muteChat": { + "type": "String", + "placeholders": {} + }, + "needPantalaimonWarning": "Пераканайцеся, калі ласка, што вы выкарыстоўваеце Pantalaimon для end-to-end шыфравання.", + "@needPantalaimonWarning": { + "type": "String", + "placeholders": {} + }, + "newChat": "Новы чат", + "@newChat": { + "type": "String", + "placeholders": {} + }, + "newMessageInFluffyChat": "💬 Новае паведамленне ў FluffyChat", + "@newMessageInFluffyChat": { + "type": "String", + "placeholders": {} + }, + "newVerificationRequest": "Новы запыт на верыфікацыю!", + "@newVerificationRequest": { + "type": "String", + "placeholders": {} + }, + "next": "Далей", + "@next": { + "type": "String", + "placeholders": {} + }, + "no": "Не", + "@no": { + "type": "String", + "placeholders": {} + }, + "noConnectionToTheServer": "Няма злучэння з серверам", + "@noConnectionToTheServer": { + "type": "String", + "placeholders": {} + }, + "noEmotesFound": "Эмодзі не знойдзены. 😕", + "@noEmotesFound": { + "type": "String", + "placeholders": {} + }, + "noEncryptionForPublicRooms": "Вы зможаце актывіраваць шыфраванне як толькі пакой перастане быць агульнадаступным.", + "@noEncryptionForPublicRooms": { + "type": "String", + "placeholders": {} + }, + "noGoogleServicesWarning": "Здаецца, на вашай прыладзе няма ці недаступны Firebase Cloud Messaging. Каб далей атрымліваць паведамленні, мы прапануем усталяваць ntfy ці іншы правайдар паведамленняў, каб атрымліваць іх бяспечна. Вы можаце спампаваць ntfy з PlayStore ці F-Droid.", + "@noGoogleServicesWarning": { + "type": "String", + "placeholders": {} + }, + "noMatrixServer": "{server1} не з'яўляецца серверам matrix. Выкарыстоўваць {server2} замест яго?", + "@noMatrixServer": { + "type": "String", + "placeholders": { + "server1": { + "type": "String" + }, + "server2": { + "type": "String" + } + } + }, + "shareInviteLink": "Падзяліцца запрашальнай спасылкай", + "@shareInviteLink": {}, + "scanQrCode": "Сканіраваць QR-код", + "@scanQrCode": {}, + "none": "Нічога", + "@none": { + "type": "String", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "Вы яшчэ не дадалі метад аднаўлення пароля.", + "@noPasswordRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "noPermission": "Няма дазволу", + "@noPermission": { + "type": "String", + "placeholders": {} + }, + "noRoomsFound": "Пакоі не знойдзены…", + "@noRoomsFound": { + "type": "String", + "placeholders": {} + }, + "notifications": "Паведамленні", + "@notifications": { + "type": "String", + "placeholders": {} + }, + "setChatDescription": "Задаць апісанне чату", + "@setChatDescription": {}, + "setInvitationLink": "Задаць запрашальную спасылку", + "@setInvitationLink": { + "type": "String", + "placeholders": {} + }, + "setPermissionsLevel": "Задаць ўзровееь дазволаў", + "@setPermissionsLevel": { + "type": "String", + "placeholders": {} + }, + "setStatus": "Задаць статус", + "@setStatus": { + "type": "String", + "placeholders": {} + }, + "settings": "Налады", + "@settings": { + "type": "String", + "placeholders": {} + }, + "share": "Падзяліцца", + "@share": { + "type": "String", + "placeholders": {} + }, + "sharedTheLocation": "{username} падзяліўся(-лася) сваім месцазнаходжаннем", + "@sharedTheLocation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "shareLocation": "Падзяліцца месцазнаходжаннем", + "@shareLocation": { + "type": "String", + "placeholders": {} + }, + "showPassword": "Паказаць пароль", + "@showPassword": { + "type": "String", + "placeholders": {} + }, + "presenceStyle": "Прысутнасць:", + "@presenceStyle": { + "type": "String", + "placeholders": {} + }, + "presencesToggle": "Паказваць паведасленні статусаў іншых карыстальнікаў", + "@presencesToggle": { + "type": "String", + "placeholders": {} + }, + "singlesignon": "Адзіны ўваход", + "@singlesignon": { + "type": "String", + "placeholders": {} + }, + "skip": "Прапусціць", + "@skip": { + "type": "String", + "placeholders": {} + }, + "sourceCode": "Зыходны код", + "@sourceCode": { + "type": "String", + "placeholders": {} + }, + "spaceIsPublic": "Прастора публічна", + "@spaceIsPublic": { + "type": "String", + "placeholders": {} + }, + "spaceName": "Назва прасторы", + "@spaceName": { + "type": "String", + "placeholders": {} + }, + "startedACall": "{senderName} пачаў выклік", + "@startedACall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "startFirstChat": "Пачніце ваш першы чат", + "@startFirstChat": {}, + "status": "Статус", + "@status": { + "type": "String", + "placeholders": {} + }, + "statusExampleMessage": "Як вашыя справы?", + "@statusExampleMessage": { + "type": "String", + "placeholders": {} + }, + "submit": "Дастасаваць", + "@submit": { + "type": "String", + "placeholders": {} + }, + "synchronizingPleaseWait": "Сінхранізацыя... Калі ласка, пачакайце.", + "@synchronizingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "synchronizingPleaseWaitCounter": " Сінхарнізацыя… ({percentage}%)", + "@synchronizingPleaseWaitCounter": { + "type": "String", + "placeholders": { + "percentage": { + "type": "String" + } + } + }, + "systemTheme": "Сістэма", + "@systemTheme": { + "type": "String", + "placeholders": {} + }, + "theyDontMatch": "Яны не супадаюць", + "@theyDontMatch": { + "type": "String", + "placeholders": {} + }, + "theyMatch": "Яны супадаюць", + "@theyMatch": { + "type": "String", + "placeholders": {} + }, + "title": "FluffyChat", + "@title": { + "description": "Title for the application", + "type": "String", + "placeholders": {} + }, + "toggleFavorite": "Пераключыць Захаванае", + "@toggleFavorite": { + "type": "String", + "placeholders": {} + }, + "toggleMuted": "Пераключыць гук", + "@toggleMuted": { + "type": "String", + "placeholders": {} + }, + "visibleForEveryone": "Бачна ўсім", + "@visibleForEveryone": { + "type": "String", + "placeholders": {} + }, + "voiceMessage": "Галасавое паведамленне", + "@voiceMessage": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "Чакаем, калі партнёр прыме запыт…", + "@waitingPartnerAcceptRequest": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerEmoji": "Чакаем, калі партнёр прыме эмодзі…", + "@waitingPartnerEmoji": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerNumbers": "Чакаем, калі партнёр зацвердзіць лічбы…", + "@waitingPartnerNumbers": { + "type": "String", + "placeholders": {} + }, + "wallpaper": "Шпалеры:", + "@wallpaper": { + "type": "String", + "placeholders": {} + }, + "warning": "Увага!", + "@warning": { + "type": "String", + "placeholders": {} + }, + "weSentYouAnEmail": "Мы даслалі вам ліст на email", + "@weSentYouAnEmail": { + "type": "String", + "placeholders": {} + }, + "whoCanPerformWhichAction": "Хто якія дзеянні можа выконваць", + "@whoCanPerformWhichAction": { + "type": "String", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "Каму дазволена далучацца да гэтай группы", + "@whoIsAllowedToJoinThisGroup": { + "type": "String", + "placeholders": {} + }, + "whyDoYouWantToReportThis": "Чаму вы хаціце паскардзіцца?", + "@whyDoYouWantToReportThis": { + "type": "String", + "placeholders": {} + }, + "wipeChatBackup": "Ачысціць рэзервовую копію чата, каб стварыць новы ключ аднаўлення?", + "@wipeChatBackup": { + "type": "String", + "placeholders": {} + }, + "withTheseAddressesRecoveryDescription": "З гэтымі адрасамі, вы сожаце аднавіць свой пароль.", + "@withTheseAddressesRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "writeAMessage": "Напісать паведамленне…", + "@writeAMessage": { + "type": "String", + "placeholders": {} + }, + "yes": "Так", + "@yes": { + "type": "String", + "placeholders": {} + }, + "you": "Вы", + "@you": { + "type": "String", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "Вы больш не ўдзельнічаеце ў гэтым чаце", + "@youAreNoLongerParticipatingInThisChat": { + "type": "String", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "Вы былі заблакіраваны ў гэтым чаце", + "@youHaveBeenBannedFromThisChat": { + "type": "String", + "placeholders": {} + }, + "yourPublicKey": "Ваш публічны ключ", + "@yourPublicKey": { + "type": "String", + "placeholders": {} + }, + "messageInfo": "Інфармацыя пра паведамленне", + "@messageInfo": {}, + "time": "Час", + "@time": {}, + "messageType": "Тып паведамлення", + "@messageType": {}, + "sender": "Адпраўшчык", + "@sender": {}, + "openGallery": "Адкрыць галерэю", + "@openGallery": {}, + "removeFromSpace": "Выдаліць з прасторы", + "@removeFromSpace": {}, + "addToSpaceDescription": "Выберыце прастору, да якой дадаць гэты чат.", + "@addToSpaceDescription": {}, + "start": "Пачаць", + "@start": {}, + "pleaseEnterRecoveryKeyDescription": "Каб разблакіраваць вашы мінулыя паведамленні, калі ласка, увядзіце ключ аднаўлення, што быў згенерыраваны ў мінулай сесіі. Ключ аднаўлення гэта НЕ ваш пароль.", + "@pleaseEnterRecoveryKeyDescription": {}, + "publish": "Апублікаваць", + "@publish": {}, + "videoWithSize": "Відэа ({size})", + "@videoWithSize": { + "type": "String", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "openChat": "Адкрыць чат", + "@openChat": {}, + "markAsRead": "Адзначыць як прачытанае", + "@markAsRead": {}, + "reportUser": "Паскардзіцца на карыстальніка", + "@reportUser": {}, + "dismiss": "Адхіліць", + "@dismiss": {}, + "reactedWith": "{sender} рэагуе з {reaction}", + "@reactedWith": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "reaction": { + "type": "String" + } + } + }, + "pinMessage": "Прымацаваць да пакою", + "@pinMessage": {}, + "confirmEventUnpin": "Вы ўпэўнены ў тым, што хаціце назаўсёды адмацаваць гэту падзею?", + "@confirmEventUnpin": {}, + "emojis": "Эмодзі", + "@emojis": {}, + "placeCall": "Здзейсніць выклік", + "@placeCall": {}, + "voiceCall": "Галасавы выклік", + "@voiceCall": {}, + "unsupportedAndroidVersion": "Непадтрымліваемая версія Android", + "@unsupportedAndroidVersion": {}, + "unsupportedAndroidVersionLong": "Гэта функцыя патрабуе навейшай версіі Android. Калі ласка, праверце наяўнасць абнаўленняў ці падтрымку Linage OS.", + "@unsupportedAndroidVersionLong": {}, + "videoCallsBetaWarning": "Звярніце ўвагу, што відэа выклікі знаходзяцца ў бэце. Яны могуць працаваць некарэктна ці не на ўсіх платформах.", + "@videoCallsBetaWarning": {}, + "experimentalVideoCalls": "Эксперыментальныя відэа выклікі", + "@experimentalVideoCalls": {}, + "emailOrUsername": "Email ці імя карыстальніка", + "@emailOrUsername": {}, + "indexedDbErrorTitle": "Праблемы з прыватным рэжымам", + "@indexedDbErrorTitle": {}, + "indexedDbErrorLong": "Сховішча паведамленняў, на жаль, не ўключана ў прыватным рэжыме па змаўчанні.\nКалі ласка, наведайце\n - about:config\n - што dom.indexedDB.privateBrowsing.enabled уключаны\nІнакш, FluffyChat будзе немагчыма запусціць.", + "@indexedDbErrorLong": {}, + "switchToAccount": "Пераключыцца на ўліковы запіс {number}", + "@switchToAccount": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "nextAccount": "Наступны ўліковы запіс", + "@nextAccount": {}, + "previousAccount": "Мінулы ўліковы запіс", + "@previousAccount": {}, + "addWidget": "Дадаць віджэт", + "@addWidget": {}, + "widgetVideo": "Відэа", + "@widgetVideo": {}, + "widgetEtherpad": "Тэкставая нататка", + "@widgetEtherpad": {}, + "widgetJitsi": "Jitsi Meet", + "@widgetJitsi": {}, + "widgetCustom": "Карыстальніцкі", + "@widgetCustom": {}, + "widgetName": "Імя", + "@widgetName": {}, + "widgetUrlError": "Гэта хібны URL.", + "@widgetUrlError": {}, + "widgetNameError": "Калі ласка, укажыце адлюстроўваемаем імя.", + "@widgetNameError": {}, + "errorAddingWidget": "Памылка дадання віджэту.", + "@errorAddingWidget": {}, + "youRejectedTheInvitation": "Вы скасавалі запрашэнне", + "@youRejectedTheInvitation": {}, + "youJoinedTheChat": "Вы далучыліся да чату", + "@youJoinedTheChat": {}, + "youAcceptedTheInvitation": "👍 Вы прынялі запрашэнне", + "@youAcceptedTheInvitation": {}, + "youBannedUser": "Вы заблакіравалі {user}", + "@youBannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youHaveWithdrawnTheInvitationFor": "Вы адазвалі запрашэнне для {user}", + "@youHaveWithdrawnTheInvitationFor": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youInvitedToBy": "📩 Вы былі запрошаны па спасылцы на:\n{alias}", + "@youInvitedToBy": { + "placeholders": { + "alias": { + "type": "String" + } + } + }, + "youInvitedBy": "📩 Вы былі запрошаны карыстальнікам {user}", + "@youInvitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "invitedBy": "📩 Запрошаны(-а) {user}", + "@invitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youInvitedUser": "📩 Вы запрасілі {user}", + "@youInvitedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youKicked": "👞 Вы выгналі {user}", + "@youKicked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youKickedAndBanned": "🙅 Вы выгналі і заблакіравалі {user}", + "@youKickedAndBanned": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youUnbannedUser": "Вы разблакіравалі {user}", + "@youUnbannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "hasKnocked": "🚪 {user} пагрукаўся", + "@hasKnocked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "usersMustKnock": "Карыстальнікі абавязаны пагрукацца", + "@usersMustKnock": {}, + "noOneCanJoin": "Ніхто не можа далучыцца", + "@noOneCanJoin": {}, + "userWouldLikeToChangeTheChat": "{user} хоча далучыцца да чату.", + "@userWouldLikeToChangeTheChat": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "noPublicLinkHasBeenCreatedYet": "Публічны ключ яшчэ не створаны", + "@noPublicLinkHasBeenCreatedYet": {}, + "knock": "Пагрукацца", + "@knock": {}, + "users": "Карыстальнікі", + "@users": {}, + "unlockOldMessages": "Адкрыць старыя паведамленні", + "@unlockOldMessages": {}, + "storeInSecureStorageDescription": "Захаваць код аднаўлення ў бяспечным месцы на прыладзе.", + "@storeInSecureStorageDescription": {}, + "saveKeyManuallyDescription": "Захаваць гэты ключ самастойна, выклікам сістэмнага акна Падзяліцца ці праз буфер.", + "@saveKeyManuallyDescription": {}, + "storeInAndroidKeystore": "Захаваць у Android KeyStore", + "@storeInAndroidKeystore": {}, + "storeInAppleKeyChain": "Захаваць у Apple KeyChain", + "@storeInAppleKeyChain": {}, + "storeSecurlyOnThisDevice": "Захаваць на гэтай прыладзе", + "@storeSecurlyOnThisDevice": {}, + "countFiles": "{count} файлаў", + "@countFiles": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "user": "Карыстальнік", + "@user": {}, + "custom": "Карыстальніцкае", + "@custom": {}, + "foregroundServiceRunning": "Гэта паведамленне з'явіцца, калі асноўныя службы запрацуюць.", + "@foregroundServiceRunning": {}, + "screenSharingTitle": "падзяліцца экранам", + "@screenSharingTitle": {}, + "screenSharingDetail": "Вы дзеліцеся экранам у FluffyChat", + "@screenSharingDetail": {}, + "callingPermissions": "Дазволы на выклікі", + "@callingPermissions": {}, + "callingAccount": "Уліковы запіс для выклікаў", + "@callingAccount": {}, + "callingAccountDetails": "Дазваляе FluffyChat выкарыстоўваць сістэмную праграму для выклікаў.", + "@callingAccountDetails": {}, + "appearOnTop": "З'яўляцца зверху", + "@appearOnTop": {}, + "appearOnTopDetails": "Дазваляе праграму з'яўляцца наверсе (не патрэбна, калі FluffyChat наладжаны як уліковы запіс для выклікаў)", + "@appearOnTopDetails": {}, + "otherCallingPermissions": "Мікрафон, камера і іншыя дазволы FluffyChat", + "@otherCallingPermissions": {}, + "whyIsThisMessageEncrypted": "Чаму гэта паведамленне нельга прачытаць?", + "@whyIsThisMessageEncrypted": {}, + "noKeyForThisMessage": "Гэта можа здарыцца з-за таго, што паведамленне было даслана да таго, як вы увайшлі ў уліковы запіс на гэтай прыладзе.\n\nТаксама верагодна, што адпраўшчык заблакіраваў вашу прыладу ці ў вас хібы з інтэрнэтам.\n\nВы можаце чытаць гэта паведамленне з іншага сеансу? Тад дашліце паведамленне адтуль! Перайдзіце ў Налады > Прылады і пераканайцеся ў тым, што вашы прылады верыфікавалі адна адну. Калі вы адкрыеце пакой наступны раз і абодве сэсіі будуць запушчаны, ключы павінны сінхранізавацца аўтаматычна.\n\nВы не хаціце згубіць клбчы, калі будзеце выходзіць ці змяняць прылады? Пераканайцеся ў тым, што вы уключылі рэзервовае капіраванне чатаў у наладах.", + "@noKeyForThisMessage": {}, + "newGroup": "Новая група", + "@newGroup": {}, + "newSpace": "Новая прастора", + "@newSpace": {}, + "enterSpace": "Увайсці ў прастору", + "@enterSpace": {}, + "enterRoom": "Увайсці ў пакой", + "@enterRoom": {}, + "allSpaces": "Усе прасторы", + "@allSpaces": {}, + "numChats": "{number} чатаў", + "@numChats": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "hideUnimportantStateEvents": "Хаваць неабавязковыя падзеі статусу", + "@hideUnimportantStateEvents": {}, + "hidePresences": "Хаваць спіс статусаў?", + "@hidePresences": {}, + "doNotShowAgain": "Не паказваць зноў", + "@doNotShowAgain": {}, + "wasDirectChatDisplayName": "Пусты чат (быў {oldDisplayName})", + "@wasDirectChatDisplayName": { + "type": "String", + "placeholders": { + "oldDisplayName": { + "type": "String" + } + } + }, + "newSpaceDescription": "Прасторы дазваляюць аб'ядноўваць вашы чаты і ствараць агульныя ці асобныя супольнасці.", + "@newSpaceDescription": {}, + "encryptThisChat": "Шыфраваць гэты чат", + "@encryptThisChat": {}, + "disableEncryptionWarning": "У мэтах бяспекі, вы не можаце адклбчауь шыфраванне ў гэтым чаце, дзе яно было ўключана.", + "@disableEncryptionWarning": {}, + "sorryThatsNotPossible": "Прабачце... Гэта немагчыма", + "@sorryThatsNotPossible": {}, + "deviceKeys": "Ключы прылад:", + "@deviceKeys": {}, + "reopenChat": "Адкрыць чат зноў", + "@reopenChat": {}, + "noBackupWarning": "Увага! Без уключэння рэзервовага капіравання чатаў, вы страціце доступ да вашых зашыфраваных паведамленняў. Настойліва рэкамендуецца уключыць фукнцыю да таго, як выйсці.", + "@noBackupWarning": {}, + "noOtherDevicesFound": "Іншыя прылады не знойдзены", + "@noOtherDevicesFound": {}, + "fileIsTooBigForServer": "Немагчыма даслаць! Сервер падтрымлівае файлы да {max}.", + "@fileIsTooBigForServer": { + "type": "String", + "placeholders": { + "max": { + "type": "String" + } + } + }, + "fileHasBeenSavedAt": "Файл быў захаваны ў {path}", + "@fileHasBeenSavedAt": { + "type": "String", + "placeholders": { + "path": { + "type": "String" + } + } + }, + "jumpToLastReadMessage": "Перайсці да апошняга паведамлення", + "@jumpToLastReadMessage": {}, + "readUpToHere": "Чытаць тут", + "@readUpToHere": {}, + "jump": "Перайсці", + "@jump": {}, + "openLinkInBrowser": "Адкрыць спасылку ў браўзеры", + "@openLinkInBrowser": {}, + "reportErrorDescription": "😭 О не, штосьці пайшло не так. Калі жадаеце, можаце падаць справаздачу аб памылке распрауоўшчыкам.", + "@reportErrorDescription": {}, + "report": "паскардзіцца", + "@report": {}, + "signInWithPassword": "Увайсці з паролем", + "@signInWithPassword": {}, + "manageAccount": "Кіраванне ўліковым запісам", + "@manageAccount": {}, + "noContactInformationProvided": "Сервер не мае ніякай вернай кантактнай інфармацыі", + "@noContactInformationProvided": {}, + "contactServerAdmin": "Звязацца з адміністратарам сервера", + "@contactServerAdmin": {}, + "contactServerSecurity": "Звязацца з сервернай бяспекай", + "@contactServerSecurity": {}, + "supportPage": "Падтрымка", + "@supportPage": {}, + "serverInformation": "Серверная інфармацыя:", + "@serverInformation": {}, + "name": "Імя", + "@name": {}, + "version": "Версія", + "@version": {}, + "website": "Сайт", + "@website": {}, + "compress": "Сцісканне", + "@compress": {}, + "boldText": "Цёмны", + "@boldText": {}, + "italicText": "Курсіў", + "@italicText": {}, + "strikeThrough": "Перакрэслены", + "@strikeThrough": {}, + "pleaseFillOut": "Калі ласка, запоўніце", + "@pleaseFillOut": {}, + "invalidUrl": "Няслушны url", + "@invalidUrl": {}, + "addLink": "Дадаць спасылку", + "@addLink": {}, + "unableToJoinChat": "Немагчыма далучыцца да чату. Магчыма, іншы бок ужо скончыў размову.", + "@unableToJoinChat": {}, + "previous": "Мінулы", + "@previous": {}, + "otherPartyNotLoggedIn": "Іншы бок зараз не увайшоў, таму не можа атрымліваць паведамленні!", + "@otherPartyNotLoggedIn": {}, + "appWantsToUseForLogin": "Выкарыстоўваць '{server}' для ўвахода", + "@appWantsToUseForLogin": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "appWantsToUseForLoginDescription": "Тым самым, вы дазваляеце праграме і сайту дзяліцца інфармацыяй пра вас.", + "@appWantsToUseForLoginDescription": {}, + "open": "Адкрыць", + "@open": {}, + "waitingForServer": "Чаканне сервера...", + "@waitingForServer": {}, + "appIntroduction": "FluffyChat дазваляе вам і вашым сябрам размаўляць скрозь розныя мэсэнджары. Даведайцеся болей на https://matrix.org ці націсніце *Працягнуць*.", + "@appIntroduction": {}, + "newChatRequest": "📩 Запыт новага чату", + "@newChatRequest": {}, + "contentNotificationSettings": "Налады паведамленняў кантэнту", + "@contentNotificationSettings": {}, + "generalNotificationSettings": "Агульныя налады паведамленняў", + "@generalNotificationSettings": {}, + "roomNotificationSettings": "Налады паведамленняў пакою", + "@roomNotificationSettings": {}, + "userSpecificNotificationSettings": "Налады паведамленняў карыстальніка", + "@userSpecificNotificationSettings": {}, + "otherNotificationSettings": "Іншыя налады паведамленняў", + "@otherNotificationSettings": {}, + "notificationRuleContainsUserName": "Змяшчае імя карыстальніка", + "@notificationRuleContainsUserName": {}, + "notificationRuleContainsUserNameDescription": "Паведамляе пра тое, што паведамленне мае імя карыстальніка.", + "@notificationRuleContainsUserNameDescription": {}, + "notificationRuleMaster": "Заглушыць усе паведамленні", + "@notificationRuleMaster": {}, + "notificationRuleMasterDescription": "Перазапісвае ўсе іншыя правілы і адключае паведамленні.", + "@notificationRuleMasterDescription": {}, + "notificationRuleSuppressNotices": "Адключыць аўтаматычныя паведамленні", + "@notificationRuleSuppressNotices": {}, + "notificationRuleSuppressNoticesDescription": "Адключыць паведамленні ад аўтаматызаваных кліентаў, накшталт ботаў.", + "@notificationRuleSuppressNoticesDescription": {}, + "notificationRuleInviteForMe": "Запрашэнне мяне", + "@notificationRuleInviteForMe": {}, + "notificationRuleInviteForMeDescription": "Паведамляе карыстальніка, калі яго запрашаюць у пакой.", + "@notificationRuleInviteForMeDescription": {}, + "allDevices": "Усе прылады", + "@allDevices": {}, + "crossVerifiedDevicesIfEnabled": "З перакрыжаваным спраўджваннем прылад, калі ўключана", + "@crossVerifiedDevicesIfEnabled": {}, + "crossVerifiedDevices": "Перакрыжавана спраўджаныя прылады", + "@crossVerifiedDevices": {}, + "verifiedDevicesOnly": "Толькі спраўджаныя прылады", + "@verifiedDevicesOnly": {}, + "takeAPhoto": "Зрабіць здымак", + "@takeAPhoto": {}, + "recordAVideo": "Запісаць відэа", + "@recordAVideo": {}, + "optionalMessage": "(Апцыянальна) паведамленне...", + "@optionalMessage": {}, + "notSupportedOnThisDevice": "Не падтрымліваецца на гэтай прыладзе", + "@notSupportedOnThisDevice": {}, + "enterNewChat": "Увядзіце новы чат", + "@enterNewChat": {}, + "approve": "Пацвердзіць", + "@approve": {}, + "youHaveKnocked": "Вы былі выгнаны", + "@youHaveKnocked": {}, + "pleaseWaitUntilInvited": "Калі ласка, пачакайце, пакуль хтосьці з пакою вас не запрасіць.", + "@pleaseWaitUntilInvited": {}, + "commandHint_logout": "Выйсці з бягуяай прылады", + "@commandHint_logout": {}, + "commandHint_logoutall": "Выйсці на ўсіх актыўных прыладах", + "@commandHint_logoutall": {}, + "displayNavigationRail": "Паказваць навігацыйны след на тэлефоне", + "@displayNavigationRail": {}, + "customReaction": "Карыстальніцкая рэакцыя", + "@customReaction": {}, + "moreEvents": "Больш падзей", + "@moreEvents": {}, + "declineInvitation": "Скасаваць запрашэнне", + "@declineInvitation": {}, + "notificationsEnabledForThisAccount": "Паведамленні ўклбчаны для гжтага ўліковага запісу", + "@notificationsEnabledForThisAccount": { + "type": "String", + "placeholders": {} + }, + "numUsersTyping": "{count} карыстальнікаў пішуць…", + "@numUsersTyping": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "obtainingLocation": "Атрыманне месцазнаходжання…", + "@obtainingLocation": { + "type": "String", + "placeholders": {} + }, + "offensive": "Абражальна", + "@offensive": { + "type": "String", + "placeholders": {} + }, + "offline": "Не ў сетцы", + "@offline": { + "type": "String", + "placeholders": {} + }, + "ok": "Ок", + "@ok": { + "type": "String", + "placeholders": {} + }, + "online": "У сетцы", + "@online": { + "type": "String", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "Рэзервовае капіраванне ключэй уключана", + "@onlineKeyBackupEnabled": { + "type": "String", + "placeholders": {} + }, + "oopsPushError": "Упс! На жаль, пры наладжванні пуш-паведамленняў, адбылася памылка.", + "@oopsPushError": { + "type": "String", + "placeholders": {} + }, + "oopsSomethingWentWrong": "Упс, штосьці пайшло не так…", + "@oopsSomethingWentWrong": { + "type": "String", + "placeholders": {} + }, + "openAppToReadMessages": "Адкройце праграму, каб прачытаць паведамленні", + "@openAppToReadMessages": { + "type": "String", + "placeholders": {} + }, + "openCamera": "Адкрыць камеру", + "@openCamera": { + "type": "String", + "placeholders": {} + }, + "openVideoCamera": "Адкрыць камеру для відэа", + "@openVideoCamera": { + "type": "String", + "placeholders": {} + }, + "oneClientLoggedOut": "Адзін з вашых кліентаў выйшаў", + "@oneClientLoggedOut": {}, + "addAccount": "Дадаць уліковы запіс", + "@addAccount": {}, + "editBundlesForAccount": "Змяніць пакеты для гэтага ўліковага запісу", + "@editBundlesForAccount": {}, + "addToBundle": "Дадаць у пакет", + "@addToBundle": {}, + "removeFromBundle": "Выдаліць з пакета", + "@removeFromBundle": {}, + "bundleName": "Назва пакета", + "@bundleName": {}, + "openInMaps": "Адкрыць на картах", + "@openInMaps": { + "type": "String", + "placeholders": {} + }, + "link": "Спасылка", + "@link": {}, + "serverRequiresEmail": "Гэты сервер павінен спраўдзіць ваш email для рэгістрацыі.", + "@serverRequiresEmail": {}, + "or": "Ці", + "@or": { + "type": "String", + "placeholders": {} + }, + "participant": "Удзельнік", + "@participant": { + "type": "String", + "placeholders": {} + }, + "passphraseOrKey": "фраза-пароль ці ключ аднаўлення", + "@passphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "password": "Пароль", + "@password": { + "type": "String", + "placeholders": {} + }, + "passwordForgotten": "Не памятаю пароль", + "@passwordForgotten": { + "type": "String", + "placeholders": {} + }, + "passwordHasBeenChanged": "Пароль быў зменены", + "@passwordHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "hideMemberChangesInPublicChats": "Хаваць змяненні ўдзельнікаў у публічных чатах", + "@hideMemberChangesInPublicChats": {}, + "hideMemberChangesInPublicChatsBody": "Не паказваць далучэнні і выхады з чату ў шкале часу для лепшай чытальнасці.", + "@hideMemberChangesInPublicChatsBody": {}, + "overview": "Агляд", + "@overview": {}, + "notifyMeFor": "Паведамляць мяне пра", + "@notifyMeFor": {}, + "passwordRecoverySettings": "Налады скіду пароля", + "@passwordRecoverySettings": {}, + "passwordRecovery": "Аднаўленне пароля", + "@passwordRecovery": { + "type": "String", + "placeholders": {} + }, + "people": "Людзі", + "@people": { + "type": "String", + "placeholders": {} + }, + "pickImage": "Абраць выяву", + "@pickImage": { + "type": "String", + "placeholders": {} + }, + "pin": "Замацаваць", + "@pin": { + "type": "String", + "placeholders": {} + }, + "play": "Прайграць {fileName}", + "@play": { + "type": "String", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "pleaseChoose": "Калі ласка, выберыце", + "@pleaseChoose": { + "type": "String", + "placeholders": {} + }, + "pleaseChooseAPasscode": "Калі ласка, выберыце код доступу", + "@pleaseChooseAPasscode": { + "type": "String", + "placeholders": {} + }, + "pleaseClickOnLink": "Калі ласка, націсніце на спасылку ў лісце на email, каб працягнуць.", + "@pleaseClickOnLink": { + "type": "String", + "placeholders": {} + }, + "pleaseEnter4Digits": "Калі ласка, увядзіце 4 лічбы ці пакіньце пустым, каб адключыць код-пароль.", + "@pleaseEnter4Digits": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterRecoveryKey": "Увядзіце ключ аднаўлення:", + "@pleaseEnterRecoveryKey": {}, + "pleaseEnterYourPassword": "Калі ласка, увядзіце ваш пароль", + "@pleaseEnterYourPassword": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPin": "Калі ласка, увядзіце пін-код", + "@pleaseEnterYourPin": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourUsername": "Калі ласка, увядзіце імя карыстальніка", + "@pleaseEnterYourUsername": { + "type": "String", + "placeholders": {} + }, + "pleaseFollowInstructionsOnWeb": "Калі ласка, сачыце за інстуркцыямі ў браўзеры і націсніце \"Далей\".", + "@pleaseFollowInstructionsOnWeb": { + "type": "String", + "placeholders": {} + }, + "privacy": "Прыватнасць", + "@privacy": { + "type": "String", + "placeholders": {} + }, + "publicRooms": "Публічныя пакоі", + "@publicRooms": { + "type": "String", + "placeholders": {} + }, + "pushRules": "Правілы пушэй", + "@pushRules": { + "type": "String", + "placeholders": {} + }, + "reason": "Прычына", + "@reason": { + "type": "String", + "placeholders": {} + }, + "recording": "Запіс", + "@recording": { + "type": "String", + "placeholders": {} + }, + "redactedBy": "Адрэдагавана {username}", + "@redactedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "directChat": "Асобны чат", + "@directChat": {}, + "redactedByBecause": "Адрэдагавана {username}, прычына: \"{reason}\"", + "@redactedByBecause": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "reason": { + "type": "String" + } + } + }, + "redactedAnEvent": "{username} адрэдагаваў(-ла) падзею", + "@redactedAnEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "redactMessage": "Адрэдагаваць паведамленне", + "@redactMessage": { + "type": "String", + "placeholders": {} + }, + "register": "Зарэгістравацца", + "@register": { + "type": "String", + "placeholders": {} + }, + "reject": "Адмовіць", + "@reject": { + "type": "String", + "placeholders": {} + }, + "rejectedTheInvitation": "{username} адмовіў запрашэнне", + "@rejectedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "rejoin": "Далучыцца зноў", + "@rejoin": { + "type": "String", + "placeholders": {} + }, + "removeAllOtherDevices": "Выдаліць усе іншыя прылады", + "@removeAllOtherDevices": { + "type": "String", + "placeholders": {} + }, + "removedBy": "Выдалена {username}", + "@removedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "removeDevice": "Выдаліць прыладу", + "@removeDevice": { + "type": "String", + "placeholders": {} + }, + "unbanFromChat": "Разблакіраваць у чаце", + "@unbanFromChat": { + "type": "String", + "placeholders": {} + }, + "removeYourAvatar": "Выдаліць выяву ўліковага запісу", + "@removeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "replaceRoomWithNewerVersion": "Замяніць пакой навейшай версіяй", + "@replaceRoomWithNewerVersion": { + "type": "String", + "placeholders": {} + }, + "reply": "Адказаць", + "@reply": { + "type": "String", + "placeholders": {} + }, + "reportMessage": "Паведаміць пра паведамленне", + "@reportMessage": { + "type": "String", + "placeholders": {} + }, + "requestPermission": "Запрасіць дазвол", + "@requestPermission": { + "type": "String", + "placeholders": {} + }, + "roomHasBeenUpgraded": "Пакой быў абноўлены", + "@roomHasBeenUpgraded": { + "type": "String", + "placeholders": {} + }, + "roomVersion": "Версія пакою", + "@roomVersion": { + "type": "String", + "placeholders": {} + }, + "saveFile": "Захаваць файл", + "@saveFile": { + "type": "String", + "placeholders": {} + }, + "search": "Пошук", + "@search": { + "type": "String", + "placeholders": {} + }, + "security": "Бяспека", + "@security": { + "type": "String", + "placeholders": {} + }, + "recoveryKey": "Ключ аднаўлення", + "@recoveryKey": {}, + "recoveryKeyLost": "Ключ абнаўлення страчаны?", + "@recoveryKeyLost": {}, + "seenByUser": "Прагледжана {username}", + "@seenByUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "send": "Даслаць", + "@send": { + "type": "String", + "placeholders": {} + }, + "sendAMessage": "Даслаць паведамленне", + "@sendAMessage": { + "type": "String", + "placeholders": {} + }, + "sendAsText": "Даслаць як тэкст", + "@sendAsText": { + "type": "String" + }, + "sendAudio": "Даслаць аўдыё", + "@sendAudio": { + "type": "String", + "placeholders": {} + }, + "sendFile": "Даслаць файл", + "@sendFile": { + "type": "String", + "placeholders": {} + }, + "sendImage": "Даслаць выяву", + "@sendImage": { + "type": "String", + "placeholders": {} + }, + "sendImages": "Даслаць {count} выяў(-вы)", + "@sendImages": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "sendMessages": "Даслаць паведамленні", + "@sendMessages": { + "type": "String", + "placeholders": {} + }, + "sendOriginal": "Даслаць арыгінал", + "@sendOriginal": { + "type": "String", + "placeholders": {} + }, + "sendSticker": "Даслаць стыкер", + "@sendSticker": { + "type": "String", + "placeholders": {} + }, + "sendVideo": "Даслаць відэа", + "@sendVideo": { + "type": "String", + "placeholders": {} + }, + "sentAFile": "📁 {username} даслаў файл", + "@sentAFile": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAnAudio": "🎤 {username} даслаў аўдыё", + "@sentAnAudio": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAPicture": "🖼️ {username} даслаў выяву", + "@sentAPicture": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentASticker": "😊 {username} даслаў стыкер", + "@sentASticker": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAVideo": "🎥 {username} даслаў відэа", + "@sentAVideo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentCallInformations": "{senderName} даслаў інфрамацыю пра выклік", + "@sentCallInformations": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "separateChatTypes": "Падзяляць асобныя чаты і групы", + "@separateChatTypes": { + "type": "String", + "placeholders": {} + }, + "setAsCanonicalAlias": "Задаць як асноўны псеўданім", + "@setAsCanonicalAlias": { + "type": "String", + "placeholders": {} + }, + "setCustomEmotes": "Задаць карыстальніцкі эмодзі", + "@setCustomEmotes": { + "type": "String", + "placeholders": {} + }, + "toggleUnread": "Пазначыць прачытаным/непрачытаным", + "@toggleUnread": { + "type": "String", + "placeholders": {} + }, + "tooManyRequestsWarning": "Занадта шмат запытаў. Паспрабуйце пазней!", + "@tooManyRequestsWarning": { + "type": "String", + "placeholders": {} + }, + "transferFromAnotherDevice": "Перанесці з іншай прылады", + "@transferFromAnotherDevice": { + "type": "String", + "placeholders": {} + }, + "tryToSendAgain": "Паспрабуйце даслаць зноў", + "@tryToSendAgain": { + "type": "String", + "placeholders": {} + }, + "unavailable": "Недаступна", + "@unavailable": { + "type": "String", + "placeholders": {} + }, + "unbannedUser": "{username} разблакіраваў {targetName}", + "@unbannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "unblockDevice": "Разблакіраваць прыладу", + "@unblockDevice": { + "type": "String", + "placeholders": {} + }, + "unknownDevice": "Невядомая прылада", + "@unknownDevice": { + "type": "String", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "Невядомы алгарытм шыфравання", + "@unknownEncryptionAlgorithm": { + "type": "String", + "placeholders": {} + }, + "unknownEvent": "Невядомая падзея '{type}'", + "@unknownEvent": { + "type": "String", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "unmuteChat": "Уключыць павдеамленні чата", + "@unmuteChat": { + "type": "String", + "placeholders": {} + }, + "unpin": "Адмацаваць", + "@unpin": { + "type": "String", + "placeholders": {} + }, + "unreadChats": "{unreadCount, plural, =1{1 непрачытаны чат} other{{unreadCount} непрачытаных чатаў}}", + "@unreadChats": { + "type": "String", + "placeholders": { + "unreadCount": { + "type": "int" + } + } + }, + "userAndOthersAreTyping": "{username} і {count} іншых удзельнікаў пішуць…", + "@userAndOthersAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "userAndUserAreTyping": "{username} і {username2} пішуць…", + "@userAndUserAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "username2": { + "type": "String" + } + } + }, + "userIsTyping": "{username} піша…", + "@userIsTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "userLeftTheChat": "🚪 {username} пакінуў(-ла) чат", + "@userLeftTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "username": "Імя карыстальніка", + "@username": { + "type": "String", + "placeholders": {} + }, + "userSentUnknownEvent": "{username} даслаў падзею {type}", + "@userSentUnknownEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "type": { + "type": "String" + } + } + }, + "unverified": "Не спраўджана", + "@unverified": {}, + "verified": "Спраўджана", + "@verified": { + "type": "String", + "placeholders": {} + }, + "verify": "Спраўдзіць", + "@verify": { + "type": "String", + "placeholders": {} + }, + "verifyStart": "Пачаць спраўджванне", + "@verifyStart": { + "type": "String", + "placeholders": {} + }, + "verifySuccess": "Вы паспяхова спраўджаны!", + "@verifySuccess": { + "type": "String", + "placeholders": {} + }, + "verifyTitle": "Спраўдзіць іншы ўліковы запіс", + "@verifyTitle": { + "type": "String", + "placeholders": {} + }, + "videoCall": "Відэа выклік", + "@videoCall": { + "type": "String", + "placeholders": {} + }, + "verifyOtherUserDescription": "Калі вы спраўдзілі іншага карыстальніка, вы можаце быць упэўненым з кім вы сапраўды перапісваецеся.💪\n\nКалі вы пачнеце спраўджванне, вы і іншы карыстальнік, убачыце ўсплывальнае акно ў праграме. У ім вы ўбачыце некалькі эмодзі ці лічб, якія вы павінны параўнаць адзін з адным.\n\nЛепшы метад зрабіць гэта - пачаць відэа выклік. 👭", + "@verifyOtherUserDescription": {}, + "pleaseEnterANumber": "Калі ласка, увядзіце лічбу большую за 0", + "@pleaseEnterANumber": {}, + "verifyOtherDeviceDescription": "Калі вы спраўдзіце другую прыладу, яны абмяняюцца ключамі, якія ўзмоцняць вашу бяспеку. 💪 Калі вы пачнеце спраўджванне, у праграмах прылад з'явіцца ўсплывальнае паведамленне. Потым, вы ўбачыце некалькі эмодзі ці лічбаў, якія вы павінны параўнаць паміж сабой. Прасцей за ўсё гэта зрабіць, маючы дзве прылады побач. 🤳", + "@verifyOtherDeviceDescription": {}, + "verifyOtherUser": "🔐 Спраўдзіць іншага карыстальніка", + "@verifyOtherUser": {}, + "verifyOtherDevice": "🔐 Спраўдзіць іншую прыладу", + "@verifyOtherDevice": {}, + "changeTheCanonicalRoomAlias": "Змяніць публічны адрас чату", + "@changeTheCanonicalRoomAlias": {}, + "wrongRecoveryKey": "Прабачце... гэта не выглядае як ключ аднаўлення.", + "@wrongRecoveryKey": {}, + "restoreSessionBody": "Праграма спрабуе аднавіць вашу сесію з рэзервовай копіі. Калі ласка, паведаміце пра памылку распрацоўшчыкам па спасылцы {url}. Паведамленне памылкі: {error}", + "@restoreSessionBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "homeserverDescription": "Вашыя даныя захоўваюцца на дамашнім серверы, як у правайдара электронай пошты. Вы можаце самастойна абраць дамашні сервер, захоўвая пры тым магчымасць размаўляць. Даведайцеся болей на https://matrix.org.", + "@homeserverDescription": {}, + "longPressToRecordVoiceMessage": "Доўга цісніце, каб запісаць галасавое паведамленне.", + "@longPressToRecordVoiceMessage": {}, + "visibilityOfTheChatHistory": "Бачнасць гісторыі чату", + "@visibilityOfTheChatHistory": { + "type": "String", + "placeholders": {} + }, + "visibleForAllParticipants": "Бачна для ўсіх удзельнікаў", + "@visibleForAllParticipants": { + "type": "String", + "placeholders": {} + }, + "pleaseTryAgainLaterOrChooseDifferentServer": "Калі ласка, паспрабуйце пазней ці абярыце іншы сервер.", + "@pleaseTryAgainLaterOrChooseDifferentServer": {}, + "signInWith": "Увайсці з {provider}", + "@signInWith": { + "type": "String", + "placeholders": { + "provider": { + "type": "String" + } + } + }, + "profileNotFound": "Карыстальнік не знойдзены на гэтым серверы. Гэта можа быць памылка сеткі ці карыстальніка не існуе.", + "@profileNotFound": {}, + "setTheme": "Тэма:", + "@setTheme": {}, + "setColorTheme": "Каляровая схема:", + "@setColorTheme": {}, + "invite": "Запрасіць", + "@invite": {}, + "inviteGroupChat": "📨 Запрашэнне ў групавы чат", + "@inviteGroupChat": {}, + "invitePrivateChat": "📨 Запрашэнне ў асобны чат", + "@invitePrivateChat": {}, + "invalidInput": "Недапушчальны ўвод!", + "@invalidInput": {}, + "wrongPinEntered": "Няверны пін-код! Паспрабуйце праз {seconds} секунд...", + "@wrongPinEntered": { + "type": "String", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "archiveRoomDescription": "Чат перамясціцца ў архіў. Іншыя карыстальнікі будуць бачыць гэта так, быццам вы выйшлі з чату.", + "@archiveRoomDescription": {}, + "roomUpgradeDescription": "Чат будзе пераствораны з новай версіяй пакою. Усе ўдзельнікі будуць паведамлены пра неабходнасць перайсці ў новы чат. Вы можаце даведацца пра версіі пакояў тут: https://spec.matrix.org/latest/rooms/", + "@roomUpgradeDescription": {}, + "removeDevicesDescription": "Вы выйдзеце з гэтай прылады і больш не будзеце атрымліваць паведамленні.", + "@removeDevicesDescription": {}, + "sendTypingNotificationsDescription": "Іншыя ўдзельнікі чату могуць бачыць, калі вы пішаце новае паведамленне.", + "@sendTypingNotificationsDescription": {}, + "continueText": "Працягнуць", + "@continueText": {}, + "banUserDescription": "Карыстальнік будзе заблакіраваны з чату і больш не зможа ўвайсці, пакуль вы яго не разблакіруеце.", + "@banUserDescription": {}, + "unbanUserDescription": "Карыстальнік зможа зноў далучыцца да чату.", + "@unbanUserDescription": {}, + "kickUserDescription": "Карыстальнік будзе выгнаны, але не заблакіраваны. У публічных чатах, ён зможа далучыцца зноў у любы час.", + "@kickUserDescription": {}, + "makeAdminDescription": "Калі вы зробіце карыстальніка адміністратарам, вы не зможаце адмяніць гэта дзеянне, бо ён будзе мець такія ж правы, як і вы.", + "@makeAdminDescription": {}, + "pushNotificationsNotAvailable": "Пуш-паведамленні недаступны", + "@pushNotificationsNotAvailable": {}, + "learnMore": "Даведацца больш", + "@learnMore": {}, + "yourGlobalUserIdIs": "Ваш глабальны ID-карыстальніка: ", + "@yourGlobalUserIdIs": {}, + "noUsersFoundWithQuery": "На жаль, мы не змаглі знайсці карыстальніка з імём \"{query}\". Калі ласка, праверце наяўнасць памылак.", + "@noUsersFoundWithQuery": { + "type": "String", + "placeholders": { + "query": { + "type": "String" + } + } + }, + "knocking": "Грукацца", + "@knocking": {}, + "knockRestricted": "Грук абмежаваны", + "@knockRestricted": {}, + "spaceMemberOfCanKnock": "Удзельнікі прасторы з {spaces} могуць грукацца", + "@spaceMemberOfCanKnock": { + "type": "String", + "placeholders": { + "spaces": { + "type": "String" + } + } + }, + "chatCanBeDiscoveredViaSearchOnServer": "Чат можа быць знойдзены праз пошук у {server}", + "@chatCanBeDiscoveredViaSearchOnServer": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "searchChatsRooms": "Пошук #чатаў, @карыстальнікаў...", + "@searchChatsRooms": {}, + "nothingFound": "Нічога не знойдзена...", + "@nothingFound": {}, + "groupName": "Назва групы", + "@groupName": {}, + "createGroupAndInviteUsers": "Стварыць групу і запрасіць карыстальнікаў", + "@createGroupAndInviteUsers": {}, + "groupCanBeFoundViaSearch": "Група можа быць знойдзена праз пошук", + "@groupCanBeFoundViaSearch": {}, + "startConversation": "Пачаць размову", + "@startConversation": {}, + "commandHint_sendraw": "Даслаць толькі json", + "@commandHint_sendraw": {}, + "databaseMigrationTitle": "База даных аптымізавана", + "@databaseMigrationTitle": {}, + "databaseMigrationBody": "Калі ласка, пачакайце. Гэта можа заняць некаторы час.", + "@databaseMigrationBody": {}, + "leaveEmptyToClearStatus": "Пакіньце пустым, каб ачысціць свой статус.", + "@leaveEmptyToClearStatus": {}, + "select": "Выбраць", + "@select": {}, + "searchForUsers": "Пошук @карыстальнікаў...", + "@searchForUsers": {}, + "pleaseEnterYourCurrentPassword": "Калі ласка, увядзіце свой бягучы пароль", + "@pleaseEnterYourCurrentPassword": {}, + "newPassword": "Новы пароль", + "@newPassword": {}, + "pleaseChooseAStrongPassword": "Калі ласка, падбярыце больш надзейны пароль", + "@pleaseChooseAStrongPassword": {}, + "passwordsDoNotMatch": "Паролі не супадаюць", + "@passwordsDoNotMatch": {}, + "passwordIsWrong": "Вы ўвялі няверны пароль", + "@passwordIsWrong": {}, + "publicLink": "Публічная спасылка", + "@publicLink": {}, + "publicChatAddresses": "Публічныя адрасы чату", + "@publicChatAddresses": {}, + "createNewAddress": "Стварыць новы адрас", + "@createNewAddress": {}, + "joinSpace": "Далучыцца да прасторы", + "@joinSpace": {}, + "publicSpaces": "Публічныя прасторы", + "@publicSpaces": {}, + "addChatOrSubSpace": "Дадаць чат ці пад-прастору", + "@addChatOrSubSpace": {}, + "subspace": "Пад-прастора", + "@subspace": {}, + "decline": "Адхіліць", + "@decline": {}, + "thisDevice": "Гэта прылада:", + "@thisDevice": {}, + "initAppError": "Адбылася памылка пры ініцыялізацыі праграмы", + "@initAppError": {}, + "userRole": "Роль карыстальніка", + "@userRole": {}, + "minimumPowerLevel": "{level} - мінімальны ўзровень дазволаў.", + "@minimumPowerLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "String" + } + } + }, + "searchIn": "Пошук у чаце \"{chat}\"...", + "@searchIn": { + "type": "String", + "placeholders": { + "chat": { + "type": "String" + } + } + }, + "searchMore": "Шукаць яшчэ...", + "@searchMore": {}, + "gallery": "Галерэя", + "@gallery": {}, + "files": "Файлы", + "@files": {}, + "databaseBuildErrorBody": "Немагчыма стварыць базу даных SQlite. Праграма спрабуе выкарыстоўваць састарэлую базу. Калі ласка, паведаміце распрацоўшчыкам пра гэта: {url}. Паведамленне памылкі: {error}", + "@databaseBuildErrorBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "sessionLostBody": "Ваш сеанс страчаны. Калі ласка, паведаміце пра гэта распрацоўшчыкам: {url}. Паведамленне памылкі: {error}", + "@sessionLostBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "forwardMessageTo": "Пераслаць паведамленне ў {roomName}?", + "@forwardMessageTo": { + "type": "String", + "placeholders": { + "roomName": { + "type": "String" + } + } + }, + "sendReadReceipts": "Дасылаць адзнаку аб чытанні", + "@sendReadReceipts": {}, + "sendReadReceiptsDescription": "Іншыя карыстальнікі чатаў будуць бачыць, калі вы прачыталі паведамленні.", + "@sendReadReceiptsDescription": {}, + "formattedMessages": "Фармаціраваныя паведамленні", + "@formattedMessages": {}, + "formattedMessagesDescription": "Адлюстроўваць пашыраныя паведамленні разметкай markdown.", + "@formattedMessagesDescription": {}, + "acceptedKeyVerification": "{sender} прыняў(-ла) спраўджванне ключэй", + "@acceptedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "canceledKeyVerification": "{sender} адхіліў(-ла) спраўджванне ключэй", + "@canceledKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "completedKeyVerification": "{sender} скочныў(-ла) спраўджванне ключэй", + "@completedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "isReadyForKeyVerification": "{sender} гатовы(-а) да спраўджвання ключэй", + "@isReadyForKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "requestedKeyVerification": "{sender} запрасіў(-ла) спраўджванне ключэй", + "@requestedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "startedKeyVerification": "{sender} пачаў(-ла) спраўджванне ключэй", + "@startedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "transparent": "Празрысты", + "@transparent": {}, + "incomingMessages": "Уваходныя паведамленні", + "@incomingMessages": {}, + "stickers": "Стыкеры", + "@stickers": {}, + "discover": "Даследаваць", + "@discover": {}, + "commandHint_ignore": "Ігнараваць дадзены matrix ID", + "@commandHint_ignore": {}, + "commandHint_unignore": "Перастаць ігнараваць дадзены matrix ID", + "@commandHint_unignore": {}, + "unreadChatsInApp": "{appname}: {unread} непрачытаных чатаў", + "@unreadChatsInApp": { + "type": "String", + "placeholders": { + "appname": { + "type": "String" + }, + "unread": { + "type": "String" + } + } + }, + "noDatabaseEncryption": "Шыфраванне базы даных не падтрымліваецца гэтай платформай", + "@noDatabaseEncryption": {}, + "thereAreCountUsersBlocked": "На гэты момант, {count} карыстальнікаў заблакіравана.", + "@thereAreCountUsersBlocked": { + "type": "String", + "count": {} + }, + "restricted": "Абмежавана", + "@restricted": {}, + "goToSpace": "Перайсці да прасторы: {space}", + "@goToSpace": { + "type": "String", + "space": {} + }, + "markAsUnread": "Адзначыць як непрачытанае", + "@markAsUnread": {}, + "userLevel": "{level} - Карыстальнік", + "@userLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "moderatorLevel": "{level} - Мадэратар", + "@moderatorLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "adminLevel": "{level} - Адміністратар", + "@adminLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "changeGeneralChatSettings": "Змяніць агульныя налады чату", + "@changeGeneralChatSettings": {}, + "inviteOtherUsers": "Запрасіць іншых карыстальнікаў у гэты чат", + "@inviteOtherUsers": {}, + "changeTheChatPermissions": "Змяніць дазволы чату", + "@changeTheChatPermissions": {}, + "changeTheVisibilityOfChatHistory": "Змяніць бачнасць гісторыі чату", + "@changeTheVisibilityOfChatHistory": {}, + "sendRoomNotifications": "Дасылаць паведамленні @room", + "@sendRoomNotifications": {}, + "changeTheDescriptionOfTheGroup": "Змяніць апісанне чату", + "@changeTheDescriptionOfTheGroup": {}, + "chatPermissionsDescription": "Задаць узровень дазволаў, які неабходны для некаторых дзеянняў у чаце. Узроўні 0, 50 і 100 звычайна адлюстроўваюць карыстальнікаў, мадэратараў і адміністратараў, але любая градацыя магчыма.", + "@chatPermissionsDescription": {}, + "updateInstalled": "🎉 Абнаўленне {version} усталявана!", + "@updateInstalled": { + "type": "String", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "changelog": "Спіс змен", + "@changelog": {}, + "sendCanceled": "Адпраўка скасавана", + "@sendCanceled": {}, + "loginWithMatrixId": "Увайсці з Matrix-ID", + "@loginWithMatrixId": {}, + "discoverHomeservers": "Даследаваць дамашнія сервера", + "@discoverHomeservers": {}, + "whatIsAHomeserver": "Што такое дамашні сервер?", + "@whatIsAHomeserver": {}, + "doesNotSeemToBeAValidHomeserver": "Гэта не выглядае як дамашні сервер. Няслушны URL?", + "@doesNotSeemToBeAValidHomeserver": {}, + "calculatingFileSize": "Вылічэнне памеру файла...", + "@calculatingFileSize": {}, + "prepareSendingAttachment": "Падрыхтоўка адпраўкі прыкладання...", + "@prepareSendingAttachment": {}, + "sendingAttachment": "Адпраўка прыкладання...", + "@sendingAttachment": {}, + "generatingVideoThumbnail": "Стварэнне вокладкі відэа...", + "@generatingVideoThumbnail": {}, + "compressVideo": "Сцісканне відэа...", + "@compressVideo": {}, + "sendingAttachmentCountOfCount": "Адпраўляецца прыкладанне {index} з {length}...", + "@sendingAttachmentCountOfCount": { + "type": "integer", + "placeholders": { + "index": { + "type": "int" + }, + "length": { + "type": "int" + } + } + }, + "serverLimitReached": "Дасягнуты серверны ліміт! Пачакайце {seconds} секунд...", + "@serverLimitReached": { + "type": "integer", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "oneOfYourDevicesIsNotVerified": "Адна з вашых прылад не спраўджана", + "@oneOfYourDevicesIsNotVerified": {}, + "noticeChatBackupDeviceVerification": "Заўвага: Калі вы падключыце ўсе свае прылады да рэзервовага капіравання, яны аўтаматычна спраўдзяцца.", + "@noticeChatBackupDeviceVerification": {}, + "welcomeText": "Вітаначкі 👋 Гэта FluffyChat. Вы можаце ўвайсці на любы дамашні сервер, што сумяшчальны з https://matrix.org, а потым паразмаўляць з кім-небудзь. Гэта вялізная дэцэнтралізаваная сетка абмену паведамленнямі!", + "@welcomeText": {}, + "blur": "Размыццё:", + "@blur": {}, + "opacity": "Празрыстасць:", + "@opacity": {}, + "setWallpaper": "Задаць шпалеры", + "@setWallpaper": {}, + "notificationRuleMemberEvent": "Падзеі ўдзельніцтва", + "@notificationRuleMemberEvent": {}, + "notificationRuleMemberEventDescription": "Спыніць усе паведамленні пра ўдзельніцтва.", + "@notificationRuleMemberEventDescription": {}, + "notificationRuleIsUserMention": "Згадванні карыстальніка", + "@notificationRuleIsUserMention": {}, + "notificationRuleIsUserMentionDescription": "Паведамляе, калі карыстальніка згадалі ў паведамленні.", + "@notificationRuleIsUserMentionDescription": {}, + "notificationRuleContainsDisplayName": "Мае адлюстроўваемае імя", + "@notificationRuleContainsDisplayName": {}, + "notificationRuleContainsDisplayNameDescription": "Паведамляе, калі паведамленне мае іх адлюстроўваемае імя.", + "@notificationRuleContainsDisplayNameDescription": {}, + "notificationRuleIsRoomMention": "Згадванні пакою", + "@notificationRuleIsRoomMention": {}, + "notificationRuleIsRoomMentionDescription": "Паведамляе карыстальніка, калі згадваюць пакой.", + "@notificationRuleIsRoomMentionDescription": {}, + "notificationRuleRoomnotif": "Паведамленні пакою", + "@notificationRuleRoomnotif": {}, + "notificationRuleRoomnotifDescription": "Паведамляе пра згадванні '@room'.", + "@notificationRuleRoomnotifDescription": {}, + "notificationRuleTombstone": "Помнік", + "@notificationRuleTombstone": {}, + "notificationRuleTombstoneDescription": "Паведамляе пра дэактывацыю пакою.", + "@notificationRuleTombstoneDescription": {}, + "notificationRuleReaction": "Рэакцыя", + "@notificationRuleReaction": {}, + "notificationRuleReactionDescription": "Адключыць усе паведамленні пра рэакцыі.", + "@notificationRuleReactionDescription": {}, + "notificationRuleRoomServerAcl": "ACL сервера пакою", + "@notificationRuleRoomServerAcl": {}, + "notificationRuleRoomServerAclDescription": "Адключыць паведамленні пра серверныя спісы кантролю пакою (ACL).", + "@notificationRuleRoomServerAclDescription": {}, + "notificationRuleSuppressEdits": "Заглушыць змены", + "@notificationRuleSuppressEdits": {}, + "notificationRuleSuppressEditsDescription": "Заглушыць паведамленні пра адрэдагаваныя паведамленні.", + "@notificationRuleSuppressEditsDescription": {}, + "notificationRuleCall": "Выклік", + "@notificationRuleCall": {}, + "notificationRuleCallDescription": "Паведамляе пра выклікі.", + "@notificationRuleCallDescription": {}, + "notificationRuleEncryptedRoomOneToOne": "Шыфраваны пакой One-to-One", + "@notificationRuleEncryptedRoomOneToOne": {}, + "notificationRuleEncryptedRoomOneToOneDescription": "Паведамляе пра паведамленні ў шыфраваных one-to-one пакоях.", + "@notificationRuleEncryptedRoomOneToOneDescription": {}, + "notificationRuleRoomOneToOne": "Пакой One-to-One", + "@notificationRuleRoomOneToOne": {}, + "notificationRuleRoomOneToOneDescription": "Паведамляе пра паведамленні ў пакоях one-to-one.", + "@notificationRuleRoomOneToOneDescription": {}, + "notificationRuleMessage": "Паведамленне", + "@notificationRuleMessage": {}, + "notificationRuleMessageDescription": "Паведамляе пра звычайныя паведамленні.", + "@notificationRuleMessageDescription": {}, + "notificationRuleEncrypted": "Зашыфравана", + "@notificationRuleEncrypted": {}, + "notificationRuleEncryptedDescription": "Паведамляе пра паведамленні ў зашыфраваных пакоях.", + "@notificationRuleEncryptedDescription": {}, + "notificationRuleJitsi": "Jitsi", + "@notificationRuleJitsi": {}, + "notificationRuleJitsiDescription": "Паведамляе пра падзеі віджэту Jitsi.", + "@notificationRuleJitsiDescription": {}, + "notificationRuleServerAcl": "Заглушыць серверныя падзеі ACL", + "@notificationRuleServerAcl": {}, + "notificationRuleServerAclDescription": "Заглушыць паведамленні пра серверныя падзеі ACL.", + "@notificationRuleServerAclDescription": {}, + "unknownPushRule": "Невядомае правіла пуша '{rule}'", + "@unknownPushRule": { + "type": "String", + "placeholders": { + "rule": { + "type": "String" + } + } + }, + "sentVoiceMessage": "🎙️{duration} - Галасавое паведамленне ад {sender}", + "@sentVoiceMessage": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "duration": { + "type": "String" + } + } + }, + "deletePushRuleCanNotBeUndone": "Калі вы выдаліце гэтыя налады паведамленняў, гэта не можа быць адменена.", + "@deletePushRuleCanNotBeUndone": {}, + "more": "Больш", + "@more": {}, + "shareKeysWith": "Падзяліцца ключамі з...", + "@shareKeysWith": {}, + "shareKeysWithDescription": "Якім прыладам вы давяраеце настолькі, каб яны маглі чытаць вашыя зашыфраваныя паведамленні?", + "@shareKeysWithDescription": {}, + "pause": "Паўза", + "@pause": {}, + "resume": "Працягнуць", + "@resume": {}, + "newSubSpace": "Новая пад-прастора", + "@newSubSpace": {}, + "moveToDifferentSpace": "Перамясціцца ў іншую прастору", + "@moveToDifferentSpace": {}, + "moveUp": "Перамясціць вышэй", + "@moveUp": {}, + "moveDown": "Перамясціць ніжэй", + "@moveDown": {}, + "removeFromSpaceDescription": "Гэты чат будзе выдалены з прасторы, але з'явіцца ў вашым спісе чатаў.", + "@removeFromSpaceDescription": {}, + "countChats": "{chats} чатаў", + "@countChats": { + "type": "String", + "placeholders": { + "chats": { + "type": "int" + } + } + }, + "spaceMemberOf": "Удзельнік прасторы {spaces}", + "@spaceMemberOf": { + "type": "String", + "placeholders": { + "spaces": { + "type": "String" + } + } + }, + "donate": "Даць грошы", + "@donate": {}, + "startedAPoll": "{username} пачаў апытанне.", + "@startedAPoll": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "poll": "Апытанне", + "@poll": {}, + "startPoll": "Пачаць апытанне", + "@startPoll": {}, + "endPoll": "Скончыць апытанне", + "@endPoll": {}, + "answersVisible": "Адказы бачны", + "@answersVisible": {}, + "answersHidden": "Адказы схаваны", + "@answersHidden": {}, + "pollQuestion": "Пытанне апытання", + "@pollQuestion": {}, + "answerOption": "Варыянт адказу", + "@answerOption": {}, + "addAnswerOption": "Дадаць варыянт адказу", + "@addAnswerOption": {}, + "allowMultipleAnswers": "Дазволіць некалькі адказаў", + "@allowMultipleAnswers": {}, + "pollHasBeenEnded": "Апытанне было скончана", + "@pollHasBeenEnded": {}, + "countVotes": "{count, plural, =1{Адзін голас} other{{count} галасы(-оў)}}", + "@countVotes": { + "type": "int", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "answersWillBeVisibleWhenPollHasEnded": "Вынікі будуць бачны, калі апытанне скончыцца", + "@answersWillBeVisibleWhenPollHasEnded": {}, + "replyInThread": "Адказаць у гутарку", + "@replyInThread": {}, + "countReplies": "{count, plural, =1{Адзін адказ} other{{count} адказа(-ў)}}", + "@countReplies": { + "type": "int", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "thread": "Гутарка", + "@thread": {}, + "backToMainChat": "Вярнуцца ў галоўны чат", + "@backToMainChat": {} +} diff --git a/lib/l10n/intl_bn.arb b/lib/l10n/intl_bn.arb new file mode 100644 index 0000000..f6bfad8 --- /dev/null +++ b/lib/l10n/intl_bn.arb @@ -0,0 +1,2107 @@ +{ + "@@last_modified": "2021-08-14 12:41:10.154280", + "about": "সম্পর্কে", + "@about": { + "type": "String", + "placeholders": {} + }, + "accept": "স্বীকার করি", + "@accept": { + "type": "String", + "placeholders": {} + }, + "acceptedTheInvitation": "{username} আমন্ত্রণ গ্রহণ করেছে", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "account": "অ্যাকাউন্ট", + "@account": { + "type": "String", + "placeholders": {} + }, + "@showPassword": { + "type": "String", + "placeholders": {} + }, + "@hugContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "@passphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "@pleaseEnterYourPassword": { + "type": "String", + "placeholders": {} + }, + "@theyMatch": { + "type": "String", + "placeholders": {} + }, + "@connect": { + "type": "String", + "placeholders": {} + }, + "@jumpToLastReadMessage": {}, + "@allRooms": { + "type": "String", + "placeholders": {} + }, + "@obtainingLocation": { + "type": "String", + "placeholders": {} + }, + "@commandHint_cuddle": {}, + "@chats": { + "type": "String", + "placeholders": {} + }, + "@widgetVideo": {}, + "@dismiss": {}, + "@unknownDevice": { + "type": "String", + "placeholders": {} + }, + "@emoteShortcode": { + "type": "String", + "placeholders": {} + }, + "@noEncryptionForPublicRooms": { + "type": "String", + "placeholders": {} + }, + "@admin": { + "type": "String", + "placeholders": {} + }, + "@reportErrorDescription": {}, + "@directChats": { + "type": "String", + "placeholders": {} + }, + "@setPermissionsLevel": { + "type": "String", + "placeholders": {} + }, + "@inviteContactToGroup": { + "type": "String", + "placeholders": { + "groupName": { + "type": "String" + } + } + }, + "@addAccount": {}, + "@close": { + "type": "String", + "placeholders": {} + }, + "@configureChat": { + "type": "String", + "placeholders": {} + }, + "@chatHasBeenAddedToThisSpace": {}, + "@reply": { + "type": "String", + "placeholders": {} + }, + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "@removeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "@unsupportedAndroidVersion": {}, + "@device": { + "type": "String", + "placeholders": {} + }, + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "@commandHint_html": { + "type": "String", + "description": "Usage hint for the command /html" + }, + "@widgetJitsi": {}, + "@youAreNoLongerParticipatingInThisChat": { + "type": "String", + "placeholders": {} + }, + "@encryption": { + "type": "String", + "placeholders": {} + }, + "@messageType": {}, + "@indexedDbErrorLong": {}, + "@oneClientLoggedOut": {}, + "@toggleMuted": { + "type": "String", + "placeholders": {} + }, + "@kicked": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "@title": { + "description": "Title for the application", + "type": "String", + "placeholders": {} + }, + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@verifySuccess": { + "type": "String", + "placeholders": {} + }, + "@sendFile": { + "type": "String", + "placeholders": {} + }, + "@newVerificationRequest": { + "type": "String", + "placeholders": {} + }, + "@startFirstChat": {}, + "@callingAccount": {}, + "@requestPermission": { + "type": "String", + "placeholders": {} + }, + "@sentAPicture": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@invited": { + "type": "String", + "placeholders": {} + }, + "@setColorTheme": {}, + "@nextAccount": {}, + "@commandHint_create": { + "type": "String", + "description": "Usage hint for the command /create" + }, + "@singlesignon": { + "type": "String", + "placeholders": {} + }, + "@warning": { + "type": "String", + "placeholders": {} + }, + "@password": { + "type": "String", + "placeholders": {} + }, + "@allSpaces": {}, + "@supposedMxid": { + "type": "String", + "placeholders": { + "mxid": { + "type": "String" + } + } + }, + "@editDisplayname": { + "type": "String", + "placeholders": {} + }, + "@user": {}, + "@roomVersion": { + "type": "String", + "placeholders": {} + }, + "@sentAFile": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@videoCall": { + "type": "String", + "placeholders": {} + }, + "@youAcceptedTheInvitation": {}, + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "@noMatrixServer": { + "type": "String", + "placeholders": { + "server1": { + "type": "String" + }, + "server2": { + "type": "String" + } + } + }, + "@userAndOthersAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "@youInvitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "@userIsTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@openAppToReadMessages": { + "type": "String", + "placeholders": {} + }, + "@sentAVideo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@banUserDescription": {}, + "@inviteContact": { + "type": "String", + "placeholders": {} + }, + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "@widgetEtherpad": {}, + "@waitingPartnerAcceptRequest": { + "type": "String", + "placeholders": {} + }, + "@remove": { + "type": "String", + "placeholders": {} + }, + "@writeAMessage": { + "type": "String", + "placeholders": {} + }, + "@changeTheme": { + "type": "String", + "placeholders": {} + }, + "@id": { + "type": "String", + "placeholders": {} + }, + "@removeDevicesDescription": {}, + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@separateChatTypes": { + "type": "String", + "placeholders": {} + }, + "@tryAgain": {}, + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "@blocked": { + "type": "String", + "placeholders": {} + }, + "@youKickedAndBanned": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "@removeDevice": { + "type": "String", + "placeholders": {} + }, + "@unbanUserDescription": {}, + "@userAndUserAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "username2": { + "type": "String" + } + } + }, + "@pleaseClickOnLink": { + "type": "String", + "placeholders": {} + }, + "@saveFile": { + "type": "String", + "placeholders": {} + }, + "@sendOnEnter": {}, + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "@youRejectedTheInvitation": {}, + "@otherCallingPermissions": {}, + "@messagesStyle": {}, + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@invitedUsersOnly": { + "type": "String", + "placeholders": {} + }, + "@link": {}, + "@widgetUrlError": {}, + "@emailOrUsername": {}, + "@newSpaceDescription": {}, + "@chatDescription": {}, + "@callingAccountDetails": {}, + "@next": { + "type": "String", + "placeholders": {} + }, + "@pleaseFollowInstructionsOnWeb": { + "type": "String", + "placeholders": {} + }, + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "@editRoomAliases": { + "type": "String", + "placeholders": {} + }, + "@enterSpace": {}, + "@encryptThisChat": {}, + "@fileName": { + "type": "String", + "placeholders": {} + }, + "@unavailable": { + "type": "String", + "placeholders": {} + }, + "@previousAccount": {}, + "@publicRooms": { + "type": "String", + "placeholders": {} + }, + "@fromTheInvitation": { + "type": "String", + "placeholders": {} + }, + "@sendMessages": { + "type": "String", + "placeholders": {} + }, + "@incorrectPassphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "@emoteWarnNeedToPick": { + "type": "String", + "placeholders": {} + }, + "@reopenChat": {}, + "@pleaseEnterRecoveryKey": {}, + "@create": { + "type": "String", + "placeholders": {} + }, + "@toggleFavorite": { + "type": "String", + "placeholders": {} + }, + "@no": { + "type": "String", + "placeholders": {} + }, + "@alias": { + "type": "String", + "placeholders": {} + }, + "@widgetNameError": {}, + "@inoffensive": { + "type": "String", + "placeholders": {} + }, + "@unpin": { + "type": "String", + "placeholders": {} + }, + "@addToBundle": {}, + "@reportMessage": { + "type": "String", + "placeholders": {} + }, + "@spaceIsPublic": { + "type": "String", + "placeholders": {} + }, + "@addWidget": {}, + "@all": { + "type": "String", + "placeholders": {} + }, + "@removeAllOtherDevices": { + "type": "String", + "placeholders": {} + }, + "@unblockDevice": { + "type": "String", + "placeholders": {} + }, + "@countFiles": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@noKeyForThisMessage": {}, + "@enableEncryptionWarning": { + "type": "String", + "placeholders": {} + }, + "@inviteText": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "link": { + "type": "String" + } + } + }, + "@shareLocation": { + "type": "String", + "placeholders": {} + }, + "@reason": { + "type": "String", + "placeholders": {} + }, + "@commandHint_markasgroup": {}, + "@errorObtainingLocation": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@hydrateTor": {}, + "@pushNotificationsNotAvailable": {}, + "@passwordRecovery": { + "type": "String", + "placeholders": {} + }, + "@storeInAppleKeyChain": {}, + "@replaceRoomWithNewerVersion": { + "type": "String", + "placeholders": {} + }, + "@hydrate": {}, + "@invalidServerName": {}, + "@chatPermissions": {}, + "@voiceMessage": { + "type": "String", + "placeholders": {} + }, + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "@wipeChatBackup": { + "type": "String", + "placeholders": {} + }, + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "@sender": {}, + "@storeInAndroidKeystore": {}, + "@hideRedactedEvents": { + "type": "String", + "placeholders": {} + }, + "@online": { + "type": "String", + "placeholders": {} + }, + "@signInWithPassword": {}, + "@ignoredUsers": { + "type": "String", + "placeholders": {} + }, + "@lastActiveAgo": { + "type": "String", + "placeholders": { + "localizedTimeShort": { + "type": "String" + } + } + }, + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "@weSentYouAnEmail": { + "type": "String", + "placeholders": {} + }, + "@offensive": { + "type": "String", + "placeholders": {} + }, + "@needPantalaimonWarning": { + "type": "String", + "placeholders": {} + }, + "@makeAdminDescription": {}, + "@edit": { + "type": "String", + "placeholders": {} + }, + "@loadMore": { + "type": "String", + "placeholders": {} + }, + "@noEmotesFound": { + "type": "String", + "placeholders": {} + }, + "@synchronizingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "@transferFromAnotherDevice": { + "type": "String", + "placeholders": {} + }, + "@passwordHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "@pushRules": { + "type": "String", + "placeholders": {} + }, + "@goToTheNewRoom": { + "type": "String", + "placeholders": {} + }, + "@commandHint_clearcache": { + "type": "String", + "description": "Usage hint for the command /clearcache" + }, + "@loadingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "@copy": { + "type": "String", + "placeholders": {} + }, + "@saveKeyManuallyDescription": {}, + "@none": { + "type": "String", + "placeholders": {} + }, + "@editBundlesForAccount": {}, + "@enableEncryption": { + "type": "String", + "placeholders": {} + }, + "@whyIsThisMessageEncrypted": {}, + "@rejectedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@setChatDescription": {}, + "@userLeftTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@spaceName": { + "type": "String", + "placeholders": {} + }, + "@importFromZipFile": {}, + "@toggleUnread": { + "type": "String", + "placeholders": {} + }, + "@or": { + "type": "String", + "placeholders": {} + }, + "@dehydrateWarning": {}, + "@sendOriginal": { + "type": "String", + "placeholders": {} + }, + "@noOtherDevicesFound": {}, + "@whoIsAllowedToJoinThisGroup": { + "type": "String", + "placeholders": {} + }, + "@emptyChat": { + "type": "String", + "placeholders": {} + }, + "@seenByUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@yourChatBackupHasBeenSetUp": {}, + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "@redactedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@submit": { + "type": "String", + "placeholders": {} + }, + "@videoCallsBetaWarning": {}, + "@unmuteChat": { + "type": "String", + "placeholders": {} + }, + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@redactedAnEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@autoplayImages": { + "type": "String", + "placeholder": {} + }, + "@compareEmojiMatch": { + "type": "String", + "placeholders": {} + }, + "@participant": { + "type": "String", + "placeholders": {} + }, + "@logInTo": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "@yes": { + "type": "String", + "placeholders": {} + }, + "@containsDisplayName": { + "type": "String", + "placeholders": {} + }, + "@signInWith": { + "type": "String", + "placeholders": { + "provider": { + "type": "String" + } + } + }, + "@username": { + "type": "String", + "placeholders": {} + }, + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@fileIsTooBigForServer": {}, + "@homeserver": {}, + "@help": { + "type": "String", + "placeholders": {} + }, + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "@people": { + "type": "String", + "placeholders": {} + }, + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "@leftTheChat": { + "type": "String", + "placeholders": {} + }, + "@verified": { + "type": "String", + "placeholders": {} + }, + "@repeatPassword": {}, + "@setStatus": { + "type": "String", + "placeholders": {} + }, + "@groupWith": { + "type": "String", + "placeholders": { + "displayname": { + "type": "String" + } + } + }, + "@callingPermissions": {}, + "@delete": { + "type": "String", + "placeholders": {} + }, + "@newMessageInFluffyChat": { + "type": "String", + "placeholders": {} + }, + "@readUpToHere": {}, + "@start": {}, + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "@deviceId": { + "type": "String", + "placeholders": {} + }, + "@register": { + "type": "String", + "placeholders": {} + }, + "@unlockOldMessages": {}, + "@identity": { + "type": "String", + "placeholders": {} + }, + "@numChats": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "@ignore": { + "type": "String", + "placeholders": {} + }, + "@recording": { + "type": "String", + "placeholders": {} + }, + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@moderator": { + "type": "String", + "placeholders": {} + }, + "@optionalRedactReason": {}, + "@waitingPartnerEmoji": { + "type": "String", + "placeholders": {} + }, + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "@tryToSendAgain": { + "type": "String", + "placeholders": {} + }, + "@guestsCanJoin": { + "type": "String", + "placeholders": {} + }, + "@copyToClipboard": { + "type": "String", + "placeholders": {} + }, + "@dehydrate": {}, + "@locationPermissionDeniedNotice": { + "type": "String", + "placeholders": {} + }, + "@send": { + "type": "String", + "placeholders": {} + }, + "@hasWithdrawnTheInvitationFor": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "@visibleForAllParticipants": { + "type": "String", + "placeholders": {} + }, + "@noRoomsFound": { + "type": "String", + "placeholders": {} + }, + "@banned": { + "type": "String", + "placeholders": {} + }, + "@sendAsText": { + "type": "String" + }, + "@inviteForMe": { + "type": "String", + "placeholders": {} + }, + "@archiveRoomDescription": {}, + "@exportEmotePack": {}, + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "@sendSticker": { + "type": "String", + "placeholders": {} + }, + "@switchToAccount": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "@commandInvalid": { + "type": "String" + }, + "@setAsCanonicalAlias": { + "type": "String", + "placeholders": {} + }, + "@whyDoYouWantToReportThis": { + "type": "String", + "placeholders": {} + }, + "@locationDisabledNotice": { + "type": "String", + "placeholders": {} + }, + "@removedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@newChat": { + "type": "String", + "placeholders": {} + }, + "@notifications": { + "type": "String", + "placeholders": {} + }, + "@commandHint_plain": { + "type": "String", + "description": "Usage hint for the command /plain" + }, + "@emoteSettings": { + "type": "String", + "placeholders": {} + }, + "@experimentalVideoCalls": {}, + "@openCamera": { + "type": "String", + "placeholders": {} + }, + "@pleaseEnterRecoveryKeyDescription": {}, + "@guestsAreForbidden": { + "type": "String", + "placeholders": {} + }, + "@mention": { + "type": "String", + "placeholders": {} + }, + "@openInMaps": { + "type": "String", + "placeholders": {} + }, + "@withTheseAddressesRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "@inviteContactToGroupQuestion": {}, + "@emoteExists": { + "type": "String", + "placeholders": {} + }, + "@redactedByBecause": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "reason": { + "type": "String" + } + } + }, + "@isTyping": { + "type": "String", + "placeholders": {} + }, + "@youHaveWithdrawnTheInvitationFor": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "@chat": { + "type": "String", + "placeholders": {} + }, + "@group": { + "type": "String", + "placeholders": {} + }, + "@leave": { + "type": "String", + "placeholders": {} + }, + "@skip": { + "type": "String", + "placeholders": {} + }, + "@appearOnTopDetails": {}, + "@roomHasBeenUpgraded": { + "type": "String", + "placeholders": {} + }, + "@enterRoom": {}, + "@enableEmotesGlobally": { + "type": "String", + "placeholders": {} + }, + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "@pleaseChooseAPasscode": { + "type": "String", + "placeholders": {} + }, + "@noPasswordRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@allChats": { + "type": "String", + "placeholders": {} + }, + "@reportUser": {}, + "@commandHint_send": { + "type": "String", + "description": "Usage hint for the command /send" + }, + "@onlineKeyBackupEnabled": { + "type": "String", + "placeholders": {} + }, + "@unbannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "@confirmEventUnpin": {}, + "@badServerVersionsException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "@youInvitedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "@kickedAndBanned": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "@noConnectionToTheServer": { + "type": "String", + "placeholders": {} + }, + "@fileHasBeenSavedAt": { + "type": "String", + "placeholders": { + "path": { + "type": "String" + } + } + }, + "@license": { + "type": "String", + "placeholders": {} + }, + "@addToSpace": {}, + "@commandMissing": { + "type": "String", + "placeholders": { + "command": { + "type": "String" + } + }, + "description": "State that {command} is not a valid /command." + }, + "@redactMessageDescription": {}, + "@rejoin": { + "type": "String", + "placeholders": {} + }, + "@recoveryKey": {}, + "@redactMessage": { + "type": "String", + "placeholders": {} + }, + "@forward": { + "type": "String", + "placeholders": {} + }, + "@commandHint_discardsession": { + "type": "String", + "description": "Usage hint for the command /discardsession" + }, + "@invalidInput": {}, + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "@hideUnknownEvents": { + "type": "String", + "placeholders": {} + }, + "@dehydrateTorLong": {}, + "@yourPublicKey": { + "type": "String", + "placeholders": {} + }, + "@tooManyRequestsWarning": { + "type": "String", + "placeholders": {} + }, + "@invitedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "@kickFromChat": { + "type": "String", + "placeholders": {} + }, + "@commandHint_myroomnick": { + "type": "String", + "description": "Usage hint for the command /myroomnick" + }, + "@offline": { + "type": "String", + "placeholders": {} + }, + "@noPermission": { + "type": "String", + "placeholders": {} + }, + "@doNotShowAgain": {}, + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@report": {}, + "@status": { + "type": "String", + "placeholders": {} + }, + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "@groupIsPublic": { + "type": "String", + "placeholders": {} + }, + "@verifyStart": { + "type": "String", + "placeholders": {} + }, + "@memberChanges": { + "type": "String", + "placeholders": {} + }, + "@joinRoom": { + "type": "String", + "placeholders": {} + }, + "@unverified": {}, + "@fluffychat": { + "type": "String", + "placeholders": {} + }, + "@howOffensiveIsThisContent": { + "type": "String", + "placeholders": {} + }, + "@serverRequiresEmail": {}, + "@hideUnimportantStateEvents": {}, + "@screenSharingTitle": {}, + "@widgetCustom": {}, + "@sentCallInformations": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "@addToSpaceDescription": {}, + "@googlyEyesContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "@youBannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "@theyDontMatch": { + "type": "String", + "placeholders": {} + }, + "@youHaveBeenBannedFromThisChat": { + "type": "String", + "placeholders": {} + }, + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "@addChatDescription": {}, + "@sentAnAudio": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@editRoomAvatar": { + "type": "String", + "placeholders": {} + }, + "@encrypted": { + "type": "String", + "placeholders": {} + }, + "@commandHint_leave": { + "type": "String", + "description": "Usage hint for the command /leave" + }, + "@commandHint_myroomavatar": { + "type": "String", + "description": "Usage hint for the command /myroomavatar" + }, + "@cancel": { + "type": "String", + "placeholders": {} + }, + "@hasKnocked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "@publish": {}, + "@openLinkInBrowser": {}, + "@clearArchive": {}, + "@appLock": { + "type": "String", + "placeholders": {} + }, + "@commandHint_react": { + "type": "String", + "description": "Usage hint for the command /react" + }, + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@commandHint_me": { + "type": "String", + "description": "Usage hint for the command /me" + }, + "@pleaseEnterYourUsername": { + "type": "String", + "placeholders": {} + }, + "@messageInfo": {}, + "@disableEncryptionWarning": {}, + "@directChat": {}, + "@encryptionNotEnabled": { + "type": "String", + "placeholders": {} + }, + "@wrongPinEntered": { + "type": "String", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "@sendTypingNotifications": {}, + "@lightTheme": { + "type": "String", + "placeholders": {} + }, + "@inviteGroupChat": {}, + "@appearOnTop": {}, + "@invitePrivateChat": {}, + "@verifyTitle": { + "type": "String", + "placeholders": {} + }, + "@foregroundServiceRunning": {}, + "@enterAnEmailAddress": { + "type": "String", + "placeholders": {} + }, + "@voiceCall": {}, + "@commandHint_kick": { + "type": "String", + "description": "Usage hint for the command /kick" + }, + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "@createNewSpace": { + "type": "String", + "placeholders": {} + }, + "@commandHint_unban": { + "type": "String", + "description": "Usage hint for the command /unban" + }, + "@unknownEncryptionAlgorithm": { + "type": "String", + "placeholders": {} + }, + "@commandHint_ban": { + "type": "String", + "description": "Usage hint for the command /ban" + }, + "@importEmojis": {}, + "@confirm": { + "type": "String", + "placeholders": {} + }, + "@wasDirectChatDisplayName": { + "type": "String", + "placeholders": { + "oldDisplayName": { + "type": "String" + } + } + }, + "@noChatDescriptionYet": {}, + "@defaultPermissionLevel": { + "type": "String", + "placeholders": {} + }, + "@removeFromBundle": {}, + "@numUsersTyping": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@fontSize": { + "type": "String", + "placeholders": {} + }, + "@whoCanPerformWhichAction": { + "type": "String", + "placeholders": {} + }, + "@confirmMatrixId": {}, + "@learnMore": {}, + "@iHaveClickedOnLink": { + "type": "String", + "placeholders": {} + }, + "@you": { + "type": "String", + "placeholders": {} + }, + "@notAnImage": {}, + "@users": {}, + "@openGallery": {}, + "@chatDescriptionHasBeenChanged": {}, + "@search": { + "type": "String", + "placeholders": {} + }, + "@newGroup": {}, + "@bundleName": {}, + "@dehydrateTor": {}, + "@removeFromSpace": {}, + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "@commandHint_op": { + "type": "String", + "description": "Usage hint for the command /op" + }, + "@commandHint_join": { + "type": "String", + "description": "Usage hint for the command /join" + }, + "@sourceCode": { + "type": "String", + "placeholders": {} + }, + "@roomUpgradeDescription": {}, + "@commandHint_invite": { + "type": "String", + "description": "Usage hint for the command /invite" + }, + "@userSentUnknownEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "type": { + "type": "String" + } + } + }, + "@scanQrCode": {}, + "@logout": { + "type": "String", + "placeholders": {} + }, + "@pleaseEnterANumber": {}, + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "@youKicked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@profileNotFound": {}, + "@jump": {}, + "@groups": { + "type": "String", + "placeholders": {} + }, + "@reactedWith": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "reaction": { + "type": "String" + } + } + }, + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "@sorryThatsNotPossible": {}, + "@videoWithSize": { + "type": "String", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "@oopsSomethingWentWrong": { + "type": "String", + "placeholders": {} + }, + "@loadCountMoreParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@shareInviteLink": {}, + "@commandHint_markasdm": {}, + "@recoveryKeyLost": {}, + "@cuddleContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@containsUserName": { + "type": "String", + "placeholders": {} + }, + "@messages": { + "type": "String", + "placeholders": {} + }, + "@login": { + "type": "String", + "placeholders": {} + }, + "@deviceKeys": {}, + "@waitingPartnerNumbers": { + "type": "String", + "placeholders": {} + }, + "@noGoogleServicesWarning": { + "type": "String", + "placeholders": {} + }, + "@everythingReady": { + "type": "String", + "placeholders": {} + }, + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "@emoteKeyboardNoRecents": { + "type": "String", + "placeholders": {} + }, + "@setCustomEmotes": { + "type": "String", + "placeholders": {} + }, + "@startedACall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "@emoteInvalid": { + "type": "String", + "placeholders": {} + }, + "@systemTheme": { + "type": "String", + "placeholders": {} + }, + "@notificationsEnabledForThisAccount": { + "type": "String", + "placeholders": {} + }, + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "@visibilityOfTheChatHistory": { + "type": "String", + "placeholders": {} + }, + "@settings": { + "type": "String", + "placeholders": {} + }, + "@setTheme": {}, + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "@youJoinedTheChat": {}, + "@wallpaper": { + "type": "String", + "placeholders": {} + }, + "@openVideoCamera": { + "type": "String", + "placeholders": {} + }, + "@play": { + "type": "String", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "@chatBackupDescription": { + "type": "String", + "placeholders": {} + }, + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "@passwordForgotten": { + "type": "String", + "placeholders": {} + }, + "@statusExampleMessage": { + "type": "String", + "placeholders": {} + }, + "@security": { + "type": "String", + "placeholders": {} + }, + "@markAsRead": {}, + "@sendAudio": { + "type": "String", + "placeholders": {} + }, + "@widgetName": {}, + "@sentASticker": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@errorAddingWidget": {}, + "@commandHint_dm": { + "type": "String", + "description": "Usage hint for the command /dm" + }, + "@commandHint_hug": {}, + "@replace": {}, + "@reject": { + "type": "String", + "placeholders": {} + }, + "@editBlockedServers": { + "type": "String", + "placeholders": {} + }, + "@oopsPushError": { + "type": "String", + "placeholders": {} + }, + "@youUnbannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "@deactivateAccountWarning": { + "type": "String", + "placeholders": {} + }, + "@archive": { + "type": "String", + "placeholders": {} + }, + "@joinedTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@visibleForEveryone": { + "type": "String", + "placeholders": {} + }, + "@pleaseEnter4Digits": { + "type": "String", + "placeholders": {} + }, + "@newSpace": {}, + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "@devices": { + "type": "String", + "placeholders": {} + }, + "@unknownEvent": { + "type": "String", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "@emojis": {}, + "@pleaseEnterYourPin": { + "type": "String", + "placeholders": {} + }, + "@pleaseChoose": { + "type": "String", + "placeholders": {} + }, + "@share": { + "type": "String", + "placeholders": {} + }, + "@commandHint_googly": {}, + "@pleaseTryAgainLaterOrChooseDifferentServer": {}, + "@createGroup": {}, + "@privacy": { + "type": "String", + "placeholders": {} + }, + "@changeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "@sendImage": { + "type": "String", + "placeholders": {} + }, + "@hydrateTorLong": {}, + "@time": {}, + "@enterYourHomeserver": { + "type": "String", + "placeholders": {} + }, + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "@contentHasBeenReported": { + "type": "String", + "placeholders": {} + }, + "@custom": {}, + "@noBackupWarning": {}, + "@fromJoining": { + "type": "String", + "placeholders": {} + }, + "@verify": { + "type": "String", + "placeholders": {} + }, + "@sendVideo": { + "type": "String", + "placeholders": {} + }, + "@storeInSecureStorageDescription": {}, + "@openChat": {}, + "@kickUserDescription": {}, + "@sendAMessage": { + "type": "String", + "placeholders": {} + }, + "@pin": { + "type": "String", + "placeholders": {} + }, + "@importNow": {}, + "@deleteAccount": { + "type": "String", + "placeholders": {} + }, + "@setInvitationLink": { + "type": "String", + "placeholders": {} + }, + "@pinMessage": {}, + "@muteChat": { + "type": "String", + "placeholders": {} + }, + "@invite": {}, + "@enableMultiAccounts": {}, + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "@emotePacks": { + "type": "String", + "placeholders": {} + }, + "@indexedDbErrorTitle": {}, + "@endedTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "@unsupportedAndroidVersionLong": {}, + "@storeSecurlyOnThisDevice": {}, + "@ok": { + "type": "String", + "placeholders": {} + }, + "@sharedTheLocation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@unbanFromChat": { + "type": "String", + "placeholders": {} + }, + "@screenSharingDetail": {}, + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "@unreadChats": { + "type": "String", + "placeholders": { + "unreadCount": { + "type": "int" + } + } + }, + "@pickImage": { + "type": "String", + "placeholders": {} + }, + "@placeCall": {}, + "@extremeOffensive": { + "type": "String", + "placeholders": {} + } +} diff --git a/lib/l10n/intl_bo.arb b/lib/l10n/intl_bo.arb new file mode 100644 index 0000000..f6b0866 --- /dev/null +++ b/lib/l10n/intl_bo.arb @@ -0,0 +1,2102 @@ +{ + "@showPassword": { + "type": "String", + "placeholders": {} + }, + "@hugContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "@passphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "@pleaseEnterYourPassword": { + "type": "String", + "placeholders": {} + }, + "@theyMatch": { + "type": "String", + "placeholders": {} + }, + "@connect": { + "type": "String", + "placeholders": {} + }, + "@jumpToLastReadMessage": {}, + "@allRooms": { + "type": "String", + "placeholders": {} + }, + "@obtainingLocation": { + "type": "String", + "placeholders": {} + }, + "@commandHint_cuddle": {}, + "@chats": { + "type": "String", + "placeholders": {} + }, + "@widgetVideo": {}, + "@dismiss": {}, + "@unknownDevice": { + "type": "String", + "placeholders": {} + }, + "@emoteShortcode": { + "type": "String", + "placeholders": {} + }, + "@noEncryptionForPublicRooms": { + "type": "String", + "placeholders": {} + }, + "@admin": { + "type": "String", + "placeholders": {} + }, + "@reportErrorDescription": {}, + "@directChats": { + "type": "String", + "placeholders": {} + }, + "@setPermissionsLevel": { + "type": "String", + "placeholders": {} + }, + "@inviteContactToGroup": { + "type": "String", + "placeholders": { + "groupName": { + "type": "String" + } + } + }, + "@addAccount": {}, + "@close": { + "type": "String", + "placeholders": {} + }, + "@configureChat": { + "type": "String", + "placeholders": {} + }, + "@chatHasBeenAddedToThisSpace": {}, + "@reply": { + "type": "String", + "placeholders": {} + }, + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "@removeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "@unsupportedAndroidVersion": {}, + "@device": { + "type": "String", + "placeholders": {} + }, + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "@commandHint_html": { + "type": "String", + "description": "Usage hint for the command /html" + }, + "@widgetJitsi": {}, + "@youAreNoLongerParticipatingInThisChat": { + "type": "String", + "placeholders": {} + }, + "@encryption": { + "type": "String", + "placeholders": {} + }, + "@messageType": {}, + "@indexedDbErrorLong": {}, + "@oneClientLoggedOut": {}, + "@toggleMuted": { + "type": "String", + "placeholders": {} + }, + "@unsupportedAndroidVersionLong": {}, + "@kicked": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "@title": { + "description": "Title for the application", + "type": "String", + "placeholders": {} + }, + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@verifySuccess": { + "type": "String", + "placeholders": {} + }, + "@sendFile": { + "type": "String", + "placeholders": {} + }, + "@newVerificationRequest": { + "type": "String", + "placeholders": {} + }, + "@startFirstChat": {}, + "@callingAccount": {}, + "@requestPermission": { + "type": "String", + "placeholders": {} + }, + "@sentAPicture": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@invited": { + "type": "String", + "placeholders": {} + }, + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "@setColorTheme": {}, + "@nextAccount": {}, + "@commandHint_create": { + "type": "String", + "description": "Usage hint for the command /create" + }, + "@singlesignon": { + "type": "String", + "placeholders": {} + }, + "@warning": { + "type": "String", + "placeholders": {} + }, + "@password": { + "type": "String", + "placeholders": {} + }, + "@allSpaces": {}, + "@supposedMxid": { + "type": "String", + "placeholders": { + "mxid": { + "type": "String" + } + } + }, + "@editDisplayname": { + "type": "String", + "placeholders": {} + }, + "@user": {}, + "@roomVersion": { + "type": "String", + "placeholders": {} + }, + "@sentAFile": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@videoCall": { + "type": "String", + "placeholders": {} + }, + "@youAcceptedTheInvitation": {}, + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "@noMatrixServer": { + "type": "String", + "placeholders": { + "server1": { + "type": "String" + }, + "server2": { + "type": "String" + } + } + }, + "@userAndOthersAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "@youInvitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "@userIsTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@openAppToReadMessages": { + "type": "String", + "placeholders": {} + }, + "@sentAVideo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@banUserDescription": {}, + "@inviteContact": { + "type": "String", + "placeholders": {} + }, + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "@widgetEtherpad": {}, + "@waitingPartnerAcceptRequest": { + "type": "String", + "placeholders": {} + }, + "@remove": { + "type": "String", + "placeholders": {} + }, + "@writeAMessage": { + "type": "String", + "placeholders": {} + }, + "@changeTheme": { + "type": "String", + "placeholders": {} + }, + "@id": { + "type": "String", + "placeholders": {} + }, + "@removeDevicesDescription": {}, + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@separateChatTypes": { + "type": "String", + "placeholders": {} + }, + "@tryAgain": {}, + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "@blocked": { + "type": "String", + "placeholders": {} + }, + "@youKickedAndBanned": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "@removeDevice": { + "type": "String", + "placeholders": {} + }, + "@unbanUserDescription": {}, + "@userAndUserAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "username2": { + "type": "String" + } + } + }, + "@pleaseClickOnLink": { + "type": "String", + "placeholders": {} + }, + "@saveFile": { + "type": "String", + "placeholders": {} + }, + "@sendOnEnter": {}, + "@pickImage": { + "type": "String", + "placeholders": {} + }, + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "@youRejectedTheInvitation": {}, + "@otherCallingPermissions": {}, + "@messagesStyle": {}, + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@invitedUsersOnly": { + "type": "String", + "placeholders": {} + }, + "@link": {}, + "@widgetUrlError": {}, + "@emailOrUsername": {}, + "@newSpaceDescription": {}, + "@chatDescription": {}, + "@callingAccountDetails": {}, + "@next": { + "type": "String", + "placeholders": {} + }, + "@pleaseFollowInstructionsOnWeb": { + "type": "String", + "placeholders": {} + }, + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "@editRoomAliases": { + "type": "String", + "placeholders": {} + }, + "@enterSpace": {}, + "@encryptThisChat": {}, + "@fileName": { + "type": "String", + "placeholders": {} + }, + "@unavailable": { + "type": "String", + "placeholders": {} + }, + "@previousAccount": {}, + "@publicRooms": { + "type": "String", + "placeholders": {} + }, + "@fromTheInvitation": { + "type": "String", + "placeholders": {} + }, + "@sendMessages": { + "type": "String", + "placeholders": {} + }, + "@incorrectPassphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "@emoteWarnNeedToPick": { + "type": "String", + "placeholders": {} + }, + "@reopenChat": {}, + "@pleaseEnterRecoveryKey": {}, + "@create": { + "type": "String", + "placeholders": {} + }, + "@toggleFavorite": { + "type": "String", + "placeholders": {} + }, + "@no": { + "type": "String", + "placeholders": {} + }, + "@alias": { + "type": "String", + "placeholders": {} + }, + "@widgetNameError": {}, + "@inoffensive": { + "type": "String", + "placeholders": {} + }, + "@unpin": { + "type": "String", + "placeholders": {} + }, + "@addToBundle": {}, + "@reportMessage": { + "type": "String", + "placeholders": {} + }, + "@spaceIsPublic": { + "type": "String", + "placeholders": {} + }, + "@addWidget": {}, + "@all": { + "type": "String", + "placeholders": {} + }, + "@removeAllOtherDevices": { + "type": "String", + "placeholders": {} + }, + "@unblockDevice": { + "type": "String", + "placeholders": {} + }, + "@countFiles": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@noKeyForThisMessage": {}, + "@enableEncryptionWarning": { + "type": "String", + "placeholders": {} + }, + "@inviteText": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "link": { + "type": "String" + } + } + }, + "@shareLocation": { + "type": "String", + "placeholders": {} + }, + "@reason": { + "type": "String", + "placeholders": {} + }, + "@commandHint_markasgroup": {}, + "@errorObtainingLocation": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@hydrateTor": {}, + "@pushNotificationsNotAvailable": {}, + "@passwordRecovery": { + "type": "String", + "placeholders": {} + }, + "@storeInAppleKeyChain": {}, + "@replaceRoomWithNewerVersion": { + "type": "String", + "placeholders": {} + }, + "@hydrate": {}, + "@invalidServerName": {}, + "@chatPermissions": {}, + "@voiceMessage": { + "type": "String", + "placeholders": {} + }, + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "@wipeChatBackup": { + "type": "String", + "placeholders": {} + }, + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "@sender": {}, + "@storeInAndroidKeystore": {}, + "@hideRedactedEvents": { + "type": "String", + "placeholders": {} + }, + "@online": { + "type": "String", + "placeholders": {} + }, + "@signInWithPassword": {}, + "@ignoredUsers": { + "type": "String", + "placeholders": {} + }, + "@lastActiveAgo": { + "type": "String", + "placeholders": { + "localizedTimeShort": { + "type": "String" + } + } + }, + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "@weSentYouAnEmail": { + "type": "String", + "placeholders": {} + }, + "@offensive": { + "type": "String", + "placeholders": {} + }, + "@needPantalaimonWarning": { + "type": "String", + "placeholders": {} + }, + "@makeAdminDescription": {}, + "@edit": { + "type": "String", + "placeholders": {} + }, + "@loadMore": { + "type": "String", + "placeholders": {} + }, + "@noEmotesFound": { + "type": "String", + "placeholders": {} + }, + "@synchronizingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "@transferFromAnotherDevice": { + "type": "String", + "placeholders": {} + }, + "@passwordHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "@pushRules": { + "type": "String", + "placeholders": {} + }, + "@goToTheNewRoom": { + "type": "String", + "placeholders": {} + }, + "@commandHint_clearcache": { + "type": "String", + "description": "Usage hint for the command /clearcache" + }, + "@loadingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "@copy": { + "type": "String", + "placeholders": {} + }, + "@saveKeyManuallyDescription": {}, + "@none": { + "type": "String", + "placeholders": {} + }, + "@editBundlesForAccount": {}, + "@enableEncryption": { + "type": "String", + "placeholders": {} + }, + "@whyIsThisMessageEncrypted": {}, + "@unreadChats": { + "type": "String", + "placeholders": { + "unreadCount": { + "type": "int" + } + } + }, + "@rejectedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@setChatDescription": {}, + "@userLeftTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@spaceName": { + "type": "String", + "placeholders": {} + }, + "@importFromZipFile": {}, + "@toggleUnread": { + "type": "String", + "placeholders": {} + }, + "@or": { + "type": "String", + "placeholders": {} + }, + "@dehydrateWarning": {}, + "@sendOriginal": { + "type": "String", + "placeholders": {} + }, + "@noOtherDevicesFound": {}, + "@whoIsAllowedToJoinThisGroup": { + "type": "String", + "placeholders": {} + }, + "@emptyChat": { + "type": "String", + "placeholders": {} + }, + "@seenByUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@storeSecurlyOnThisDevice": {}, + "@yourChatBackupHasBeenSetUp": {}, + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "@redactedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@submit": { + "type": "String", + "placeholders": {} + }, + "@videoCallsBetaWarning": {}, + "@unmuteChat": { + "type": "String", + "placeholders": {} + }, + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@redactedAnEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@autoplayImages": { + "type": "String", + "placeholder": {} + }, + "@compareEmojiMatch": { + "type": "String", + "placeholders": {} + }, + "@participant": { + "type": "String", + "placeholders": {} + }, + "@logInTo": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "@yes": { + "type": "String", + "placeholders": {} + }, + "@containsDisplayName": { + "type": "String", + "placeholders": {} + }, + "@signInWith": { + "type": "String", + "placeholders": { + "provider": { + "type": "String" + } + } + }, + "@username": { + "type": "String", + "placeholders": {} + }, + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@fileIsTooBigForServer": {}, + "@homeserver": {}, + "@help": { + "type": "String", + "placeholders": {} + }, + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "@people": { + "type": "String", + "placeholders": {} + }, + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "@leftTheChat": { + "type": "String", + "placeholders": {} + }, + "@verified": { + "type": "String", + "placeholders": {} + }, + "@repeatPassword": {}, + "@setStatus": { + "type": "String", + "placeholders": {} + }, + "@groupWith": { + "type": "String", + "placeholders": { + "displayname": { + "type": "String" + } + } + }, + "@callingPermissions": {}, + "@delete": { + "type": "String", + "placeholders": {} + }, + "@newMessageInFluffyChat": { + "type": "String", + "placeholders": {} + }, + "@readUpToHere": {}, + "@start": {}, + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "@deviceId": { + "type": "String", + "placeholders": {} + }, + "@register": { + "type": "String", + "placeholders": {} + }, + "@unlockOldMessages": {}, + "@identity": { + "type": "String", + "placeholders": {} + }, + "@numChats": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "@ignore": { + "type": "String", + "placeholders": {} + }, + "@recording": { + "type": "String", + "placeholders": {} + }, + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@moderator": { + "type": "String", + "placeholders": {} + }, + "@optionalRedactReason": {}, + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@waitingPartnerEmoji": { + "type": "String", + "placeholders": {} + }, + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "@tryToSendAgain": { + "type": "String", + "placeholders": {} + }, + "@guestsCanJoin": { + "type": "String", + "placeholders": {} + }, + "@ok": { + "type": "String", + "placeholders": {} + }, + "@copyToClipboard": { + "type": "String", + "placeholders": {} + }, + "@dehydrate": {}, + "@locationPermissionDeniedNotice": { + "type": "String", + "placeholders": {} + }, + "@send": { + "type": "String", + "placeholders": {} + }, + "@hasWithdrawnTheInvitationFor": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "@visibleForAllParticipants": { + "type": "String", + "placeholders": {} + }, + "@noRoomsFound": { + "type": "String", + "placeholders": {} + }, + "@banned": { + "type": "String", + "placeholders": {} + }, + "@sendAsText": { + "type": "String" + }, + "@inviteForMe": { + "type": "String", + "placeholders": {} + }, + "@archiveRoomDescription": {}, + "@exportEmotePack": {}, + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "@sendSticker": { + "type": "String", + "placeholders": {} + }, + "@account": { + "type": "String", + "placeholders": {} + }, + "@switchToAccount": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "@commandInvalid": { + "type": "String" + }, + "@setAsCanonicalAlias": { + "type": "String", + "placeholders": {} + }, + "@whyDoYouWantToReportThis": { + "type": "String", + "placeholders": {} + }, + "@locationDisabledNotice": { + "type": "String", + "placeholders": {} + }, + "@placeCall": {}, + "@removedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@newChat": { + "type": "String", + "placeholders": {} + }, + "@notifications": { + "type": "String", + "placeholders": {} + }, + "@commandHint_plain": { + "type": "String", + "description": "Usage hint for the command /plain" + }, + "@emoteSettings": { + "type": "String", + "placeholders": {} + }, + "@experimentalVideoCalls": {}, + "@openCamera": { + "type": "String", + "placeholders": {} + }, + "@pleaseEnterRecoveryKeyDescription": {}, + "@guestsAreForbidden": { + "type": "String", + "placeholders": {} + }, + "@mention": { + "type": "String", + "placeholders": {} + }, + "@openInMaps": { + "type": "String", + "placeholders": {} + }, + "@withTheseAddressesRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "@inviteContactToGroupQuestion": {}, + "@emoteExists": { + "type": "String", + "placeholders": {} + }, + "@redactedByBecause": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "reason": { + "type": "String" + } + } + }, + "@isTyping": { + "type": "String", + "placeholders": {} + }, + "@youHaveWithdrawnTheInvitationFor": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "@chat": { + "type": "String", + "placeholders": {} + }, + "@group": { + "type": "String", + "placeholders": {} + }, + "@leave": { + "type": "String", + "placeholders": {} + }, + "@skip": { + "type": "String", + "placeholders": {} + }, + "@appearOnTopDetails": {}, + "@roomHasBeenUpgraded": { + "type": "String", + "placeholders": {} + }, + "@enterRoom": {}, + "@enableEmotesGlobally": { + "type": "String", + "placeholders": {} + }, + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "@pleaseChooseAPasscode": { + "type": "String", + "placeholders": {} + }, + "@noPasswordRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@allChats": { + "type": "String", + "placeholders": {} + }, + "@reportUser": {}, + "@sharedTheLocation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@commandHint_send": { + "type": "String", + "description": "Usage hint for the command /send" + }, + "@onlineKeyBackupEnabled": { + "type": "String", + "placeholders": {} + }, + "@unbannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "@confirmEventUnpin": {}, + "@badServerVersionsException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "@youInvitedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "@kickedAndBanned": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "@noConnectionToTheServer": { + "type": "String", + "placeholders": {} + }, + "@fileHasBeenSavedAt": { + "type": "String", + "placeholders": { + "path": { + "type": "String" + } + } + }, + "@license": { + "type": "String", + "placeholders": {} + }, + "@addToSpace": {}, + "@unbanFromChat": { + "type": "String", + "placeholders": {} + }, + "@commandMissing": { + "type": "String", + "placeholders": { + "command": { + "type": "String" + } + }, + "description": "State that {command} is not a valid /command." + }, + "@redactMessageDescription": {}, + "@rejoin": { + "type": "String", + "placeholders": {} + }, + "@recoveryKey": {}, + "@redactMessage": { + "type": "String", + "placeholders": {} + }, + "@forward": { + "type": "String", + "placeholders": {} + }, + "@commandHint_discardsession": { + "type": "String", + "description": "Usage hint for the command /discardsession" + }, + "@invalidInput": {}, + "@about": { + "type": "String", + "placeholders": {} + }, + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "@hideUnknownEvents": { + "type": "String", + "placeholders": {} + }, + "@dehydrateTorLong": {}, + "@yourPublicKey": { + "type": "String", + "placeholders": {} + }, + "@tooManyRequestsWarning": { + "type": "String", + "placeholders": {} + }, + "@invitedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "@kickFromChat": { + "type": "String", + "placeholders": {} + }, + "@commandHint_myroomnick": { + "type": "String", + "description": "Usage hint for the command /myroomnick" + }, + "@offline": { + "type": "String", + "placeholders": {} + }, + "@noPermission": { + "type": "String", + "placeholders": {} + }, + "@doNotShowAgain": {}, + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@report": {}, + "@status": { + "type": "String", + "placeholders": {} + }, + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "@groupIsPublic": { + "type": "String", + "placeholders": {} + }, + "@verifyStart": { + "type": "String", + "placeholders": {} + }, + "@memberChanges": { + "type": "String", + "placeholders": {} + }, + "@joinRoom": { + "type": "String", + "placeholders": {} + }, + "@unverified": {}, + "@fluffychat": { + "type": "String", + "placeholders": {} + }, + "@howOffensiveIsThisContent": { + "type": "String", + "placeholders": {} + }, + "@serverRequiresEmail": {}, + "@hideUnimportantStateEvents": {}, + "@screenSharingTitle": {}, + "@widgetCustom": {}, + "@sentCallInformations": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "@addToSpaceDescription": {}, + "@googlyEyesContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "@youBannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "@theyDontMatch": { + "type": "String", + "placeholders": {} + }, + "@youHaveBeenBannedFromThisChat": { + "type": "String", + "placeholders": {} + }, + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "@addChatDescription": {}, + "@sentAnAudio": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@editRoomAvatar": { + "type": "String", + "placeholders": {} + }, + "@encrypted": { + "type": "String", + "placeholders": {} + }, + "@commandHint_leave": { + "type": "String", + "description": "Usage hint for the command /leave" + }, + "@commandHint_myroomavatar": { + "type": "String", + "description": "Usage hint for the command /myroomavatar" + }, + "@cancel": { + "type": "String", + "placeholders": {} + }, + "@hasKnocked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "@publish": {}, + "@openLinkInBrowser": {}, + "@clearArchive": {}, + "@appLock": { + "type": "String", + "placeholders": {} + }, + "@commandHint_react": { + "type": "String", + "description": "Usage hint for the command /react" + }, + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@commandHint_me": { + "type": "String", + "description": "Usage hint for the command /me" + }, + "@pleaseEnterYourUsername": { + "type": "String", + "placeholders": {} + }, + "@messageInfo": {}, + "@disableEncryptionWarning": {}, + "@directChat": {}, + "@encryptionNotEnabled": { + "type": "String", + "placeholders": {} + }, + "@wrongPinEntered": { + "type": "String", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "@sendTypingNotifications": {}, + "@lightTheme": { + "type": "String", + "placeholders": {} + }, + "@inviteGroupChat": {}, + "@appearOnTop": {}, + "@invitePrivateChat": {}, + "@verifyTitle": { + "type": "String", + "placeholders": {} + }, + "@foregroundServiceRunning": {}, + "@enterAnEmailAddress": { + "type": "String", + "placeholders": {} + }, + "@voiceCall": {}, + "@commandHint_kick": { + "type": "String", + "description": "Usage hint for the command /kick" + }, + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "@createNewSpace": { + "type": "String", + "placeholders": {} + }, + "@commandHint_unban": { + "type": "String", + "description": "Usage hint for the command /unban" + }, + "@unknownEncryptionAlgorithm": { + "type": "String", + "placeholders": {} + }, + "@commandHint_ban": { + "type": "String", + "description": "Usage hint for the command /ban" + }, + "@importEmojis": {}, + "@confirm": { + "type": "String", + "placeholders": {} + }, + "@wasDirectChatDisplayName": { + "type": "String", + "placeholders": { + "oldDisplayName": { + "type": "String" + } + } + }, + "@noChatDescriptionYet": {}, + "@defaultPermissionLevel": { + "type": "String", + "placeholders": {} + }, + "@removeFromBundle": {}, + "@numUsersTyping": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@fontSize": { + "type": "String", + "placeholders": {} + }, + "@whoCanPerformWhichAction": { + "type": "String", + "placeholders": {} + }, + "@confirmMatrixId": {}, + "@learnMore": {}, + "@iHaveClickedOnLink": { + "type": "String", + "placeholders": {} + }, + "@you": { + "type": "String", + "placeholders": {} + }, + "@notAnImage": {}, + "@users": {}, + "@openGallery": {}, + "@chatDescriptionHasBeenChanged": {}, + "@search": { + "type": "String", + "placeholders": {} + }, + "@newGroup": {}, + "@bundleName": {}, + "@dehydrateTor": {}, + "@removeFromSpace": {}, + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "@commandHint_op": { + "type": "String", + "description": "Usage hint for the command /op" + }, + "@commandHint_join": { + "type": "String", + "description": "Usage hint for the command /join" + }, + "@sourceCode": { + "type": "String", + "placeholders": {} + }, + "@roomUpgradeDescription": {}, + "@commandHint_invite": { + "type": "String", + "description": "Usage hint for the command /invite" + }, + "@userSentUnknownEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "type": { + "type": "String" + } + } + }, + "@scanQrCode": {}, + "@logout": { + "type": "String", + "placeholders": {} + }, + "@pleaseEnterANumber": {}, + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "@youKicked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@profileNotFound": {}, + "@jump": {}, + "@groups": { + "type": "String", + "placeholders": {} + }, + "@reactedWith": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "reaction": { + "type": "String" + } + } + }, + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "@sorryThatsNotPossible": {}, + "@videoWithSize": { + "type": "String", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "@oopsSomethingWentWrong": { + "type": "String", + "placeholders": {} + }, + "@loadCountMoreParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@shareInviteLink": {}, + "@commandHint_markasdm": {}, + "@recoveryKeyLost": {}, + "@cuddleContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@containsUserName": { + "type": "String", + "placeholders": {} + }, + "@messages": { + "type": "String", + "placeholders": {} + }, + "@login": { + "type": "String", + "placeholders": {} + }, + "@deviceKeys": {}, + "@waitingPartnerNumbers": { + "type": "String", + "placeholders": {} + }, + "@noGoogleServicesWarning": { + "type": "String", + "placeholders": {} + }, + "@everythingReady": { + "type": "String", + "placeholders": {} + }, + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "@emoteKeyboardNoRecents": { + "type": "String", + "placeholders": {} + }, + "@setCustomEmotes": { + "type": "String", + "placeholders": {} + }, + "@startedACall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "@emoteInvalid": { + "type": "String", + "placeholders": {} + }, + "@systemTheme": { + "type": "String", + "placeholders": {} + }, + "@notificationsEnabledForThisAccount": { + "type": "String", + "placeholders": {} + }, + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "@visibilityOfTheChatHistory": { + "type": "String", + "placeholders": {} + }, + "@settings": { + "type": "String", + "placeholders": {} + }, + "@setTheme": {}, + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "@youJoinedTheChat": {}, + "@wallpaper": { + "type": "String", + "placeholders": {} + }, + "@openVideoCamera": { + "type": "String", + "placeholders": {} + }, + "@play": { + "type": "String", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "@chatBackupDescription": { + "type": "String", + "placeholders": {} + }, + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "@passwordForgotten": { + "type": "String", + "placeholders": {} + }, + "@statusExampleMessage": { + "type": "String", + "placeholders": {} + }, + "@security": { + "type": "String", + "placeholders": {} + }, + "@markAsRead": {}, + "@sendAudio": { + "type": "String", + "placeholders": {} + }, + "@widgetName": {}, + "@sentASticker": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@errorAddingWidget": {}, + "@commandHint_dm": { + "type": "String", + "description": "Usage hint for the command /dm" + }, + "@commandHint_hug": {}, + "@replace": {}, + "@reject": { + "type": "String", + "placeholders": {} + }, + "@extremeOffensive": { + "type": "String", + "placeholders": {} + }, + "@editBlockedServers": { + "type": "String", + "placeholders": {} + }, + "@oopsPushError": { + "type": "String", + "placeholders": {} + }, + "@youUnbannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "@deactivateAccountWarning": { + "type": "String", + "placeholders": {} + }, + "@archive": { + "type": "String", + "placeholders": {} + }, + "@joinedTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@visibleForEveryone": { + "type": "String", + "placeholders": {} + }, + "@pleaseEnter4Digits": { + "type": "String", + "placeholders": {} + }, + "@newSpace": {}, + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "@devices": { + "type": "String", + "placeholders": {} + }, + "@accept": { + "type": "String", + "placeholders": {} + }, + "@unknownEvent": { + "type": "String", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "@emojis": {}, + "@pleaseEnterYourPin": { + "type": "String", + "placeholders": {} + }, + "@pleaseChoose": { + "type": "String", + "placeholders": {} + }, + "@share": { + "type": "String", + "placeholders": {} + }, + "@commandHint_googly": {}, + "@pleaseTryAgainLaterOrChooseDifferentServer": {}, + "@createGroup": {}, + "@privacy": { + "type": "String", + "placeholders": {} + }, + "@changeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "@sendImage": { + "type": "String", + "placeholders": {} + }, + "@hydrateTorLong": {}, + "@time": {}, + "@enterYourHomeserver": { + "type": "String", + "placeholders": {} + }, + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "@contentHasBeenReported": { + "type": "String", + "placeholders": {} + }, + "@custom": {}, + "@noBackupWarning": {}, + "@fromJoining": { + "type": "String", + "placeholders": {} + }, + "@verify": { + "type": "String", + "placeholders": {} + }, + "@sendVideo": { + "type": "String", + "placeholders": {} + }, + "@storeInSecureStorageDescription": {}, + "@openChat": {}, + "@kickUserDescription": {}, + "@sendAMessage": { + "type": "String", + "placeholders": {} + }, + "@pin": { + "type": "String", + "placeholders": {} + }, + "@importNow": {}, + "@deleteAccount": { + "type": "String", + "placeholders": {} + }, + "@setInvitationLink": { + "type": "String", + "placeholders": {} + }, + "@pinMessage": {}, + "@screenSharingDetail": {}, + "@muteChat": { + "type": "String", + "placeholders": {} + }, + "@invite": {}, + "@enableMultiAccounts": {}, + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "@emotePacks": { + "type": "String", + "placeholders": {} + }, + "@indexedDbErrorTitle": {}, + "@endedTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + } +} diff --git a/lib/l10n/intl_ca.arb b/lib/l10n/intl_ca.arb new file mode 100644 index 0000000..80646ee --- /dev/null +++ b/lib/l10n/intl_ca.arb @@ -0,0 +1,3339 @@ +{ + "@@last_modified": "2021-08-14 12:41:10.145728", + "about": "Quant a", + "@about": { + "type": "String", + "placeholders": {} + }, + "accept": "Accepta", + "@accept": { + "type": "String", + "placeholders": {} + }, + "acceptedTheInvitation": "👍 {username} ha acceptat la invitació", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "account": "Compte", + "@account": { + "type": "String", + "placeholders": {} + }, + "activatedEndToEndEncryption": "🔐 {username} ha activat el xifratge d’extrem a extrem", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "admin": "Administració", + "@admin": { + "type": "String", + "placeholders": {} + }, + "alias": "àlies", + "@alias": { + "type": "String", + "placeholders": {} + }, + "allChats": "Tots els xats", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "answeredTheCall": "{senderName} ha respost a la trucada", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "anyoneCanJoin": "Qualsevol pot unir-se", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "appLock": "Blocatge de l’aplicació", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "archive": "Arxiu", + "@archive": { + "type": "String", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "Es pot entrar al xat com a convidadi", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "N’esteu seguri?", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "askSSSSSign": "Per a poder donar accés a l’altra persona, introduïu la frase de seguretat o clau de recuperació.", + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "askVerificationRequest": "Voleu acceptar aquesta sol·licitud de verificació de: {username}?", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "banFromChat": "Veta del xat", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "banned": "Vetadi", + "@banned": { + "type": "String", + "placeholders": {} + }, + "bannedUser": "{username} ha vetat a {targetName}", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "blockDevice": "Bloca el dispositiu", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "botMessages": "Missatges del bot", + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "cancel": "Cancel·la", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "cantOpenUri": "No es pot obrir l’URI {uri}", + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "changeDeviceName": "Canvia el nom del dispositiu", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "changedTheChatAvatar": "{username} ha canviat la imatge del xat", + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheChatDescriptionTo": "{username} ha canviat la descripció del xat a: '{description}'", + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "changedTheChatNameTo": "{username} ha canviat el nom del xat a: '{chatname}'", + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "changedTheChatPermissions": "{username} ha canviat els permisos del xat", + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheGuestAccessRules": "{username} ha canviat les normes d’accés dels convidats", + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheGuestAccessRulesTo": "{username} ha canviat les normes d’accés dels convidats a: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheHistoryVisibility": "{username} ha canviat la visibilitat de l’historial", + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheHistoryVisibilityTo": "{username} ha canviat la visibilitat de l’historial a: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheJoinRules": "{username} ha canviat les normes d’unió", + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheJoinRulesTo": "{username} ha canviat les normes d’unió a: {joinRules}", + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "changedTheProfileAvatar": "{username} ha canviat la seva imatge de perfil", + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomAliases": "{username} ha canviat l’àlies de la sala", + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomInvitationLink": "{username} ha canviat l’enllaç per a convidar", + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changePassword": "Canvia la contrasenya", + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "changeTheHomeserver": "Canvia el servidor", + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "changeTheme": "Canvia l’estil", + "@changeTheme": { + "type": "String", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "Canvia el nom del grup", + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "channelCorruptedDecryptError": "El xifratge s’ha corromput", + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "chat": "Xat", + "@chat": { + "type": "String", + "placeholders": {} + }, + "chatDetails": "Detalls del xat", + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "chats": "Xats", + "@chats": { + "type": "String", + "placeholders": {} + }, + "chooseAStrongPassword": "Trieu una contrasenya forta", + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "close": "Tanca", + "@close": { + "type": "String", + "placeholders": {} + }, + "commandHint_html": "Envia text en format HTML", + "@commandHint_html": { + "type": "String", + "description": "Usage hint for the command /html" + }, + "commandHint_leave": "Abandona aquesta sala", + "@commandHint_leave": { + "type": "String", + "description": "Usage hint for the command /leave" + }, + "commandHint_op": "Estableix el nivell d'autoritat d'uni usuàriï (per defecte: 50)", + "@commandHint_op": { + "type": "String", + "description": "Usage hint for the command /op" + }, + "commandHint_plain": "Envia text sense format", + "@commandHint_plain": { + "type": "String", + "description": "Usage hint for the command /plain" + }, + "commandHint_send": "Envia text", + "@commandHint_send": { + "type": "String", + "description": "Usage hint for the command /send" + }, + "compareEmojiMatch": "Compareu aquests emojis", + "@compareEmojiMatch": { + "type": "String", + "placeholders": {} + }, + "compareNumbersMatch": "Compareu aquests números", + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "confirm": "Confirma", + "@confirm": { + "type": "String", + "placeholders": {} + }, + "connect": "Connecta", + "@connect": { + "type": "String", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "El contacte ha estat convidat al grup", + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "containsDisplayName": "Conté l'àlies", + "@containsDisplayName": { + "type": "String", + "placeholders": {} + }, + "containsUserName": "Inclou nom d'usuàriï", + "@containsUserName": { + "type": "String", + "placeholders": {} + }, + "copiedToClipboard": "S’ha copiat al porta-retalls", + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "copy": "Copia", + "@copy": { + "type": "String", + "placeholders": {} + }, + "couldNotDecryptMessage": "No s'ha pogut desxifrar el missatge: {error}", + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "countParticipants": "{count} participants", + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "create": "Crea", + "@create": { + "type": "String", + "placeholders": {} + }, + "createdTheChat": "💬 {username} ha creat el xat", + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "currentlyActive": "Actiu actualment", + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "darkTheme": "Fosc", + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "dateWithoutYear": "{day}-{month}", + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "dateWithYear": "{day}-{month}-{year}", + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "deactivateAccountWarning": "Es desactivarà el vostre compte d’usuàriï. És irreversible! Voleu fer-ho igualment?", + "@deactivateAccountWarning": { + "type": "String", + "placeholders": {} + }, + "delete": "Suprimeix", + "@delete": { + "type": "String", + "placeholders": {} + }, + "deleteAccount": "Suprimeix el compte", + "@deleteAccount": { + "type": "String", + "placeholders": {} + }, + "deleteMessage": "Suprimeix el missatge", + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "device": "Dispositiu", + "@device": { + "type": "String", + "placeholders": {} + }, + "deviceId": "Id. de dispositiu", + "@deviceId": { + "type": "String", + "placeholders": {} + }, + "devices": "Dispositius", + "@devices": { + "type": "String", + "placeholders": {} + }, + "directChats": "Xats directes", + "@directChats": { + "type": "String", + "placeholders": {} + }, + "displaynameHasBeenChanged": "Ha canviat l'àlies", + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "downloadFile": "Baixa el fitxer", + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "edit": "Edita", + "@edit": { + "type": "String", + "placeholders": {} + }, + "editDisplayname": "Edita l'àlies", + "@editDisplayname": { + "type": "String", + "placeholders": {} + }, + "emoteExists": "L'emoticona ja existeix!", + "@emoteExists": { + "type": "String", + "placeholders": {} + }, + "emoteInvalid": "Codi d'emoticona invàlid!", + "@emoteInvalid": { + "type": "String", + "placeholders": {} + }, + "emotePacks": "Paquet d'emoticones de la sala", + "@emotePacks": { + "type": "String", + "placeholders": {} + }, + "emoteSettings": "Paràmetres de les emoticones", + "@emoteSettings": { + "type": "String", + "placeholders": {} + }, + "emoteShortcode": "Codi d'emoticona", + "@emoteShortcode": { + "type": "String", + "placeholders": {} + }, + "emoteWarnNeedToPick": "Has de seleccionar un codi d'emoticona i una imatge!", + "@emoteWarnNeedToPick": { + "type": "String", + "placeholders": {} + }, + "emptyChat": "Xat buit", + "@emptyChat": { + "type": "String", + "placeholders": {} + }, + "enableEmotesGlobally": "Activa el paquet d'emoticones global", + "@enableEmotesGlobally": { + "type": "String", + "placeholders": {} + }, + "enableEncryptionWarning": "No podreu desactivar el xifratge mai més. N’esteu segur?", + "@enableEncryptionWarning": { + "type": "String", + "placeholders": {} + }, + "encrypted": "Xifrat", + "@encrypted": { + "type": "String", + "placeholders": {} + }, + "encryption": "Xifratge", + "@encryption": { + "type": "String", + "placeholders": {} + }, + "encryptionNotEnabled": "El xifratge no s’ha activat", + "@encryptionNotEnabled": { + "type": "String", + "placeholders": {} + }, + "endedTheCall": "{senderName} ha finalitzat la trucada", + "@endedTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "enterAnEmailAddress": "Introduïu una adreça electrònica", + "@enterAnEmailAddress": { + "type": "String", + "placeholders": {} + }, + "enterYourHomeserver": "Introdueix el teu servidor", + "@enterYourHomeserver": { + "type": "String", + "placeholders": {} + }, + "fileName": "Nom del fitxer", + "@fileName": { + "type": "String", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "String", + "placeholders": {} + }, + "forward": "Reenvia", + "@forward": { + "type": "String", + "placeholders": {} + }, + "fromJoining": "Des de la unió", + "@fromJoining": { + "type": "String", + "placeholders": {} + }, + "fromTheInvitation": "Des de la invitació", + "@fromTheInvitation": { + "type": "String", + "placeholders": {} + }, + "group": "Grup", + "@group": { + "type": "String", + "placeholders": {} + }, + "groupIsPublic": "El grup és públic", + "@groupIsPublic": { + "type": "String", + "placeholders": {} + }, + "groupWith": "Grup amb {displayname}", + "@groupWith": { + "type": "String", + "placeholders": { + "displayname": { + "type": "String" + } + } + }, + "guestsAreForbidden": "Els convidats no poden unir-se", + "@guestsAreForbidden": { + "type": "String", + "placeholders": {} + }, + "guestsCanJoin": "Els convidats es poden unir", + "@guestsCanJoin": { + "type": "String", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "{username} ha retirat la invitació de {targetName}", + "@hasWithdrawnTheInvitationFor": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "help": "Ajuda", + "@help": { + "type": "String", + "placeholders": {} + }, + "hideRedactedEvents": "Amaga els esdeveniments estripats", + "@hideRedactedEvents": { + "type": "String", + "placeholders": {} + }, + "hideUnknownEvents": "Amaga els esdeveniments desconeguts", + "@hideUnknownEvents": { + "type": "String", + "placeholders": {} + }, + "id": "Id.", + "@id": { + "type": "String", + "placeholders": {} + }, + "identity": "Identitat", + "@identity": { + "type": "String", + "placeholders": {} + }, + "ignoredUsers": "Usuaris ignorats", + "@ignoredUsers": { + "type": "String", + "placeholders": {} + }, + "iHaveClickedOnLink": "He fet clic a l'enllaç", + "@iHaveClickedOnLink": { + "type": "String", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "Frase de seguretat o clau de recuperació incorrecta", + "@incorrectPassphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "inviteContact": "Convida contacte", + "@inviteContact": { + "type": "String", + "placeholders": {} + }, + "inviteContactToGroup": "Convida contacte a {groupName}", + "@inviteContactToGroup": { + "type": "String", + "placeholders": { + "groupName": { + "type": "String" + } + } + }, + "invited": "Convidat", + "@invited": { + "type": "String", + "placeholders": {} + }, + "invitedUser": "📩 {username} ha convidat a {targetName}", + "@invitedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "invitedUsersOnly": "Només usuàriïs convidadis", + "@invitedUsersOnly": { + "type": "String", + "placeholders": {} + }, + "inviteForMe": "Invitació per a mi", + "@inviteForMe": { + "type": "String", + "placeholders": {} + }, + "inviteText": "{username} t'ha convidat a FluffyChat.\n1. Visita fluffychat.im i instaŀla l'app\n2. Registra't o inicia sessió\n3. Obre l'enllaç d'invitació:\n{link}", + "@inviteText": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "link": { + "type": "String" + } + } + }, + "isTyping": "escrivint…", + "@isTyping": { + "type": "String", + "placeholders": {} + }, + "joinedTheChat": "👋 {username} s'ha unit al xat", + "@joinedTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "joinRoom": "Uneix-te a la sala", + "@joinRoom": { + "type": "String", + "placeholders": {} + }, + "kicked": "👞 {username} ha expulsat a {targetName}", + "@kicked": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickedAndBanned": "🙅 {username} ha expulsat i vetat a {targetName}", + "@kickedAndBanned": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickFromChat": "Expulsa del xat", + "@kickFromChat": { + "type": "String", + "placeholders": {} + }, + "lastActiveAgo": "Actiu per última vegada: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "String", + "placeholders": { + "localizedTimeShort": { + "type": "String" + } + } + }, + "leave": "Abandona", + "@leave": { + "type": "String", + "placeholders": {} + }, + "leftTheChat": "Ha marxat del xat", + "@leftTheChat": { + "type": "String", + "placeholders": {} + }, + "license": "Llicència", + "@license": { + "type": "String", + "placeholders": {} + }, + "lightTheme": "Clar", + "@lightTheme": { + "type": "String", + "placeholders": {} + }, + "loadCountMoreParticipants": "Carrega {count} participants més", + "@loadCountMoreParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "loadingPleaseWait": "S’està carregant… Espereu.", + "@loadingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "loadMore": "Carrega’n més…", + "@loadMore": { + "type": "String", + "placeholders": {} + }, + "locationDisabledNotice": "S’han desactivat els serveis d’ubicació. Activeu-los per a compartir la vostra ubicació.", + "@locationDisabledNotice": { + "type": "String", + "placeholders": {} + }, + "locationPermissionDeniedNotice": "S’ha rebutjat el permís d’ubicació. Atorgueu-lo per a poder compartir la vostra ubicació.", + "@locationPermissionDeniedNotice": { + "type": "String", + "placeholders": {} + }, + "login": "Inicia la sessió", + "@login": { + "type": "String", + "placeholders": {} + }, + "logInTo": "Inicia sessió a {homeserver}", + "@logInTo": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "logout": "Finalitza la sessió", + "@logout": { + "type": "String", + "placeholders": {} + }, + "memberChanges": "Canvis de participants", + "@memberChanges": { + "type": "String", + "placeholders": {} + }, + "mention": "Menciona", + "@mention": { + "type": "String", + "placeholders": {} + }, + "moderator": "Moderador", + "@moderator": { + "type": "String", + "placeholders": {} + }, + "muteChat": "Silencia el xat", + "@muteChat": { + "type": "String", + "placeholders": {} + }, + "needPantalaimonWarning": "Tingueu en compte que, ara per ara, us cal el Pantalaimon per a poder utilitzar el xifratge d’extrem a extrem.", + "@needPantalaimonWarning": { + "type": "String", + "placeholders": {} + }, + "newMessageInFluffyChat": "💬 Missatge nou al FluffyChat", + "@newMessageInFluffyChat": { + "type": "String", + "placeholders": {} + }, + "newVerificationRequest": "Nova sol·licitud de verificació!", + "@newVerificationRequest": { + "type": "String", + "placeholders": {} + }, + "no": "No", + "@no": { + "type": "String", + "placeholders": {} + }, + "noConnectionToTheServer": "Sense connexió al servidor", + "@noConnectionToTheServer": { + "type": "String", + "placeholders": {} + }, + "noEmotesFound": "No s’ha trobat cap emoticona. 😕", + "@noEmotesFound": { + "type": "String", + "placeholders": {} + }, + "noGoogleServicesWarning": "Sembla que no teniu els Serveis de Google al telèfon. Això és una bona decisió respecte a la vostra privadesa! Per a rebre notificacions automàtiques del FluffyChat, us recomanem instaŀlar ntfy. Amb ntfy o qualsevol altre proveïdor de Unified Push, pots rebre notificacions de forma segura i lliure. Pots instaŀlar ntfy des de la PlayStore o des de F-Droid.", + "@noGoogleServicesWarning": { + "type": "String", + "placeholders": {} + }, + "none": "Cap", + "@none": { + "type": "String", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "Encara no heu afegit cap mètode per a poder recuperar la contrasenya.", + "@noPasswordRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "noPermission": "Sense permís", + "@noPermission": { + "type": "String", + "placeholders": {} + }, + "noRoomsFound": "No s’ha trobat cap sala…", + "@noRoomsFound": { + "type": "String", + "placeholders": {} + }, + "notifications": "Notificacions", + "@notifications": { + "type": "String", + "placeholders": {} + }, + "notificationsEnabledForThisAccount": "Notificacions activades per a aquest compte", + "@notificationsEnabledForThisAccount": { + "type": "String", + "placeholders": {} + }, + "numUsersTyping": "{count} usuàriïs escrivint…", + "@numUsersTyping": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "offline": "Fora de línia", + "@offline": { + "type": "String", + "placeholders": {} + }, + "ok": "D'acord", + "@ok": { + "type": "String", + "placeholders": {} + }, + "online": "En línia", + "@online": { + "type": "String", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "La còpia de seguretat de claus en línia està activada", + "@onlineKeyBackupEnabled": { + "type": "String", + "placeholders": {} + }, + "oopsSomethingWentWrong": "Alguna cosa ha anat malament…", + "@oopsSomethingWentWrong": { + "type": "String", + "placeholders": {} + }, + "openAppToReadMessages": "Obre l'aplicació per llegir els missatges", + "@openAppToReadMessages": { + "type": "String", + "placeholders": {} + }, + "openCamera": "Obre la càmera", + "@openCamera": { + "type": "String", + "placeholders": {} + }, + "or": "O", + "@or": { + "type": "String", + "placeholders": {} + }, + "passphraseOrKey": "contrasenya o clau de recuperació", + "@passphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "password": "Contrasenya", + "@password": { + "type": "String", + "placeholders": {} + }, + "passwordForgotten": "Contrasenya oblidada", + "@passwordForgotten": { + "type": "String", + "placeholders": {} + }, + "passwordHasBeenChanged": "La contrasenya ha canviat", + "@passwordHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "passwordRecovery": "Recuperació de contrassenya", + "@passwordRecovery": { + "type": "String", + "placeholders": {} + }, + "pickImage": "Selecciona una imatge", + "@pickImage": { + "type": "String", + "placeholders": {} + }, + "pin": "Fixa", + "@pin": { + "type": "String", + "placeholders": {} + }, + "play": "Reproduir {fileName}", + "@play": { + "type": "String", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "pleaseChooseAPasscode": "Tria un codi d'accés", + "@pleaseChooseAPasscode": { + "type": "String", + "placeholders": {} + }, + "pleaseClickOnLink": "Fes clic a l'enllaç del correu i, després, segueix.", + "@pleaseClickOnLink": { + "type": "String", + "placeholders": {} + }, + "pleaseEnter4Digits": "Introdueix 4 dígits o deixa-ho buit per desactivar el bloqueig.", + "@pleaseEnter4Digits": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPassword": "Introdueix la teva contrasenya", + "@pleaseEnterYourPassword": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourUsername": "Introdueix el teu nom d'usuàriï", + "@pleaseEnterYourUsername": { + "type": "String", + "placeholders": {} + }, + "privacy": "Privadesa", + "@privacy": { + "type": "String", + "placeholders": {} + }, + "publicRooms": "Sales públiques", + "@publicRooms": { + "type": "String", + "placeholders": {} + }, + "pushRules": "Regles push", + "@pushRules": { + "type": "String", + "placeholders": {} + }, + "recording": "Enregistrant", + "@recording": { + "type": "String", + "placeholders": {} + }, + "redactedAnEvent": "{username} ha estripat un esdeveniment", + "@redactedAnEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "reject": "Rebutja", + "@reject": { + "type": "String", + "placeholders": {} + }, + "rejectedTheInvitation": "{username} ha rebutjat la invitació", + "@rejectedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "rejoin": "Torna-t'hi a unir", + "@rejoin": { + "type": "String", + "placeholders": {} + }, + "remove": "Elimina", + "@remove": { + "type": "String", + "placeholders": {} + }, + "removeAllOtherDevices": "Elimina tots els altres dispositius", + "@removeAllOtherDevices": { + "type": "String", + "placeholders": {} + }, + "removedBy": "Eliminat per {username}", + "@removedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "removeDevice": "Elimina dispositiu", + "@removeDevice": { + "type": "String", + "placeholders": {} + }, + "unbanFromChat": "Aixeca el veto", + "@unbanFromChat": { + "type": "String", + "placeholders": {} + }, + "reply": "Respon", + "@reply": { + "type": "String", + "placeholders": {} + }, + "requestPermission": "Sol·licita permís", + "@requestPermission": { + "type": "String", + "placeholders": {} + }, + "roomHasBeenUpgraded": "La sala s'ha actualitzat", + "@roomHasBeenUpgraded": { + "type": "String", + "placeholders": {} + }, + "security": "Seguretat", + "@security": { + "type": "String", + "placeholders": {} + }, + "seenByUser": "Vist per {username}", + "@seenByUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "send": "Envia", + "@send": { + "type": "String", + "placeholders": {} + }, + "sendAMessage": "Envia un missatge", + "@sendAMessage": { + "type": "String", + "placeholders": {} + }, + "sendAsText": "Envia com a text", + "@sendAsText": { + "type": "String" + }, + "sendAudio": "Envia un àudio", + "@sendAudio": { + "type": "String", + "placeholders": {} + }, + "sendFile": "Envia un fitxer", + "@sendFile": { + "type": "String", + "placeholders": {} + }, + "sendImage": "Envia una imatge", + "@sendImage": { + "type": "String", + "placeholders": {} + }, + "sendOriginal": "Envia l’original", + "@sendOriginal": { + "type": "String", + "placeholders": {} + }, + "sendSticker": "Envia adhesiu", + "@sendSticker": { + "type": "String", + "placeholders": {} + }, + "sendVideo": "Envia un vídeo", + "@sendVideo": { + "type": "String", + "placeholders": {} + }, + "sentAFile": "📁 {username} ha enviat un fitxer", + "@sentAFile": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAnAudio": "🎤 {username} ha enviat un àudio", + "@sentAnAudio": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAPicture": "🖼️ {username} ha enviat una imatge", + "@sentAPicture": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentASticker": "😊 {username} ha enviat un adhesiu", + "@sentASticker": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAVideo": "🎥 {username} ha enviat un vídeo", + "@sentAVideo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentCallInformations": "{senderName} ha enviat informació de trucada", + "@sentCallInformations": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "setInvitationLink": "Defineix l’enllaç per a convidar", + "@setInvitationLink": { + "type": "String", + "placeholders": {} + }, + "setPermissionsLevel": "Defineix el nivell de permisos", + "@setPermissionsLevel": { + "type": "String", + "placeholders": {} + }, + "setStatus": "Defineix l’estat", + "@setStatus": { + "type": "String", + "placeholders": {} + }, + "settings": "Paràmetres", + "@settings": { + "type": "String", + "placeholders": {} + }, + "share": "Comparteix", + "@share": { + "type": "String", + "placeholders": {} + }, + "sharedTheLocation": "{username} n’ha compartit la ubicació", + "@sharedTheLocation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "singlesignon": "Autenticació única", + "@singlesignon": { + "type": "String", + "placeholders": {} + }, + "skip": "Omet", + "@skip": { + "type": "String", + "placeholders": {} + }, + "sourceCode": "Codi font", + "@sourceCode": { + "type": "String", + "placeholders": {} + }, + "startedACall": "{senderName} ha iniciat una trucada", + "@startedACall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "statusExampleMessage": "Com us sentiu avui?", + "@statusExampleMessage": { + "type": "String", + "placeholders": {} + }, + "submit": "Envia", + "@submit": { + "type": "String", + "placeholders": {} + }, + "systemTheme": "Sistema", + "@systemTheme": { + "type": "String", + "placeholders": {} + }, + "theyDontMatch": "No coincideixen", + "@theyDontMatch": { + "type": "String", + "placeholders": {} + }, + "theyMatch": "Coincideixen", + "@theyMatch": { + "type": "String", + "placeholders": {} + }, + "title": "FluffyChat", + "@title": { + "description": "Title for the application", + "type": "String", + "placeholders": {} + }, + "toggleUnread": "Marca com a llegit/sense llegir", + "@toggleUnread": { + "type": "String", + "placeholders": {} + }, + "tooManyRequestsWarning": "Massa sol·licituds. Torna-ho a provar més tard!", + "@tooManyRequestsWarning": { + "type": "String", + "placeholders": {} + }, + "tryToSendAgain": "Intenta tornar a enviar", + "@tryToSendAgain": { + "type": "String", + "placeholders": {} + }, + "unavailable": "No disponible", + "@unavailable": { + "type": "String", + "placeholders": {} + }, + "unbannedUser": "{username} ha aixecat el veto a {targetName}", + "@unbannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "unblockDevice": "Desbloqueja dispositiu", + "@unblockDevice": { + "type": "String", + "placeholders": {} + }, + "unknownDevice": "Dispositiu desconegut", + "@unknownDevice": { + "type": "String", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "L’algorisme de xifratge és desconegut", + "@unknownEncryptionAlgorithm": { + "type": "String", + "placeholders": {} + }, + "unknownEvent": "Esdeveniment desconegut '{type}'", + "@unknownEvent": { + "type": "String", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "unmuteChat": "Deixa de silenciar el xat", + "@unmuteChat": { + "type": "String", + "placeholders": {} + }, + "unpin": "Deixa de fixar", + "@unpin": { + "type": "String", + "placeholders": {} + }, + "unreadChats": "{unreadCount, plural, =1{1 xat no llegit} other{{unreadCount} xats no llegits}}", + "@unreadChats": { + "type": "String", + "placeholders": { + "unreadCount": { + "type": "int" + } + } + }, + "userAndOthersAreTyping": "{username} i {count} més estan escrivint…", + "@userAndOthersAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "userAndUserAreTyping": "{username} i {username2} estan escrivint…", + "@userAndUserAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "username2": { + "type": "String" + } + } + }, + "userIsTyping": "{username} està escrivint…", + "@userIsTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "userLeftTheChat": "🚪 {username} ha marxat del xat", + "@userLeftTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "username": "Nom d’usuàriï", + "@username": { + "type": "String", + "placeholders": {} + }, + "userSentUnknownEvent": "{username} ha enviat un esdeveniment {type}", + "@userSentUnknownEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "type": { + "type": "String" + } + } + }, + "verify": "Verifica", + "@verify": { + "type": "String", + "placeholders": {} + }, + "verifyStart": "Inicia la verificació", + "@verifyStart": { + "type": "String", + "placeholders": {} + }, + "verifySuccess": "T'has verificat correctament!", + "@verifySuccess": { + "type": "String", + "placeholders": {} + }, + "verifyTitle": "Verificant un altre compte", + "@verifyTitle": { + "type": "String", + "placeholders": {} + }, + "videoCall": "Videotrucada", + "@videoCall": { + "type": "String", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "Visibilitat de l’historial del xat", + "@visibilityOfTheChatHistory": { + "type": "String", + "placeholders": {} + }, + "visibleForAllParticipants": "Visible per a tots els participants", + "@visibleForAllParticipants": { + "type": "String", + "placeholders": {} + }, + "visibleForEveryone": "Visible per a tothom", + "@visibleForEveryone": { + "type": "String", + "placeholders": {} + }, + "voiceMessage": "Missatge de veu", + "@voiceMessage": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerEmoji": "S’està esperant que l’altre accepti l’emoji…", + "@waitingPartnerEmoji": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerNumbers": "S’està esperant que l’altre accepti els nombres…", + "@waitingPartnerNumbers": { + "type": "String", + "placeholders": {} + }, + "wallpaper": "Fons:", + "@wallpaper": { + "type": "String", + "placeholders": {} + }, + "warning": "Atenció!", + "@warning": { + "type": "String", + "placeholders": {} + }, + "weSentYouAnEmail": "Us hem enviat un missatge de correu electrònic", + "@weSentYouAnEmail": { + "type": "String", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "Qui pot unir-se a aquest grup", + "@whoIsAllowedToJoinThisGroup": { + "type": "String", + "placeholders": {} + }, + "withTheseAddressesRecoveryDescription": "Amb aquestes adreces, si ho necessiteu, podeu recuperar la vostra contrasenya.", + "@withTheseAddressesRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "writeAMessage": "Escriviu un missatge…", + "@writeAMessage": { + "type": "String", + "placeholders": {} + }, + "yes": "Sí", + "@yes": { + "type": "String", + "placeholders": {} + }, + "you": "Vós", + "@you": { + "type": "String", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "Ja no participeu en aquest xat", + "@youAreNoLongerParticipatingInThisChat": { + "type": "String", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "T'han vetat en aquest xat", + "@youHaveBeenBannedFromThisChat": { + "type": "String", + "placeholders": {} + }, + "yourPublicKey": "La vostra clau pública", + "@yourPublicKey": { + "type": "String", + "placeholders": {} + }, + "all": "Tot", + "@all": { + "type": "String", + "placeholders": {} + }, + "addToSpace": "Afegeix a un espai", + "@addToSpace": {}, + "areYouSureYouWantToLogout": "Segur que voleu finalitzar la sessió?", + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "addEmail": "Afegeix una adreça electrònica", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "commandInvalid": "L’ordre no és vàlida", + "@commandInvalid": { + "type": "String" + }, + "fontSize": "Mida de la lletra", + "@fontSize": { + "type": "String", + "placeholders": {} + }, + "goToTheNewRoom": "Ves a la sala nova", + "@goToTheNewRoom": { + "type": "String", + "placeholders": {} + }, + "next": "Següent", + "@next": { + "type": "String", + "placeholders": {} + }, + "link": "Enllaç", + "@link": {}, + "people": "Gent", + "@people": { + "type": "String", + "placeholders": {} + }, + "redactMessage": "Estripa el missatge", + "@redactMessage": { + "type": "String", + "placeholders": {} + }, + "sendOnEnter": "Envia en prémer Retorn", + "@sendOnEnter": {}, + "clearArchive": "Neteja l’arxiu", + "@clearArchive": {}, + "chatBackupDescription": "Els teus xats antics estan protegits amb una clau de recuperació. Assegureu-vos de no perdre-la.", + "@chatBackupDescription": { + "type": "String", + "placeholders": {} + }, + "chatHasBeenAddedToThisSpace": "El xat s’ha afegit a aquest espai", + "@chatHasBeenAddedToThisSpace": {}, + "autoplayImages": "Reprodueix automàticament enganxines i emoticones animades", + "@autoplayImages": { + "type": "String", + "placeholder": {} + }, + "chatBackup": "Còpia de seguretat del xat", + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "blocked": "Blocat", + "@blocked": { + "type": "String", + "placeholders": {} + }, + "everythingReady": "Tot és a punt!", + "@everythingReady": { + "type": "String", + "placeholders": {} + }, + "spaceName": "Nom de l’espai", + "@spaceName": { + "type": "String", + "placeholders": {} + }, + "search": "Cerca", + "@search": { + "type": "String", + "placeholders": {} + }, + "verified": "Verificat", + "@verified": { + "type": "String", + "placeholders": {} + }, + "newChat": "Xat nou", + "@newChat": { + "type": "String", + "placeholders": {} + }, + "changeYourAvatar": "Canvia l’avatar", + "@changeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "ignore": "Ignora", + "@ignore": { + "type": "String", + "placeholders": {} + }, + "commandHint_react": "Envia una resposta com a reacció", + "@commandHint_react": { + "type": "String", + "description": "Usage hint for the command /react" + }, + "defaultPermissionLevel": "Nivell de permisos per defecte per nous membres", + "@defaultPermissionLevel": { + "type": "String", + "placeholders": {} + }, + "extremeOffensive": "Extremadament ofensiu", + "@extremeOffensive": { + "type": "String", + "placeholders": {} + }, + "yourChatBackupHasBeenSetUp": "S’ha configurat la còpia de seguretat del xat.", + "@yourChatBackupHasBeenSetUp": {}, + "contentHasBeenReported": "El contingut s’ha denunciat als administradors del servidor", + "@contentHasBeenReported": { + "type": "String", + "placeholders": {} + }, + "enableEncryption": "Activa el xifratge", + "@enableEncryption": { + "type": "String", + "placeholders": {} + }, + "addAccount": "Afegeix un compte", + "@addAccount": {}, + "noEncryptionForPublicRooms": "Només podreu activar el xifratge quan la sala ja no sigui accessible públicament.", + "@noEncryptionForPublicRooms": { + "type": "String", + "placeholders": {} + }, + "roomVersion": "Versió de la sala", + "@roomVersion": { + "type": "String", + "placeholders": {} + }, + "sendMessages": "Envia missatges", + "@sendMessages": { + "type": "String", + "placeholders": {} + }, + "saveFile": "Desa el fitxer", + "@saveFile": { + "type": "String", + "placeholders": {} + }, + "pleaseFollowInstructionsOnWeb": "Seguiu les instruccions al lloc web i toqueu «Següent».", + "@pleaseFollowInstructionsOnWeb": { + "type": "String", + "placeholders": {} + }, + "reportMessage": "Denuncia el missatge", + "@reportMessage": { + "type": "String", + "placeholders": {} + }, + "setAsCanonicalAlias": "Defineix com a àlies principal", + "@setAsCanonicalAlias": { + "type": "String", + "placeholders": {} + }, + "status": "Estat", + "@status": { + "type": "String", + "placeholders": {} + }, + "toggleFavorite": "Commuta l’estat «preferit»", + "@toggleFavorite": { + "type": "String", + "placeholders": {} + }, + "toggleMuted": "Commuta l’estat «silenci»", + "@toggleMuted": { + "type": "String", + "placeholders": {} + }, + "transferFromAnotherDevice": "Transfereix des d’un altre dispositiu", + "@transferFromAnotherDevice": { + "type": "String", + "placeholders": {} + }, + "setCustomEmotes": "Defineix emoticones personalitzades", + "@setCustomEmotes": { + "type": "String", + "placeholders": {} + }, + "whoCanPerformWhichAction": "Qui pot efectuar quina acció", + "@whoCanPerformWhichAction": { + "type": "String", + "placeholders": {} + }, + "whyDoYouWantToReportThis": "Per què voleu denunciar això?", + "@whyDoYouWantToReportThis": { + "type": "String", + "placeholders": {} + }, + "wipeChatBackup": "Voleu suprimir la còpia de seguretat dels xats per a crear una clau de recuperació nova?", + "@wipeChatBackup": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "S’està esperant que l’altre accepti la sol·licitud…", + "@waitingPartnerAcceptRequest": { + "type": "String", + "placeholders": {} + }, + "unverified": "No verificat", + "@unverified": {}, + "commandHint_me": "Descriviu-vos", + "@commandHint_me": { + "type": "String", + "description": "Usage hint for the command /me" + }, + "commandMissing": "{command} no és una ordre.", + "@commandMissing": { + "type": "String", + "placeholders": { + "command": { + "type": "String" + } + }, + "description": "State that {command} is not a valid /command." + }, + "configureChat": "Configura el xat", + "@configureChat": { + "type": "String", + "placeholders": {} + }, + "copyToClipboard": "Copia al porta-retalls", + "@copyToClipboard": { + "type": "String", + "placeholders": {} + }, + "createNewSpace": "Espai nou", + "@createNewSpace": { + "type": "String", + "placeholders": {} + }, + "errorObtainingLocation": "S’ha produït un error en obtenir la ubicació: {error}", + "@errorObtainingLocation": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "groups": "Grups", + "@groups": { + "type": "String", + "placeholders": {} + }, + "messages": "Missatges", + "@messages": { + "type": "String", + "placeholders": {} + }, + "showPassword": "Mostra la contrasenya", + "@showPassword": { + "type": "String", + "placeholders": {} + }, + "spaceIsPublic": "L’espai és públic", + "@spaceIsPublic": { + "type": "String", + "placeholders": {} + }, + "scanQrCode": "Escaneja un codi QR", + "@scanQrCode": {}, + "obtainingLocation": "S’està obtenint la ubicació…", + "@obtainingLocation": { + "type": "String", + "placeholders": {} + }, + "shareLocation": "Comparteix la ubicació", + "@shareLocation": { + "type": "String", + "placeholders": {} + }, + "synchronizingPleaseWait": "S’està sincronitzant… Espereu.", + "@synchronizingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "reason": "Raó", + "@reason": { + "type": "String", + "placeholders": {} + }, + "changedTheDisplaynameTo": "{username} ha canviat el seu àlies a: '{displayname}'", + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "howOffensiveIsThisContent": "Com d’ofensiu és aquest contingut?", + "@howOffensiveIsThisContent": { + "type": "String", + "placeholders": {} + }, + "commandHint_clearcache": "Neteja la memòria cau", + "@commandHint_clearcache": { + "type": "String", + "description": "Usage hint for the command /clearcache" + }, + "commandHint_join": "Uneix-te a la sala", + "@commandHint_join": { + "type": "String", + "description": "Usage hint for the command /join" + }, + "commandHint_kick": "Expulsa uni usuàriï d'aquesta sala", + "@commandHint_kick": { + "type": "String", + "description": "Usage hint for the command /kick" + }, + "commandHint_myroomavatar": "Establiu la imatge per a aquesta sala (per mxc-uri)", + "@commandHint_myroomavatar": { + "type": "String", + "description": "Usage hint for the command /myroomavatar" + }, + "commandHint_dm": "Inicia un xat directe\nUsa --no-encryption per desactivar l'encriptatge", + "@commandHint_dm": { + "type": "String", + "description": "Usage hint for the command /dm" + }, + "commandHint_invite": "Convida uni usuàriï a aquesta sala", + "@commandHint_invite": { + "type": "String", + "description": "Usage hint for the command /invite" + }, + "commandHint_ban": "Veta uni usuàriï d'aquesta sala", + "@commandHint_ban": { + "type": "String", + "description": "Usage hint for the command /ban" + }, + "commandHint_create": "Crea un xat de grup buit\nUsa --no-encryption per desactivar l'encriptatge", + "@commandHint_create": { + "type": "String", + "description": "Usage hint for the command /create" + }, + "commandHint_discardsession": "Descarta la sessió", + "@commandHint_discardsession": { + "type": "String", + "description": "Usage hint for the command /discardsession" + }, + "repeatPassword": "Repetiu la contrasenya", + "@repeatPassword": {}, + "commandHint_myroomnick": "Estableix el teu àlies per a aquesta sala", + "@commandHint_myroomnick": { + "type": "String", + "description": "Usage hint for the command /myroomnick" + }, + "editBlockedServers": "Edita els servidors bloquejats", + "@editBlockedServers": { + "type": "String", + "placeholders": {} + }, + "badServerLoginTypesException": "El servidor admet els inicis de sessió:\n{serverVersions}\nPerò l'aplicació només admet:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "hugContent": "{senderName} t'abraça", + "@hugContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "jumpToLastReadMessage": "Salta a l'últim missatge llegit", + "@jumpToLastReadMessage": {}, + "allRooms": "Tots els xats de grup", + "@allRooms": { + "type": "String", + "placeholders": {} + }, + "commandHint_cuddle": "Envia una carícia", + "@commandHint_cuddle": {}, + "widgetVideo": "Vídeo", + "@widgetVideo": {}, + "dismiss": "Ignora-ho", + "@dismiss": {}, + "reportErrorDescription": "😭 Oh no. Hi ha hagut algun error. Si vols, pots informar d'aquest bug a l'equip de desenvolupament.", + "@reportErrorDescription": {}, + "removeYourAvatar": "Esborra el teu avatar", + "@removeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "unsupportedAndroidVersion": "Aquesta versió d'Android és incompatible", + "@unsupportedAndroidVersion": {}, + "widgetJitsi": "Jitsi Meet", + "@widgetJitsi": {}, + "messageType": "Tipus de missatge", + "@messageType": {}, + "indexedDbErrorLong": "L'emmagatzematge de missatges no està disponible per defecte en el mode privat.\nVisita\n - about:config\n - posa a true l'opció dom.indexedDB.privateBrowsing.enabled\nSi no ho fas, no podràs fer servir FluffyChat en mode privat.", + "@indexedDbErrorLong": {}, + "oneClientLoggedOut": "Una de les teves aplicacions ha tancat la sessió", + "@oneClientLoggedOut": {}, + "startFirstChat": "Comença el teu primer xat", + "@startFirstChat": {}, + "callingAccount": "Compte de la trucada", + "@callingAccount": {}, + "setColorTheme": "Tria el color del tema:", + "@setColorTheme": {}, + "nextAccount": "Compte següent", + "@nextAccount": {}, + "allSpaces": "Tots els espais", + "@allSpaces": {}, + "supposedMxid": "Això hauria de ser {mxid}", + "@supposedMxid": { + "type": "String", + "placeholders": { + "mxid": { + "type": "String" + } + } + }, + "user": "Usuàrïi", + "@user": {}, + "youAcceptedTheInvitation": "👍 Has acceptat la invitació", + "@youAcceptedTheInvitation": {}, + "noMatrixServer": "{server1} no és un servidor de matrix, vols fer servir {server2} ?", + "@noMatrixServer": { + "type": "String", + "placeholders": { + "server1": { + "type": "String" + }, + "server2": { + "type": "String" + } + } + }, + "youInvitedBy": "📩 {user} t'ha convidat", + "@youInvitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "banUserDescription": "Es vetarà li usuàriï al xat i no podrà tornar-hi a entrar fins que se li aixequi el veto.", + "@banUserDescription": {}, + "widgetEtherpad": "Nota de text", + "@widgetEtherpad": {}, + "removeDevicesDescription": "Tancaràs la sessió d'aquest dispositiu i no hi podràs rebre més missatges.", + "@removeDevicesDescription": {}, + "separateChatTypes": "Separa xats directes i grups", + "@separateChatTypes": { + "type": "String", + "placeholders": {} + }, + "tryAgain": "Torna-ho a provar", + "@tryAgain": {}, + "youKickedAndBanned": "🙅 Has expulsat i vetat a {user}", + "@youKickedAndBanned": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "unbanUserDescription": "L'usuàrïi ja pot tornar a entrar al xat.", + "@unbanUserDescription": {}, + "youRejectedTheInvitation": "Has rebutjat la invitació", + "@youRejectedTheInvitation": {}, + "otherCallingPermissions": "Micròfon, càmera i altres permisos del FluffyChat", + "@otherCallingPermissions": {}, + "messagesStyle": "Missatges:", + "@messagesStyle": {}, + "widgetUrlError": "La URL no és vàlida.", + "@widgetUrlError": {}, + "emailOrUsername": "Email o nom d'usuàrïi", + "@emailOrUsername": {}, + "newSpaceDescription": "Els espais et permeten consolidar els teus xats i construir comunitats públiques o privades.", + "@newSpaceDescription": {}, + "chatDescription": "Descripció del xat", + "@chatDescription": {}, + "callingAccountDetails": "Permet al FluffyChat de fer servir l'app de trucades nativa de l'Android.", + "@callingAccountDetails": {}, + "editRoomAliases": "Canvia els àlies de la sala", + "@editRoomAliases": { + "type": "String", + "placeholders": {} + }, + "enterSpace": "Obre l'espai", + "@enterSpace": {}, + "encryptThisChat": "Xifra aquest xat", + "@encryptThisChat": {}, + "previousAccount": "Compte anterior", + "@previousAccount": {}, + "reopenChat": "Reobre el xat", + "@reopenChat": {}, + "pleaseEnterRecoveryKey": "Introdueix la teva clau de recuperació:", + "@pleaseEnterRecoveryKey": {}, + "widgetNameError": "Posa el nom públic.", + "@widgetNameError": {}, + "inoffensive": "Inofensiu", + "@inoffensive": { + "type": "String", + "placeholders": {} + }, + "addToBundle": "Afegeix al pquet", + "@addToBundle": {}, + "addWidget": "Afegeix un giny", + "@addWidget": {}, + "countFiles": "{count} arxius", + "@countFiles": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "noKeyForThisMessage": "Això pot passar si el missatge es va enviar abans que haguessis iniciat sessió al teu compte des d'aquest dispositiu.\n\nTambé pot ser que l'emissor hagi bloquejat el teu dispositiu o que la connexió a internet anés malament.\n\nQue pots llegir el missatge des d'una altra sessió? Si és així, llavors pots transferir-lo! Ves a Paràmetres → Dispositius i assegura't que els teus dispositius s'ha verificat mútuament. Quan obris la sala la propera vegada i totes dues sessions estiguin executant-se, en primer pla, llavors les claus es trasnsmetran automàticament.\n\nVols evitar perdre les claus en tancar la sessió o en canviar de dispositiu? Llavors assegura't que has activat la còpia de seguretat del xat als paràmetres.", + "@noKeyForThisMessage": {}, + "commandHint_markasgroup": "Marca com un grup", + "@commandHint_markasgroup": {}, + "hydrateTor": "Usuàrïis de Tor: Importa una sessió anterior", + "@hydrateTor": {}, + "pushNotificationsNotAvailable": "Les notificacions push no estan disponibles", + "@pushNotificationsNotAvailable": {}, + "storeInAppleKeyChain": "Desa en la Apple KeyChain", + "@storeInAppleKeyChain": {}, + "replaceRoomWithNewerVersion": "Substitueix la sala amb la versió més recent", + "@replaceRoomWithNewerVersion": { + "type": "String", + "placeholders": {} + }, + "hydrate": "Restaura un arxiu de recuperació", + "@hydrate": {}, + "invalidServerName": "El nom del servidor és invàlid", + "@invalidServerName": {}, + "chatPermissions": "Permisos del xat", + "@chatPermissions": {}, + "sender": "Remitent", + "@sender": {}, + "storeInAndroidKeystore": "Desa en la Android KeyStore", + "@storeInAndroidKeystore": {}, + "signInWithPassword": "Inicia sessió amb contrasenya", + "@signInWithPassword": {}, + "offensive": "Ofensiu", + "@offensive": { + "type": "String", + "placeholders": {} + }, + "makeAdminDescription": "Un cop hagis fet admin aquesta persona ja no podràs desfer-ho, ja que llavors tindrà els mateixos permisos que tu.", + "@makeAdminDescription": {}, + "saveKeyManuallyDescription": "Per desar aquesta clau manualment, pica l'eina de compartir o copia-la al porta-retalls.", + "@saveKeyManuallyDescription": {}, + "editBundlesForAccount": "Edita paquets per aquest compte", + "@editBundlesForAccount": {}, + "whyIsThisMessageEncrypted": "Per què no es pot llegir aquest missatge?", + "@whyIsThisMessageEncrypted": {}, + "setChatDescription": "Posa una descripció de xat", + "@setChatDescription": {}, + "importFromZipFile": "Importa des d'un arxiu zip", + "@importFromZipFile": {}, + "dehydrateWarning": "Aquesta acció és irreversible. Assegura't que deses l'arxiu de recuperació en un lloc segur.", + "@dehydrateWarning": {}, + "noOtherDevicesFound": "No s'han trobat més dispositius", + "@noOtherDevicesFound": {}, + "redactedBy": "Estripat per {username}", + "@redactedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "videoCallsBetaWarning": "Tingues en compte que les trucades de vídeo estan encara en beta. Pot ser que no funcioni bé o que falli en alguna plataforma.", + "@videoCallsBetaWarning": {}, + "participant": "Participant", + "@participant": { + "type": "String", + "placeholders": {} + }, + "signInWith": "Inicia sessió amb {provider}", + "@signInWith": { + "type": "String", + "placeholders": { + "provider": { + "type": "String" + } + } + }, + "fileIsTooBigForServer": "No s'ha pogut enviar! El servidor només accepta adjunts de fins a {max}.", + "@fileIsTooBigForServer": {}, + "homeserver": "Servidor", + "@homeserver": {}, + "callingPermissions": "Permisos de trucada", + "@callingPermissions": {}, + "readUpToHere": "Llegit fins aquí", + "@readUpToHere": {}, + "start": "Comença", + "@start": {}, + "register": "Registra't", + "@register": { + "type": "String", + "placeholders": {} + }, + "unlockOldMessages": "Desbloqueja els missatges antics", + "@unlockOldMessages": {}, + "numChats": "{number} xats", + "@numChats": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "optionalRedactReason": "(Opcional) El motiu per estripar el missatge...", + "@optionalRedactReason": {}, + "dehydrate": "Exporta la sessió i neteja el dispositiu", + "@dehydrate": {}, + "archiveRoomDescription": "Aquest xat serà arxivat. Els altres contactes del grup ho veuran com si haguessis abandonat el xat.", + "@archiveRoomDescription": {}, + "exportEmotePack": "Exporta com un pack Emote en .zip", + "@exportEmotePack": {}, + "switchToAccount": "Canvia al compte {number}", + "@switchToAccount": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "experimentalVideoCalls": "Trucades de vídeo experimentals", + "@experimentalVideoCalls": {}, + "pleaseEnterRecoveryKeyDescription": "Per desbloquejar els missatges antics, introdueix la clau de recuperació que vas generar en una sessió anterior. La clau de recuperació NO és la teva contrasenya.", + "@pleaseEnterRecoveryKeyDescription": {}, + "openInMaps": "Obre als mapes", + "@openInMaps": { + "type": "String", + "placeholders": {} + }, + "inviteContactToGroupQuestion": "Vols convidar {contact} al xat \"{groupName}\"?", + "@inviteContactToGroupQuestion": {}, + "redactedByBecause": "Estripat per {username} per: \"{reason}\"", + "@redactedByBecause": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "reason": { + "type": "String" + } + } + }, + "youHaveWithdrawnTheInvitationFor": "Has rebutjat la invitació de {user}", + "@youHaveWithdrawnTheInvitationFor": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "appearOnTopDetails": "Permet a l'app que aparegui sobre d'altres apps. No cal si ja has afegit FluffyChat com a compte de trucades", + "@appearOnTopDetails": {}, + "enterRoom": "Entra a la sala", + "@enterRoom": {}, + "reportUser": "Denuncia l'usuàrïi", + "@reportUser": {}, + "confirmEventUnpin": "Vols desfixar l'esdeveniment permanentment?", + "@confirmEventUnpin": {}, + "badServerVersionsException": "Aquest servidor suporta aquestes versions de Matrix:\n{serverVersions}\nPerò aquesta aplicación només és compatible amb {supportedVersions}", + "@badServerVersionsException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "youInvitedUser": "📩 Has convidat a {user}", + "@youInvitedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "fileHasBeenSavedAt": "S'ha desat l'arxiu a {path}", + "@fileHasBeenSavedAt": { + "type": "String", + "placeholders": { + "path": { + "type": "String" + } + } + }, + "redactMessageDescription": "S'estriparà el missatge per a totser d'aquesta conversa. Aquesta acció és irreversible.", + "@redactMessageDescription": {}, + "recoveryKey": "Clau de recuperació", + "@recoveryKey": {}, + "invalidInput": "L'entrada no és vàlida!", + "@invalidInput": {}, + "dehydrateTorLong": "Per a lis usuàrïis de Tor, es recomana exportar la sessió abans de tancar la finestra.", + "@dehydrateTorLong": {}, + "doNotShowAgain": "No ho tornis a mostrar", + "@doNotShowAgain": {}, + "report": "informa", + "@report": {}, + "serverRequiresEmail": "Aquest servidor necessita validar la teva adreça per registrar-t'hi.", + "@serverRequiresEmail": {}, + "hideUnimportantStateEvents": "Amaga canvis d'estat poc importants", + "@hideUnimportantStateEvents": {}, + "screenSharingTitle": "compartició de pantalla", + "@screenSharingTitle": {}, + "widgetCustom": "Personalització", + "@widgetCustom": {}, + "addToSpaceDescription": "Tria un espai per afegir-hi el xat.", + "@addToSpaceDescription": {}, + "googlyEyesContent": "{senderName} t'ha enviat un parell d'ulls", + "@googlyEyesContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "youBannedUser": "Has vetat a {user}", + "@youBannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "addChatDescription": "Afegeix una descripció al xat...", + "@addChatDescription": {}, + "editRoomAvatar": "Canvia la imatge de la sala", + "@editRoomAvatar": { + "type": "String", + "placeholders": {} + }, + "hasKnocked": "🚪 {user} pica a la porta", + "@hasKnocked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "publish": "Publica", + "@publish": {}, + "openLinkInBrowser": "Obre l'enllaç en un navegador", + "@openLinkInBrowser": {}, + "messageInfo": "Informació del missatge", + "@messageInfo": {}, + "disableEncryptionWarning": "Per motius de seguretat, un cop activat, no es pot desactivar el xifratge.", + "@disableEncryptionWarning": {}, + "directChat": "Xat directe", + "@directChat": {}, + "wrongPinEntered": "Pin incorrecte! Torna-ho a provar en {seconds} segons...", + "@wrongPinEntered": { + "type": "String", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "sendTypingNotifications": "Envia notificacions d'escriptura", + "@sendTypingNotifications": {}, + "inviteGroupChat": "📨 Convida al grup", + "@inviteGroupChat": {}, + "appearOnTop": "Mostra per sobre", + "@appearOnTop": {}, + "invitePrivateChat": "📨 Convida a un xat privat", + "@invitePrivateChat": {}, + "foregroundServiceRunning": "Aquesta notificació apareix quan el servei de primer pla està corrent.", + "@foregroundServiceRunning": {}, + "voiceCall": "Videotrucada", + "@voiceCall": {}, + "commandHint_unban": "Aixeca el veto a aquesti usuàriï per aquesta sala", + "@commandHint_unban": { + "type": "String", + "description": "Usage hint for the command /unban" + }, + "importEmojis": "Importa emojis", + "@importEmojis": {}, + "wasDirectChatDisplayName": "Xat buit ( era {oldDisplayName})", + "@wasDirectChatDisplayName": { + "type": "String", + "placeholders": { + "oldDisplayName": { + "type": "String" + } + } + }, + "noChatDescriptionYet": "No s'ha afegit una descripció de xat.", + "@noChatDescriptionYet": {}, + "removeFromBundle": "Esborra del paquet", + "@removeFromBundle": {}, + "confirmMatrixId": "Confirma la teva ID de Matrix per poder esborrar el compte.", + "@confirmMatrixId": {}, + "learnMore": "Llegeix-ne més", + "@learnMore": {}, + "notAnImage": "No és un arxiu d'image.", + "@notAnImage": {}, + "users": "Usuàrïis", + "@users": {}, + "openGallery": "Obre la galeria", + "@openGallery": {}, + "chatDescriptionHasBeenChanged": "Ha canviat la descripció del xat", + "@chatDescriptionHasBeenChanged": {}, + "newGroup": "Grup nou", + "@newGroup": {}, + "bundleName": "Nom del paquet", + "@bundleName": {}, + "dehydrateTor": "Usuàrïis de Tor: Exporta la sessió", + "@dehydrateTor": {}, + "removeFromSpace": "Esborra de l'espai", + "@removeFromSpace": {}, + "roomUpgradeDescription": "El xat serà recreat amb una versió de sala nova. Totis lis participants seran notificadis que han de canviar al nou xat. Pots llegir més sobre les versions de sala a https://spec.matrix.org/latest/rooms/", + "@roomUpgradeDescription": {}, + "pleaseEnterANumber": "Introdueix un número major que 0", + "@pleaseEnterANumber": {}, + "youKicked": "👞 Has expulsat a {user}", + "@youKicked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "profileNotFound": "No s'ha trobat el compte en aquest servidor. Pot ser un error de connexió, o que realment no existeixi.", + "@profileNotFound": {}, + "jump": "Salta", + "@jump": {}, + "reactedWith": "{sender} ha reaccionat amb {reaction}", + "@reactedWith": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "reaction": { + "type": "String" + } + } + }, + "sorryThatsNotPossible": "Aquesta acció no és possible", + "@sorryThatsNotPossible": {}, + "videoWithSize": "Vídeo {size}", + "@videoWithSize": { + "type": "String", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "shareInviteLink": "Comparteix un enllaç d'invitació", + "@shareInviteLink": {}, + "commandHint_markasdm": "Marca com a conversa directa la sala amb aquesta ID de Matrix", + "@commandHint_markasdm": {}, + "recoveryKeyLost": "Que has perdut la clau de recuperació?", + "@recoveryKeyLost": {}, + "cuddleContent": "{senderName} et fa una carícia", + "@cuddleContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "deviceKeys": "Claus del dispositiu:", + "@deviceKeys": {}, + "emoteKeyboardNoRecents": "Els últims emotes usats apareixeran aquí...", + "@emoteKeyboardNoRecents": { + "type": "String", + "placeholders": {} + }, + "setTheme": "Tria el tema:", + "@setTheme": {}, + "youJoinedTheChat": "T'has afegit al xat", + "@youJoinedTheChat": {}, + "openVideoCamera": "Obre la càmera per a fer un vídeo", + "@openVideoCamera": { + "type": "String", + "placeholders": {} + }, + "markAsRead": "Marca com a llegit", + "@markAsRead": {}, + "widgetName": "Nom", + "@widgetName": {}, + "errorAddingWidget": "S'ha produït un error en afegir el giny.", + "@errorAddingWidget": {}, + "commandHint_hug": "Envia una abraçada", + "@commandHint_hug": {}, + "replace": "Reemplaça", + "@replace": {}, + "oopsPushError": "Ep! Sembla que s'ha produït un error en configurar les notificacions.", + "@oopsPushError": { + "type": "String", + "placeholders": {} + }, + "youUnbannedUser": "Has aixecat el veto a {user}", + "@youUnbannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "newSpace": "Espai nou", + "@newSpace": {}, + "emojis": "Emojis", + "@emojis": {}, + "pleaseEnterYourPin": "Introdueix el teu pin", + "@pleaseEnterYourPin": { + "type": "String", + "placeholders": {} + }, + "pleaseChoose": "Escull", + "@pleaseChoose": { + "type": "String", + "placeholders": {} + }, + "commandHint_googly": "Envia uns ulls curiosos", + "@commandHint_googly": {}, + "pleaseTryAgainLaterOrChooseDifferentServer": "Torna-ho a provar més tard o tria un servidor diferent.", + "@pleaseTryAgainLaterOrChooseDifferentServer": {}, + "createGroup": "Crea un grup", + "@createGroup": {}, + "hydrateTorLong": "Que vas exportar la teva última sessió a Tor? La pots importar ara i continuar xatejant.", + "@hydrateTorLong": {}, + "time": "Temps", + "@time": {}, + "custom": "Personalitzat", + "@custom": {}, + "noBackupWarning": "Compte! Si no actives la còpia de seguretat dels xats, perdràs accés als teus missatges xifrats. És molt recomanable activar-ho abans de tancar la sessió.", + "@noBackupWarning": {}, + "storeInSecureStorageDescription": "Desa la clau de recuperació en l'emmagatzematge segur d'aquest dispositiu.", + "@storeInSecureStorageDescription": {}, + "openChat": "Obre el xat", + "@openChat": {}, + "kickUserDescription": "Li usuàrïi ha estat expulsadi però no vetadi. Als xats públics, pot tornar-hi a entrar en qualsevol moment.", + "@kickUserDescription": {}, + "importNow": "Importa-ho ara", + "@importNow": {}, + "pinMessage": "Fixa a la sala", + "@pinMessage": {}, + "invite": "Convida", + "@invite": {}, + "enableMultiAccounts": "(Beta) Activa multi-compte en aquest dispositiu", + "@enableMultiAccounts": {}, + "indexedDbErrorTitle": "Problemes amb el mode privat", + "@indexedDbErrorTitle": {}, + "unsupportedAndroidVersionLong": "Aquesta funcionalitat només funciona amb versions d'Android més noves.", + "@unsupportedAndroidVersionLong": {}, + "storeSecurlyOnThisDevice": "Desa de forma segura en aquest dispositiu", + "@storeSecurlyOnThisDevice": {}, + "screenSharingDetail": "Estàs compartint la teva pantalla a FluffyChat", + "@screenSharingDetail": {}, + "placeCall": "Truca", + "@placeCall": {}, + "block": "Bloca", + "@block": {}, + "blockUsername": "Ignora aquesti usuàrïi", + "@blockUsername": {}, + "blockedUsers": "Usuàrïis blocadis", + "@blockedUsers": {}, + "blockListDescription": "Pots bloquejar usuàrïis que et molestin. No rebràs missatges seus ni invitacions de part seva a cap sala.", + "@blockListDescription": {}, + "pleaseChooseAStrongPassword": "Tria una contrasenya forta", + "@pleaseChooseAStrongPassword": {}, + "youInvitedToBy": "📩 T'han enviat un enllaç d'invitació per:\n{alias}", + "@youInvitedToBy": { + "placeholders": { + "alias": { + "type": "String" + } + } + }, + "groupName": "Nom del grup", + "@groupName": {}, + "createGroupAndInviteUsers": "Crea un grup i convida-hi usuàrïis", + "@createGroupAndInviteUsers": {}, + "wrongRecoveryKey": "Malauradament, aquesta clau de recuperació no és la correcta.", + "@wrongRecoveryKey": {}, + "publicLink": "Enllaç públic", + "@publicLink": {}, + "transparent": "Transparent", + "@transparent": {}, + "sendReadReceiptsDescription": "Lis altris participants d'un xat poden veure quan has llegit un missatge.", + "@sendReadReceiptsDescription": {}, + "yourGlobalUserIdIs": "La teva ID global és: ", + "@yourGlobalUserIdIs": {}, + "startConversation": "Comença una conversa", + "@startConversation": {}, + "commandHint_sendraw": "Envia un json pelat", + "@commandHint_sendraw": {}, + "databaseMigrationTitle": "La base de dades ha estat optimitzada", + "@databaseMigrationTitle": {}, + "pleaseEnterYourCurrentPassword": "Fica la teva contrasenya actual", + "@pleaseEnterYourCurrentPassword": {}, + "newPassword": "Contrasenya nova", + "@newPassword": {}, + "restoreSessionBody": "L'aplicació provarà de restaurar la teva sessió des de la còpia de seguretat. Si us plau, comunica aquest error a l'equi pde desenvolupament a {url}. El missatge d'error és {error}", + "@restoreSessionBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "formattedMessages": "Missatges amb format", + "@formattedMessages": {}, + "formattedMessagesDescription": "Mostra contingut amb format enriquit com text en cursiva, fent servir markdown.", + "@formattedMessagesDescription": {}, + "verifyOtherUser": "🔐 Verifica uni altri usuàrïi", + "@verifyOtherUser": {}, + "verifyOtherDevice": "🔐 Verifica un altre dispositiu", + "@verifyOtherDevice": {}, + "databaseBuildErrorBody": "No s'ha pogut construir la base de dades SQLite. L'aplicació provarà de fer servir un format de base de dades antiquat. Si us plau, comunica aquesta situació a la comunitat de desenvolupament a {url}. El missatge d'error és: {error}", + "@databaseBuildErrorBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "initAppError": "S'ha produït un error mentre s'inicialitzava l'aplicació", + "@initAppError": {}, + "hidePresences": "Amagar la llista de Status?", + "@hidePresences": {}, + "noUsersFoundWithQuery": "No s'ha trobat cap usuàrïi amb \"{query}\". Revisa si ho has escrit malament.", + "@noUsersFoundWithQuery": { + "type": "String", + "placeholders": { + "query": { + "type": "String" + } + } + }, + "leaveEmptyToClearStatus": "Per esborrar el teu estat, deixa-ho en blanc.", + "@leaveEmptyToClearStatus": {}, + "select": "Tria", + "@select": {}, + "searchForUsers": "Cerca @usuariïs...", + "@searchForUsers": {}, + "subspace": "Subespai", + "@subspace": {}, + "addChatOrSubSpace": "Afegeix un xat o un subespai", + "@addChatOrSubSpace": {}, + "decline": "Denega", + "@decline": {}, + "sendReadReceipts": "Envia informes de tecleig", + "@sendReadReceipts": {}, + "sendTypingNotificationsDescription": "Lis altris participants d'un xat poden veure quan estàs teclejant un missatge nou.", + "@sendTypingNotificationsDescription": {}, + "incomingMessages": "Missatge d'entrada", + "@incomingMessages": {}, + "presenceStyle": "Presència:", + "@presenceStyle": { + "type": "String", + "placeholders": {} + }, + "acceptedKeyVerification": "{sender} ha acceptat la verificació de claus", + "@acceptedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "canceledKeyVerification": "{sender} ha canceŀlat la verificació de claus", + "@canceledKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "completedKeyVerification": "{sender} ha comletat la verificació de claus", + "@completedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "isReadyForKeyVerification": "{sender} està a punt per verificar les claus", + "@isReadyForKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "nothingFound": "No s'ha trobat res...", + "@nothingFound": {}, + "searchChatsRooms": "Cerca #sales, @usuariïs...", + "@searchChatsRooms": {}, + "groupCanBeFoundViaSearch": "El grup es pot trobar per la cerca general", + "@groupCanBeFoundViaSearch": {}, + "databaseMigrationBody": "Espereu un moment, si us plau.", + "@databaseMigrationBody": {}, + "passwordsDoNotMatch": "Les contrasenyes no coincideixen", + "@passwordsDoNotMatch": {}, + "passwordIsWrong": "La contrasenya introduïda és incorrecta", + "@passwordIsWrong": {}, + "joinSpace": "Fica't a l'espai", + "@joinSpace": {}, + "publicSpaces": "Espais públics", + "@publicSpaces": {}, + "thisDevice": "Aquest dispositiu:", + "@thisDevice": {}, + "sessionLostBody": "S'ha perdut la teva sessió. Si us plau, comunica aquest error a l'equip de desenvolupament a {url}. El missatge d'error és: {error}", + "@sessionLostBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "forwardMessageTo": "Vols reenviar el missatge a {roomName}?", + "@forwardMessageTo": { + "type": "String", + "placeholders": { + "roomName": { + "type": "String" + } + } + }, + "verifyOtherUserDescription": "Si verifiques aquesti usuàrïi, podràs estar seguri de a qui estàs escrivint. . 💪\n\nQuan inicies una verificació, l'altra persona i tu veureu un missatge emergent a l'app. Us sortiran un seguit d'emojis o números a cada pantalla, que haureu de comparar.\n\nLa millor manera de fer-ho és quedar en persona o fer una vídeo-trucada. 👭", + "@verifyOtherUserDescription": {}, + "verifyOtherDeviceDescription": "Quan verifiques un altre dispositiu, aquests poden intercanviar claus, així que es millora la seguretat total. 💪 Quan comences una verificació, apareixerà un missatge emergent a tots dos dispositius. A cadascun hi apareixerà un seguit d'emojis o de números que hauràs de comparar. El millor és tenir tots dos dispositius a mà abans d'iniciar la verificació. 🤳", + "@verifyOtherDeviceDescription": {}, + "requestedKeyVerification": "{sender} ha soŀlicitat verificar claus", + "@requestedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "startedKeyVerification": "{sender} ha iniciat la verificació de claus", + "@startedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "presencesToggle": "Mostra els missatges d'estat d'altres usuàrïis", + "@presencesToggle": { + "type": "String", + "placeholders": {} + }, + "stickers": "Enganxines", + "@stickers": {}, + "discover": "Descobreix", + "@discover": {}, + "commandHint_ignore": "Ignora el compte de matrix especificat", + "@commandHint_ignore": {}, + "commandHint_unignore": "Deixa d'ignorar el compt de matrix especificat", + "@commandHint_unignore": {}, + "sendCanceled": "S'ha canceŀlat l'enviament", + "@sendCanceled": {}, + "noChatsFoundHere": "Encara no hi ha xats. Obre una conversa amb algú picant al botó de sota. ⤵️", + "@noChatsFoundHere": {}, + "hideMemberChangesInPublicChatsBody": "No mostres a l'històric de conversa de les sales públiques quan algú hi entra o surt. Això facilita la lectura.", + "@hideMemberChangesInPublicChatsBody": {}, + "invitedBy": "📩 Convidadi per {user}", + "@invitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "knock": "Pica", + "@knock": {}, + "knocking": "S'està picant", + "@knocking": {}, + "restricted": "Restringit", + "@restricted": {}, + "knockRestricted": "No es pot picar a la porta", + "@knockRestricted": {}, + "goToSpace": "Ves a l'espai {space}", + "@goToSpace": { + "type": "String", + "space": {} + }, + "adminLevel": "{level} - Admin", + "@adminLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "changeGeneralChatSettings": "Canvia les opcions generals de xat", + "@changeGeneralChatSettings": {}, + "sendRoomNotifications": "Envia notificacions @room", + "@sendRoomNotifications": {}, + "changeTheDescriptionOfTheGroup": "Canvia la descripció del xat", + "@changeTheDescriptionOfTheGroup": {}, + "changelog": "Registre de canvis", + "@changelog": {}, + "userLevel": "{level} - Usuàriï", + "@userLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "moderatorLevel": "{level} - Moderadori", + "@moderatorLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "inviteOtherUsers": "Convida més gent a la conversa", + "@inviteOtherUsers": {}, + "changeTheChatPermissions": "Canvia els permisos del xat", + "@changeTheChatPermissions": {}, + "changeTheVisibilityOfChatHistory": "Canvia la visibilitat de l'historial de conversa", + "@changeTheVisibilityOfChatHistory": {}, + "changeTheCanonicalRoomAlias": "Canvia l'adreça principal del xat", + "@changeTheCanonicalRoomAlias": {}, + "accessAndVisibilityDescription": "Qui pot entrar a aquesta conversa i com pot ser descoberta.", + "@accessAndVisibilityDescription": {}, + "customEmojisAndStickers": "Emojis i stickers propis", + "@customEmojisAndStickers": {}, + "accessAndVisibility": "Accés i visibilitat", + "@accessAndVisibility": {}, + "calls": "Trucades", + "@calls": {}, + "hideRedactedMessages": "Amaga els missatges estripats", + "@hideRedactedMessages": {}, + "hideInvalidOrUnknownMessageFormats": "Amaga els missatges que tinguin un format desconegut", + "@hideInvalidOrUnknownMessageFormats": {}, + "hideMemberChangesInPublicChats": "Amaga els canvis d'estat de lis membres a les sales públiques", + "@hideMemberChangesInPublicChats": {}, + "notifyMeFor": "Nofica'm que", + "@notifyMeFor": {}, + "overview": "Resum", + "@overview": {}, + "passwordRecoverySettings": "Recuperació de contrasenya", + "@passwordRecoverySettings": {}, + "userRole": "Rol d'usuàriï", + "@userRole": {}, + "minimumPowerLevel": "El nivell mínim de permisos és {level}.", + "@minimumPowerLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "String" + } + } + }, + "gallery": "Galeria", + "@gallery": {}, + "noDatabaseEncryption": "No es pot xifrar la base de dades en aquesta plataforma", + "@noDatabaseEncryption": {}, + "usersMustKnock": "Lis membres han de picar a la porta", + "@usersMustKnock": {}, + "noOneCanJoin": "Ningú s'hi pot ficar", + "@noOneCanJoin": {}, + "userWouldLikeToChangeTheChat": "{user} vol entrar al xat.", + "@userWouldLikeToChangeTheChat": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "customEmojisAndStickersBody": "Afegeix o comparteix emojis o stickers. Els podràs fer servir en qualsevol conversa.", + "@customEmojisAndStickersBody": {}, + "hideRedactedMessagesBody": "Si algú estripa un missatge, ja no apareixerà a l'historial de la conversa.", + "@hideRedactedMessagesBody": {}, + "searchIn": "Cerca al xat \"{chat}\"...", + "@searchIn": { + "type": "String", + "placeholders": { + "chat": { + "type": "String" + } + } + }, + "markAsUnread": "Marca com a no llegit", + "@markAsUnread": {}, + "chatPermissionsDescription": "Defineix quin nivell de permisos cal per cada acció en aquest xat. Els nivells 0, 50 i 100 normalment representen usuàriïs, mods i admins, però es pot canviar.", + "@chatPermissionsDescription": {}, + "updateInstalled": "🎉 S'ha actualitzat a la versió {version}!", + "@updateInstalled": { + "type": "String", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "alwaysUse24HourFormat": "true", + "@alwaysUse24HourFormat": { + "description": "Set to true to always display time of day in 24 hour format." + }, + "appLockDescription": "Bloca l'app amb un pin quan no la facis servir", + "@appLockDescription": {}, + "swipeRightToLeftToReply": "Llisca de dreta esquerra per respondre", + "@swipeRightToLeftToReply": {}, + "globalChatId": "Identificador global de xat", + "@globalChatId": {}, + "createNewAddress": "Crea una adreça nova", + "@createNewAddress": {}, + "searchMore": "Cerca més...", + "@searchMore": {}, + "files": "Arxius", + "@files": {}, + "publicChatAddresses": "Adreces públiques del xat", + "@publicChatAddresses": {}, + "unreadChatsInApp": "{appname}: {unread} converses pendents", + "@unreadChatsInApp": { + "type": "String", + "placeholders": { + "appname": { + "type": "String" + }, + "unread": { + "type": "String" + } + } + }, + "thereAreCountUsersBlocked": "Ara mateix hi ha {count} usuàriïs bloquejadis.", + "@thereAreCountUsersBlocked": { + "type": "String", + "count": {} + }, + "loginWithMatrixId": "Entra amb l'id de Matrix", + "@loginWithMatrixId": {}, + "discoverHomeservers": "Descobreix servidors", + "@discoverHomeservers": {}, + "whatIsAHomeserver": "Què és un servidor de Matrix?", + "@whatIsAHomeserver": {}, + "homeserverDescription": "Totes les teves dades s'emmagatzemen al servidor, com passa amb el e-mail. Pots triar quin servidor vols fer servir sense témer a no poder comunicar gent d'altres servidors. Llegeix-ne més a https://matrix.org.", + "@homeserverDescription": {}, + "doesNotSeemToBeAValidHomeserver": "No sembla un servidor compatible. Pot ser que la URL estigui malament?", + "@doesNotSeemToBeAValidHomeserver": {}, + "countChatsAndCountParticipants": "{chats} xats i {participants} participants", + "@countChatsAndCountParticipants": { + "type": "String", + "placeholders": { + "chats": { + "type": "int" + }, + "participants": { + "type": "int" + } + } + }, + "noMoreChatsFound": "No hi ha més xats...", + "@noMoreChatsFound": {}, + "space": "Espai", + "@space": {}, + "joinedChats": "Xats on has entrat", + "@joinedChats": {}, + "unread": "Sense llegir", + "@unread": {}, + "spaces": "Espais", + "@spaces": {}, + "noPublicLinkHasBeenCreatedYet": "No s'ha creat cap enllaç públic", + "@noPublicLinkHasBeenCreatedYet": {}, + "chatCanBeDiscoveredViaSearchOnServer": "El xat es pot descobrir amb la cerca de {server}", + "@chatCanBeDiscoveredViaSearchOnServer": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "calculatingFileSize": "S'està calculant la mida de l'arxiu...", + "@calculatingFileSize": {}, + "prepareSendingAttachment": "S'està preparant per enviar l'adjunt...", + "@prepareSendingAttachment": {}, + "generatingVideoThumbnail": "S'està generant la miniatura del vídeo...", + "@generatingVideoThumbnail": {}, + "noticeChatBackupDeviceVerification": "Nota: quan connectes tots els dispositius al backup del xat, es verifiquen automàticament.", + "@noticeChatBackupDeviceVerification": {}, + "continueText": "Continua", + "@continueText": {}, + "strikeThrough": "Text ratllat", + "@strikeThrough": {}, + "addLink": "Afegeix un enllaç", + "@addLink": {}, + "noContactInformationProvided": "El servidor no ofereix cap informació de contacte vàlida", + "@noContactInformationProvided": {}, + "setWallpaper": "Tria imatge de fons", + "@setWallpaper": {}, + "sendImages": "Envia {count} imatge", + "@sendImages": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "sendingAttachment": "S'està enviant l'adjunt...", + "@sendingAttachment": {}, + "compressVideo": "S'està comprimint el vídeo...", + "@compressVideo": {}, + "sendingAttachmentCountOfCount": "S'està enviant l'adjunt {index} de {length}...", + "@sendingAttachmentCountOfCount": { + "type": "integer", + "placeholders": { + "index": { + "type": "int" + }, + "length": { + "type": "int" + } + } + }, + "serverLimitReached": "S'ha arribat al límit del servidor! Esperant {seconds} segons...", + "@serverLimitReached": { + "type": "integer", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "oneOfYourDevicesIsNotVerified": "Un dels teus dispositius no està verificat", + "@oneOfYourDevicesIsNotVerified": {}, + "welcomeText": "Hola hola! 👋 Això és FluffyChat. Pots iniciar sessió en qualsevol servidor compatible amb https://matrix.org. I llavors xatejar amb qualsevol. És una xarxa enorme de missatgeria descentralitzada !", + "@welcomeText": {}, + "blur": "Difumina:", + "@blur": {}, + "opacity": "Opacitat:", + "@opacity": {}, + "manageAccount": "Gestiona el compte", + "@manageAccount": {}, + "contactServerAdmin": "Contacta l'admin del servidor", + "@contactServerAdmin": {}, + "contactServerSecurity": "Contacta l'equip de seguretat del servidor", + "@contactServerSecurity": {}, + "version": "Versió", + "@version": {}, + "website": "Lloc web", + "@website": {}, + "compress": "Comprimeix", + "@compress": {}, + "pleaseFillOut": "Emplena", + "@pleaseFillOut": {}, + "invalidUrl": "URL invàlida", + "@invalidUrl": {}, + "unableToJoinChat": "No s'ha pogut entrar al xat. Pot ser que l'altri participant hagi tancat la conversa.", + "@unableToJoinChat": {}, + "aboutHomeserver": "Quant a {homeserver}", + "@aboutHomeserver": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "supportPage": "Pàgina de suport", + "@supportPage": {}, + "serverInformation": "Informació del servidor:", + "@serverInformation": {}, + "name": "Nom", + "@name": {}, + "boldText": "Text en negreta", + "@boldText": {}, + "italicText": "Text en cursiva", + "@italicText": {}, + "contentNotificationSettings": "Opcions de notificació de continguts", + "@contentNotificationSettings": {}, + "roomNotificationSettings": "Opcions de notificacions de sales", + "@roomNotificationSettings": {}, + "notificationRuleContainsUserName": "Conté el nom d'usuàriï", + "@notificationRuleContainsUserName": {}, + "notificationRuleContainsUserNameDescription": "Notifica l'usuàriï quan un missatge contingui el seu nom.", + "@notificationRuleContainsUserNameDescription": {}, + "notificationRuleMaster": "Silencia totes les notificacions", + "@notificationRuleMaster": {}, + "notificationRuleSuppressNotices": "Elimina els missatges automàtics", + "@notificationRuleSuppressNotices": {}, + "notificationRuleInviteForMe": "Invitació per a mi", + "@notificationRuleInviteForMe": {}, + "notificationRuleInviteForMeDescription": "Notifica l'usuàriï quan és convidadi a una sala.", + "@notificationRuleInviteForMeDescription": {}, + "notificationRuleMemberEventDescription": "Ignora les notificacions quan entra o surt algú d'una sala.", + "@notificationRuleMemberEventDescription": {}, + "notificationRuleIsUserMention": "Mencions", + "@notificationRuleIsUserMention": {}, + "notificationRuleContainsDisplayName": "Conté el nom visible", + "@notificationRuleContainsDisplayName": {}, + "notificationRuleIsRoomMention": "Menció de sala", + "@notificationRuleIsRoomMention": {}, + "notificationRuleIsRoomMentionDescription": "Notifica l'usuàriï quan es s'esmenti la sala.", + "@notificationRuleIsRoomMentionDescription": {}, + "notificationRuleRoomnotifDescription": "Notifica l'usuàriï quan un missatge contingui '@room'.", + "@notificationRuleRoomnotifDescription": {}, + "notificationRuleTombstone": "Làpida", + "@notificationRuleTombstone": {}, + "notificationRuleTombstoneDescription": "Notifica l'usuàriï dels missatges de desactivació de sales.", + "@notificationRuleTombstoneDescription": {}, + "notificationRuleReaction": "Reacció", + "@notificationRuleReaction": {}, + "notificationRuleReactionDescription": "Ignora les notificacions sobre reaccions.", + "@notificationRuleReactionDescription": {}, + "notificationRuleRoomServerAcl": "Regles ACL del servidor d'una sala", + "@notificationRuleRoomServerAcl": {}, + "notificationRuleRoomServerAclDescription": "Ignora les notificacions sobre les regles d'accés (ACL) del servidor d'una sala.", + "@notificationRuleRoomServerAclDescription": {}, + "notificationRuleSuppressEdits": "Elimina les edicions", + "@notificationRuleSuppressEdits": {}, + "notificationRuleSuppressEditsDescription": "Ignora les notificacions per missatges editats.", + "@notificationRuleSuppressEditsDescription": {}, + "notificationRuleCall": "Trucada", + "@notificationRuleCall": {}, + "notificationRuleCallDescription": "Notifica l'usuàriï de trucades.", + "@notificationRuleCallDescription": {}, + "notificationRuleEncryptedRoomOneToOneDescription": "Notifica l'usuàriï de missatges en sales xifrades un a un, converses de dues persones.", + "@notificationRuleEncryptedRoomOneToOneDescription": {}, + "notificationRuleEncryptedRoomOneToOne": "Converses xifrades", + "@notificationRuleEncryptedRoomOneToOne": {}, + "notificationRuleRoomOneToOne": "Converses", + "@notificationRuleRoomOneToOne": {}, + "notificationRuleMessageDescription": "Notifica l'usuàriï sobre missatges generals.", + "@notificationRuleMessageDescription": {}, + "notificationRuleEncrypted": "Xifrat", + "@notificationRuleEncrypted": {}, + "notificationRuleEncryptedDescription": "Notifica l'usuàriï de missatges en sales xifrades.", + "@notificationRuleEncryptedDescription": {}, + "notificationRuleJitsi": "Jitsi", + "@notificationRuleJitsi": {}, + "notificationRuleServerAcl": "Ignora canvis en ACL de servidor", + "@notificationRuleServerAcl": {}, + "unknownPushRule": "No es coneix la regla push '{rule}'", + "@unknownPushRule": { + "type": "String", + "placeholders": { + "rule": { + "type": "String" + } + } + }, + "more": "Més", + "@more": {}, + "notificationRuleSuppressNoticesDescription": "No envia notificacions relacionades amb usuàriïs automàtics com els bots.", + "@notificationRuleSuppressNoticesDescription": {}, + "otherNotificationSettings": "Altres opcions de notificacions", + "@otherNotificationSettings": {}, + "notificationRuleIsUserMentionDescription": "Notifica quan mencionin l'usuàriï en un missatge.", + "@notificationRuleIsUserMentionDescription": {}, + "notificationRuleContainsDisplayNameDescription": "Notifica l'usuàriï quan un missatge contingui el seu nom per mostrar.", + "@notificationRuleContainsDisplayNameDescription": {}, + "notificationRuleJitsiDescription": "Notifica l'usuàriï sobre activitat del giny de Jitsi.", + "@notificationRuleJitsiDescription": {}, + "notificationRuleRoomnotif": "Notificació de sala", + "@notificationRuleRoomnotif": {}, + "deletePushRuleCanNotBeUndone": "Si esborres aquesta opció de notificació no ho podràs tornar a canviar.", + "@deletePushRuleCanNotBeUndone": {}, + "notificationRuleRoomOneToOneDescription": "Notifica l'usuàriï de missatges en converses de dues persones, sales un a un.", + "@notificationRuleRoomOneToOneDescription": {}, + "notificationRuleMemberEvent": "Canvis de membres", + "@notificationRuleMemberEvent": {}, + "otherPartyNotLoggedIn": "L'altra persona no està en línia ara mateix i per tant no pot rebre missatges!", + "@otherPartyNotLoggedIn": {}, + "userSpecificNotificationSettings": "Opcions de notificacions d'usuàriï", + "@userSpecificNotificationSettings": {}, + "generalNotificationSettings": "Opcions de notificacions generals", + "@generalNotificationSettings": {}, + "notificationRuleMessage": "Missatge", + "@notificationRuleMessage": {}, + "notificationRuleServerAclDescription": "Ignora les notificacions per canvis en les regles d'accés (ACL) de servidor.", + "@notificationRuleServerAclDescription": {}, + "shareKeysWithDescription": "Quins dispositius vols que puguin llegir els teus missatges xifrats?", + "@shareKeysWithDescription": {}, + "previous": "Anterior", + "@previous": {}, + "notificationRuleMasterDescription": "Ignora totes les altres regles i deshabilita totes les notificacions.", + "@notificationRuleMasterDescription": {}, + "newChatRequest": "📩 Soŀlicitud de missatge", + "@newChatRequest": {}, + "allDevices": "Tots els dispositius", + "@allDevices": {}, + "crossVerifiedDevices": "Els dispositius verificats mútuament", + "@crossVerifiedDevices": {}, + "verifiedDevicesOnly": "Només els dispositius verificats", + "@verifiedDevicesOnly": {}, + "synchronizingPleaseWaitCounter": " S'està sincronitzant... ({percentage}%)", + "@synchronizingPleaseWaitCounter": { + "type": "String", + "placeholders": { + "percentage": { + "type": "String" + } + } + }, + "appWantsToUseForLogin": "Fes servir '{server}' per iniciar sessió", + "@appWantsToUseForLogin": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "appWantsToUseForLoginDescription": "Consenteixes que l'app i la web comparteixen informació sobre tu.", + "@appWantsToUseForLoginDescription": {}, + "open": "Obre", + "@open": {}, + "appIntroduction": "El FluffyChat et permet xatejar amb amiguis entre diverses aplicacions. Llegeix-ne més a https://matrix.org o pica \"Continua\".", + "@appIntroduction": {}, + "waitingForServer": "S'està esperant el servidor...", + "@waitingForServer": {}, + "shareKeysWith": "Comparteix les claus amb...", + "@shareKeysWith": {}, + "crossVerifiedDevicesIfEnabled": "Els dispositius verificats mútuament, si està activat", + "@crossVerifiedDevicesIfEnabled": {}, + "commandHint_roomupgrade": "Actualitza aquesta sala a la versió indicada", + "@commandHint_roomupgrade": {}, + "takeAPhoto": "Fes una foto", + "@takeAPhoto": {}, + "recordAVideo": "Grava un vídeo", + "@recordAVideo": {}, + "optionalMessage": "(Opcional) missatge...", + "@optionalMessage": {}, + "enterNewChat": "Entra al nou xat", + "@enterNewChat": {}, + "notSupportedOnThisDevice": "No suportat en aquest dispositiu", + "@notSupportedOnThisDevice": {} +} diff --git a/lib/l10n/intl_cs.arb b/lib/l10n/intl_cs.arb new file mode 100644 index 0000000..4454804 --- /dev/null +++ b/lib/l10n/intl_cs.arb @@ -0,0 +1,2673 @@ +{ + "@@locale": "cs", + "@@last_modified": "2021-08-14 12:41:10.131133", + "about": "O aplikaci", + "@about": { + "type": "String", + "placeholders": {} + }, + "accept": "Přijmout", + "@accept": { + "type": "String", + "placeholders": {} + }, + "acceptedTheInvitation": "👍 {username} přijal/a pozvání", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "account": "Účet", + "@account": { + "type": "String", + "placeholders": {} + }, + "activatedEndToEndEncryption": "🔐 {username} aktivoval/a koncové šifrování", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "addEmail": "Přidat e-mail", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "admin": "Správce", + "@admin": { + "type": "String", + "placeholders": {} + }, + "alias": "alias", + "@alias": { + "type": "String", + "placeholders": {} + }, + "all": "Vše", + "@all": { + "type": "String", + "placeholders": {} + }, + "allChats": "Všechny chaty", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "answeredTheCall": "{senderName} odpověděl na hovor", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "anyoneCanJoin": "Kdokoliv se může připojit", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "appLock": "Zámek aplikace", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "archive": "Archivovat", + "@archive": { + "type": "String", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "Mohou se připojit hosté", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "Jste si jistý?", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "areYouSureYouWantToLogout": "Opravdu se chcete odhlásit?", + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "askSSSSSign": "Pro ověření této osoby zadejte prosím přístupovou frázi k „bezpečnému úložišti“ anebo „klíč pro obnovu“.", + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "askVerificationRequest": "Přijmout žádost o ověření od {username}?", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "autoplayImages": "Automaticky přehrajte animované nálepky a emoce", + "@autoplayImages": { + "type": "String", + "placeholder": {} + }, + "badServerLoginTypesException": "Homeserver podporuje přihlášení typu:\n{serverVersions}\nAle tato aplikace podporuje pouze:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "badServerVersionsException": "Homeserver podporuje specifikaci verzí:\n{serverVersions}\nAle tato aplikace podporuje pouze verze {supportedVersions}", + "@badServerVersionsException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "banFromChat": "Zakázat chat", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "banned": "Zakázán", + "@banned": { + "type": "String", + "placeholders": {} + }, + "bannedUser": "{username} zakázal {targetName}", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "blockDevice": "Blokovat zařízení", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "blocked": "Zakázán", + "@blocked": { + "type": "String", + "placeholders": {} + }, + "botMessages": "Zprávy od bota", + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "cancel": "Zrušit", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "cantOpenUri": "Nelze otevřít URI {uri}", + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "changeDeviceName": "Změnit název zařízení", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "changedTheChatAvatar": "{username} změnil avatar chatu", + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheChatDescriptionTo": "{username} změnil popis chatu na: „{description}“", + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "changedTheChatNameTo": "{username} změnil jméno chatu na: „{chatname}“", + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "changedTheChatPermissions": "{username} změnili nastavení oprávnění v chatu", + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheDisplaynameTo": "{username} změnili svoji přezdívku na: {displayname}", + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "changedTheGuestAccessRules": "{username} změnili přístupová práva pro hosty", + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheGuestAccessRulesTo": "{username} změnili přístupová práva pro hosty na: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheHistoryVisibility": "{username} změnili nastavení viditelnosti historie diskuze", + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheHistoryVisibilityTo": "{username} změnili nastavení viditelnosti historie diskuze na: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheJoinRules": "{username} změnili nastavení pravidel připojení", + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheJoinRulesTo": "{username} změnili nastavení pravidel připojení na: {joinRules}", + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "changedTheProfileAvatar": "{username} změnili svůj avatar", + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomAliases": "{username} změnili nastavení aliasů místnosti", + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomInvitationLink": "{username} změnili odkaz k pozvání do místnosti", + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changePassword": "Změnit heslo", + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "changeTheHomeserver": "Změnit domovský server", + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "changeTheme": "Změňte svůj styl", + "@changeTheme": { + "type": "String", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "Změnit název skupiny", + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "changeYourAvatar": "Změňte svůj avatar", + "@changeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "channelCorruptedDecryptError": "Šifrování bylo poškozeno", + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "chat": "Chat", + "@chat": { + "type": "String", + "placeholders": {} + }, + "chatBackup": "Záloha chatu", + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "chatBackupDescription": "Záloha chatu je zabezpečena bezpečnostním klíčem. Ujistěte se, prosím, že klíč neztratíte.", + "@chatBackupDescription": { + "type": "String", + "placeholders": {} + }, + "chatDetails": "Bližší údaje o chatu", + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "chats": "Chaty", + "@chats": { + "type": "String", + "placeholders": {} + }, + "chooseAStrongPassword": "Vyberte silné heslo", + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "clearArchive": "Vymazat archiv", + "@clearArchive": {}, + "close": "Zavřít", + "@close": { + "type": "String", + "placeholders": {} + }, + "commandHint_ban": "Zakázat danému uživateli přístup do této místnosti", + "@commandHint_ban": { + "type": "String", + "description": "Usage hint for the command /ban" + }, + "commandHint_html": "Odeslat text ve formátu HTML", + "@commandHint_html": { + "type": "String", + "description": "Usage hint for the command /html" + }, + "commandHint_invite": "Pozvěte daného uživatele do této místnosti", + "@commandHint_invite": { + "type": "String", + "description": "Usage hint for the command /invite" + }, + "commandHint_join": "Připojte se k dané místnosti", + "@commandHint_join": { + "type": "String", + "description": "Usage hint for the command /join" + }, + "commandHint_kick": "Odeberte daného uživatele z této místnosti", + "@commandHint_kick": { + "type": "String", + "description": "Usage hint for the command /kick" + }, + "commandHint_leave": "Opusťte tuto místnost", + "@commandHint_leave": { + "type": "String", + "description": "Usage hint for the command /leave" + }, + "commandHint_me": "Představ se", + "@commandHint_me": { + "type": "String", + "description": "Usage hint for the command /me" + }, + "commandHint_myroomavatar": "Nastavte si obrázek pro tuto místnost (autor mxc-uri)", + "@commandHint_myroomavatar": { + "type": "String", + "description": "Usage hint for the command /myroomavatar" + }, + "commandHint_myroomnick": "Nastavte si váš zobrazovaný název pro tuto místnost", + "@commandHint_myroomnick": { + "type": "String", + "description": "Usage hint for the command /myroomnick" + }, + "commandHint_op": "Nastavit úroveň práv daného uživatele (výchozí: 50)", + "@commandHint_op": { + "type": "String", + "description": "Usage hint for the command /op" + }, + "commandHint_plain": "Odeslat neformátovaný text", + "@commandHint_plain": { + "type": "String", + "description": "Usage hint for the command /plain" + }, + "commandHint_react": "Odeslat odpověď jako reakci", + "@commandHint_react": { + "type": "String", + "description": "Usage hint for the command /react" + }, + "commandHint_send": "Poslat zprávu", + "@commandHint_send": { + "type": "String", + "description": "Usage hint for the command /send" + }, + "commandHint_unban": "Zrušte zákaz přístupu daného uživatele do této místnosti", + "@commandHint_unban": { + "type": "String", + "description": "Usage hint for the command /unban" + }, + "commandInvalid": "Příkaz je neplatný", + "@commandInvalid": { + "type": "String" + }, + "commandMissing": "{command} není příkaz.", + "@commandMissing": { + "type": "String", + "placeholders": { + "command": { + "type": "String" + } + }, + "description": "State that {command} is not a valid /command." + }, + "compareEmojiMatch": "Porovnejte a přesvědčete se, že následující emotikony se shodují na obou zařízeních:", + "@compareEmojiMatch": { + "type": "String", + "placeholders": {} + }, + "compareNumbersMatch": "Porovnejte a přesvědčete se, že následující čísla se shodují na obou zařízeních:", + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "configureChat": "Nastavení chatu", + "@configureChat": { + "type": "String", + "placeholders": {} + }, + "confirm": "Potvrdit", + "@confirm": { + "type": "String", + "placeholders": {} + }, + "connect": "Připojit", + "@connect": { + "type": "String", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "Kontakt byl pozván do skupiny", + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "containsDisplayName": "Obsahuje zobrazovaný název", + "@containsDisplayName": { + "type": "String", + "placeholders": {} + }, + "containsUserName": "Obsahuje uživatelské jméno", + "@containsUserName": { + "type": "String", + "placeholders": {} + }, + "contentHasBeenReported": "Obsah byl nahlášen správcům serveru", + "@contentHasBeenReported": { + "type": "String", + "placeholders": {} + }, + "copiedToClipboard": "Zkopírováno do schránky", + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "copy": "Kopírovat", + "@copy": { + "type": "String", + "placeholders": {} + }, + "copyToClipboard": "Zkopírovat do schránky", + "@copyToClipboard": { + "type": "String", + "placeholders": {} + }, + "couldNotDecryptMessage": "Nebylo možné dešifrovat zprávu: {error}", + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "countParticipants": "{count} účastníků", + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "create": "Vytvořit", + "@create": { + "type": "String", + "placeholders": {} + }, + "createdTheChat": "💬 {username} založil/a chat", + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "createNewSpace": "Nový prostor", + "@createNewSpace": { + "type": "String", + "placeholders": {} + }, + "currentlyActive": "Aktuálně aktivní", + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "darkTheme": "Tmavé", + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "dateWithoutYear": "{day}.{month}", + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "dateWithYear": "{day}. {month}. {year}", + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "deactivateAccountWarning": "Tímto krokem se deaktivuje váš uživatelský účet. Akci nelze vrátit zpět! Jste si jistí?", + "@deactivateAccountWarning": { + "type": "String", + "placeholders": {} + }, + "defaultPermissionLevel": "Výchozí úroveň oprávnění nových uživatelů", + "@defaultPermissionLevel": { + "type": "String", + "placeholders": {} + }, + "delete": "Smazat", + "@delete": { + "type": "String", + "placeholders": {} + }, + "deleteAccount": "Smazat účet", + "@deleteAccount": { + "type": "String", + "placeholders": {} + }, + "deleteMessage": "Smazat zprávu", + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "device": "Zařízení", + "@device": { + "type": "String", + "placeholders": {} + }, + "deviceId": "ID zařízení", + "@deviceId": { + "type": "String", + "placeholders": {} + }, + "devices": "Zařízení", + "@devices": { + "type": "String", + "placeholders": {} + }, + "directChats": "Přímé chatování", + "@directChats": { + "type": "String", + "placeholders": {} + }, + "displaynameHasBeenChanged": "Přezdívka byla změněna", + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "downloadFile": "Stáhnout soubor", + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "edit": "Upravit", + "@edit": { + "type": "String", + "placeholders": {} + }, + "editBlockedServers": "Upravit zakázané servery", + "@editBlockedServers": { + "type": "String", + "placeholders": {} + }, + "editDisplayname": "Změnit přezdívku", + "@editDisplayname": { + "type": "String", + "placeholders": {} + }, + "editRoomAliases": "Upravit aliasy místností", + "@editRoomAliases": { + "type": "String", + "placeholders": {} + }, + "editRoomAvatar": "Upravit avatara místnosti", + "@editRoomAvatar": { + "type": "String", + "placeholders": {} + }, + "emoteExists": "Emotikona již existuje!", + "@emoteExists": { + "type": "String", + "placeholders": {} + }, + "emoteInvalid": "Neplatný kód emotikony!", + "@emoteInvalid": { + "type": "String", + "placeholders": {} + }, + "emotePacks": "Balíček emotikonů pro místnost", + "@emotePacks": { + "type": "String", + "placeholders": {} + }, + "emoteSettings": "Nastavení emotikonů", + "@emoteSettings": { + "type": "String", + "placeholders": {} + }, + "emoteShortcode": "Klávesová zkratka emotikonu", + "@emoteShortcode": { + "type": "String", + "placeholders": {} + }, + "emoteWarnNeedToPick": "Musíte si vybrat klávesovou zkratku emotikonu a obrázek!", + "@emoteWarnNeedToPick": { + "type": "String", + "placeholders": {} + }, + "emptyChat": "Prázdný chat", + "@emptyChat": { + "type": "String", + "placeholders": {} + }, + "enableEmotesGlobally": "Povolit balíček emotikon všude", + "@enableEmotesGlobally": { + "type": "String", + "placeholders": {} + }, + "enableEncryption": "Povolit šifrování", + "@enableEncryption": { + "type": "String", + "placeholders": {} + }, + "enableEncryptionWarning": "Šifrování již nebude možné vypnout. Jste si tím jisti?", + "@enableEncryptionWarning": { + "type": "String", + "placeholders": {} + }, + "encrypted": "Šifrováno", + "@encrypted": { + "type": "String", + "placeholders": {} + }, + "encryption": "Šifrování", + "@encryption": { + "type": "String", + "placeholders": {} + }, + "encryptionNotEnabled": "Šifrování není aktivní", + "@encryptionNotEnabled": { + "type": "String", + "placeholders": {} + }, + "endedTheCall": "{senderName} ukončil hovor", + "@endedTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "enterAnEmailAddress": "Zadejte e-mailovou adresu", + "@enterAnEmailAddress": { + "type": "String", + "placeholders": {} + }, + "enterYourHomeserver": "Zadejte svůj domovský server", + "@enterYourHomeserver": { + "type": "String", + "placeholders": {} + }, + "errorObtainingLocation": "Chyba při získávání polohy: {error}", + "@errorObtainingLocation": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "everythingReady": "Vše připraveno!", + "@everythingReady": { + "type": "String", + "placeholders": {} + }, + "extremeOffensive": "Extrémně urážlivé", + "@extremeOffensive": { + "type": "String", + "placeholders": {} + }, + "fileName": "Název souboru", + "@fileName": { + "type": "String", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "String", + "placeholders": {} + }, + "fontSize": "Velikost písma", + "@fontSize": { + "type": "String", + "placeholders": {} + }, + "forward": "Přeposlat", + "@forward": { + "type": "String", + "placeholders": {} + }, + "fromJoining": "Od vstupu", + "@fromJoining": { + "type": "String", + "placeholders": {} + }, + "fromTheInvitation": "Od pozvání", + "@fromTheInvitation": { + "type": "String", + "placeholders": {} + }, + "goToTheNewRoom": "Přejít do nové místnost", + "@goToTheNewRoom": { + "type": "String", + "placeholders": {} + }, + "group": "Skupina", + "@group": { + "type": "String", + "placeholders": {} + }, + "groupIsPublic": "Skupina je veřejná", + "@groupIsPublic": { + "type": "String", + "placeholders": {} + }, + "groups": "Skupiny", + "@groups": { + "type": "String", + "placeholders": {} + }, + "groupWith": "Skupina s {displayname}", + "@groupWith": { + "type": "String", + "placeholders": { + "displayname": { + "type": "String" + } + } + }, + "guestsAreForbidden": "Hosté jsou zakázáni", + "@guestsAreForbidden": { + "type": "String", + "placeholders": {} + }, + "guestsCanJoin": "Hosté se mohou připojit", + "@guestsCanJoin": { + "type": "String", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "{username} stáhl pozvánku pro {targetName}", + "@hasWithdrawnTheInvitationFor": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "help": "Pomoc", + "@help": { + "type": "String", + "placeholders": {} + }, + "hideRedactedEvents": "Skrýt redigované události", + "@hideRedactedEvents": { + "type": "String", + "placeholders": {} + }, + "hideUnknownEvents": "Skrýt neznámé události", + "@hideUnknownEvents": { + "type": "String", + "placeholders": {} + }, + "howOffensiveIsThisContent": "Jak urážlivý je tento obsah?", + "@howOffensiveIsThisContent": { + "type": "String", + "placeholders": {} + }, + "id": "ID", + "@id": { + "type": "String", + "placeholders": {} + }, + "identity": "Identita", + "@identity": { + "type": "String", + "placeholders": {} + }, + "ignore": "Ignorovat", + "@ignore": { + "type": "String", + "placeholders": {} + }, + "ignoredUsers": "Ignorovaní uživatelé", + "@ignoredUsers": { + "type": "String", + "placeholders": {} + }, + "iHaveClickedOnLink": "Klikl jsem na odkaz", + "@iHaveClickedOnLink": { + "type": "String", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "Nesprávné přístupové heslo anebo klíč pro obnovu", + "@incorrectPassphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "inoffensive": "Neškodný", + "@inoffensive": { + "type": "String", + "placeholders": {} + }, + "inviteContact": "Pozvat kontakt", + "@inviteContact": { + "type": "String", + "placeholders": {} + }, + "inviteContactToGroup": "Pozvat kontakt do {groupName}", + "@inviteContactToGroup": { + "type": "String", + "placeholders": { + "groupName": { + "type": "String" + } + } + }, + "invited": "Pozvaný", + "@invited": { + "type": "String", + "placeholders": {} + }, + "invitedUser": "📩 {username} pozval/a {targetName}", + "@invitedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "invitedUsersOnly": "Pouze pozvaní uživatelé", + "@invitedUsersOnly": { + "type": "String", + "placeholders": {} + }, + "inviteForMe": "Pozvěte mě", + "@inviteForMe": { + "type": "String", + "placeholders": {} + }, + "inviteText": "{username} vás pozvali na FluffyChat.\n1. Navštivte fluffychat.im a nainstalujte si aplikaci.\n2. Zaregistrujte se anebo se přihlašte.\n3. Otevřete pozvánku: \n {link}", + "@inviteText": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "link": { + "type": "String" + } + } + }, + "isTyping": "píše…", + "@isTyping": { + "type": "String", + "placeholders": {} + }, + "joinedTheChat": "👋 {username} se připojil/a k chatu", + "@joinedTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "joinRoom": "Připojte se k místnosti", + "@joinRoom": { + "type": "String", + "placeholders": {} + }, + "kicked": "👞 {username} vyhodil/a {targetName}", + "@kicked": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickedAndBanned": "{username} vyhodili a zakázali {targetName}", + "@kickedAndBanned": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickFromChat": "Vyhodit z chatu", + "@kickFromChat": { + "type": "String", + "placeholders": {} + }, + "lastActiveAgo": "Naposledy aktivní: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "String", + "placeholders": { + "localizedTimeShort": { + "type": "String" + } + } + }, + "leave": "Opustit", + "@leave": { + "type": "String", + "placeholders": {} + }, + "leftTheChat": "Opustil chat", + "@leftTheChat": { + "type": "String", + "placeholders": {} + }, + "license": "Licence", + "@license": { + "type": "String", + "placeholders": {} + }, + "lightTheme": "Světlé", + "@lightTheme": { + "type": "String", + "placeholders": {} + }, + "loadCountMoreParticipants": "Načíst dalších {count} účastníků", + "@loadCountMoreParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "loadingPleaseWait": "Načítání… Prosíme vyčkejte.", + "@loadingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "loadMore": "Načíst další…", + "@loadMore": { + "type": "String", + "placeholders": {} + }, + "locationDisabledNotice": "Služby určování polohy jsou deaktivovány. Povolte jim, aby mohli sdílet vaši polohu.", + "@locationDisabledNotice": { + "type": "String", + "placeholders": {} + }, + "locationPermissionDeniedNotice": "Oprávnění k poloze odepřeno. Udělte jim prosím možnost sdílet vaši polohu.", + "@locationPermissionDeniedNotice": { + "type": "String", + "placeholders": {} + }, + "login": "Přihlásit se", + "@login": { + "type": "String", + "placeholders": {} + }, + "logInTo": "Přihlášení k {homeserver}", + "@logInTo": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "logout": "Odhlásit", + "@logout": { + "type": "String", + "placeholders": {} + }, + "memberChanges": "Změny členů", + "@memberChanges": { + "type": "String", + "placeholders": {} + }, + "mention": "Zmínit se", + "@mention": { + "type": "String", + "placeholders": {} + }, + "messages": "Zprávy", + "@messages": { + "type": "String", + "placeholders": {} + }, + "moderator": "Moderátor", + "@moderator": { + "type": "String", + "placeholders": {} + }, + "muteChat": "Ztlumit chat", + "@muteChat": { + "type": "String", + "placeholders": {} + }, + "needPantalaimonWarning": "Prosím vezměte na vědomí, že pro použití koncového šifrování je prozatím potřeba použít Pantalaimon.", + "@needPantalaimonWarning": { + "type": "String", + "placeholders": {} + }, + "newChat": "Nový chat", + "@newChat": { + "type": "String", + "placeholders": {} + }, + "newMessageInFluffyChat": "Nová zpráva ve FluffyChatu", + "@newMessageInFluffyChat": { + "type": "String", + "placeholders": {} + }, + "newVerificationRequest": "Nová žádost o ověření!", + "@newVerificationRequest": { + "type": "String", + "placeholders": {} + }, + "next": "Další", + "@next": { + "type": "String", + "placeholders": {} + }, + "no": "Ne", + "@no": { + "type": "String", + "placeholders": {} + }, + "noConnectionToTheServer": "Žádné připojení k serveru", + "@noConnectionToTheServer": { + "type": "String", + "placeholders": {} + }, + "noEmotesFound": "Nebyly nalezeny žádné emotikony. 😕", + "@noEmotesFound": { + "type": "String", + "placeholders": {} + }, + "noEncryptionForPublicRooms": "Můžete aktivovat šifrování jakmile místnost přestane být veřejně dostupná.", + "@noEncryptionForPublicRooms": { + "type": "String", + "placeholders": {} + }, + "noGoogleServicesWarning": "Zdá se, že služba Firebase Cloud Messaging není ve vašem zařízení k dispozici. Chcete-li i nadále přijímat push oznámení, doporučujeme nainstalovat ntfy. Pomocí ntfy nebo jiného poskytovatele Unified Push můžete přijímat oznámení push zabezpečeným způsobem přenosu dat. Aplikaci ntfy si můžete stáhnout z obchodu PlayStore nebo z webu F-Droid.", + "@noGoogleServicesWarning": { + "type": "String", + "placeholders": {} + }, + "noMatrixServer": "{server1} není matrixový server, použít místo toho server {server2}?", + "@noMatrixServer": { + "type": "String", + "placeholders": { + "server1": { + "type": "String" + }, + "server2": { + "type": "String" + } + } + }, + "none": "Žádný", + "@none": { + "type": "String", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "Dosud jste nepřidali způsob, jak obnovit své heslo.", + "@noPasswordRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "noPermission": "Chybí oprávnění", + "@noPermission": { + "type": "String", + "placeholders": {} + }, + "noRoomsFound": "Nebyly nalezeny žádné místnosti…", + "@noRoomsFound": { + "type": "String", + "placeholders": {} + }, + "notifications": "Oznámení", + "@notifications": { + "type": "String", + "placeholders": {} + }, + "notificationsEnabledForThisAccount": "Oznámení povolena pro tento účet", + "@notificationsEnabledForThisAccount": { + "type": "String", + "placeholders": {} + }, + "numUsersTyping": "{count} uživatelé píší…", + "@numUsersTyping": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "obtainingLocation": "Získávání polohy…", + "@obtainingLocation": { + "type": "String", + "placeholders": {} + }, + "offensive": "Urážlivé", + "@offensive": { + "type": "String", + "placeholders": {} + }, + "offline": "Odpojeni", + "@offline": { + "type": "String", + "placeholders": {} + }, + "ok": "Ok", + "@ok": { + "type": "String", + "placeholders": {} + }, + "online": "Připojeni", + "@online": { + "type": "String", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "Online záloha kíčů je zapnuta", + "@onlineKeyBackupEnabled": { + "type": "String", + "placeholders": {} + }, + "oopsPushError": "Jejda! Při nastavování oznámení push došlo bohužel k chybě.", + "@oopsPushError": { + "type": "String", + "placeholders": {} + }, + "oopsSomethingWentWrong": "Jejda, něco se pokazilo…", + "@oopsSomethingWentWrong": { + "type": "String", + "placeholders": {} + }, + "openAppToReadMessages": "Otevřete aplikaci pro přečtení zpráv", + "@openAppToReadMessages": { + "type": "String", + "placeholders": {} + }, + "openCamera": "Otevřít fotoaparát", + "@openCamera": { + "type": "String", + "placeholders": {} + }, + "openInMaps": "Otevřít v mapách", + "@openInMaps": { + "type": "String", + "placeholders": {} + }, + "or": "Nebo", + "@or": { + "type": "String", + "placeholders": {} + }, + "participant": "Účastník", + "@participant": { + "type": "String", + "placeholders": {} + }, + "passphraseOrKey": "heslo nebo klíč pro obnovení", + "@passphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "password": "Heslo", + "@password": { + "type": "String", + "placeholders": {} + }, + "passwordForgotten": "Zapomenuté heslo", + "@passwordForgotten": { + "type": "String", + "placeholders": {} + }, + "passwordHasBeenChanged": "Heslo bylo změněno", + "@passwordHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "passwordRecovery": "Obnova hesla", + "@passwordRecovery": { + "type": "String", + "placeholders": {} + }, + "people": "Lidé", + "@people": { + "type": "String", + "placeholders": {} + }, + "pickImage": "Zvolit obrázek", + "@pickImage": { + "type": "String", + "placeholders": {} + }, + "pin": "Připnout zprávu", + "@pin": { + "type": "String", + "placeholders": {} + }, + "play": "Přehrát {fileName}", + "@play": { + "type": "String", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "pleaseChoose": "Prosím vyberte si", + "@pleaseChoose": { + "type": "String", + "placeholders": {} + }, + "pleaseChooseAPasscode": "Vyberte přístupový kód", + "@pleaseChooseAPasscode": { + "type": "String", + "placeholders": {} + }, + "pleaseClickOnLink": "Klikněte na odkaz v e-mailu a pokračujte.", + "@pleaseClickOnLink": { + "type": "String", + "placeholders": {} + }, + "pleaseEnter4Digits": "Chcete-li deaktivovat zámek aplikace, zadejte 4 číslice nebo nechte prázdné.", + "@pleaseEnter4Digits": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPassword": "Zadejte prosím své heslo", + "@pleaseEnterYourPassword": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPin": "Zadejte svůj PIN", + "@pleaseEnterYourPin": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourUsername": "Zadejte prosím své uživatelské jméno", + "@pleaseEnterYourUsername": { + "type": "String", + "placeholders": {} + }, + "pleaseFollowInstructionsOnWeb": "Postupujte podle pokynů na webu a klepněte na další.", + "@pleaseFollowInstructionsOnWeb": { + "type": "String", + "placeholders": {} + }, + "privacy": "Soukromí", + "@privacy": { + "type": "String", + "placeholders": {} + }, + "publicRooms": "Veřejné místnosti", + "@publicRooms": { + "type": "String", + "placeholders": {} + }, + "pushRules": "Pravidla push", + "@pushRules": { + "type": "String", + "placeholders": {} + }, + "reason": "Důvod", + "@reason": { + "type": "String", + "placeholders": {} + }, + "recording": "Nahrávání", + "@recording": { + "type": "String", + "placeholders": {} + }, + "redactedAnEvent": "{username} opravili událost", + "@redactedAnEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "redactMessage": "Redigovat zprávu", + "@redactMessage": { + "type": "String", + "placeholders": {} + }, + "register": "Registrovat", + "@register": { + "type": "String", + "placeholders": {} + }, + "reject": "Zamítnout", + "@reject": { + "type": "String", + "placeholders": {} + }, + "rejectedTheInvitation": "{username} odmítli pozvání", + "@rejectedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "rejoin": "Znovu se připojte", + "@rejoin": { + "type": "String", + "placeholders": {} + }, + "remove": "Odstranit", + "@remove": { + "type": "String", + "placeholders": {} + }, + "removeAllOtherDevices": "Odstranit všechna další zařízení", + "@removeAllOtherDevices": { + "type": "String", + "placeholders": {} + }, + "removedBy": "Odstraněno {username}", + "@removedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "removeDevice": "Odstraňit zařízení", + "@removeDevice": { + "type": "String", + "placeholders": {} + }, + "unbanFromChat": "Zrušit zákaz chatu", + "@unbanFromChat": { + "type": "String", + "placeholders": {} + }, + "removeYourAvatar": "Odstraňte svého avatara", + "@removeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "replaceRoomWithNewerVersion": "Nahradit místnost novou verzí", + "@replaceRoomWithNewerVersion": { + "type": "String", + "placeholders": {} + }, + "reply": "Odpovědět", + "@reply": { + "type": "String", + "placeholders": {} + }, + "reportMessage": "Nahlásit zprávu", + "@reportMessage": { + "type": "String", + "placeholders": {} + }, + "requestPermission": "Vyžádat oprávnění", + "@requestPermission": { + "type": "String", + "placeholders": {} + }, + "roomHasBeenUpgraded": "Místnost byla upgradována", + "@roomHasBeenUpgraded": { + "type": "String", + "placeholders": {} + }, + "roomVersion": "Verze místnosti", + "@roomVersion": { + "type": "String", + "placeholders": {} + }, + "saveFile": "Uložit soubor", + "@saveFile": { + "type": "String", + "placeholders": {} + }, + "search": "Hledat", + "@search": { + "type": "String", + "placeholders": {} + }, + "security": "Bezpečnostní", + "@security": { + "type": "String", + "placeholders": {} + }, + "seenByUser": "Viděno uživatelem {username}", + "@seenByUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "send": "Odeslat", + "@send": { + "type": "String", + "placeholders": {} + }, + "sendAMessage": "Odeslat zprávu", + "@sendAMessage": { + "type": "String", + "placeholders": {} + }, + "sendAsText": "Odeslat jako text", + "@sendAsText": { + "type": "String" + }, + "sendAudio": "Odeslat audio", + "@sendAudio": { + "type": "String", + "placeholders": {} + }, + "sendFile": "Odeslat soubor", + "@sendFile": { + "type": "String", + "placeholders": {} + }, + "sendImage": "Odeslat obrázek", + "@sendImage": { + "type": "String", + "placeholders": {} + }, + "sendMessages": "Odeslat zprávy", + "@sendMessages": { + "type": "String", + "placeholders": {} + }, + "sendOriginal": "Odeslat originál", + "@sendOriginal": { + "type": "String", + "placeholders": {} + }, + "sendSticker": "Odeslat nálepku", + "@sendSticker": { + "type": "String", + "placeholders": {} + }, + "sendVideo": "Odeslat video", + "@sendVideo": { + "type": "String", + "placeholders": {} + }, + "sentAFile": "{username} poslali soubor", + "@sentAFile": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAnAudio": "{username} poslali zvukovou nahrávku", + "@sentAnAudio": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAPicture": "{username} poslali obrázek", + "@sentAPicture": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentASticker": "{username} poslali samolepku", + "@sentASticker": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAVideo": "{username} poslali video", + "@sentAVideo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentCallInformations": "{senderName} odeslal informace o hovoru", + "@sentCallInformations": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "setAsCanonicalAlias": "Nastavit jako hlavní alias", + "@setAsCanonicalAlias": { + "type": "String", + "placeholders": {} + }, + "setCustomEmotes": "Nastavit vlastní emotikony", + "@setCustomEmotes": { + "type": "String", + "placeholders": {} + }, + "setInvitationLink": "Nastavit zvací odkaz", + "@setInvitationLink": { + "type": "String", + "placeholders": {} + }, + "setPermissionsLevel": "Nastavit úroveň oprávnění", + "@setPermissionsLevel": { + "type": "String", + "placeholders": {} + }, + "setStatus": "Nastavit stav", + "@setStatus": { + "type": "String", + "placeholders": {} + }, + "settings": "Nastavení", + "@settings": { + "type": "String", + "placeholders": {} + }, + "share": "Sdílet", + "@share": { + "type": "String", + "placeholders": {} + }, + "sharedTheLocation": "{username} sdílel jejich polohu", + "@sharedTheLocation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "shareLocation": "Sdílet polohu", + "@shareLocation": { + "type": "String", + "placeholders": {} + }, + "showPassword": "Zobrazit heslo", + "@showPassword": { + "type": "String", + "placeholders": {} + }, + "singlesignon": "Jedinečné přihlášení", + "@singlesignon": { + "type": "String", + "placeholders": {} + }, + "skip": "Přeskočit", + "@skip": { + "type": "String", + "placeholders": {} + }, + "sourceCode": "Zdrojové kódy", + "@sourceCode": { + "type": "String", + "placeholders": {} + }, + "spaceIsPublic": "Prostor je veřejný", + "@spaceIsPublic": { + "type": "String", + "placeholders": {} + }, + "spaceName": "Název prostoru", + "@spaceName": { + "type": "String", + "placeholders": {} + }, + "startedACall": "{senderName} zahájil hovor", + "@startedACall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "status": "Stav", + "@status": { + "type": "String", + "placeholders": {} + }, + "statusExampleMessage": "Jak se dneska máš?", + "@statusExampleMessage": { + "type": "String", + "placeholders": {} + }, + "submit": "Odeslat", + "@submit": { + "type": "String", + "placeholders": {} + }, + "synchronizingPleaseWait": "Synchronizace ... Čekejte prosím.", + "@synchronizingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "systemTheme": "Téma systému", + "@systemTheme": { + "type": "String", + "placeholders": {} + }, + "theyDontMatch": "Neshodují se", + "@theyDontMatch": { + "type": "String", + "placeholders": {} + }, + "theyMatch": "Shodují se", + "@theyMatch": { + "type": "String", + "placeholders": {} + }, + "title": "FluffyChat", + "@title": { + "description": "Title for the application", + "type": "String", + "placeholders": {} + }, + "toggleFavorite": "Přepnout Oblíbené", + "@toggleFavorite": { + "type": "String", + "placeholders": {} + }, + "toggleMuted": "Přepnout ztlumené", + "@toggleMuted": { + "type": "String", + "placeholders": {} + }, + "toggleUnread": "Označit jako přečtené/nepřečtené", + "@toggleUnread": { + "type": "String", + "placeholders": {} + }, + "tooManyRequestsWarning": "Příliš mnoho požadavků. Prosím zkuste to znovu později!", + "@tooManyRequestsWarning": { + "type": "String", + "placeholders": {} + }, + "transferFromAnotherDevice": "Přenos z jiného zařízení", + "@transferFromAnotherDevice": { + "type": "String", + "placeholders": {} + }, + "tryToSendAgain": "Zkuste odeslat znovu", + "@tryToSendAgain": { + "type": "String", + "placeholders": {} + }, + "unavailable": "Nedostupní", + "@unavailable": { + "type": "String", + "placeholders": {} + }, + "unbannedUser": "{username} zrušili zákaz pro {targetName}", + "@unbannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "unblockDevice": "Odblokovat zařízení", + "@unblockDevice": { + "type": "String", + "placeholders": {} + }, + "unknownDevice": "Neznámé zařízení", + "@unknownDevice": { + "type": "String", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "Neznámý šifrovací algoritmus", + "@unknownEncryptionAlgorithm": { + "type": "String", + "placeholders": {} + }, + "unknownEvent": "Neznámá událost „{type}“", + "@unknownEvent": { + "type": "String", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "unmuteChat": "Zrušit ztlumení chatu", + "@unmuteChat": { + "type": "String", + "placeholders": {} + }, + "unpin": "Odepnout zprávu", + "@unpin": { + "type": "String", + "placeholders": {} + }, + "unreadChats": "{unreadCount, plural, =1{1 nepřečtený chat} other{{unreadCount} nepřečtené chaty}}", + "@unreadChats": { + "type": "String", + "placeholders": { + "unreadCount": { + "type": "int" + } + } + }, + "userAndOthersAreTyping": "{username} a {count} dalších píší…", + "@userAndOthersAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "userAndUserAreTyping": "{username} a {username2} píší…", + "@userAndUserAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "username2": { + "type": "String" + } + } + }, + "userIsTyping": "{username} píše…", + "@userIsTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "userLeftTheChat": "{username} opustili chat", + "@userLeftTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "username": "Uživatelské jméno", + "@username": { + "type": "String", + "placeholders": {} + }, + "userSentUnknownEvent": "{username} poslali událost {type}", + "@userSentUnknownEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "type": { + "type": "String" + } + } + }, + "verified": "Ověřeno", + "@verified": { + "type": "String", + "placeholders": {} + }, + "verify": "Ověřit", + "@verify": { + "type": "String", + "placeholders": {} + }, + "verifyStart": "Zahájit ověření", + "@verifyStart": { + "type": "String", + "placeholders": {} + }, + "verifySuccess": "Ověření proběhlo úspěšně!", + "@verifySuccess": { + "type": "String", + "placeholders": {} + }, + "verifyTitle": "Ověřuji druhý účet", + "@verifyTitle": { + "type": "String", + "placeholders": {} + }, + "videoCall": "Video hovor", + "@videoCall": { + "type": "String", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "Viditelnost historie chatu", + "@visibilityOfTheChatHistory": { + "type": "String", + "placeholders": {} + }, + "visibleForAllParticipants": "Viditelné pro všechny účastnící se", + "@visibleForAllParticipants": { + "type": "String", + "placeholders": {} + }, + "visibleForEveryone": "Viditelné pro všechny", + "@visibleForEveryone": { + "type": "String", + "placeholders": {} + }, + "voiceMessage": "Hlasová zpráva", + "@voiceMessage": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "Čeká se na potvrzení žádosti partnerem…", + "@waitingPartnerAcceptRequest": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerEmoji": "Čeká se na potvrzení emoji partnerem…", + "@waitingPartnerEmoji": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerNumbers": "Čekání na partnera až přijme čísla…", + "@waitingPartnerNumbers": { + "type": "String", + "placeholders": {} + }, + "wallpaper": "Pozadí:", + "@wallpaper": { + "type": "String", + "placeholders": {} + }, + "warning": "Varování!", + "@warning": { + "type": "String", + "placeholders": {} + }, + "weSentYouAnEmail": "Zaslali jsme vám e-mail", + "@weSentYouAnEmail": { + "type": "String", + "placeholders": {} + }, + "whoCanPerformWhichAction": "Kdo může provést jakou akci", + "@whoCanPerformWhichAction": { + "type": "String", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "Kdo se může připojit do této skupiny", + "@whoIsAllowedToJoinThisGroup": { + "type": "String", + "placeholders": {} + }, + "whyDoYouWantToReportThis": "Proč to chcete nahlásit?", + "@whyDoYouWantToReportThis": { + "type": "String", + "placeholders": {} + }, + "wipeChatBackup": "Chcete vymazat zálohu chatu a vytvořit nový bezpečnostní klíč?", + "@wipeChatBackup": { + "type": "String", + "placeholders": {} + }, + "withTheseAddressesRecoveryDescription": "S těmito adresami můžete obnovit své heslo.", + "@withTheseAddressesRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "writeAMessage": "Napište zprávu…", + "@writeAMessage": { + "type": "String", + "placeholders": {} + }, + "yes": "Ano", + "@yes": { + "type": "String", + "placeholders": {} + }, + "you": "Vy", + "@you": { + "type": "String", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "Tohoto chatu se nadále neúčastníte", + "@youAreNoLongerParticipatingInThisChat": { + "type": "String", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "Byl vám zablokován přístup k tomuto chatu", + "@youHaveBeenBannedFromThisChat": { + "type": "String", + "placeholders": {} + }, + "yourPublicKey": "Váš veřejný klíč", + "@yourPublicKey": { + "type": "String", + "placeholders": {} + }, + "chatHasBeenAddedToThisSpace": "Do tohoto prostoru byl přidán chat", + "@chatHasBeenAddedToThisSpace": {}, + "addToSpace": "Přidat do prostoru", + "@addToSpace": {}, + "scanQrCode": "Naskenujte QR kód", + "@scanQrCode": {}, + "sendOnEnter": "Odeslat při vstupu", + "@sendOnEnter": {}, + "homeserver": "Domácí server", + "@homeserver": {}, + "serverRequiresEmail": "Tento server potřebuje k registraci ověřit vaši e -mailovou adresu.", + "@serverRequiresEmail": {}, + "addToBundle": "Přidat do balíčku", + "@addToBundle": {}, + "addAccount": "Přidat účet", + "@addAccount": {}, + "bundleName": "Název balíčku", + "@bundleName": {}, + "link": "Odkaz", + "@link": {}, + "yourChatBackupHasBeenSetUp": "Vaše záloha chatu byla nastavena.", + "@yourChatBackupHasBeenSetUp": {}, + "editBundlesForAccount": "Upravit balíčky pro tento účet", + "@editBundlesForAccount": {}, + "enableMultiAccounts": "(BETA) Na tomto zařízení povolte více účtů", + "@enableMultiAccounts": {}, + "oneClientLoggedOut": "Jeden z vašich klientů byl odhlášen", + "@oneClientLoggedOut": {}, + "removeFromBundle": "Odstranit z tohoto balíčku", + "@removeFromBundle": {}, + "unverified": "Neověřeno", + "@unverified": {}, + "messageInfo": "Informace o zprávě", + "@messageInfo": {}, + "time": "Čas", + "@time": {}, + "messageType": "Typ zprávy", + "@messageType": {}, + "sender": "Odesílatel", + "@sender": {}, + "repeatPassword": "Zopakujte heslo", + "@repeatPassword": {}, + "openGallery": "Otevřít galerii", + "@openGallery": {}, + "addToSpaceDescription": "Vyberte umístění, do kterého chcete tento chat přidat.", + "@addToSpaceDescription": {}, + "start": "Start", + "@start": {}, + "removeFromSpace": "Odstranit z tohoto místa", + "@removeFromSpace": {}, + "commandHint_clearcache": "Vymazat mezipamět", + "@commandHint_clearcache": { + "type": "String", + "description": "Usage hint for the command /clearcache" + }, + "commandHint_discardsession": "Zahodit relaci", + "@commandHint_discardsession": { + "type": "String", + "description": "Usage hint for the command /discardsession" + }, + "commandHint_dm": "Zahajte přímý chat\nK deaktivaci šifrování použijte --no-encryption", + "@commandHint_dm": { + "type": "String", + "description": "Usage hint for the command /dm" + }, + "commandHint_create": "Vytvořte prázdný skupinový chat\n K deaktivaci šifrování použijte --no-encryption", + "@commandHint_create": { + "type": "String", + "description": "Usage hint for the command /create" + }, + "openVideoCamera": "Otevřete fotoaparát pro video", + "@openVideoCamera": { + "type": "String", + "placeholders": {} + }, + "publish": "Uveřejnit", + "@publish": {}, + "videoWithSize": "Video ({size})", + "@videoWithSize": { + "type": "String", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "markAsRead": "Označit jako přečtené", + "@markAsRead": {}, + "reportUser": "Nahlásit uživatele", + "@reportUser": {}, + "openChat": "Otevřete chat", + "@openChat": {}, + "dismiss": "Zavrhnout", + "@dismiss": {}, + "reactedWith": "{sender} reagoval s {reaction}", + "@reactedWith": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "reaction": { + "type": "String" + } + } + }, + "emojis": "Emojis", + "@emojis": {}, + "voiceCall": "Hlasový hovor", + "@voiceCall": {}, + "unsupportedAndroidVersion": "Nepodporovaná verze Androidu", + "@unsupportedAndroidVersion": {}, + "videoCallsBetaWarning": "Upozorňujeme, že videohovory jsou aktuálně ve verzi beta. Nemusí fungovat podle očekávání nebo fungovat vůbec na všech platformách.", + "@videoCallsBetaWarning": {}, + "placeCall": "Zavolejte", + "@placeCall": {}, + "emailOrUsername": "E-mail nebo uživatelské jméno", + "@emailOrUsername": {}, + "experimentalVideoCalls": "Experimentální videohovory", + "@experimentalVideoCalls": {}, + "unsupportedAndroidVersionLong": "Tato funkce vyžaduje novější verzi Android. Zkontrolujte prosím aktualizace nebo podporu Lineage OS.", + "@unsupportedAndroidVersionLong": {}, + "pinMessage": "Připnout zprávu do místnosti", + "@pinMessage": {}, + "confirmEventUnpin": "Opravdu chcete událost trvale odepnout?", + "@confirmEventUnpin": {}, + "separateChatTypes": "Odděĺlit přímé chaty, skupiny a prostory", + "@separateChatTypes": { + "type": "String", + "placeholders": {} + }, + "youKicked": "Vykopli jste uživatele {user}", + "@youKicked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "switchToAccount": "Přepnout na účet {number}", + "@switchToAccount": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "previousAccount": "Předchozí účet", + "@previousAccount": {}, + "widgetJitsi": "Jitsi Meet", + "@widgetJitsi": {}, + "youAcceptedTheInvitation": "Přijal jsi pozvání", + "@youAcceptedTheInvitation": {}, + "youJoinedTheChat": "Připojili jste se k chatu", + "@youJoinedTheChat": {}, + "youInvitedBy": "Byli jste pozváni uživatelem {user}", + "@youInvitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "nextAccount": "Další účet", + "@nextAccount": {}, + "addWidget": "Přidat widget", + "@addWidget": {}, + "widgetVideo": "Video", + "@widgetVideo": {}, + "widgetEtherpad": "Textová poznámka", + "@widgetEtherpad": {}, + "widgetName": "Jméno", + "@widgetName": {}, + "youBannedUser": "Zakázali jste uživatele {user}", + "@youBannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youInvitedUser": "Pozvali jste uživatele {user}", + "@youInvitedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youKickedAndBanned": "Vykopli jste a zakázali jste uživatele {user}", + "@youKickedAndBanned": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youUnbannedUser": "Zrušili jste zákaz uživateli {user}", + "@youUnbannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "widgetCustom": "Vlastní", + "@widgetCustom": {}, + "youRejectedTheInvitation": "Odmítli jste pozvání", + "@youRejectedTheInvitation": {}, + "youHaveWithdrawnTheInvitationFor": "Stáhli jste pozvánku pro uživatele {user}", + "@youHaveWithdrawnTheInvitationFor": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "widgetUrlError": "Toto není platná adresa URL.", + "@widgetUrlError": {}, + "widgetNameError": "Zadejte jméno pro zobrazení.", + "@widgetNameError": {}, + "errorAddingWidget": "Chyba při přidávání widgetu.", + "@errorAddingWidget": {}, + "disableEncryptionWarning": "Z bezpečnostních důvodů nemůžete vypnout šifrování v chatu, kde již bylo dříve zapnuto.", + "@disableEncryptionWarning": {}, + "confirmMatrixId": "Prosím, potvrďte vaše Matrix ID, abyste mohli smazat váš účet.", + "@confirmMatrixId": {}, + "commandHint_googly": "Poslat kroutící se očička", + "@commandHint_googly": {}, + "commandHint_cuddle": "Poslat mazlení", + "@commandHint_cuddle": {}, + "commandHint_hug": "Poslat obejmutí", + "@commandHint_hug": {}, + "hugContent": "{senderName} vás objímá", + "@hugContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "googlyEyesContent": "{senderName} vám posílá kroutící se očička", + "@googlyEyesContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "cuddleContent": "{senderName} se s vámi mazlí", + "@cuddleContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "notAnImage": "Není obrázek.", + "@notAnImage": {}, + "importNow": "Importovat nyní", + "@importNow": {}, + "redactedByBecause": "Smazáno uživatelem {username} s důvodem: \"{reason}\"", + "@redactedByBecause": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "reason": { + "type": "String" + } + } + }, + "storeInAndroidKeystore": "Uložit v Android KeyStore", + "@storeInAndroidKeystore": {}, + "dehydrateTorLong": "Uživatelům TOR se doporučuje exportovat sezení před zavřením okna.", + "@dehydrateTorLong": {}, + "numChats": "{number} konverzací", + "@numChats": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "dehydrate": "Exportovat sezení a promazat zařízení", + "@dehydrate": {}, + "newGroup": "Nová skupina", + "@newGroup": {}, + "hydrateTor": "TOR uživatelé: Import exportovaného sezení", + "@hydrateTor": {}, + "doNotShowAgain": "Nezobrazovat znovu", + "@doNotShowAgain": {}, + "commandHint_markasdm": "Označit jako místnost přímé konverzace s daným Matrix ID", + "@commandHint_markasdm": {}, + "recoveryKey": "Klíč k obnovení", + "@recoveryKey": {}, + "hydrateTorLong": "Exportovali jste vaše poslední sezení na TOR? Rychle jej importujte a pokračujte v konverzaci.", + "@hydrateTorLong": {}, + "hydrate": "Obnovit ze záložního souboru", + "@hydrate": {}, + "pleaseEnterRecoveryKey": "Prosím vložte váš klíč pro obnovení:", + "@pleaseEnterRecoveryKey": {}, + "createGroup": "Vytvořit skupinu", + "@createGroup": {}, + "shareInviteLink": "Sdílet pozvánku", + "@shareInviteLink": {}, + "pleaseEnterRecoveryKeyDescription": "K odemknutí vašich starých zpráv prosím vložte váš klíč k obnovení vygenerovaný v předchozím sezení. Váš klíč k obnovení NENÍ vaše heslo.", + "@pleaseEnterRecoveryKeyDescription": {}, + "setColorTheme": "Nastavit barvy:", + "@setColorTheme": {}, + "importEmojis": "Importovat Emoji", + "@importEmojis": {}, + "importFromZipFile": "Importovat ze .zip souboru", + "@importFromZipFile": {}, + "exportEmotePack": "Exportovat Emoji jako .zip", + "@exportEmotePack": {}, + "replace": "Nahradit", + "@replace": {}, + "users": "Uživatelé", + "@users": {}, + "storeInAppleKeyChain": "Uložit v Apple KeyChain", + "@storeInAppleKeyChain": {}, + "jumpToLastReadMessage": "Skočit na naposledy přečtenou zprávu", + "@jumpToLastReadMessage": {}, + "signInWithPassword": "Přihlásit se pomocí hesla", + "@signInWithPassword": {}, + "redactedBy": "Smazáno uživatelem {username}", + "@redactedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "inviteContactToGroupQuestion": "Chcete pozvat {contact} do konverzace \"{groupName}\"?", + "@inviteContactToGroupQuestion": {}, + "dehydrateTor": "TOR uživatelé: Export sezení", + "@dehydrateTor": {}, + "tryAgain": "Zkuste to znovu", + "@tryAgain": {}, + "redactMessageDescription": "Tato zpráva bude smazána pro všechny účastníky konverzace. Tuto akci nelze vzít zpět.", + "@redactMessageDescription": {}, + "optionalRedactReason": "(Nepovinné) Důvod smazání této zprávy…", + "@optionalRedactReason": {}, + "messagesStyle": "Zprávy:", + "@messagesStyle": {}, + "allSpaces": "Všechny prostory", + "@allSpaces": {}, + "noOtherDevicesFound": "Žádná ostatní zařízení nebyla nalezena", + "@noOtherDevicesFound": {}, + "addChatDescription": "Přidejte popis konverzace", + "@addChatDescription": {}, + "chatDescription": "Popis konverzace", + "@chatDescription": {}, + "chatDescriptionHasBeenChanged": "Popis konverzace byl změněn", + "@chatDescriptionHasBeenChanged": {}, + "noChatDescriptionYet": "Zatím nebyl vytvořen žádný popis konverzace.", + "@noChatDescriptionYet": {}, + "invalidServerName": "Neplatné jméno serveru", + "@invalidServerName": {}, + "chatPermissions": "Oprávnění konverzace", + "@chatPermissions": {}, + "directChat": "Přímá konverzace", + "@directChat": {}, + "setChatDescription": "Nastavit popis konverzace", + "@setChatDescription": {}, + "startFirstChat": "Začněte svou první konverzaci", + "@startFirstChat": {}, + "callingPermissions": "Oprávnění volání", + "@callingPermissions": {}, + "whyIsThisMessageEncrypted": "Proč nelze přečíst tuto zprávu?", + "@whyIsThisMessageEncrypted": {}, + "wasDirectChatDisplayName": "Prázdná konverzace (dříve {oldDisplayName})", + "@wasDirectChatDisplayName": { + "type": "String", + "placeholders": { + "oldDisplayName": { + "type": "String" + } + } + }, + "newSpaceDescription": "Prostory umožňují organizovat vaše konverzace a vytvářet soukromé nebo veřejné komunity", + "@newSpaceDescription": {}, + "profileNotFound": "Uživatel nebyl na serveru nalezen. Možná je problém s připojením nebo uživatel neexistuje.", + "@profileNotFound": {}, + "setTheme": "Nastavit vzhled:", + "@setTheme": {}, + "sendTypingNotifications": "Posílat oznámení o psaní", + "@sendTypingNotifications": {}, + "commandHint_markasgroup": "Označit jako skupinu", + "@commandHint_markasgroup": {}, + "allRooms": "Všechny skupinové konverzace", + "@allRooms": { + "type": "String", + "placeholders": {} + }, + "recoveryKeyLost": "Ztracený klíč k obnovení?", + "@recoveryKeyLost": {}, + "unlockOldMessages": "Odemknout staré zprávy", + "@unlockOldMessages": {}, + "foregroundServiceRunning": "Toto oznámení se zobrazuje když běží služba na pozadí.", + "@foregroundServiceRunning": {}, + "screenSharingDetail": "Sdílíte svou obrazovku přes FluffyChat", + "@screenSharingDetail": {}, + "callingAccountDetails": "Opravňuje FluffyChat používat Android systémovou aplikaci pro vytáčení.", + "@callingAccountDetails": {}, + "appearOnTop": "Zobrazovat nahoře", + "@appearOnTop": {}, + "otherCallingPermissions": "Mikrofon, kamera a ostatní oprávnění FluffyChat", + "@otherCallingPermissions": {}, + "encryptThisChat": "Zašifrovat tuto konverzaci", + "@encryptThisChat": {}, + "sorryThatsNotPossible": "Omlouváme se… to není možné", + "@sorryThatsNotPossible": {}, + "deviceKeys": "Klíče zařízení:", + "@deviceKeys": {}, + "reopenChat": "Znovu otevřít konverzaci", + "@reopenChat": {}, + "fileIsTooBigForServer": "Server oznamuje že soubor je příliš velký na odeslání.", + "@fileIsTooBigForServer": {}, + "jump": "Skočit", + "@jump": {}, + "openLinkInBrowser": "Otevřít odkaz v prohlížeči", + "@openLinkInBrowser": {}, + "pleaseTryAgainLaterOrChooseDifferentServer": "Prosím zkuste to znovu nebo si vyberte jiný server.", + "@pleaseTryAgainLaterOrChooseDifferentServer": {}, + "signInWith": "Přihlásit se pomocí {provider}", + "@signInWith": { + "type": "String", + "placeholders": { + "provider": { + "type": "String" + } + } + }, + "supposedMxid": "Tady by mělo být {mxid}", + "@supposedMxid": { + "type": "String", + "placeholders": { + "mxid": { + "type": "String" + } + } + }, + "newSpace": "Nový prostor", + "@newSpace": {}, + "screenSharingTitle": "sdílení obrazovky", + "@screenSharingTitle": {}, + "user": "Uživatel", + "@user": {}, + "fileHasBeenSavedAt": "Soubor uložen do {path}", + "@fileHasBeenSavedAt": { + "type": "String", + "placeholders": { + "path": { + "type": "String" + } + } + }, + "custom": "Vlastní", + "@custom": {}, + "dehydrateWarning": "Tuto akci nelze vzít zpět. Ujistěte se že záložní soubor máte bezpečně uložen.", + "@dehydrateWarning": {}, + "storeInSecureStorageDescription": "Klíč k obnovení uložte v zabezpečeném úložišti tohoto zařízení.", + "@storeInSecureStorageDescription": {}, + "saveKeyManuallyDescription": "Uložte tento klíč manuálně pomocí systémového dialogu sdílení nebo zkopírováním do schránky.", + "@saveKeyManuallyDescription": {}, + "storeSecurlyOnThisDevice": "Uložit bezpečně na tomto zařízení", + "@storeSecurlyOnThisDevice": {}, + "countFiles": "{count} souborů", + "@countFiles": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "emoteKeyboardNoRecents": "Naposledy použité emoce se zobrazí zde...", + "@emoteKeyboardNoRecents": { + "type": "String", + "placeholders": {} + }, + "appLockDescription": "Zamknout aplikaci pomocí PIN kódu když není používána", + "@appLockDescription": {}, + "globalChatId": "Globální ID chatu", + "@globalChatId": {}, + "accessAndVisibility": "Přístup a viditelnost", + "@accessAndVisibility": {}, + "calls": "Volání", + "@calls": {}, + "customEmojisAndStickers": "Vlastní emoji a nálepky", + "@customEmojisAndStickers": {}, + "accessAndVisibilityDescription": "Kdo se může připojit a najít tuto konverzaci.", + "@accessAndVisibilityDescription": {}, + "customEmojisAndStickersBody": "Přidat nebo sdílet vlastní emoji nebo nálepky, které mohou být použité v konverzaci.", + "@customEmojisAndStickersBody": {}, + "swipeRightToLeftToReply": "Potáhněte z prava do leva pro odpověď", + "@swipeRightToLeftToReply": {}, + "countChatsAndCountParticipants": "{chats} konverzaci a {participants} účastníci", + "@countChatsAndCountParticipants": { + "type": "String", + "placeholders": { + "chats": { + "type": "int" + }, + "participants": { + "type": "int" + } + } + }, + "noMoreChatsFound": "Žádné další konverzace nalezeny...", + "@noMoreChatsFound": {}, + "hideRedactedMessages": "Skrýt upravené zprávy", + "@hideRedactedMessages": {}, + "hideRedactedMessagesBody": "Pokud někdo zprávu zrediguje, nebude tato zpráva v chatu již viditelná.", + "@hideRedactedMessagesBody": {}, + "hideInvalidOrUnknownMessageFormats": "Skrytí nesprávných nebo neznámých formátů zpráv", + "@hideInvalidOrUnknownMessageFormats": {}, + "blockUsername": "Ignorovat uživatelské jméno", + "@blockUsername": {}, + "hideMemberChangesInPublicChats": "Skrýt změny členů ve veřejných chatech", + "@hideMemberChangesInPublicChats": {}, + "hideMemberChangesInPublicChatsBody": "Nezobrazovat na časové ose chatu, pokud se někdo připojí nebo opustí veřejný chat, aby se zlepšila čitelnost.", + "@hideMemberChangesInPublicChatsBody": {}, + "overview": "Přehled", + "@overview": {}, + "notifyMeFor": "Upozorněte mě na", + "@notifyMeFor": {}, + "passwordRecoverySettings": "Nastavení obnovení hesla", + "@passwordRecoverySettings": {}, + "presenceStyle": "Dostupnost:", + "@presenceStyle": { + "type": "String", + "placeholders": {} + }, + "block": "Blokovat", + "@block": {}, + "indexedDbErrorLong": "Ukládání zpráv bohužel není ve výchozím nastavení v soukromém režimu povoleno.\nNavštivte prosím\n - about:config\n - nastavte dom.indexedDB.privateBrowsing.enabled na true\nV opačném případě nebude možné FluffyChat spustit.", + "@indexedDbErrorLong": {}, + "youInvitedToBy": "📩 Prostřednictvím odkazu jste byli pozváni na:\n{alias}", + "@youInvitedToBy": { + "placeholders": { + "alias": { + "type": "String" + } + } + }, + "indexedDbErrorTitle": "Problémy privátního prostředí", + "@indexedDbErrorTitle": {}, + "blockListDescription": "Můžete blokovat uživatele, kteří vás obtěžují. Od uživatelů na vašem osobním seznamu blokovaných uživatelů nebudete moci přijímat žádné zprávy ani pozvánky do místnosti.", + "@blockListDescription": {}, + "blockedUsers": "Zablokování uživatelé", + "@blockedUsers": {}, + "alwaysUse24HourFormat": "", + "@alwaysUse24HourFormat": { + "description": "Set to true to always display time of day in 24 hour format." + }, + "noChatsFoundHere": "Nejsou zde žádné chaty. Začněte nový chat s někým, použitím níže uvedeného tlačítka. ⤵️", + "@noChatsFoundHere": {}, + "joinedChats": "Připojené chaty", + "@joinedChats": {}, + "unread": "Nepřečtené", + "@unread": {}, + "space": "Prostor", + "@space": {}, + "spaces": "Prostory", + "@spaces": {}, + "presencesToggle": "Zobrazení stavových zpráv od jiných uživatelů", + "@presencesToggle": { + "type": "String", + "placeholders": {} + }, + "aboutHomeserver": "O {homeserver}", + "@aboutHomeserver": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + } +} diff --git a/lib/l10n/intl_da.arb b/lib/l10n/intl_da.arb new file mode 100644 index 0000000..bad7b02 --- /dev/null +++ b/lib/l10n/intl_da.arb @@ -0,0 +1,35 @@ +{ + "repeatPassword": "Gentag password", + "@repeatPassword": {}, + "notAnImage": "Ikke en billedfil.", + "@notAnImage": {}, + "setCustomPermissionLevel": "Indstil særligt tilladelsesniveau", + "@setCustomPermissionLevel": {}, + "setPermissionsLevelDescription": "Vælg en prædefineret rolle herunder eller indtaste et særligt tilladelsesniveau mellem 0 og 100.", + "@setPermissionsLevelDescription": {}, + "ignoreUser": "Ignorér bruger", + "@ignoreUser": {}, + "remove": "Fjern", + "@remove": { + "type": "String", + "placeholders": {} + }, + "importNow": "Importer nu", + "@importNow": {}, + "importEmojis": "Importer emojis", + "@importEmojis": {}, + "normalUser": "Normal bruger", + "@normalUser": {}, + "importFromZipFile": "Importer fra .zip fil", + "@importFromZipFile": {}, + "alwaysUse24HourFormat": "true", + "@alwaysUse24HourFormat": { + "description": "Set to true to always display time of day in 24 hour format." + }, + "exportEmotePack": "Eksportér Emote-pakke som .zip-fil", + "@exportEmotePack": {}, + "replace": "Erstat", + "@replace": {}, + "about": "Om", + "@about": {} +} diff --git a/lib/l10n/intl_de.arb b/lib/l10n/intl_de.arb new file mode 100644 index 0000000..2fcd3f0 --- /dev/null +++ b/lib/l10n/intl_de.arb @@ -0,0 +1,3498 @@ +{ + "@@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." + }, + "about": "Über", + "@about": { + "type": "String", + "placeholders": {} + }, + "accept": "Annehmen", + "@accept": { + "type": "String", + "placeholders": {} + }, + "acceptedTheInvitation": "👍 {username} hat die Einladung angenommen", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "account": "Konto", + "@account": { + "type": "String", + "placeholders": {} + }, + "activatedEndToEndEncryption": "🔐 {username} hat Ende-zu-Ende Verschlüsselung aktiviert", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "addEmail": "E-Mail hinzufügen", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "admin": "Admin", + "@admin": { + "type": "String", + "placeholders": {} + }, + "alias": "Alias", + "@alias": { + "type": "String", + "placeholders": {} + }, + "all": "Alle", + "@all": { + "type": "String", + "placeholders": {} + }, + "allChats": "Alle Chats", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "answeredTheCall": "{senderName} hat den Anruf angenommen", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "anyoneCanJoin": "Jeder darf beitreten", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "appLock": "Anwendungssperre", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "archive": "Archiv", + "@archive": { + "type": "String", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "Dürfen Gäste beitreten", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "Bist du sicher?", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "areYouSureYouWantToLogout": "Willst du dich wirklich abmelden?", + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "askSSSSSign": "Bitte gib, um die andere Person signieren zu können, dein Sicherheitsschlüssel oder Wiederherstellungsschlüssel ein.", + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "askVerificationRequest": "Diese Bestätigungsanfrage von {username} annehmen?", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "badServerLoginTypesException": "Der Homeserver unterstützt diese Anmelde-Typen:\n{serverVersions}\nAber diese App unterstützt nur:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "badServerVersionsException": "Der Homeserver unterstützt die Spec-Versionen:\n{serverVersions}\nAber diese App unterstützt nur:\n{supportedVersions}", + "@badServerVersionsException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "banFromChat": "Aus dem Chat verbannen", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "banned": "Verbannt", + "@banned": { + "type": "String", + "placeholders": {} + }, + "bannedUser": "{username} hat {targetName} verbannt", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "blockDevice": "Blockiere Gerät", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "blocked": "Blockiert", + "@blocked": { + "type": "String", + "placeholders": {} + }, + "botMessages": "Bot-Nachrichten", + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "cancel": "Abbrechen", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "cantOpenUri": "Die URI {uri} kann nicht geöffnet werden", + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "changeDeviceName": "Gerätenamen ändern", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "changedTheChatAvatar": "{username} hat den Chat-Avatar geändert", + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheChatDescriptionTo": "{username} hat die Chatbeschreibung geändert in: '{description}'", + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "changedTheChatNameTo": "{username} hat den Chatnamen geändert in: '{chatname}'", + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "changedTheChatPermissions": "{username} hat die Chat-Berechtigungen geändert", + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheDisplaynameTo": "{username} hat den Spitznamen geändert in: '{displayname}'", + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "changedTheGuestAccessRules": "{username} hat die Zugangsregeln für Gäste geändert", + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheGuestAccessRulesTo": "{username} hat die Zugangsregeln für Gäste geändert zu: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheHistoryVisibility": "{username} hat die Sichtbarkeit des Chat-Verlaufs geändert", + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheHistoryVisibilityTo": "{username} hat die Sichtbarkeit des Chat-Verlaufs geändert zu: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheJoinRules": "{username} hat die Zugangsregeln geändert", + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheJoinRulesTo": "{username} hat die Zugangsregeln geändert zu: {joinRules}", + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "changedTheProfileAvatar": "{username} hat das Profilbild geändert", + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomAliases": "{username} hat die Raum-Aliasse geändert", + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomInvitationLink": "{username} hat den Einladungslink geändert", + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changePassword": "Passwort ändern", + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "changeTheHomeserver": "Anderen Homeserver verwenden", + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "changeTheme": "Ändere Deinen Style", + "@changeTheme": { + "type": "String", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "Gruppenname ändern", + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "changeYourAvatar": "Deinen Avatar ändern", + "@changeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "channelCorruptedDecryptError": "Die Verschlüsselung wurde korrumpiert", + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "chat": "Chat", + "@chat": { + "type": "String", + "placeholders": {} + }, + "chatBackup": "Chat-Backup", + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "chatBackupDescription": "Deine alten Nachrichten sind mit einem Wiederherstellungsschlüssel gesichert. Bitte stellen sicher, dass du ihn nicht verlierst.", + "@chatBackupDescription": { + "type": "String", + "placeholders": {} + }, + "chatDetails": "Chatdetails", + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "chats": "Chats", + "@chats": { + "type": "String", + "placeholders": {} + }, + "chooseAStrongPassword": "Wähle ein sicheres Passwort", + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "clearArchive": "Archiv leeren", + "@clearArchive": {}, + "close": "Schließen", + "@close": { + "type": "String", + "placeholders": {} + }, + "commandHint_ban": "Banne ausgewählten Benutzer aus diesen Raum", + "@commandHint_ban": { + "type": "String", + "description": "Usage hint for the command /ban" + }, + "commandHint_html": "Sende HTML-formatierten Text", + "@commandHint_html": { + "type": "String", + "description": "Usage hint for the command /html" + }, + "commandHint_invite": "Lade den Benutzer in diesen Raum ein", + "@commandHint_invite": { + "type": "String", + "description": "Usage hint for the command /invite" + }, + "commandHint_join": "Betritt den ausgewählten Raum", + "@commandHint_join": { + "type": "String", + "description": "Usage hint for the command /join" + }, + "commandHint_kick": "Entferne den übergebenen Benutzer aus diesem Raum", + "@commandHint_kick": { + "type": "String", + "description": "Usage hint for the command /kick" + }, + "commandHint_leave": "Diesen Raum verlassen", + "@commandHint_leave": { + "type": "String", + "description": "Usage hint for the command /leave" + }, + "commandHint_me": "Beschreibe dich selbst", + "@commandHint_me": { + "type": "String", + "description": "Usage hint for the command /me" + }, + "commandHint_myroomavatar": "Setze dein Profilbild nur für diesen Raum (MXC-Uri)", + "@commandHint_myroomavatar": { + "type": "String", + "description": "Usage hint for the command /myroomavatar" + }, + "commandHint_myroomnick": "Setze deinen Anzeigenamen nur für diesen Raum", + "@commandHint_myroomnick": { + "type": "String", + "description": "Usage hint for the command /myroomnick" + }, + "commandHint_op": "Setze den übergeben Powerlevel des Benutzers (Standard: 50)", + "@commandHint_op": { + "type": "String", + "description": "Usage hint for the command /op" + }, + "commandHint_plain": "Sende unformatierten Text", + "@commandHint_plain": { + "type": "String", + "description": "Usage hint for the command /plain" + }, + "commandHint_react": "Sende die Antwort als Reaction", + "@commandHint_react": { + "type": "String", + "description": "Usage hint for the command /react" + }, + "commandHint_send": "Text senden", + "@commandHint_send": { + "type": "String", + "description": "Usage hint for the command /send" + }, + "commandHint_unban": "Hebe die Verbannung dieses Benutzers in diesem Raum auf", + "@commandHint_unban": { + "type": "String", + "description": "Usage hint for the command /unban" + }, + "commandInvalid": "Befehl ungültig", + "@commandInvalid": { + "type": "String" + }, + "commandMissing": "{command} ist kein Befehl.", + "@commandMissing": { + "type": "String", + "placeholders": { + "command": { + "type": "String" + } + }, + "description": "State that {command} is not a valid /command." + }, + "compareEmojiMatch": "Bitte vergleiche die Emojis", + "@compareEmojiMatch": { + "type": "String", + "placeholders": {} + }, + "compareNumbersMatch": "Bitte vergleiche die Zahlen", + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "configureChat": "Chat konfigurieren", + "@configureChat": { + "type": "String", + "placeholders": {} + }, + "confirm": "Bestätigen", + "@confirm": { + "type": "String", + "placeholders": {} + }, + "connect": "Verbinden", + "@connect": { + "type": "String", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "Kontakt wurde in die Gruppe eingeladen", + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "containsDisplayName": "Enthält Anzeigenamen", + "@containsDisplayName": { + "type": "String", + "placeholders": {} + }, + "containsUserName": "Enthält Benutzernamen", + "@containsUserName": { + "type": "String", + "placeholders": {} + }, + "contentHasBeenReported": "Der Inhalt wurde den Serveradministratoren gemeldet", + "@contentHasBeenReported": { + "type": "String", + "placeholders": {} + }, + "copiedToClipboard": "Wurde in die Zwischenablage kopiert", + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "copy": "Kopieren", + "@copy": { + "type": "String", + "placeholders": {} + }, + "copyToClipboard": "In Zwischenablage kopieren", + "@copyToClipboard": { + "type": "String", + "placeholders": {} + }, + "couldNotDecryptMessage": "Nachricht konnte nicht entschlüsselt werden: {error}", + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "countParticipants": "{count} Mitglieder", + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "create": "Erstellen", + "@create": { + "type": "String", + "placeholders": {} + }, + "createdTheChat": "💬 {username} hat den Chat erstellt", + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "createNewSpace": "Neuer Space", + "@createNewSpace": { + "type": "String", + "placeholders": {} + }, + "currentlyActive": "Jetzt gerade online", + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "darkTheme": "Dunkel", + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "dateWithoutYear": "{day}.{month}", + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "dateWithYear": "{day}.{month}.{year}", + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "deactivateAccountWarning": "Dies deaktiviert dein Konto. Es kann nicht rückgängig gemacht werden! Bist du sicher?", + "@deactivateAccountWarning": { + "type": "String", + "placeholders": {} + }, + "defaultPermissionLevel": "Standardberechtigungsstufe für neue Benutzer", + "@defaultPermissionLevel": { + "type": "String", + "placeholders": {} + }, + "delete": "Löschen", + "@delete": { + "type": "String", + "placeholders": {} + }, + "deleteAccount": "Konto löschen", + "@deleteAccount": { + "type": "String", + "placeholders": {} + }, + "deleteMessage": "Nachricht löschen", + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "device": "Gerät", + "@device": { + "type": "String", + "placeholders": {} + }, + "deviceId": "Geräte-ID", + "@deviceId": { + "type": "String", + "placeholders": {} + }, + "devices": "Geräte", + "@devices": { + "type": "String", + "placeholders": {} + }, + "directChats": "Direkte Chats", + "@directChats": { + "type": "String", + "placeholders": {} + }, + "displaynameHasBeenChanged": "Anzeigename wurde geändert", + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "downloadFile": "Datei herunterladen", + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "edit": "Bearbeiten", + "@edit": { + "type": "String", + "placeholders": {} + }, + "editBlockedServers": "Blockierte Server einstellen", + "@editBlockedServers": { + "type": "String", + "placeholders": {} + }, + "editDisplayname": "Anzeigename ändern", + "@editDisplayname": { + "type": "String", + "placeholders": {} + }, + "editRoomAliases": "Raum-Aliase bearbeiten", + "@editRoomAliases": { + "type": "String", + "placeholders": {} + }, + "editRoomAvatar": "Raumavatar bearbeiten", + "@editRoomAvatar": { + "type": "String", + "placeholders": {} + }, + "emoteExists": "Emoticon existiert bereits!", + "@emoteExists": { + "type": "String", + "placeholders": {} + }, + "emoteInvalid": "Ungültiges Emoticon-Kürzel!", + "@emoteInvalid": { + "type": "String", + "placeholders": {} + }, + "emotePacks": "Emoticon-Bündel für Raum", + "@emotePacks": { + "type": "String", + "placeholders": {} + }, + "emoteSettings": "Emoticon-Einstellungen", + "@emoteSettings": { + "type": "String", + "placeholders": {} + }, + "emoteShortcode": "Emoticon-Kürzel", + "@emoteShortcode": { + "type": "String", + "placeholders": {} + }, + "emoteWarnNeedToPick": "Wähle ein Emoticon-Kürzel und ein Bild!", + "@emoteWarnNeedToPick": { + "type": "String", + "placeholders": {} + }, + "emptyChat": "Leerer Chat", + "@emptyChat": { + "type": "String", + "placeholders": {} + }, + "enableEmotesGlobally": "Aktiviere Emoticon-Bündel global", + "@enableEmotesGlobally": { + "type": "String", + "placeholders": {} + }, + "enableEncryption": "Verschlüsselung anschalten", + "@enableEncryption": { + "type": "String", + "placeholders": {} + }, + "enableEncryptionWarning": "Du wirst die Verschlüsselung nicht mehr ausstellen können. Bist Du sicher?", + "@enableEncryptionWarning": { + "type": "String", + "placeholders": {} + }, + "encrypted": "Verschlüsselt", + "@encrypted": { + "type": "String", + "placeholders": {} + }, + "encryption": "Verschlüsselung", + "@encryption": { + "type": "String", + "placeholders": {} + }, + "encryptionNotEnabled": "Verschlüsselung ist nicht aktiviert", + "@encryptionNotEnabled": { + "type": "String", + "placeholders": {} + }, + "endedTheCall": "{senderName} hat den Anruf beendet", + "@endedTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "enterAnEmailAddress": "Gib eine E-Mail-Adresse ein", + "@enterAnEmailAddress": { + "type": "String", + "placeholders": {} + }, + "enterYourHomeserver": "Gib Deinen Homeserver ein", + "@enterYourHomeserver": { + "type": "String", + "placeholders": {} + }, + "errorObtainingLocation": "Fehler beim Suchen des Standortes: {error}", + "@errorObtainingLocation": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "everythingReady": "Alles fertig!", + "@everythingReady": { + "type": "String", + "placeholders": {} + }, + "extremeOffensive": "Extrem beleidigend", + "@extremeOffensive": { + "type": "String", + "placeholders": {} + }, + "fileName": "Dateiname", + "@fileName": { + "type": "String", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "String", + "placeholders": {} + }, + "fontSize": "Schriftgröße", + "@fontSize": { + "type": "String", + "placeholders": {} + }, + "forward": "Weiterleiten", + "@forward": { + "type": "String", + "placeholders": {} + }, + "fromJoining": "Ab dem Beitritt", + "@fromJoining": { + "type": "String", + "placeholders": {} + }, + "fromTheInvitation": "Ab der Einladung", + "@fromTheInvitation": { + "type": "String", + "placeholders": {} + }, + "goToTheNewRoom": "Zum neuen Raum wechseln", + "@goToTheNewRoom": { + "type": "String", + "placeholders": {} + }, + "group": "Gruppe", + "@group": { + "type": "String", + "placeholders": {} + }, + "groupIsPublic": "Öffentliche Gruppe", + "@groupIsPublic": { + "type": "String", + "placeholders": {} + }, + "groups": "Gruppen", + "@groups": { + "type": "String", + "placeholders": {} + }, + "groupWith": "Gruppe mit {displayname}", + "@groupWith": { + "type": "String", + "placeholders": { + "displayname": { + "type": "String" + } + } + }, + "guestsAreForbidden": "Gäste sind verboten", + "@guestsAreForbidden": { + "type": "String", + "placeholders": {} + }, + "guestsCanJoin": "Gäste dürfen beitreten", + "@guestsCanJoin": { + "type": "String", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "{username} hat die Einladung für {targetName} zurückgezogen", + "@hasWithdrawnTheInvitationFor": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "help": "Hilfe", + "@help": { + "type": "String", + "placeholders": {} + }, + "hideRedactedEvents": "Gelöschte Nachrichten ausblenden", + "@hideRedactedEvents": { + "type": "String", + "placeholders": {} + }, + "hideUnknownEvents": "Unbekannte Ereignisse ausblenden", + "@hideUnknownEvents": { + "type": "String", + "placeholders": {} + }, + "howOffensiveIsThisContent": "Wie beleidigend ist dieser Inhalt?", + "@howOffensiveIsThisContent": { + "type": "String", + "placeholders": {} + }, + "id": "ID", + "@id": { + "type": "String", + "placeholders": {} + }, + "identity": "Identität", + "@identity": { + "type": "String", + "placeholders": {} + }, + "ignore": "Ignorieren", + "@ignore": { + "type": "String", + "placeholders": {} + }, + "ignoredUsers": "Ignorierte Personen", + "@ignoredUsers": { + "type": "String", + "placeholders": {} + }, + "iHaveClickedOnLink": "Ich habe den Link angeklickt", + "@iHaveClickedOnLink": { + "type": "String", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "Falsches Passwort oder Wiederherstellungsschlüssel", + "@incorrectPassphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "inoffensive": "Harmlos", + "@inoffensive": { + "type": "String", + "placeholders": {} + }, + "inviteContact": "Kontakt einladen", + "@inviteContact": { + "type": "String", + "placeholders": {} + }, + "inviteContactToGroup": "Kontakt in die Gruppe {groupName} einladen", + "@inviteContactToGroup": { + "type": "String", + "placeholders": { + "groupName": { + "type": "String" + } + } + }, + "invited": "Eingeladen", + "@invited": { + "type": "String", + "placeholders": {} + }, + "invitedUser": "📩 {username} hat {targetName} eingeladen", + "@invitedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "invitedUsersOnly": "Nur eingeladene Mitglieder", + "@invitedUsersOnly": { + "type": "String", + "placeholders": {} + }, + "inviteForMe": "Einladung für mich", + "@inviteForMe": { + "type": "String", + "placeholders": {} + }, + "inviteText": "{username} hat Dich zu FluffyChat eingeladen. \n1. Gehe auf fluffychat.im und installiere die App \n2. Melde Dich in der App an \n3. Öffne den Einladungslink: \n {link}", + "@inviteText": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "link": { + "type": "String" + } + } + }, + "isTyping": "schreibt …", + "@isTyping": { + "type": "String", + "placeholders": {} + }, + "joinedTheChat": "👋 {username} ist dem Chat beigetreten", + "@joinedTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "joinRoom": "Raum beitreten", + "@joinRoom": { + "type": "String", + "placeholders": {} + }, + "kicked": "👞 {username} hat {targetName} hinausgeworfen", + "@kicked": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickedAndBanned": "🙅 {username} hat {targetName} hinausgeworfen und verbannt", + "@kickedAndBanned": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickFromChat": "Aus dem Chat hinauswerfen", + "@kickFromChat": { + "type": "String", + "placeholders": {} + }, + "lastActiveAgo": "Zuletzt aktiv: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "String", + "placeholders": { + "localizedTimeShort": { + "type": "String" + } + } + }, + "leave": "Verlassen", + "@leave": { + "type": "String", + "placeholders": {} + }, + "leftTheChat": "Hat den Chat verlassen", + "@leftTheChat": { + "type": "String", + "placeholders": {} + }, + "license": "Lizenz", + "@license": { + "type": "String", + "placeholders": {} + }, + "lightTheme": "Hell", + "@lightTheme": { + "type": "String", + "placeholders": {} + }, + "loadCountMoreParticipants": "{count} weitere Mitglieder laden", + "@loadCountMoreParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "loadingPleaseWait": "Lade … Bitte warten.", + "@loadingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "loadMore": "Mehr laden …", + "@loadMore": { + "type": "String", + "placeholders": {} + }, + "locationDisabledNotice": "Standort ist deaktiviert. Bitte aktivieren, um den Standort teilen zu können.", + "@locationDisabledNotice": { + "type": "String", + "placeholders": {} + }, + "locationPermissionDeniedNotice": "Standort-Berechtigung wurde abgelehnt. Bitte akzeptieren, um den Standort teilen zu können.", + "@locationPermissionDeniedNotice": { + "type": "String", + "placeholders": {} + }, + "login": "Anmelden", + "@login": { + "type": "String", + "placeholders": {} + }, + "logInTo": "Bei {homeserver} anmelden", + "@logInTo": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "logout": "Abmelden", + "@logout": { + "type": "String", + "placeholders": {} + }, + "memberChanges": "Änderungen der Mitglieder", + "@memberChanges": { + "type": "String", + "placeholders": {} + }, + "mention": "Erwähnen", + "@mention": { + "type": "String", + "placeholders": {} + }, + "messages": "Nachrichten", + "@messages": { + "type": "String", + "placeholders": {} + }, + "moderator": "Moderator", + "@moderator": { + "type": "String", + "placeholders": {} + }, + "muteChat": "Stummschalten", + "@muteChat": { + "type": "String", + "placeholders": {} + }, + "needPantalaimonWarning": "Bitte beachte, dass du Pantalaimon brauchst, um Ende-zu-Ende-Verschlüsselung benutzen zu können.", + "@needPantalaimonWarning": { + "type": "String", + "placeholders": {} + }, + "newChat": "Neuer Chat", + "@newChat": { + "type": "String", + "placeholders": {} + }, + "newMessageInFluffyChat": "💬 Neue Nachricht in FluffyChat", + "@newMessageInFluffyChat": { + "type": "String", + "placeholders": {} + }, + "newVerificationRequest": "Neue Verifikationsanfrage!", + "@newVerificationRequest": { + "type": "String", + "placeholders": {} + }, + "next": "Weiter", + "@next": { + "type": "String", + "placeholders": {} + }, + "no": "Nein", + "@no": { + "type": "String", + "placeholders": {} + }, + "noConnectionToTheServer": "Keine Verbindung zum Server", + "@noConnectionToTheServer": { + "type": "String", + "placeholders": {} + }, + "noEmotesFound": "Keine Emoticons gefunden. 😕", + "@noEmotesFound": { + "type": "String", + "placeholders": {} + }, + "noEncryptionForPublicRooms": "Du kannst die Verschlüsselung erst aktivieren, sobald dieser Raum nicht mehr öffentlich zugänglich ist.", + "@noEncryptionForPublicRooms": { + "type": "String", + "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": { + "type": "String", + "placeholders": {} + }, + "none": "Keiner", + "@none": { + "type": "String", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "Du hast bisher keine Möglichkeit hinzugefügt, um dein Passwort zurückzusetzen.", + "@noPasswordRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "noPermission": "Keine Berechtigung", + "@noPermission": { + "type": "String", + "placeholders": {} + }, + "noRoomsFound": "Keine Räume gefunden …", + "@noRoomsFound": { + "type": "String", + "placeholders": {} + }, + "notifications": "Benachrichtigungen", + "@notifications": { + "type": "String", + "placeholders": {} + }, + "notificationsEnabledForThisAccount": "Benachrichtigungen für dieses Konto aktiviert", + "@notificationsEnabledForThisAccount": { + "type": "String", + "placeholders": {} + }, + "numUsersTyping": "{count} Mitglieder schreiben …", + "@numUsersTyping": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "obtainingLocation": "Standort wird ermittelt …", + "@obtainingLocation": { + "type": "String", + "placeholders": {} + }, + "offensive": "Beleidigend", + "@offensive": { + "type": "String", + "placeholders": {} + }, + "offline": "Offline", + "@offline": { + "type": "String", + "placeholders": {} + }, + "ok": "Ok", + "@ok": { + "type": "String", + "placeholders": {} + }, + "online": "Online", + "@online": { + "type": "String", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "Online-Schlüsselsicherung ist aktiviert", + "@onlineKeyBackupEnabled": { + "type": "String", + "placeholders": {} + }, + "oopsPushError": "Hoppla! Leider ist beim Einrichten der Push-Benachrichtigungen ein Fehler aufgetreten.", + "@oopsPushError": { + "type": "String", + "placeholders": {} + }, + "oopsSomethingWentWrong": "Hoppla, da ist etwas schiefgelaufen…", + "@oopsSomethingWentWrong": { + "type": "String", + "placeholders": {} + }, + "openAppToReadMessages": "App öffnen, um Nachrichten zu lesen", + "@openAppToReadMessages": { + "type": "String", + "placeholders": {} + }, + "openCamera": "Kamera öffnen", + "@openCamera": { + "type": "String", + "placeholders": {} + }, + "openInMaps": "In Maps öffnen", + "@openInMaps": { + "type": "String", + "placeholders": {} + }, + "or": "Oder", + "@or": { + "type": "String", + "placeholders": {} + }, + "participant": "Mitglied", + "@participant": { + "type": "String", + "placeholders": {} + }, + "passphraseOrKey": "Passwort oder Wiederherstellungsschlüssel", + "@passphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "password": "Passwort", + "@password": { + "type": "String", + "placeholders": {} + }, + "passwordForgotten": "Passwort vergessen", + "@passwordForgotten": { + "type": "String", + "placeholders": {} + }, + "passwordHasBeenChanged": "Passwort wurde geändert", + "@passwordHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "passwordRecovery": "Passwort wiederherstellen", + "@passwordRecovery": { + "type": "String", + "placeholders": {} + }, + "people": "Personen", + "@people": { + "type": "String", + "placeholders": {} + }, + "pickImage": "Bild wählen", + "@pickImage": { + "type": "String", + "placeholders": {} + }, + "pin": "Anpinnen", + "@pin": { + "type": "String", + "placeholders": {} + }, + "play": "{fileName} abspielen", + "@play": { + "type": "String", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "pleaseChoose": "Bitte wählen", + "@pleaseChoose": { + "type": "String", + "placeholders": {} + }, + "pleaseChooseAPasscode": "Bitte einen Code festlegen", + "@pleaseChooseAPasscode": { + "type": "String", + "placeholders": {} + }, + "pleaseClickOnLink": "Bitte auf den Link in der E-Mail klicken und dann fortfahren.", + "@pleaseClickOnLink": { + "type": "String", + "placeholders": {} + }, + "pleaseEnter4Digits": "Bitte 4 Ziffern eingeben oder leer lassen, um die Anwendungssperre zu deaktivieren.", + "@pleaseEnter4Digits": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPassword": "Bitte dein Passwort eingeben", + "@pleaseEnterYourPassword": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPin": "Bitte gib deine Pin ein", + "@pleaseEnterYourPin": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourUsername": "Bitte deinen Benutzernamen eingeben", + "@pleaseEnterYourUsername": { + "type": "String", + "placeholders": {} + }, + "pleaseFollowInstructionsOnWeb": "Bitte folge den Anweisungen auf der Website und tippe auf Weiter.", + "@pleaseFollowInstructionsOnWeb": { + "type": "String", + "placeholders": {} + }, + "privacy": "Privatsphäre", + "@privacy": { + "type": "String", + "placeholders": {} + }, + "publicRooms": "Öffentliche Räume", + "@publicRooms": { + "type": "String", + "placeholders": {} + }, + "pushRules": "Push-Regeln", + "@pushRules": { + "type": "String", + "placeholders": {} + }, + "reason": "Grund", + "@reason": { + "type": "String", + "placeholders": {} + }, + "recording": "Aufnahme", + "@recording": { + "type": "String", + "placeholders": {} + }, + "redactedAnEvent": "{username} hat ein Ereignis gelöscht", + "@redactedAnEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "redactMessage": "Nachricht löschen", + "@redactMessage": { + "type": "String", + "placeholders": {} + }, + "register": "Registrieren", + "@register": { + "type": "String", + "placeholders": {} + }, + "reject": "Ablehnen", + "@reject": { + "type": "String", + "placeholders": {} + }, + "rejectedTheInvitation": "{username} hat die Einladung abgelehnt", + "@rejectedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "rejoin": "Wieder beitreten", + "@rejoin": { + "type": "String", + "placeholders": {} + }, + "remove": "Entfernen", + "@remove": { + "type": "String", + "placeholders": {} + }, + "removeAllOtherDevices": "Alle anderen Geräte entfernen", + "@removeAllOtherDevices": { + "type": "String", + "placeholders": {} + }, + "removedBy": "Entfernt von {username}", + "@removedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "removeDevice": "Gerät entfernen", + "@removeDevice": { + "type": "String", + "placeholders": {} + }, + "unbanFromChat": "Verbannung aufheben", + "@unbanFromChat": { + "type": "String", + "placeholders": {} + }, + "removeYourAvatar": "Deinen Avatar löschen", + "@removeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "replaceRoomWithNewerVersion": "Raum mit neuer Version ersetzen", + "@replaceRoomWithNewerVersion": { + "type": "String", + "placeholders": {} + }, + "reply": "Antworten", + "@reply": { + "type": "String", + "placeholders": {} + }, + "reportMessage": "Nachricht melden", + "@reportMessage": { + "type": "String", + "placeholders": {} + }, + "requestPermission": "Berechtigung anfragen", + "@requestPermission": { + "type": "String", + "placeholders": {} + }, + "roomHasBeenUpgraded": "Der Raum wurde ge-upgraded", + "@roomHasBeenUpgraded": { + "type": "String", + "placeholders": {} + }, + "roomVersion": "Raumversion", + "@roomVersion": { + "type": "String", + "placeholders": {} + }, + "saveFile": "Datei speichern", + "@saveFile": { + "type": "String", + "placeholders": {} + }, + "search": "Suchen", + "@search": { + "type": "String", + "placeholders": {} + }, + "security": "Sicherheit", + "@security": { + "type": "String", + "placeholders": {} + }, + "seenByUser": "Gelesen von {username}", + "@seenByUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "send": "Senden", + "@send": { + "type": "String", + "placeholders": {} + }, + "sendAMessage": "Nachricht schreiben", + "@sendAMessage": { + "type": "String", + "placeholders": {} + }, + "sendAsText": "Sende als Text", + "@sendAsText": { + "type": "String" + }, + "sendAudio": "Sende Audiodatei", + "@sendAudio": { + "type": "String", + "placeholders": {} + }, + "sendFile": "Datei senden", + "@sendFile": { + "type": "String", + "placeholders": {} + }, + "sendImage": "Bild senden", + "@sendImage": { + "type": "String", + "placeholders": {} + }, + "sendMessages": "Nachrichten senden", + "@sendMessages": { + "type": "String", + "placeholders": {} + }, + "sendOriginal": "Sende Original", + "@sendOriginal": { + "type": "String", + "placeholders": {} + }, + "sendSticker": "Sticker senden", + "@sendSticker": { + "type": "String", + "placeholders": {} + }, + "sendVideo": "Sende Video", + "@sendVideo": { + "type": "String", + "placeholders": {} + }, + "sentAFile": "📁 {username} hat eine Datei gesendet", + "@sentAFile": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAnAudio": "🎤 {username} hat eine Audio-Datei gesendet", + "@sentAnAudio": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAPicture": "🖼️ {username} hat ein Bild gesendet", + "@sentAPicture": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentASticker": "😊 {username} hat einen Sticker gesendet", + "@sentASticker": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAVideo": "🎥 {username} hat ein Video gesendet", + "@sentAVideo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentCallInformations": "{senderName} hat Anrufinformationen geschickt", + "@sentCallInformations": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "setAsCanonicalAlias": "Als Haupt-Alias festlegen", + "@setAsCanonicalAlias": { + "type": "String", + "placeholders": {} + }, + "setCustomEmotes": "Eigene Emoticons einstellen", + "@setCustomEmotes": { + "type": "String", + "placeholders": {} + }, + "setInvitationLink": "Einladungslink festlegen", + "@setInvitationLink": { + "type": "String", + "placeholders": {} + }, + "setPermissionsLevel": "Berechtigungsstufe einstellen", + "@setPermissionsLevel": { + "type": "String", + "placeholders": {} + }, + "setStatus": "Status ändern", + "@setStatus": { + "type": "String", + "placeholders": {} + }, + "settings": "Einstellungen", + "@settings": { + "type": "String", + "placeholders": {} + }, + "share": "Teilen", + "@share": { + "type": "String", + "placeholders": {} + }, + "sharedTheLocation": "{username} hat den Standort geteilt", + "@sharedTheLocation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "shareLocation": "Standort teilen", + "@shareLocation": { + "type": "String", + "placeholders": {} + }, + "showPassword": "Passwort anzeigen", + "@showPassword": { + "type": "String", + "placeholders": {} + }, + "singlesignon": "Einmalige Anmeldung", + "@singlesignon": { + "type": "String", + "placeholders": {} + }, + "skip": "Überspringe", + "@skip": { + "type": "String", + "placeholders": {} + }, + "sourceCode": "Quellcode", + "@sourceCode": { + "type": "String", + "placeholders": {} + }, + "spaceIsPublic": "Space ist öffentlich", + "@spaceIsPublic": { + "type": "String", + "placeholders": {} + }, + "spaceName": "Space-Name", + "@spaceName": { + "type": "String", + "placeholders": {} + }, + "startedACall": "{senderName} hat einen Anruf getätigt", + "@startedACall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "status": "Status", + "@status": { + "type": "String", + "placeholders": {} + }, + "statusExampleMessage": "Wie geht es dir heute?", + "@statusExampleMessage": { + "type": "String", + "placeholders": {} + }, + "submit": "Absenden", + "@submit": { + "type": "String", + "placeholders": {} + }, + "synchronizingPleaseWait": "Synchronisiere... Bitte warten.", + "@synchronizingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "systemTheme": "System", + "@systemTheme": { + "type": "String", + "placeholders": {} + }, + "theyDontMatch": "Stimmen nicht überein", + "@theyDontMatch": { + "type": "String", + "placeholders": {} + }, + "theyMatch": "Stimmen überein", + "@theyMatch": { + "type": "String", + "placeholders": {} + }, + "title": "FluffyChat", + "@title": { + "description": "Title for the application", + "type": "String", + "placeholders": {} + }, + "toggleFavorite": "Favorite umschalten", + "@toggleFavorite": { + "type": "String", + "placeholders": {} + }, + "toggleMuted": "Stummgeschaltete umschalten", + "@toggleMuted": { + "type": "String", + "placeholders": {} + }, + "toggleUnread": "Markieren als gelesen/ungelesen", + "@toggleUnread": { + "type": "String", + "placeholders": {} + }, + "tooManyRequestsWarning": "Zu viele Anfragen. Bitte versuche es später noch einmal!", + "@tooManyRequestsWarning": { + "type": "String", + "placeholders": {} + }, + "transferFromAnotherDevice": "Von anderem Gerät übertragen", + "@transferFromAnotherDevice": { + "type": "String", + "placeholders": {} + }, + "tryToSendAgain": "Noch mal versuchen zu senden", + "@tryToSendAgain": { + "type": "String", + "placeholders": {} + }, + "unavailable": "Nicht verfügbar", + "@unavailable": { + "type": "String", + "placeholders": {} + }, + "unbannedUser": "{username} hat die Verbannung von {targetName} aufgehoben", + "@unbannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "unblockDevice": "Geräteblockierung aufheben", + "@unblockDevice": { + "type": "String", + "placeholders": {} + }, + "unknownDevice": "Unbekanntes Gerät", + "@unknownDevice": { + "type": "String", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "Unbekannter Verschlüsselungsalgorithmus", + "@unknownEncryptionAlgorithm": { + "type": "String", + "placeholders": {} + }, + "unknownEvent": "Unbekanntes Ereignis '{type}'", + "@unknownEvent": { + "type": "String", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "unmuteChat": "Stumm aus", + "@unmuteChat": { + "type": "String", + "placeholders": {} + }, + "unpin": "Nicht mehr anpinnen", + "@unpin": { + "type": "String", + "placeholders": {} + }, + "unreadChats": "{unreadCount, plural, =1{1 ungelesene Unterhaltung} other{{unreadCount} ungelesene Unterhaltungen}}", + "@unreadChats": { + "type": "String", + "placeholders": { + "unreadCount": { + "type": "int" + } + } + }, + "userAndOthersAreTyping": "{username} und {count} andere schreiben …", + "@userAndOthersAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "userAndUserAreTyping": "{username} und {username2} schreiben …", + "@userAndUserAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "username2": { + "type": "String" + } + } + }, + "userIsTyping": "{username} schreibt …", + "@userIsTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "userLeftTheChat": "🚪 {username} hat den Chat verlassen", + "@userLeftTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "username": "Benutzername", + "@username": { + "type": "String", + "placeholders": {} + }, + "userSentUnknownEvent": "{username} hat ein {type}-Ereignis gesendet", + "@userSentUnknownEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "type": { + "type": "String" + } + } + }, + "verified": "Verifiziert", + "@verified": { + "type": "String", + "placeholders": {} + }, + "verify": "Verifizieren", + "@verify": { + "type": "String", + "placeholders": {} + }, + "verifyStart": "Starte Verifikation", + "@verifyStart": { + "type": "String", + "placeholders": {} + }, + "verifySuccess": "Erfolgreich verifiziert!", + "@verifySuccess": { + "type": "String", + "placeholders": {} + }, + "verifyTitle": "Anderes Konto wird verifiziert", + "@verifyTitle": { + "type": "String", + "placeholders": {} + }, + "videoCall": "Videoanruf", + "@videoCall": { + "type": "String", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "Sichtbarkeit des Chat-Verlaufs", + "@visibilityOfTheChatHistory": { + "type": "String", + "placeholders": {} + }, + "visibleForAllParticipants": "Sichtbar für alle Mitglieder", + "@visibleForAllParticipants": { + "type": "String", + "placeholders": {} + }, + "visibleForEveryone": "Für jeden sichtbar", + "@visibleForEveryone": { + "type": "String", + "placeholders": {} + }, + "voiceMessage": "Sprachnachricht", + "@voiceMessage": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "Warte darauf, dass der Partner die Anfrage annimmt …", + "@waitingPartnerAcceptRequest": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerEmoji": "Warte darauf, dass der Partner die Emoji annimmt …", + "@waitingPartnerEmoji": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerNumbers": "Warten, dass der Partner die Zahlen annimmt …", + "@waitingPartnerNumbers": { + "type": "String", + "placeholders": {} + }, + "wallpaper": "Hintergrund:", + "@wallpaper": { + "type": "String", + "placeholders": {} + }, + "warning": "Achtung!", + "@warning": { + "type": "String", + "placeholders": {} + }, + "weSentYouAnEmail": "Wir haben dir eine E-Mail gesendet", + "@weSentYouAnEmail": { + "type": "String", + "placeholders": {} + }, + "whoCanPerformWhichAction": "Wer kann welche Aktion ausführen", + "@whoCanPerformWhichAction": { + "type": "String", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "Wer darf der Gruppe beitreten", + "@whoIsAllowedToJoinThisGroup": { + "type": "String", + "placeholders": {} + }, + "whyDoYouWantToReportThis": "Warum willst du dies melden?", + "@whyDoYouWantToReportThis": { + "type": "String", + "placeholders": {} + }, + "wipeChatBackup": "Den Chat-Backup löschen, um einen neuen Wiederherstellungsschlüssel zu erstellen?", + "@wipeChatBackup": { + "type": "String", + "placeholders": {} + }, + "withTheseAddressesRecoveryDescription": "Mit diesen Adressen kannst du dein Passwort wiederherstellen, wenn du es vergessen hast.", + "@withTheseAddressesRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "writeAMessage": "Schreibe eine Nachricht …", + "@writeAMessage": { + "type": "String", + "placeholders": {} + }, + "yes": "Ja", + "@yes": { + "type": "String", + "placeholders": {} + }, + "you": "Du", + "@you": { + "type": "String", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "Du bist kein Mitglied mehr in diesem Chat", + "@youAreNoLongerParticipatingInThisChat": { + "type": "String", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "Du wurdest aus dem Chat verbannt", + "@youHaveBeenBannedFromThisChat": { + "type": "String", + "placeholders": {} + }, + "yourPublicKey": "Dein öffentlicher Schlüssel", + "@yourPublicKey": { + "type": "String", + "placeholders": {} + }, + "noMatrixServer": "{server1} ist kein Matrix-Server, stattdessen {server2} benutzen?", + "@noMatrixServer": { + "type": "String", + "placeholders": { + "server1": { + "type": "String" + }, + "server2": { + "type": "String" + } + } + }, + "scanQrCode": "QR-Code scannen", + "@scanQrCode": {}, + "chatHasBeenAddedToThisSpace": "Chat wurde zum Space hinzugefügt", + "@chatHasBeenAddedToThisSpace": {}, + "autoplayImages": "Animierte Sticker und Emotes automatisch abspielen", + "@autoplayImages": { + "type": "String", + "placeholder": {} + }, + "addToSpace": "Zum Space hinzufügen", + "@addToSpace": {}, + "serverRequiresEmail": "Dieser Server muss deine E-Mail-Adresse für die Registrierung überprüfen.", + "@serverRequiresEmail": {}, + "enableMultiAccounts": "(BETA) Aktiviere Multi-Accounts für dieses Gerät", + "@enableMultiAccounts": {}, + "bundleName": "Name des Bundles", + "@bundleName": {}, + "removeFromBundle": "Von diesem Bundle entfernen", + "@removeFromBundle": {}, + "addToBundle": "Zu einem Bundle hinzufügen", + "@addToBundle": {}, + "editBundlesForAccount": "Bundles für dieses Konto bearbeiten", + "@editBundlesForAccount": {}, + "addAccount": "Konto hinzufügen", + "@addAccount": {}, + "oneClientLoggedOut": "Einer deiner Clients wurde abgemeldet", + "@oneClientLoggedOut": {}, + "homeserver": "Homeserver", + "@homeserver": {}, + "sendOnEnter": "Senden mit Enter", + "@sendOnEnter": {}, + "link": "Link", + "@link": {}, + "yourChatBackupHasBeenSetUp": "Dein Chat-Backup wurde eingerichtet.", + "@yourChatBackupHasBeenSetUp": {}, + "unverified": "Unverifiziert", + "@unverified": {}, + "messageInfo": "Nachrichten-Info", + "@messageInfo": {}, + "time": "Zeit", + "@time": {}, + "messageType": "Nachrichtentyp", + "@messageType": {}, + "sender": "Absender:in", + "@sender": {}, + "openGallery": "Galerie öffnen", + "@openGallery": {}, + "removeFromSpace": "Aus dem Space entfernen", + "@removeFromSpace": {}, + "addToSpaceDescription": "Wähle einen Space aus, um diesen Chat hinzuzufügen.", + "@addToSpaceDescription": {}, + "start": "Start", + "@start": {}, + "repeatPassword": "Passwort wiederholen", + "@repeatPassword": {}, + "commandHint_dm": "Starte einen direkten Chat\nBenutze --no-encryption, um die Verschlüsselung auszuschalten", + "@commandHint_dm": { + "type": "String", + "description": "Usage hint for the command /dm" + }, + "commandHint_discardsession": "Sitzung verwerfen", + "@commandHint_discardsession": { + "type": "String", + "description": "Usage hint for the command /discardsession" + }, + "commandHint_clearcache": "Zwischenspeicher löschen", + "@commandHint_clearcache": { + "type": "String", + "description": "Usage hint for the command /clearcache" + }, + "commandHint_create": "Erstelle ein leeren Gruppenchat\nBenutze --no-encryption, um die Verschlüsselung auszuschalten", + "@commandHint_create": { + "type": "String", + "description": "Usage hint for the command /create" + }, + "openVideoCamera": "Video aufnehmen", + "@openVideoCamera": { + "type": "String", + "placeholders": {} + }, + "videoWithSize": "Video ({size})", + "@videoWithSize": { + "type": "String", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "publish": "Veröffentlichen", + "@publish": {}, + "pinMessage": "An Raum anheften", + "@pinMessage": {}, + "emojis": "Emojis", + "@emojis": {}, + "placeCall": "Anruf tätigen", + "@placeCall": {}, + "voiceCall": "Sprachanruf", + "@voiceCall": {}, + "unsupportedAndroidVersion": "Nicht unterstützte Android-Version", + "@unsupportedAndroidVersion": {}, + "videoCallsBetaWarning": "Bitte beachte, dass sich Videoanrufe derzeit in der Beta-Phase befinden. Sie funktionieren möglicherweise nicht wie erwartet oder überhaupt nicht auf allen Plattformen.", + "@videoCallsBetaWarning": {}, + "emailOrUsername": "E-Mail oder Benutzername", + "@emailOrUsername": {}, + "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": {}, + "reactedWith": "{sender} reagierte mit {reaction}", + "@reactedWith": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "reaction": { + "type": "String" + } + } + }, + "markAsRead": "Als gelesen markiert", + "@markAsRead": {}, + "reportUser": "Benutzer melden", + "@reportUser": {}, + "openChat": "Chat öffnen", + "@openChat": {}, + "confirmEventUnpin": "Möchtest du das Ereignis wirklich dauerhaft lösen?", + "@confirmEventUnpin": {}, + "dismiss": "Verwerfen", + "@dismiss": {}, + "switchToAccount": "Zu Konto {number} wechseln", + "@switchToAccount": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "nextAccount": "Nächstes Konto", + "@nextAccount": {}, + "widgetJitsi": "Jitsi Meet", + "@widgetJitsi": {}, + "widgetCustom": "Angepasst", + "@widgetCustom": {}, + "widgetEtherpad": "Textnotiz", + "@widgetEtherpad": {}, + "addWidget": "Widget hinzufügen", + "@addWidget": {}, + "widgetVideo": "Video", + "@widgetVideo": {}, + "widgetName": "Name", + "@widgetName": {}, + "widgetUrlError": "Das ist keine gültige URL.", + "@widgetUrlError": {}, + "errorAddingWidget": "Fehler beim Hinzufügen des Widgets.", + "@errorAddingWidget": {}, + "previousAccount": "Vorheriges Konto", + "@previousAccount": {}, + "separateChatTypes": "Separate Direktchats und Gruppen", + "@separateChatTypes": { + "type": "String", + "placeholders": {} + }, + "widgetNameError": "Bitte gib einen Anzeigenamen an.", + "@widgetNameError": {}, + "youKicked": "👞 Du hast {user} rausgeworfen", + "@youKicked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youKickedAndBanned": "🙅 Du hast {user} rausgeworfen und verbannt", + "@youKickedAndBanned": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youUnbannedUser": "Du hast die Verbannung von {user} rückgängig gemacht", + "@youUnbannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youRejectedTheInvitation": "Du hast die Einladung abgelehnt", + "@youRejectedTheInvitation": {}, + "youJoinedTheChat": "Du bist dem Chat beigetreten", + "@youJoinedTheChat": {}, + "youAcceptedTheInvitation": "👍 Du hast die Einladung angenommen", + "@youAcceptedTheInvitation": {}, + "youBannedUser": "Du hast den {user} verbannt", + "@youBannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youHaveWithdrawnTheInvitationFor": "Du hast die Einladung für {user} zurückgezogen", + "@youHaveWithdrawnTheInvitationFor": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youInvitedBy": "📩 Du wurdest von {user} eingeladen", + "@youInvitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youInvitedUser": "📩 Du hast {user} eingeladen", + "@youInvitedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "recoveryKey": "Wiederherstellungs-Schlüssel", + "@recoveryKey": {}, + "recoveryKeyLost": "Wiederherstellungsschlüssel verloren?", + "@recoveryKeyLost": {}, + "user": "Benutzer", + "@user": {}, + "custom": "Benutzerdefiniert", + "@custom": {}, + "storeInAndroidKeystore": "Im Android KeyStore speichern", + "@storeInAndroidKeystore": {}, + "storeSecurlyOnThisDevice": "Auf diesem Gerät sicher speichern", + "@storeSecurlyOnThisDevice": {}, + "dehydrate": "Sitzung exportieren und Gerät löschen", + "@dehydrate": {}, + "dehydrateWarning": "Diese Aktion kann nicht rückgängig gemacht werden. Stelle sicher, dass du die Sicherungsdatei sicher aufbewahrst.", + "@dehydrateWarning": {}, + "dehydrateTor": "TOR-Benutzer: Sitzung exportieren", + "@dehydrateTor": {}, + "dehydrateTorLong": "Für TOR-Benutzer wird empfohlen, die Sitzung zu exportieren, bevor das Fenster geschlossen wird.", + "@dehydrateTorLong": {}, + "hydrateTor": "TOR-Benutzer: Session-Export importieren", + "@hydrateTor": {}, + "hydrate": "Aus Sicherungsdatei wiederherstellen", + "@hydrate": {}, + "indexedDbErrorTitle": "Probleme im Privatmodus", + "@indexedDbErrorTitle": {}, + "unlockOldMessages": "Entsperre alte Nachrichten", + "@unlockOldMessages": {}, + "pleaseEnterRecoveryKeyDescription": "Um deine alten Nachrichten zu entsperren, gib bitte den Wiederherstellungsschlüssel ein, der in einer früheren Sitzung generiert wurde. Dein Wiederherstellungsschlüssel ist NICHT dein Passwort.", + "@pleaseEnterRecoveryKeyDescription": {}, + "saveKeyManuallyDescription": "Speicher diesen Schlüssel manuell, indem du den Systemfreigabedialog oder die Zwischenablage auslöst.", + "@saveKeyManuallyDescription": {}, + "hydrateTorLong": "Hast du deine Sitzung das letzte Mal auf TOR exportiert? Importiere sie schnell und chatte weiter.", + "@hydrateTorLong": {}, + "pleaseEnterRecoveryKey": "Bitte gib deinen Wiederherstellungsschlüssel ein:", + "@pleaseEnterRecoveryKey": {}, + "countFiles": "{count} Dateien", + "@countFiles": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "users": "Benutzer", + "@users": {}, + "storeInSecureStorageDescription": "Speicher den Wiederherstellungsschlüssel im sicheren Speicher dieses Geräts.", + "@storeInSecureStorageDescription": {}, + "storeInAppleKeyChain": "Im Apple KeyChain speichern", + "@storeInAppleKeyChain": {}, + "indexedDbErrorLong": "Die Nachrichtenspeicherung ist im privaten Modus standardmäßig leider nicht aktiviert.\nBitte besuche\n- about:config\n- Setze dom.indexedDB.privateBrowsing.enabled auf true\nAndernfalls ist es nicht möglich, FluffyChat auszuführen.", + "@indexedDbErrorLong": {}, + "confirmMatrixId": "Bitte bestätigen deine Matrix-ID, um dein Konto zu löschen.", + "@confirmMatrixId": {}, + "supposedMxid": "das sollte sein {mxid}", + "@supposedMxid": { + "type": "String", + "placeholders": { + "mxid": { + "type": "String" + } + } + }, + "commandHint_markasdm": "Als Direktnachrichtenraum für die angegebene Matrix-ID markieren", + "@commandHint_markasdm": {}, + "commandHint_markasgroup": "Als Gruppe markieren", + "@commandHint_markasgroup": {}, + "hideUnimportantStateEvents": "Blende unwichtige Zustandsereignisse aus", + "@hideUnimportantStateEvents": {}, + "doNotShowAgain": "Nicht mehr anzeigen", + "@doNotShowAgain": {}, + "appearOnTopDetails": "Ermöglicht, dass die App oben angezeigt wird (nicht erforderlich, wenn du Fluffychat bereits als Anrufkonto eingerichtet haben)", + "@appearOnTopDetails": {}, + "noKeyForThisMessage": "Dies kann passieren, wenn die Nachricht gesendet wurde, bevor du dich auf diesem Gerät bei deinem Konto angemeldet hast.\n\nEs ist auch möglich, dass der Absender dein Gerät blockiert hat oder etwas mit der Internetverbindung schief gelaufen ist.\n\nKannst du die Nachricht in einer anderen Sitzung lesen? Dann kannst du die Nachricht davon übertragen! Gehe zu den Einstellungen > Geräte und vergewissere dich, dass sich deine Geräte gegenseitig verifiziert haben. Wenn du den Raum das nächste Mal öffnest und beide Sitzungen im Vordergrund sind, werden die Schlüssel automatisch übertragen.\n\nDu möchtest die Schlüssel beim Abmelden oder Gerätewechsel nicht verlieren? Stelle sicher, dass du das Chat-Backup in den Einstellungen aktiviert hast.", + "@noKeyForThisMessage": {}, + "foregroundServiceRunning": "Diese Benachrichtigung wird angezeigt, wenn der Vordergrunddienst ausgeführt wird.", + "@foregroundServiceRunning": {}, + "screenSharingTitle": "Bildschirm teilen", + "@screenSharingTitle": {}, + "callingPermissions": "Anrufberechtigungen", + "@callingPermissions": {}, + "callingAccount": "Anrufkonto", + "@callingAccount": {}, + "callingAccountDetails": "Ermöglicht FluffyChat, die native Android-Dialer-App zu verwenden.", + "@callingAccountDetails": {}, + "appearOnTop": "Oben erscheinen", + "@appearOnTop": {}, + "otherCallingPermissions": "Mikrofon, Kamera und andere FluffyChat-Berechtigungen", + "@otherCallingPermissions": {}, + "whyIsThisMessageEncrypted": "Warum ist diese Nachricht nicht lesbar?", + "@whyIsThisMessageEncrypted": {}, + "newGroup": "Neue Gruppe", + "@newGroup": {}, + "newSpace": "Neuer Space", + "@newSpace": {}, + "enterSpace": "Raum betreten", + "@enterSpace": {}, + "enterRoom": "Raum betreten", + "@enterRoom": {}, + "allSpaces": "Alle Spaces", + "@allSpaces": {}, + "screenSharingDetail": "Du teilst deinen Bildschirm in FuffyChat", + "@screenSharingDetail": {}, + "numChats": "{number} Chats", + "@numChats": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "newSpaceDescription": "Mit Spaces kannst du deine Chats zusammenfassen und private oder öffentliche Communities aufbauen.", + "@newSpaceDescription": {}, + "wasDirectChatDisplayName": "Leerer Chat (war {oldDisplayName})", + "@wasDirectChatDisplayName": { + "type": "String", + "placeholders": { + "oldDisplayName": { + "type": "String" + } + } + }, + "encryptThisChat": "Diesen Chat verschlüsseln", + "@encryptThisChat": {}, + "googlyEyesContent": "{senderName} hat dir Googly Eyes gesendet", + "@googlyEyesContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "startFirstChat": "Starte deinen ersten Chat", + "@startFirstChat": {}, + "deviceKeys": "Geräteschlüssel:", + "@deviceKeys": {}, + "commandHint_cuddle": "Umarmung senden", + "@commandHint_cuddle": {}, + "commandHint_hug": "Umarmung senden", + "@commandHint_hug": {}, + "cuddleContent": "{senderName} knuddelt dich", + "@cuddleContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "sorryThatsNotPossible": "Sorry ... das ist nicht möglich", + "@sorryThatsNotPossible": {}, + "hugContent": "{senderName} umarmt dich", + "@hugContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "commandHint_googly": "Glupschaugen senden", + "@commandHint_googly": {}, + "disableEncryptionWarning": "Aus Sicherheitsgründen kannst du die Verschlüsselung in einem Chat nicht deaktivieren, wo sie zuvor aktiviert wurde.", + "@disableEncryptionWarning": {}, + "reopenChat": "Chat wieder eröffnen", + "@reopenChat": {}, + "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": {}, + "allRooms": "Alle Gruppenchats", + "@allRooms": { + "type": "String", + "placeholders": {} + }, + "fileHasBeenSavedAt": "Datei wurde gespeichert unter {path}", + "@fileHasBeenSavedAt": { + "type": "String", + "placeholders": { + "path": { + "type": "String" + } + } + }, + "jumpToLastReadMessage": "Zur letzten ungelesenen Nachricht", + "@jumpToLastReadMessage": {}, + "readUpToHere": "Bis hier gelesen", + "@readUpToHere": {}, + "pleaseTryAgainLaterOrChooseDifferentServer": "Bitte versuche es später noch einmal oder wähle einen anderen Server.", + "@pleaseTryAgainLaterOrChooseDifferentServer": {}, + "jump": "Springen", + "@jump": {}, + "openLinkInBrowser": "Link im Browser öffnen", + "@openLinkInBrowser": {}, + "reportErrorDescription": "😭 Oh nein. Etwas ist schief gelaufen. Wenn du möchtest, kannst du den Bug bei den Entwicklern melden.", + "@reportErrorDescription": {}, + "report": "Melden", + "@report": {}, + "signInWithPassword": "Anmelden mit Passwort", + "@signInWithPassword": {}, + "signInWith": "Anmelden mit {provider}", + "@signInWith": { + "type": "String", + "placeholders": { + "provider": { + "type": "String" + } + } + }, + "importNow": "Jetzt importieren", + "@importNow": {}, + "importEmojis": "Emojis importieren", + "@importEmojis": {}, + "importFromZipFile": "Aus ZIP-Datei importieren", + "@importFromZipFile": {}, + "exportEmotePack": "Emote-Paket als ZIP-Datei exportieren", + "@exportEmotePack": {}, + "notAnImage": "Keine Bilddatei.", + "@notAnImage": {}, + "replace": "Ersetzen", + "@replace": {}, + "sendTypingNotifications": "Tippbenachrichtigungen senden", + "@sendTypingNotifications": {}, + "profileNotFound": "Der Benutzer konnte auf dem Server nicht gefunden werden. Vielleicht gibt es ein Verbindungsproblem oder der Benutzer existiert nicht.", + "@profileNotFound": {}, + "createGroup": "Gruppe erstellen", + "@createGroup": {}, + "shareInviteLink": "Einladungslink teilen", + "@shareInviteLink": {}, + "inviteContactToGroupQuestion": "Willst du {contact} zum Chat {groupName} einladen?", + "@inviteContactToGroupQuestion": {}, + "tryAgain": "Neuer Versuch", + "@tryAgain": {}, + "redactMessageDescription": "Die Nachricht wird für alle Teilnehmer dieses Gesprächs gelöscht. Dies kann nicht rückgängig gemacht werden.", + "@redactMessageDescription": {}, + "redactedBy": "Gelöscht von {username}", + "@redactedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "redactedByBecause": "Gelöscht von {username} weil: \"{reason}\"", + "@redactedByBecause": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "reason": { + "type": "String" + } + } + }, + "setTheme": "Design festlegen:", + "@setTheme": {}, + "setColorTheme": "Farbdesign einstellen:", + "@setColorTheme": {}, + "invite": "Einladen", + "@invite": {}, + "optionalRedactReason": "(Optional) Grund für die Löschung dieser Nachricht...", + "@optionalRedactReason": {}, + "messagesStyle": "Nachrichten:", + "@messagesStyle": {}, + "chatPermissions": "Chatberechtigungen", + "@chatPermissions": {}, + "chatDescription": "Chatbeschreibung", + "@chatDescription": {}, + "chatDescriptionHasBeenChanged": "Chatbeschreibung geändert", + "@chatDescriptionHasBeenChanged": {}, + "noChatDescriptionYet": "Noch keine Chatbeschreibung vorhanden.", + "@noChatDescriptionYet": {}, + "invalidServerName": "Ungültiger Servername", + "@invalidServerName": {}, + "directChat": "Privater Chat", + "@directChat": {}, + "addChatDescription": "Chatbeschreibung hinzufügen ...", + "@addChatDescription": {}, + "setChatDescription": "Chatbeschreibung festlegen", + "@setChatDescription": {}, + "inviteGroupChat": "📨 Einladungen zum Gruppenchat", + "@inviteGroupChat": {}, + "invitePrivateChat": "📨 Einladungen zum privaten Chat", + "@invitePrivateChat": {}, + "invalidInput": "Ungültige Eingabe!", + "@invalidInput": {}, + "hasKnocked": "🚪 {user} hat angeklopft", + "@hasKnocked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "wrongPinEntered": "Falsche PIN eingegeben! Bitte in {seconds} Sekunden erneut versuchen ...", + "@wrongPinEntered": { + "type": "String", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "pleaseEnterANumber": "Bitte eine Zahl größer 0 eingeben", + "@pleaseEnterANumber": {}, + "emoteKeyboardNoRecents": "Kürzlich verwendete Emotes werden hier angezeigt ...", + "@emoteKeyboardNoRecents": { + "type": "String", + "placeholders": {} + }, + "banUserDescription": "Der Benutzer wird aus dem Chat gebannt und kann den Chat erst wieder betreten, wenn die Verbannung aufgehoben wird.", + "@banUserDescription": {}, + "removeDevicesDescription": "Du wirst von diesem Gerät abgemeldet und kannst dann dort keine Nachrichten mehr empfangen.", + "@removeDevicesDescription": {}, + "unbanUserDescription": "Der Benutzer kann den Chat dann wieder betreten, wenn er es versucht.", + "@unbanUserDescription": {}, + "pushNotificationsNotAvailable": "Push-Benachrichtigungen nicht verfügbar", + "@pushNotificationsNotAvailable": {}, + "makeAdminDescription": "Sobald du diesen Benutzer zum Administrator gemacht hast, kannst du das möglicherweise nicht mehr rückgängig machen, da er dann über dieselben Berechtigungen wie du verfügt.", + "@makeAdminDescription": {}, + "archiveRoomDescription": "Der Chat wird in das Archiv verschoben. Andere Benutzer können sehen, dass du den Chat verlassen hast.", + "@archiveRoomDescription": {}, + "learnMore": "Erfahre mehr", + "@learnMore": {}, + "roomUpgradeDescription": "Der Chat wird dann mit der neuen Raumversion neu erstellt. Alle Teilnehmer werden benachrichtigt, dass sie zum neuen Chat wechseln müssen. Mehr über Raumversionen erfährst du unter https://spec.matrix.org/latest/rooms/", + "@roomUpgradeDescription": {}, + "kickUserDescription": "Der Benutzer wird aus dem Chat geworfen, aber nicht gebannt. In öffentlichen Chats kann der Benutzer jederzeit wieder beitreten.", + "@kickUserDescription": {}, + "blockListDescription": "Du kannst Benutzer blockieren, die dich stören. Von Benutzern auf deiner persönlichen Blocklierliste kannst du keine Nachrichten oder Raumeinladungen mehr erhalten.", + "@blockListDescription": {}, + "createGroupAndInviteUsers": "Gruppe erstellen und Nutzer einladen", + "@createGroupAndInviteUsers": {}, + "startConversation": "Unterhaltung starten", + "@startConversation": {}, + "blockedUsers": "Blockierte Benutzer", + "@blockedUsers": {}, + "groupCanBeFoundViaSearch": "Gruppe kann über die Suche gefunden werden", + "@groupCanBeFoundViaSearch": {}, + "noUsersFoundWithQuery": "Leider konnte mit \"{query}\" kein Benutzer gefunden werden. Bitte schau nach, ob dir ein Tippfehler unterlaufen ist.", + "@noUsersFoundWithQuery": { + "type": "String", + "placeholders": { + "query": { + "type": "String" + } + } + }, + "block": "Blockieren", + "@block": {}, + "yourGlobalUserIdIs": "Deine globale Benutzer-ID ist: ", + "@yourGlobalUserIdIs": {}, + "commandHint_sendraw": "Rohes JSON senden", + "@commandHint_sendraw": {}, + "wrongRecoveryKey": "Entschuldigung ... das scheint nicht der richtige Wiederherstellungsschlüssel zu sein.", + "@wrongRecoveryKey": {}, + "blockUsername": "Blockiere Benutzername", + "@blockUsername": {}, + "groupName": "Gruppenname", + "@groupName": {}, + "searchChatsRooms": "Suche nach #Chats, @Nutzer ...", + "@searchChatsRooms": {}, + "databaseMigrationTitle": "Datenbank wird optimiert", + "@databaseMigrationTitle": {}, + "databaseMigrationBody": "Bitte warten. Dies kann einen Moment dauern.", + "@databaseMigrationBody": {}, + "thisDevice": "Dieses Gerät:", + "@thisDevice": {}, + "publicSpaces": "Öffentliche Spaces", + "@publicSpaces": {}, + "passwordIsWrong": "Dein eingegebenes Passwort ist falsch", + "@passwordIsWrong": {}, + "pleaseEnterYourCurrentPassword": "Bitte dein aktuelles Passwort eingeben", + "@pleaseEnterYourCurrentPassword": {}, + "publicLink": "Öffentlicher Link", + "@publicLink": {}, + "nothingFound": "Nichts gefunden ...", + "@nothingFound": {}, + "decline": "Ablehnen", + "@decline": {}, + "newPassword": "Neues Passwort", + "@newPassword": {}, + "passwordsDoNotMatch": "Passwörter stimmen nicht überein", + "@passwordsDoNotMatch": {}, + "subspace": "Sub-Space", + "@subspace": {}, + "select": "Auswählen", + "@select": {}, + "pleaseChooseAStrongPassword": "Bitte wähle ein starkes Passwort", + "@pleaseChooseAStrongPassword": {}, + "addChatOrSubSpace": "Chat oder Sub-Space hinzufügen", + "@addChatOrSubSpace": {}, + "leaveEmptyToClearStatus": "Leer lassen, um den Status zu löschen.", + "@leaveEmptyToClearStatus": {}, + "joinSpace": "Space beitreten", + "@joinSpace": {}, + "searchForUsers": "Suche nach @benutzer ...", + "@searchForUsers": {}, + "initAppError": "Beim Starten der App ist ein Fehler aufgetreten", + "@initAppError": {}, + "databaseBuildErrorBody": "Die SQlite-Datenbank kann nicht erstellt werden. Die App versucht vorerst, die Legacy-Datenbank zu verwenden. Bitte melde diesen Fehler an die Entwickler unter {url}. Die Fehlermeldung lautet: {error}", + "@databaseBuildErrorBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "sessionLostBody": "Die App versucht nun, deine Sitzung aus der Sicherung wiederherzustellen. Bitte melde diesen Fehler an die Entwickler unter {url}. Die Fehlermeldung lautet: {error}", + "@sessionLostBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "restoreSessionBody": "Die App versucht nun, deine Sitzung aus der Sicherung wiederherzustellen. Bitte melde diesen Fehler an die Entwickler unter {url}. Die Fehlermeldung lautet: {error}", + "@restoreSessionBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "youInvitedToBy": "📩 Du wurdest per Link eingeladen zu:\n{alias}", + "@youInvitedToBy": { + "placeholders": { + "alias": { + "type": "String" + } + } + }, + "sendReadReceipts": "Lesebestätigungen senden", + "@sendReadReceipts": {}, + "formattedMessages": "Formatierte Nachrichten", + "@formattedMessages": {}, + "forwardMessageTo": "Nachricht weiterleiten an {roomName}?", + "@forwardMessageTo": { + "type": "String", + "placeholders": { + "roomName": { + "type": "String" + } + } + }, + "sendTypingNotificationsDescription": "Andere Teilnehmer in einem Chat können sehen, wenn du eine neue Nachricht tippst.", + "@sendTypingNotificationsDescription": {}, + "formattedMessagesDescription": "Formatierte Nachrichteninhalte wie fettgedruckten Text mit Markdown anzeigen.", + "@formattedMessagesDescription": {}, + "verifyOtherUser": "🔐 Anderen Benutzer verifizieren", + "@verifyOtherUser": {}, + "sendReadReceiptsDescription": "Andere Teilnehmer in einem Chat können sehen, ob du eine Nachricht gelesen hast.", + "@sendReadReceiptsDescription": {}, + "transparent": "Transparent", + "@transparent": {}, + "verifyOtherDevice": "🔐 Anderes Gerät verifizieren", + "@verifyOtherDevice": {}, + "verifyOtherUserDescription": "Wenn du einen anderen Benutzer verifizierst, kannst du sicher sein, dass du weißt, an wen du wirklich schreibst. 💪\n\nWenn du eine Verifizierung startest, wird dir und dem anderen Nutzer ein Popup in der App angezeigt. Dort siehst du dann eine Reihe von Emojis oder Zahlen, die ihr miteinander vergleichen müsst.\n\nDas geht am besten, wenn man sich trifft oder einen Videoanruf startet. 👭", + "@verifyOtherUserDescription": {}, + "acceptedKeyVerification": "{sender} hat die Schlüsselverifikation akzeptiert", + "@acceptedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "canceledKeyVerification": "{sender} hat die Schlüsselverifikation abgebrochen", + "@canceledKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "completedKeyVerification": "{sender} hat die Schlüsselverifikation abgeschlossen", + "@completedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "isReadyForKeyVerification": "{sender} ist bereit für die Schlüsselverifikation", + "@isReadyForKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "requestedKeyVerification": "{sender} hat eine Schlüsselverifikation angefragt", + "@requestedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "startedKeyVerification": "{sender} hat die Schlüsselverifikation gestartet", + "@startedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "verifyOtherDeviceDescription": "Wenn du ein anderes Gerät verifizierst, können diese Geräte Schlüssel austauschen, was die Sicherheit insgesamt erhöht. 💪Sobald du eine Verifizierung startest, erscheint ein Pop-up in der App auf beiden Geräten. Dort siehst du dann eine Reihe von Emojis oder Zahlen, die du miteinander vergleichen musst. Am besten hältst du beide Geräte bereit, bevor du die Verifizierung startest. 🤳", + "@verifyOtherDeviceDescription": {}, + "presenceStyle": "Statusmeldungen:", + "@presenceStyle": { + "type": "String", + "placeholders": {} + }, + "presencesToggle": "Status-Nachrichten anderer Benutzer anzeigen", + "@presencesToggle": { + "type": "String", + "placeholders": {} + }, + "incomingMessages": "Eingehende Nachrichten", + "@incomingMessages": {}, + "commandHint_unignore": "Angegebene Matrix-ID nicht mehr ignorieren", + "@commandHint_unignore": {}, + "commandHint_ignore": "Angegebene Matrix-ID ignorieren", + "@commandHint_ignore": {}, + "noDatabaseEncryption": "Datenbankverschlüsselung wird auf dieser Plattform nicht unterstützt", + "@noDatabaseEncryption": {}, + "hidePresences": "Status-Liste verbergen?", + "@hidePresences": {}, + "stickers": "Sticker", + "@stickers": {}, + "discover": "Entdecken", + "@discover": {}, + "unreadChatsInApp": "{appname}: {unread} ungelesene Chats", + "@unreadChatsInApp": { + "type": "String", + "placeholders": { + "appname": { + "type": "String" + }, + "unread": { + "type": "String" + } + } + }, + "customEmojisAndStickersBody": "Eigene Emojis oder Sticker zur Nutzung im Chat hinzufügen oder teilen.", + "@customEmojisAndStickersBody": {}, + "globalChatId": "Globale Chat-ID", + "@globalChatId": {}, + "accessAndVisibility": "Zugang und Sichtbarkeit", + "@accessAndVisibility": {}, + "hideMemberChangesInPublicChats": "Mitglieder-Änderungen in öffentlichen Chats ausblenden", + "@hideMemberChangesInPublicChats": {}, + "accessAndVisibilityDescription": "Wer darf dem Chat beitreten und wie kann der Chat gefunden werden.", + "@accessAndVisibilityDescription": {}, + "hideMemberChangesInPublicChatsBody": "Zeige keine Beitritt- oder Verlassen-Ereignisse von Mitgliedern in der Timeline an, um die Lesbarkeit in öffentlichen Chats zu verbessern.", + "@hideMemberChangesInPublicChatsBody": {}, + "userWouldLikeToChangeTheChat": "{user} würde dem Chat gerne beitreten.", + "@userWouldLikeToChangeTheChat": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "noPublicLinkHasBeenCreatedYet": "Es wurde noch kein öffentlicher Link erstellt", + "@noPublicLinkHasBeenCreatedYet": {}, + "chatCanBeDiscoveredViaSearchOnServer": "Chat kann über die Suche auf {server} gefunden werden", + "@chatCanBeDiscoveredViaSearchOnServer": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "appLockDescription": "App mit einer PIN sperren, wenn sie nicht verwendet wird", + "@appLockDescription": {}, + "calls": "Anrufe", + "@calls": {}, + "customEmojisAndStickers": "Eigene Emojis und Sticker", + "@customEmojisAndStickers": {}, + "hideRedactedMessages": "Geschwärzte Nachrichten verstecken", + "@hideRedactedMessages": {}, + "hideRedactedMessagesBody": "Wenn jemand eine Nachricht schwärzt/löscht, dann wird diese Nachricht im Chat nicht mehr sichtbar sein.", + "@hideRedactedMessagesBody": {}, + "hideInvalidOrUnknownMessageFormats": "Ungültige und unbekannte Nachrichten-Formate ausblenden", + "@hideInvalidOrUnknownMessageFormats": {}, + "overview": "Übersicht", + "@overview": {}, + "notifyMeFor": "Benachrichtige mich für", + "@notifyMeFor": {}, + "passwordRecoverySettings": "Passwort-Wiederherstellungs-Einstellungen", + "@passwordRecoverySettings": {}, + "knock": "Anklopfen", + "@knock": {}, + "knocking": "Klopft", + "@knocking": {}, + "thereAreCountUsersBlocked": "Im Augenblick werden {count} Benutzer blockiert.", + "@thereAreCountUsersBlocked": { + "type": "String", + "count": {} + }, + "usersMustKnock": "Benutzer müssen anklopfen", + "@usersMustKnock": {}, + "noOneCanJoin": "Niemand kann beitreten", + "@noOneCanJoin": {}, + "createNewAddress": "Neue Adresse erstellen", + "@createNewAddress": {}, + "userRole": "Benutzerrolle", + "@userRole": {}, + "minimumPowerLevel": "{level} is das minimale Power-Level.", + "@minimumPowerLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "String" + } + } + }, + "publicChatAddresses": "Öffentliche Chat-Adressen", + "@publicChatAddresses": {}, + "gallery": "Galerie", + "@gallery": {}, + "files": "Dateien", + "@files": {}, + "restricted": "Beschränkt", + "@restricted": {}, + "knockRestricted": "Anklopfen beschränkt", + "@knockRestricted": {}, + "searchIn": "In Chat \"{chat}\" suchen ...", + "@searchIn": { + "type": "String", + "placeholders": { + "chat": { + "type": "String" + } + } + }, + "searchMore": "Weiter suchen ...", + "@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": "String", + "space": {} + }, + "markAsUnread": "Als ungelesen markieren", + "@markAsUnread": {}, + "swipeRightToLeftToReply": "Wische von rechts nach links zum Antworten", + "@swipeRightToLeftToReply": {}, + "countChatsAndCountParticipants": "{chats} Chats und {participants} Teilnehmer", + "@countChatsAndCountParticipants": { + "type": "String", + "placeholders": { + "chats": { + "type": "int" + }, + "participants": { + "type": "int" + } + } + }, + "changeGeneralChatSettings": "Allgemeine Chat-Einstellungen ändern", + "@changeGeneralChatSettings": {}, + "userLevel": "{level} - Benutzer", + "@userLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "moderatorLevel": "{level} - Moderator", + "@moderatorLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "changeTheChatPermissions": "Ändere die Chat-Berechtigungen", + "@changeTheChatPermissions": {}, + "changeTheVisibilityOfChatHistory": "Wechsele die Sichtbarkeit der Chat-Historie", + "@changeTheVisibilityOfChatHistory": {}, + "chatPermissionsDescription": "Einstellen, welches Level für bestimmte Aktionen in diesem Chat erforderlich ist. Die Level 0, 50 und 100 stehen üblicherweise für Benutzer, Moderatoren und Admins, aber jede Abstufung ist möglich.", + "@chatPermissionsDescription": {}, + "invitedBy": "📩 Eingeladen von {user}", + "@invitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "adminLevel": "{level} - Administrator", + "@adminLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "inviteOtherUsers": "Lade andere Benutzer in diesen Chat ein", + "@inviteOtherUsers": {}, + "changeTheCanonicalRoomAlias": "Ändern der Hauptadresse für den öffentlichen Chat", + "@changeTheCanonicalRoomAlias": {}, + "sendRoomNotifications": "Sende eine @room-Benachrichtigung", + "@sendRoomNotifications": {}, + "changeTheDescriptionOfTheGroup": "Chat-Beschreibung ändern", + "@changeTheDescriptionOfTheGroup": {}, + "updateInstalled": "🎉 Update {version} installiert!", + "@updateInstalled": { + "type": "String", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "changelog": "Änderungsprotokoll", + "@changelog": {}, + "sendCanceled": "Senden abgebrochen", + "@sendCanceled": {}, + "noChatsFoundHere": "Hier wurden noch keine Chats gefunden. Starte einen neuen Chat mit jemandem, indem du die Schaltfläche unten verwenden. ⤵️", + "@noChatsFoundHere": {}, + "whatIsAHomeserver": "Was ist ein Homeserver?", + "@whatIsAHomeserver": {}, + "doesNotSeemToBeAValidHomeserver": "Scheint kein kompatibler Homeserver zu sein. Falsche URL?", + "@doesNotSeemToBeAValidHomeserver": {}, + "loginWithMatrixId": "Mit Matrix-ID anmelden", + "@loginWithMatrixId": {}, + "discoverHomeservers": "Server suchen", + "@discoverHomeservers": {}, + "homeserverDescription": "Alle deine Daten werden auf einem Homeserver gespeichert, so wie bei einem E-Mail Anbieter. Du kannst aussuchen, welchen Homeserver du benutzen willst und kannst trotzdem mit allen kommunizieren. Erfahre mehr auf https://matrix.org.", + "@homeserverDescription": {}, + "sendingAttachment": "Anhang wird gesendet ...", + "@sendingAttachment": {}, + "generatingVideoThumbnail": "Generiere Video-Vorschaubild ...", + "@generatingVideoThumbnail": {}, + "serverLimitReached": "Server-Limit erreicht! Warte {seconds} Sekunden ...", + "@serverLimitReached": { + "type": "integer", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "calculatingFileSize": "Dateigröße wird berechnet ...", + "@calculatingFileSize": {}, + "prepareSendingAttachment": "Anhang zum Senden vorbereiten ...", + "@prepareSendingAttachment": {}, + "compressVideo": "Video wird komprimiert ...", + "@compressVideo": {}, + "sendingAttachmentCountOfCount": "Sende Anhang {index} von {length} ...", + "@sendingAttachmentCountOfCount": { + "type": "integer", + "placeholders": { + "index": { + "type": "int" + }, + "length": { + "type": "int" + } + } + }, + "fileIsTooBigForServer": "Kann nicht gesendet werden! Der Server unterstützt nur Anhänge bis höchstens {max}.", + "@fileIsTooBigForServer": { + "type": "String", + "placeholders": { + "max": { + "type": "String" + } + } + }, + "oneOfYourDevicesIsNotVerified": "Eines deiner Geräte ist nicht verifiziert", + "@oneOfYourDevicesIsNotVerified": {}, + "noticeChatBackupDeviceVerification": "Hinweis: Wenn du alle deine Geräte mit dem Chat-Backup verbindest, sind sie automatisch verifiziert.", + "@noticeChatBackupDeviceVerification": {}, + "setWallpaper": "Hintergrund ändern", + "@setWallpaper": {}, + "opacity": "Deckkraft:", + "@opacity": {}, + "welcomeText": "Hey Hey 👋 Das ist FluffyChat. Du kannst sich bei jedem Homeserver anmelden, der mit https://matrix.org kompatibel ist. Und dann mit jedem chatten. Das hier ist ein riesiges dezentrales Nachrichtennetzwerk!", + "@welcomeText": {}, + "blur": "Verwischen:", + "@blur": {}, + "manageAccount": "Konto verwalten", + "@manageAccount": {}, + "continueText": "Fortfahren", + "@continueText": {}, + "noContactInformationProvided": "Der Server stellt keine gültigen Kontaktinformationen bereit", + "@noContactInformationProvided": {}, + "contactServerAdmin": "Serveradministrator kontaktieren", + "@contactServerAdmin": {}, + "name": "Name", + "@name": {}, + "version": "Version", + "@version": {}, + "website": "Website", + "@website": {}, + "aboutHomeserver": "Über {homeserver}", + "@aboutHomeserver": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "boldText": "Fetter Text", + "@boldText": {}, + "invalidUrl": "Ungültige URL", + "@invalidUrl": {}, + "addLink": "Link hinzufügen", + "@addLink": {}, + "unableToJoinChat": "Chat kann nicht beigetreten werden. Möglicherweise hat die Gegenseite das Gespräch bereits beendet.", + "@unableToJoinChat": {}, + "italicText": "Kursiver Text", + "@italicText": {}, + "strikeThrough": "Durchgestrichen", + "@strikeThrough": {}, + "pleaseFillOut": "Bitte ausfüllen", + "@pleaseFillOut": {}, + "sendImages": "Sende {count} Bilder", + "@sendImages": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "contactServerSecurity": "Server-Sicherheit kontaktieren", + "@contactServerSecurity": {}, + "compress": "Komprimieren", + "@compress": {}, + "supportPage": "Support-Seite", + "@supportPage": {}, + "serverInformation": "Server-Informationen:", + "@serverInformation": {}, + "appIntroduction": "Mit FluffyChat kannst du über verschiedene Messenger hinweg mit deinen Freunden chatten. Erfahre mehr dazu auf https://matrix.org oder tippe einfach auf *Fortfahren*.", + "@appIntroduction": {}, + "newChatRequest": "📩 Neue Chat-Anfrage", + "@newChatRequest": {}, + "synchronizingPleaseWaitCounter": " Synchronisierung… ({percentage}%)", + "@synchronizingPleaseWaitCounter": { + "type": "String", + "placeholders": { + "percentage": { + "type": "String" + } + } + }, + "waitingForServer": "Auf Server warten...", + "@waitingForServer": {}, + "previous": "Vorige", + "@previous": {}, + "otherPartyNotLoggedIn": "Der User ist aktuell nicht eingeloggt und kann daher keine Nachrichten empfangen!", + "@otherPartyNotLoggedIn": {}, + "appWantsToUseForLogin": "Nutze '{server}' um dich einzuloggen", + "@appWantsToUseForLogin": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "appWantsToUseForLoginDescription": "Hiermit erlaubst du der App und der Website, Informationen über dich weiterzugeben.", + "@appWantsToUseForLoginDescription": {}, + "open": "Offen", + "@open": {}, + "notificationRuleContainsUserName": "Enthält Benutzernamen", + "@notificationRuleContainsUserName": {}, + "notificationRuleContainsUserNameDescription": "Benachrichtigt den Benutzer, wenn eine Nachricht seinen Benutzernamen enthält.", + "@notificationRuleContainsUserNameDescription": {}, + "notificationRuleMaster": "Alle Benachrichtigungen stummschalten", + "@notificationRuleMaster": {}, + "notificationRuleSuppressNotices": "Automatisierte Nachrichten unterdrücken", + "@notificationRuleSuppressNotices": {}, + "notificationRuleMasterDescription": "Setzt alle anderen Regeln außer Kraft und deaktiviert alle Benachrichtigungen.", + "@notificationRuleMasterDescription": {}, + "generalNotificationSettings": "Allgemeine Benachrichtigungseinstellungen", + "@generalNotificationSettings": {}, + "otherNotificationSettings": "Andere Benachrichtigungseinstellungen", + "@otherNotificationSettings": {}, + "contentNotificationSettings": "Einstellungen für Inhaltsbenachrichtigungen", + "@contentNotificationSettings": {}, + "userSpecificNotificationSettings": "Benutzerspezifische Benachrichtigungseinstellungen", + "@userSpecificNotificationSettings": {}, + "roomNotificationSettings": "Einstellungen für Raumbenachrichtigungen", + "@roomNotificationSettings": {}, + "notificationRuleSuppressNoticesDescription": "Unterdrückt Benachrichtigungen von automatisierten Clients wie Bots.", + "@notificationRuleSuppressNoticesDescription": {}, + "notificationRuleInviteForMe": "Einladung für mich", + "@notificationRuleInviteForMe": {}, + "notificationRuleReaction": "Reaktion", + "@notificationRuleReaction": {}, + "notificationRuleReactionDescription": "Unterdrückt Benachrichtigungen für Reaktionen.", + "@notificationRuleReactionDescription": {}, + "notificationRuleSuppressEditsDescription": "Unterdrückt Benachrichtigungen für bearbeitete Nachrichten.", + "@notificationRuleSuppressEditsDescription": {}, + "notificationRuleCall": "Anruf", + "@notificationRuleCall": {}, + "notificationRuleCallDescription": "Benachrichtigt den Benutzer über Anrufe.", + "@notificationRuleCallDescription": {}, + "notificationRuleEncrypted": "Verschlüsselt", + "@notificationRuleEncrypted": {}, + "more": "Mehr", + "@more": {}, + "notificationRuleSuppressEdits": "Unterdrückt Bearbeitungen", + "@notificationRuleSuppressEdits": {}, + "notificationRuleRoomServerAclDescription": "Unterdrückt Benachrichtigungen für Raumserver-Zugriffskontrolllisten (ACL).", + "@notificationRuleRoomServerAclDescription": {}, + "notificationRuleMessage": "Nachricht", + "@notificationRuleMessage": {}, + "notificationRuleMessageDescription": "Informiert den Benutzer über allgemeine Nachrichten.", + "@notificationRuleMessageDescription": {}, + "notificationRuleJitsi": "Jitsi", + "@notificationRuleJitsi": {}, + "allDevices": "Alle Geräte", + "@allDevices": {}, + "enterNewChat": "Neuen Chat betreten", + "@enterNewChat": {}, + "shareKeysWith": "Schlüssel teilen mit...", + "@shareKeysWith": {}, + "shareKeysWithDescription": "Welchen Geräten sollte vertraut werden, damit sie deine Nachrichten in verschlüsselten Chats mitlesen können?", + "@shareKeysWithDescription": {}, + "verifiedDevicesOnly": "Nur verifizierte Geräte", + "@verifiedDevicesOnly": {}, + "takeAPhoto": "Foto aufnehmen", + "@takeAPhoto": {}, + "recordAVideo": "Video aufnehmen", + "@recordAVideo": {}, + "optionalMessage": "(Optionale) Nachricht...", + "@optionalMessage": {}, + "notSupportedOnThisDevice": "Nicht unterstützt auf diesem Gerät", + "@notSupportedOnThisDevice": {}, + "ignoreUser": "Nutzer ignorieren", + "@ignoreUser": {}, + "notificationRuleEncryptedRoomOneToOneDescription": "Benachrichtigt den Benutzer über Nachrichten in verschlüsselten Eins-zu-Eins-Chats.", + "@notificationRuleEncryptedRoomOneToOneDescription": {}, + "commandHint_roomupgrade": "Aktualisieren Sie diesen Raum auf die angegebene Raumversion", + "@commandHint_roomupgrade": {}, + "notificationRuleMemberEvent": "Mitgliederveranstaltung", + "@notificationRuleMemberEvent": {}, + "notificationRuleInviteForMeDescription": "Benachrichtigt den Benutzer, wenn er in einen Raum eingeladen wird.", + "@notificationRuleInviteForMeDescription": {}, + "notificationRuleIsUserMentionDescription": "Benachrichtigt den Benutzer, wenn er in einer Nachricht direkt erwähnt wird.", + "@notificationRuleIsUserMentionDescription": {}, + "notificationRuleRoomnotifDescription": "Benachrichtigt den Benutzer, wenn eine Nachricht „@room“ enthält.", + "@notificationRuleRoomnotifDescription": {}, + "notificationRuleRoomOneToOneDescription": "Benachrichtigt den Benutzer über Nachrichten in Einzelchats.", + "@notificationRuleRoomOneToOneDescription": {}, + "notificationRuleEncryptedDescription": "Benachrichtigt den Benutzer über Nachrichten in verschlüsselten Räumen.", + "@notificationRuleEncryptedDescription": {}, + "notificationRuleJitsiDescription": "Benachrichtigt den Benutzer über Jitsi-Widget-Ereignisse.", + "@notificationRuleJitsiDescription": {}, + "checkList": "Checkliste", + "@checkList": {}, + "countInvited": "{count} invited", + "@countInvited": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notificationRuleIsUserMention": "Benutzererwähnung", + "@notificationRuleIsUserMention": {}, + "notificationRuleContainsDisplayName": "Enthält den Anzeigenamen", + "@notificationRuleContainsDisplayName": {}, + "notificationRuleContainsDisplayNameDescription": "Benachrichtigt den Benutzer, wenn eine Nachricht seinen Anzeigenamen enthält.", + "@notificationRuleContainsDisplayNameDescription": {}, + "notificationRuleIsRoomMention": "Chat-Erwähnung", + "@notificationRuleIsRoomMention": {}, + "notificationRuleRoomnotif": "Chat-Benachritigung", + "@notificationRuleRoomnotif": {}, + "notificationRuleTombstoneDescription": "Benachrichtigt den Benutzer über Nachrichten zur Raumdeaktivierung.", + "@notificationRuleTombstoneDescription": {}, + "notificationRuleEncryptedRoomOneToOne": "Verschlüsselter Einzelchat", + "@notificationRuleEncryptedRoomOneToOne": {}, + "notificationRuleRoomOneToOne": "Einzelchat", + "@notificationRuleRoomOneToOne": {}, + "notificationRuleServerAclDescription": "Unterdrückt Benachrichtigungen für Server-ACL-Ereignisse.", + "@notificationRuleServerAclDescription": {}, + "unknownPushRule": "Unbekannte Push-Regel '{rule}'", + "@unknownPushRule": { + "type": "String", + "placeholders": { + "rule": { + "type": "String" + } + } + }, + "deletePushRuleCanNotBeUndone": "Wenn Sie diese Benachrichtigungseinstellung löschen, kann dies nicht rückgängig gemacht werden.", + "@deletePushRuleCanNotBeUndone": {}, + "crossVerifiedDevices": "Cross-verifizierte Geräte", + "@crossVerifiedDevices": {}, + "notificationRuleIsRoomMentionDescription": "Benachrichtigt den Benutzer, wenn ein Raum erwähnt wird.", + "@notificationRuleIsRoomMentionDescription": {}, + "notificationRuleRoomServerAcl": "Raumserver-ACL", + "@notificationRuleRoomServerAcl": {}, + "crossVerifiedDevicesIfEnabled": "Cross-verifizierte Geräte, falls aktiviert", + "@crossVerifiedDevicesIfEnabled": {}, + "notificationRuleServerAcl": "Unterdrücken von Server-ACL-Ereignissen", + "@notificationRuleServerAcl": {}, + "notificationRuleMemberEventDescription": "Unterdrückt Benachrichtigungen zu Mitgliedschaftsereignissen.", + "@notificationRuleMemberEventDescription": {}, + "sentVoiceMessage": "🎙️ {duration} - Sprachnachricht von {sender}", + "@sentVoiceMessage": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "duration": { + "type": "String" + } + } + }, + "normalUser": "Normaler Benutzer", + "@normalUser": {}, + "setCustomPermissionLevel": "Benutzerdefinierte Berechtigungsstufe festlegen", + "@setCustomPermissionLevel": {}, + "setPermissionsLevelDescription": "Bitte wählen Sie unten eine vordefinierte Rolle aus oder geben Sie eine benutzerdefinierte Berechtigungsstufe zwischen 0 und 100 ein.", + "@setPermissionsLevelDescription": {}, + "approve": "Genehmigen", + "@approve": {}, + "youHaveKnocked": "Du hast geklopft", + "@youHaveKnocked": {}, + "pleaseWaitUntilInvited": "Bitte warte nun, bis dich jemand aus dem Raum auffordert.", + "@pleaseWaitUntilInvited": {}, + "notificationRuleTombstone": "Tombstone", + "@notificationRuleTombstone": {}, + "commandHint_logout": "Aktuelles Gerät abmelden", + "@commandHint_logout": {}, + "commandHint_logoutall": "Alle aktiven Geräte abmelden", + "@commandHint_logoutall": {}, + "displayNavigationRail": "Navigationsleiste auf dem Smartphone anzeigen", + "@displayNavigationRail": {}, + "customReaction": "Benutzerdefinierte Reaktion", + "@customReaction": {}, + "moreEvents": "Weitere Ereignisse", + "@moreEvents": {}, + "declineInvitation": "Einladung ablehnen", + "@declineInvitation": {}, + "noMessagesYet": "Noch keine Nachrichten", + "@noMessagesYet": {}, + "longPressToRecordVoiceMessage": "Lange drücken, um eine Sprachnachricht aufzunehmen.", + "@longPressToRecordVoiceMessage": {}, + "pause": "Pause", + "@pause": {}, + "newSubSpace": "Neuer Sub-Space", + "@newSubSpace": {}, + "moveToDifferentSpace": "In einen anderen space wechseln", + "@moveToDifferentSpace": {}, + "moveUp": "Nach oben", + "@moveUp": {}, + "moveDown": "Nach unten", + "@moveDown": {}, + "removeFromSpaceDescription": "Der Chat wird aus dem Space entfernt, erscheint aber weiterhin in Ihrer Chatliste.", + "@removeFromSpaceDescription": {}, + "countChats": "{chats} Chats", + "@countChats": { + "type": "String", + "placeholders": { + "chats": { + "type": "int" + } + } + }, + "spaceMemberOf": "Space-Mitglieder von {spaces}", + "@spaceMemberOf": { + "type": "String", + "placeholders": { + "spaces": { + "type": "String" + } + } + }, + "spaceMemberOfCanKnock": "Space-Mitglieder von {spaces} kann klopfen", + "@spaceMemberOfCanKnock": { + "type": "String", + "placeholders": { + "spaces": { + "type": "String" + } + } + }, + "donate": "Spenden", + "@donate": {}, + "resume": "Fortsetzen", + "@resume": {}, + "startedAPoll": "{username} hat eine Umfrage gestartet.", + "@startedAPoll": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "poll": "Umfrage", + "@poll": {}, + "startPoll": "Umfrage starten", + "@startPoll": {}, + "endPoll": "Umfrage beenden", + "@endPoll": {}, + "answersVisible": "Antworten sichtbar", + "@answersVisible": {}, + "answersHidden": "Antworten sind verborgen", + "@answersHidden": {}, + "pollQuestion": "Frage", + "@pollQuestion": {}, + "answerOption": "Antwortmöglichkeit", + "@answerOption": {}, + "addAnswerOption": "Antwortoption hinzufügen", + "@addAnswerOption": {}, + "allowMultipleAnswers": "Mehrere Antworten zulassen", + "@allowMultipleAnswers": {}, + "pollHasBeenEnded": "Umfrage ist beendet", + "@pollHasBeenEnded": {}, + "countVotes": "{count, plural, =1{Eine Stimme} other{{count} Stimmen}}", + "@countVotes": { + "type": "int", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "answersWillBeVisibleWhenPollHasEnded": "Die Antworten werden nach Ende der Umfrage sichtbar sein", + "@answersWillBeVisibleWhenPollHasEnded": {}, + "replyInThread": "Im Thread antworten", + "@replyInThread": {}, + "countReplies": "{count, plural, =1{Eine Antwort} other{{count} Antworten}}", + "@countReplies": { + "type": "int", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "thread": "Thread", + "@thread": {}, + "backToMainChat": "Zurück zum Hauptchat", + "@backToMainChat": {} +} diff --git a/lib/l10n/intl_el.arb b/lib/l10n/intl_el.arb new file mode 100644 index 0000000..62b45a7 --- /dev/null +++ b/lib/l10n/intl_el.arb @@ -0,0 +1,435 @@ +{ + "hugContent": "{senderName} σε αγκαλιάζει", + "@hugContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "commandHint_cuddle": "Στείλε μια αγκαλιά", + "@commandHint_cuddle": {}, + "admin": "Διαχειριστής", + "@admin": { + "type": "String", + "placeholders": {} + }, + "blockDevice": "Αποκλεισμός Συσκευής", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "supposedMxid": "Αυτό θα πρέπει να είναι {mxid}", + "@supposedMxid": { + "type": "String", + "placeholders": { + "mxid": { + "type": "String" + } + } + }, + "banFromChat": "Αποκλεισμός από τη συνομιλία", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "askSSSSSign": "Για να μπορέσεις να υπογράψεις το άλλο άτομο, πληκτρολόγησε τη συνθηματική φράση ασφαλούς αποθήκευσης ή το κλειδί ανάκτησης.", + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "remove": "Αφαίρεση", + "@remove": { + "type": "String", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "Επιτρέπεται στους επισκέπτες χρήστες να συμμετάσχουν", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "blocked": "Αποκλείστηκε", + "@blocked": { + "type": "String", + "placeholders": {} + }, + "sendOnEnter": "Αποστολή με enter", + "@sendOnEnter": {}, + "answeredTheCall": "{senderName} απάντησε στην κλήση", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "alias": "ψευδώνυμο", + "@alias": { + "type": "String", + "placeholders": {} + }, + "all": "Όλα", + "@all": { + "type": "String", + "placeholders": {} + }, + "badServerLoginTypesException": "Ο οικιακός διακομιστής υποστηρίζει τους τύπους σύνδεσης:\n{serverVersions}\nΑλλά αυτή η εφαρμογή υποστηρίζει μόνο:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "cantOpenUri": "Δεν μπορεί να ανοίξει το URI {uri}", + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "importFromZipFile": "Εισαγωγή από αρχείο .zip", + "@importFromZipFile": {}, + "autoplayImages": "Αυτόματη αναπαραγωγή κινούμενων αυτοκόλλητων και emotes", + "@autoplayImages": { + "type": "String", + "placeholder": {} + }, + "repeatPassword": "Επανάληψη κωδικού πρόσβασης", + "@repeatPassword": {}, + "acceptedTheInvitation": "👍 {username} αποδέχτηκε την πρόσκληση", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "banned": "Αποκλείστηκε", + "@banned": { + "type": "String", + "placeholders": {} + }, + "exportEmotePack": "Εξαγωγή πακέτου Emote ως .zip", + "@exportEmotePack": {}, + "account": "Λογαριασμός", + "@account": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "Σίγουρα;", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "allChats": "Όλες οι συνομιλίες", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "badServerVersionsException": "Ο οικιακός διακομιστής υποστηρίζει τις εκδόσεις Spec:\n{serverVersions}\nΑλλά αυτή η εφαρμογή υποστηρίζει μόνο {supportedVersions}", + "@badServerVersionsException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "addToSpace": "Προσθήκη στο χώρο", + "@addToSpace": {}, + "about": "Σχετικά", + "@about": { + "type": "String", + "placeholders": {} + }, + "activatedEndToEndEncryption": "🔐 {username} ενεργοποίησε την κρυπτογράφηση από άκρο σε άκρο", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "googlyEyesContent": "{senderName} σού στέλνει αστεία μάτια", + "@googlyEyesContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "addChatDescription": "Πρόσθεσε μια περιγραφή συνομιλίας...", + "@addChatDescription": {}, + "cancel": "Ακύρωση", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "appLock": "Κλείδωμα εφαρμογής", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "sendTypingNotifications": "Αποστολή ειδοποιήσεων πληκτρολόγησης", + "@sendTypingNotifications": {}, + "importEmojis": "Εισαγωγή Emojis", + "@importEmojis": {}, + "confirmMatrixId": "Παρακαλούμε επιβεβαίωσε το Matrix ID σου για να διαγράψεις τον λογαριασμό σου.", + "@confirmMatrixId": {}, + "notAnImage": "Δεν είναι αρχείο εικόνας.", + "@notAnImage": {}, + "areYouSureYouWantToLogout": "Σίγουρα θες να αποσυνδεθείς;", + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "bannedUser": "{username} απέκλεισε {targetName}", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "cuddleContent": "{senderName} σέ αγκαλιάζει", + "@cuddleContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "askVerificationRequest": "Αποδοχή αυτού του αιτήματος επαλήθευσης από {username};", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "addEmail": "Προσθήκη email", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "commandHint_hug": "Στείλτε μια αγκαλιά", + "@commandHint_hug": {}, + "replace": "Αντικατάσταση", + "@replace": {}, + "archive": "Αρχείο", + "@archive": { + "type": "String", + "placeholders": {} + }, + "accept": "Αποδοχή", + "@accept": { + "type": "String", + "placeholders": {} + }, + "commandHint_googly": "Στείλε αστεία μάτια", + "@commandHint_googly": {}, + "botMessages": "Μηνύματα bot", + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "importNow": "Εισαγωγή τώρα", + "@importNow": {}, + "anyoneCanJoin": "Οποιοσδήποτε μπορεί να συμμετάσχει", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "alwaysUse24HourFormat": "Ψευδής", + "@alwaysUse24HourFormat": { + "description": "Set to true to always display time of day in 24 hour format." + }, + "setCustomPermissionLevel": "Όρισε προσαρμοσμένο επίπεδο άδειας", + "@setCustomPermissionLevel": {}, + "setPermissionsLevelDescription": "Επέλεξε έναν προκαθορισμένο ρόλο παρακάτω ή εισήγαγε ένα προσαρμοσμένο επίπεδο άδειας μεταξύ 0 και 100.", + "@setPermissionsLevelDescription": {}, + "ignoreUser": "Αγνόηση χρήστη", + "@ignoreUser": {}, + "normalUser": "Κανονικός χρήστης", + "@normalUser": {}, + "aboutHomeserver": "Σχετικά με {homeserver}", + "@aboutHomeserver": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "commandHint_roomupgrade": "Αναβάθμιση αυτού του δωματίου στην δεδομένη έκδοση δωματίου", + "@commandHint_roomupgrade": {}, + "appLockDescription": "Κλείδωμα εφαρμογής όταν δεν χρησιμοποιείται με κωδικό PIN", + "@appLockDescription": {}, + "swipeRightToLeftToReply": "Σύρσιμο δεξιά προς αριστερά για απάντηση", + "@swipeRightToLeftToReply": {}, + "countChatsAndCountParticipants": "{chats} συνομιλίες και {participants} συμμετέχοντες", + "@countChatsAndCountParticipants": { + "type": "String", + "placeholders": { + "chats": { + "type": "int" + }, + "participants": { + "type": "int" + } + } + }, + "noMoreChatsFound": "Δεν βρέθηκαν άλλες συνομιλίες...", + "@noMoreChatsFound": {}, + "noChatsFoundHere": "Δεν υπάρχουν συνομιλίες ακόμα. Ξεκίνα μια νέα συνομιλία με κάποιον χρησιμοποιώντας το κουμπί παρακάτω. ⤵️", + "@noChatsFoundHere": {}, + "unread": "Μη αναγνωσμένα", + "@unread": {}, + "space": "Χώρος", + "@space": {}, + "spaces": "Χώροι", + "@spaces": {}, + "changeDeviceName": "Αλλαγή ονόματος συσκευής", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "changedTheChatAvatar": "{username} άλλαξε το άβαταρ συνομιλίας", + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheChatDescriptionTo": "{username} άλλαξε την περιγραφή συνομιλίας σε: '{description}'", + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "changedTheChatNameTo": "{username} άλλαξε το όνομα συνομιλίας σε: '{chatname}'", + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "changedTheChatPermissions": "{username} άλλαξε τα δικαιώματα συνομιλίας", + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheDisplaynameTo": "{username} άλλαξε το εμφανιζόμενο όνομά του σε: '{displayname}'", + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "changedTheGuestAccessRules": "{username} άλλαξε τους κανόνες πρόσβασης των επισκεπτών", + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheGuestAccessRulesTo": "{username} άλλαξε τους κανόνες πρόσβασης των επισκεπτών σε: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheHistoryVisibility": "{username} άλλαξε την ορατότητα ιστορικού", + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheHistoryVisibilityTo": "{username} άλλαξε την ορατότητα ιστορικού σε: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheJoinRules": "{username} άλλαξε τους κανόνες συμμετοχής", + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheJoinRulesTo": "{username} άλλαξε τους κανόνες συμμετοχής σε: {joinRules}", + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + } +} diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb new file mode 100644 index 0000000..2a56f03 --- /dev/null +++ b/lib/l10n/intl_en.arb @@ -0,0 +1,3456 @@ +{ + "@@locale": "en", + "@@last_modified": "2021-08-14 12:38:37.885451", + "alwaysUse24HourFormat": "false", + "@alwaysUse24HourFormat": { + "description": "Set to true to always display time of day in 24 hour format." + }, + "repeatPassword": "Repeat password", + "@repeatPassword": {}, + "notAnImage": "Not an image file.", + "@notAnImage": {}, + "setCustomPermissionLevel": "Set custom permission level", + "@setCustomPermissionLevel": {}, + "setPermissionsLevelDescription": "Please choose a predefined role below or enter a custom permission level between 0 and 100.", + "@setPermissionsLevelDescription": {}, + "ignoreUser": "Ignore user", + "@ignoreUser": {}, + "normalUser": "Normal user", + "@normalUser": {}, + "remove": "Remove", + "@remove": { + "type": "String", + "placeholders": {} + }, + "importNow": "Import now", + "@importNow": {}, + "importEmojis": "Import Emojis", + "@importEmojis": {}, + "importFromZipFile": "Import from .zip file", + "@importFromZipFile": {}, + "exportEmotePack": "Export Emote pack as .zip", + "@exportEmotePack": {}, + "replace": "Replace", + "@replace": {}, + "about": "About", + "@about": {}, + "aboutHomeserver": "About {homeserver}", + "@aboutHomeserver": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "accept": "Accept", + "@accept": { + "type": "String", + "placeholders": {} + }, + "acceptedTheInvitation": "👍 {username} accepted the invitation", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "account": "Account", + "@account": { + "type": "String", + "placeholders": {} + }, + "activatedEndToEndEncryption": "🔐 {username} activated end to end encryption", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "addEmail": "Add email", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "confirmMatrixId": "Please confirm your Matrix ID in order to delete your account.", + "@confirmMatrixId": {}, + "supposedMxid": "This should be {mxid}", + "@supposedMxid": { + "type": "String", + "placeholders": { + "mxid": { + "type": "String" + } + } + }, + "addChatDescription": "Add a chat description...", + "@addChatDescription": {}, + "addToSpace": "Add to space", + "@addToSpace": {}, + "admin": "Admin", + "@admin": { + "type": "String", + "placeholders": {} + }, + "alias": "alias", + "@alias": { + "type": "String", + "placeholders": {} + }, + "all": "All", + "@all": { + "type": "String", + "placeholders": {} + }, + "allChats": "All chats", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "commandHint_roomupgrade": "Upgrade this room to the given room version", + "@commandHint_roomupgrade": {}, + "commandHint_googly": "Send some googly eyes", + "@commandHint_googly": {}, + "commandHint_cuddle": "Send a cuddle", + "@commandHint_cuddle": {}, + "commandHint_hug": "Send a hug", + "@commandHint_hug": {}, + "googlyEyesContent": "{senderName} sends you googly eyes", + "@googlyEyesContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "cuddleContent": "{senderName} cuddles you", + "@cuddleContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "hugContent": "{senderName} hugs you", + "@hugContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "answeredTheCall": "{senderName} answered the call", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "anyoneCanJoin": "Anyone can join", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "appLock": "App lock", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "appLockDescription": "Lock the app when not using with a pin code", + "@appLockDescription": {}, + "archive": "Archive", + "@archive": { + "type": "String", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "Are guest users allowed to join", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "Are you sure?", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "areYouSureYouWantToLogout": "Are you sure you want to log out?", + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "askSSSSSign": "To be able to sign the other person, please enter your secure store passphrase or recovery key.", + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "askVerificationRequest": "Accept this verification request from {username}?", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "autoplayImages": "Automatically play animated stickers and emotes", + "@autoplayImages": { + "type": "String", + "placeholder": {} + }, + "badServerLoginTypesException": "The homeserver supports the login types:\n{serverVersions}\nBut this app supports only:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "sendTypingNotifications": "Send typing notifications", + "@sendTypingNotifications": {}, + "swipeRightToLeftToReply": "Swipe right to left to reply", + "@swipeRightToLeftToReply": {}, + "sendOnEnter": "Send on enter", + "@sendOnEnter": {}, + "badServerVersionsException": "The homeserver supports the Spec versions:\n{serverVersions}\nBut this app supports only {supportedVersions}", + "@badServerVersionsException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "countChatsAndCountParticipants": "{chats} chats and {participants} participants", + "@countChatsAndCountParticipants": { + "type": "String", + "placeholders": { + "chats": { + "type": "int" + }, + "participants": { + "type": "int" + } + } + }, + "noMoreChatsFound": "No more chats found...", + "@noMoreChatsFound": {}, + "noChatsFoundHere": "No chats found here yet. Start a new chat with someone by using the button below. ⤵️", + "@noChatsFoundHere": {}, + "joinedChats": "Joined chats", + "@joinedChats": {}, + "unread": "Unread", + "@unread": {}, + "space": "Space", + "@space": {}, + "spaces": "Spaces", + "@spaces": {}, + "banFromChat": "Ban from chat", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "banned": "Banned", + "@banned": { + "type": "String", + "placeholders": {} + }, + "bannedUser": "{username} banned {targetName}", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "blockDevice": "Block Device", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "blocked": "Blocked", + "@blocked": { + "type": "String", + "placeholders": {} + }, + "botMessages": "Bot messages", + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "cancel": "Cancel", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "cantOpenUri": "Can't open the URI {uri}", + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "changeDeviceName": "Change device name", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "changedTheChatAvatar": "{username} changed the chat avatar", + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheChatDescriptionTo": "{username} changed the chat description to: '{description}'", + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "changedTheChatNameTo": "{username} changed the chat name to: '{chatname}'", + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "changedTheChatPermissions": "{username} changed the chat permissions", + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheDisplaynameTo": "{username} changed their displayname to: '{displayname}'", + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "changedTheGuestAccessRules": "{username} changed the guest access rules", + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheGuestAccessRulesTo": "{username} changed the guest access rules to: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheHistoryVisibility": "{username} changed the history visibility", + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheHistoryVisibilityTo": "{username} changed the history visibility to: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheJoinRules": "{username} changed the join rules", + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheJoinRulesTo": "{username} changed the join rules to: {joinRules}", + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "changedTheProfileAvatar": "{username} changed their avatar", + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomAliases": "{username} changed the room aliases", + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomInvitationLink": "{username} changed the invitation link", + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changePassword": "Change password", + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "changeTheHomeserver": "Change the homeserver", + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "changeTheme": "Change your style", + "@changeTheme": { + "type": "String", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "Change the name of the group", + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "changeYourAvatar": "Change your avatar", + "@changeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "channelCorruptedDecryptError": "The encryption has been corrupted", + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "chat": "Chat", + "@chat": { + "type": "String", + "placeholders": {} + }, + "yourChatBackupHasBeenSetUp": "Your chat backup has been set up.", + "@yourChatBackupHasBeenSetUp": {}, + "chatBackup": "Chat backup", + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "chatBackupDescription": "Your old messages are secured with a recovery key. Please make sure you don't lose it.", + "@chatBackupDescription": { + "type": "String", + "placeholders": {} + }, + "chatDetails": "Chat details", + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "chatHasBeenAddedToThisSpace": "Chat has been added to this space", + "@chatHasBeenAddedToThisSpace": {}, + "chats": "Chats", + "@chats": { + "type": "String", + "placeholders": {} + }, + "chooseAStrongPassword": "Choose a strong password", + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "clearArchive": "Clear archive", + "@clearArchive": {}, + "close": "Close", + "@close": { + "type": "String", + "placeholders": {} + }, + "commandHint_markasdm": "Mark as direct message room for the giving Matrix ID", + "@commandHint_markasdm": {}, + "commandHint_markasgroup": "Mark as group", + "@commandHint_markasgroup": {}, + "commandHint_ban": "Ban the given user from this room", + "@commandHint_ban": { + "type": "String", + "description": "Usage hint for the command /ban" + }, + "commandHint_clearcache": "Clear cache", + "@commandHint_clearcache": { + "type": "String", + "description": "Usage hint for the command /clearcache" + }, + "commandHint_create": "Create an empty group chat\nUse --no-encryption to disable encryption", + "@commandHint_create": { + "type": "String", + "description": "Usage hint for the command /create" + }, + "commandHint_discardsession": "Discard session", + "@commandHint_discardsession": { + "type": "String", + "description": "Usage hint for the command /discardsession" + }, + "commandHint_dm": "Start a direct chat\nUse --no-encryption to disable encryption", + "@commandHint_dm": { + "type": "String", + "description": "Usage hint for the command /dm" + }, + "commandHint_html": "Send HTML-formatted text", + "@commandHint_html": { + "type": "String", + "description": "Usage hint for the command /html" + }, + "commandHint_invite": "Invite the given user to this room", + "@commandHint_invite": { + "type": "String", + "description": "Usage hint for the command /invite" + }, + "commandHint_join": "Join the given room", + "@commandHint_join": { + "type": "String", + "description": "Usage hint for the command /join" + }, + "commandHint_kick": "Remove the given user from this room", + "@commandHint_kick": { + "type": "String", + "description": "Usage hint for the command /kick" + }, + "commandHint_leave": "Leave this room", + "@commandHint_leave": { + "type": "String", + "description": "Usage hint for the command /leave" + }, + "commandHint_me": "Describe yourself", + "@commandHint_me": { + "type": "String", + "description": "Usage hint for the command /me" + }, + "commandHint_myroomavatar": "Set your picture for this room (by mxc-uri)", + "@commandHint_myroomavatar": { + "type": "String", + "description": "Usage hint for the command /myroomavatar" + }, + "commandHint_myroomnick": "Set your display name for this room", + "@commandHint_myroomnick": { + "type": "String", + "description": "Usage hint for the command /myroomnick" + }, + "commandHint_op": "Set the given user's power level (default: 50)", + "@commandHint_op": { + "type": "String", + "description": "Usage hint for the command /op" + }, + "commandHint_plain": "Send unformatted text", + "@commandHint_plain": { + "type": "String", + "description": "Usage hint for the command /plain" + }, + "commandHint_react": "Send reply as a reaction", + "@commandHint_react": { + "type": "String", + "description": "Usage hint for the command /react" + }, + "commandHint_send": "Send text", + "@commandHint_send": { + "type": "String", + "description": "Usage hint for the command /send" + }, + "commandHint_unban": "Unban the given user from this room", + "@commandHint_unban": { + "type": "String", + "description": "Usage hint for the command /unban" + }, + "commandInvalid": "Command invalid", + "@commandInvalid": { + "type": "String" + }, + "commandMissing": "{command} is not a command.", + "@commandMissing": { + "type": "String", + "placeholders": { + "command": { + "type": "String" + } + }, + "description": "State that {command} is not a valid /command." + }, + "compareEmojiMatch": "Please compare the emojis", + "@compareEmojiMatch": { + "type": "String", + "placeholders": {} + }, + "compareNumbersMatch": "Please compare the numbers", + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "configureChat": "Configure chat", + "@configureChat": { + "type": "String", + "placeholders": {} + }, + "confirm": "Confirm", + "@confirm": { + "type": "String", + "placeholders": {} + }, + "connect": "Connect", + "@connect": { + "type": "String", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "Contact has been invited to the group", + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "containsDisplayName": "Contains display name", + "@containsDisplayName": { + "type": "String", + "placeholders": {} + }, + "containsUserName": "Contains username", + "@containsUserName": { + "type": "String", + "placeholders": {} + }, + "contentHasBeenReported": "The content has been reported to the server admins", + "@contentHasBeenReported": { + "type": "String", + "placeholders": {} + }, + "copiedToClipboard": "Copied to clipboard", + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "copy": "Copy", + "@copy": { + "type": "String", + "placeholders": {} + }, + "copyToClipboard": "Copy to clipboard", + "@copyToClipboard": { + "type": "String", + "placeholders": {} + }, + "couldNotDecryptMessage": "Could not decrypt message: {error}", + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "checkList": "Check list", + "@checkList": {}, + "countParticipants": "{count} participants", + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "countInvited": "{count} invited", + "@countInvited": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "create": "Create", + "@create": { + "type": "String", + "placeholders": {} + }, + "createdTheChat": "💬 {username} created the chat", + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "createGroup": "Create group", + "@createGroup": {}, + "createNewSpace": "New space", + "@createNewSpace": { + "type": "String", + "placeholders": {} + }, + "currentlyActive": "Currently active", + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "darkTheme": "Dark", + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "dateWithoutYear": "{month}-{day}", + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "dateWithYear": "{year}-{month}-{day}", + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "deactivateAccountWarning": "This will deactivate your user account. This can not be undone! Are you sure?", + "@deactivateAccountWarning": { + "type": "String", + "placeholders": {} + }, + "defaultPermissionLevel": "Default permission level for new users", + "@defaultPermissionLevel": { + "type": "String", + "placeholders": {} + }, + "delete": "Delete", + "@delete": { + "type": "String", + "placeholders": {} + }, + "deleteAccount": "Delete account", + "@deleteAccount": { + "type": "String", + "placeholders": {} + }, + "deleteMessage": "Delete message", + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "device": "Device", + "@device": { + "type": "String", + "placeholders": {} + }, + "deviceId": "Device ID", + "@deviceId": { + "type": "String", + "placeholders": {} + }, + "devices": "Devices", + "@devices": { + "type": "String", + "placeholders": {} + }, + "directChats": "Direct Chats", + "@directChats": { + "type": "String", + "placeholders": {} + }, + "allRooms": "All Group Chats", + "@allRooms": { + "type": "String", + "placeholders": {} + }, + "displaynameHasBeenChanged": "Displayname has been changed", + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "downloadFile": "Download file", + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "edit": "Edit", + "@edit": { + "type": "String", + "placeholders": {} + }, + "editBlockedServers": "Edit blocked servers", + "@editBlockedServers": { + "type": "String", + "placeholders": {} + }, + "chatPermissions": "Chat permissions", + "@chatPermissions": {}, + "editDisplayname": "Edit displayname", + "@editDisplayname": { + "type": "String", + "placeholders": {} + }, + "editRoomAliases": "Edit room aliases", + "@editRoomAliases": { + "type": "String", + "placeholders": {} + }, + "editRoomAvatar": "Edit room avatar", + "@editRoomAvatar": { + "type": "String", + "placeholders": {} + }, + "emoteExists": "Emote already exists!", + "@emoteExists": { + "type": "String", + "placeholders": {} + }, + "emoteInvalid": "Invalid emote shortcode!", + "@emoteInvalid": { + "type": "String", + "placeholders": {} + }, + "emoteKeyboardNoRecents": "Recently-used emotes will appear here...", + "@emoteKeyboardNoRecents": { + "type": "String", + "placeholders": {} + }, + "emotePacks": "Emote packs for room", + "@emotePacks": { + "type": "String", + "placeholders": {} + }, + "emoteSettings": "Emote Settings", + "@emoteSettings": { + "type": "String", + "placeholders": {} + }, + "globalChatId": "Global chat ID", + "@globalChatId": {}, + "accessAndVisibility": "Access and visibility", + "@accessAndVisibility": {}, + "accessAndVisibilityDescription": "Who is allowed to join this chat and how the chat can be discovered.", + "@accessAndVisibilityDescription": {}, + "calls": "Calls", + "@calls": {}, + "customEmojisAndStickers": "Custom emojis and stickers", + "@customEmojisAndStickers": {}, + "customEmojisAndStickersBody": "Add or share custom emojis or stickers which can be used in any chat.", + "@customEmojisAndStickersBody": {}, + "emoteShortcode": "Emote shortcode", + "@emoteShortcode": { + "type": "String", + "placeholders": {} + }, + "emoteWarnNeedToPick": "You need to pick an emote shortcode and an image!", + "@emoteWarnNeedToPick": { + "type": "String", + "placeholders": {} + }, + "emptyChat": "Empty chat", + "@emptyChat": { + "type": "String", + "placeholders": {} + }, + "enableEmotesGlobally": "Enable emote pack globally", + "@enableEmotesGlobally": { + "type": "String", + "placeholders": {} + }, + "enableEncryption": "Enable encryption", + "@enableEncryption": { + "type": "String", + "placeholders": {} + }, + "enableEncryptionWarning": "You won't be able to disable the encryption anymore. Are you sure?", + "@enableEncryptionWarning": { + "type": "String", + "placeholders": {} + }, + "encrypted": "Encrypted", + "@encrypted": { + "type": "String", + "placeholders": {} + }, + "encryption": "Encryption", + "@encryption": { + "type": "String", + "placeholders": {} + }, + "encryptionNotEnabled": "Encryption is not enabled", + "@encryptionNotEnabled": { + "type": "String", + "placeholders": {} + }, + "endedTheCall": "{senderName} ended the call", + "@endedTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "enterAnEmailAddress": "Enter an email address", + "@enterAnEmailAddress": { + "type": "String", + "placeholders": {} + }, + "homeserver": "Homeserver", + "@homeserver": {}, + "enterYourHomeserver": "Enter your homeserver", + "@enterYourHomeserver": { + "type": "String", + "placeholders": {} + }, + "errorObtainingLocation": "Error obtaining location: {error}", + "@errorObtainingLocation": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "everythingReady": "Everything ready!", + "@everythingReady": { + "type": "String", + "placeholders": {} + }, + "extremeOffensive": "Extremely offensive", + "@extremeOffensive": { + "type": "String", + "placeholders": {} + }, + "fileName": "File name", + "@fileName": { + "type": "String", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "String", + "placeholders": {} + }, + "fontSize": "Font size", + "@fontSize": { + "type": "String", + "placeholders": {} + }, + "forward": "Forward", + "@forward": { + "type": "String", + "placeholders": {} + }, + "fromJoining": "From joining", + "@fromJoining": { + "type": "String", + "placeholders": {} + }, + "fromTheInvitation": "From the invitation", + "@fromTheInvitation": { + "type": "String", + "placeholders": {} + }, + "goToTheNewRoom": "Go to the new room", + "@goToTheNewRoom": { + "type": "String", + "placeholders": {} + }, + "group": "Group", + "@group": { + "type": "String", + "placeholders": {} + }, + "chatDescription": "Chat description", + "@chatDescription": {}, + "chatDescriptionHasBeenChanged": "Chat description changed", + "@chatDescriptionHasBeenChanged": {}, + "groupIsPublic": "Group is public", + "@groupIsPublic": { + "type": "String", + "placeholders": {} + }, + "groups": "Groups", + "@groups": { + "type": "String", + "placeholders": {} + }, + "groupWith": "Group with {displayname}", + "@groupWith": { + "type": "String", + "placeholders": { + "displayname": { + "type": "String" + } + } + }, + "guestsAreForbidden": "Guests are forbidden", + "@guestsAreForbidden": { + "type": "String", + "placeholders": {} + }, + "guestsCanJoin": "Guests can join", + "@guestsCanJoin": { + "type": "String", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "{username} has withdrawn the invitation for {targetName}", + "@hasWithdrawnTheInvitationFor": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "help": "Help", + "@help": { + "type": "String", + "placeholders": {} + }, + "hideRedactedEvents": "Hide redacted events", + "@hideRedactedEvents": { + "type": "String", + "placeholders": {} + }, + "hideRedactedMessages": "Hide redacted messages", + "@hideRedactedMessages": {}, + "hideRedactedMessagesBody": "If someone redacts a message, this message won't be visible in the chat anymore.", + "@hideRedactedMessagesBody": {}, + "hideInvalidOrUnknownMessageFormats": "Hide invalid or unknown message formats", + "@hideInvalidOrUnknownMessageFormats": {}, + "howOffensiveIsThisContent": "How offensive is this content?", + "@howOffensiveIsThisContent": { + "type": "String", + "placeholders": {} + }, + "id": "ID", + "@id": { + "type": "String", + "placeholders": {} + }, + "identity": "Identity", + "@identity": { + "type": "String", + "placeholders": {} + }, + "block": "Block", + "@block": {}, + "blockedUsers": "Blocked users", + "@blockedUsers": {}, + "blockListDescription": "You can block users who are disturbing you. You won't be able to receive any messages or room invites from the users on your personal block list.", + "@blockListDescription": {}, + "blockUsername": "Ignore username", + "@blockUsername": {}, + "iHaveClickedOnLink": "I have clicked on the link", + "@iHaveClickedOnLink": { + "type": "String", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "Incorrect passphrase or recovery key", + "@incorrectPassphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "inoffensive": "Inoffensive", + "@inoffensive": { + "type": "String", + "placeholders": {} + }, + "inviteContact": "Invite contact", + "@inviteContact": { + "type": "String", + "placeholders": {} + }, + "inviteContactToGroupQuestion": "Do you want to invite {contact} to the chat \"{groupName}\"?", + "@inviteContactToGroupQuestion": {}, + "inviteContactToGroup": "Invite contact to {groupName}", + "@inviteContactToGroup": { + "type": "String", + "placeholders": { + "groupName": { + "type": "String" + } + } + }, + "noChatDescriptionYet": "No chat description created yet.", + "@noChatDescriptionYet": {}, + "tryAgain": "Try again", + "@tryAgain": {}, + "invalidServerName": "Invalid server name", + "@invalidServerName": {}, + "invited": "Invited", + "@invited": { + "type": "String", + "placeholders": {} + }, + "redactMessageDescription": "The message will be redacted for all participants in this conversation. This cannot be undone.", + "@redactMessageDescription": {}, + "optionalRedactReason": "(Optional) Reason for redacting this message...", + "@optionalRedactReason": {}, + "invitedUser": "📩 {username} invited {targetName}", + "@invitedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "invitedUsersOnly": "Invited users only", + "@invitedUsersOnly": { + "type": "String", + "placeholders": {} + }, + "inviteForMe": "Invite for me", + "@inviteForMe": { + "type": "String", + "placeholders": {} + }, + "inviteText": "{username} invited you to FluffyChat.\n1. Visit fluffychat.im and install the app \n2. Sign up or sign in \n3. Open the invite link: \n {link}", + "@inviteText": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "link": { + "type": "String" + } + } + }, + "isTyping": "is typing…", + "@isTyping": { + "type": "String", + "placeholders": {} + }, + "joinedTheChat": "👋 {username} joined the chat", + "@joinedTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "joinRoom": "Join room", + "@joinRoom": { + "type": "String", + "placeholders": {} + }, + "kicked": "👞 {username} kicked {targetName}", + "@kicked": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickedAndBanned": "🙅 {username} kicked and banned {targetName}", + "@kickedAndBanned": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickFromChat": "Kick from chat", + "@kickFromChat": { + "type": "String", + "placeholders": {} + }, + "lastActiveAgo": "Last active: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "String", + "placeholders": { + "localizedTimeShort": { + "type": "String" + } + } + }, + "leave": "Leave", + "@leave": { + "type": "String", + "placeholders": {} + }, + "leftTheChat": "Left the chat", + "@leftTheChat": { + "type": "String", + "placeholders": {} + }, + "license": "License", + "@license": { + "type": "String", + "placeholders": {} + }, + "lightTheme": "Light", + "@lightTheme": { + "type": "String", + "placeholders": {} + }, + "loadCountMoreParticipants": "Load {count} more participants", + "@loadCountMoreParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "dehydrate": "Export session and wipe device", + "@dehydrate": {}, + "dehydrateWarning": "This action cannot be undone. Ensure you safely store the backup file.", + "@dehydrateWarning": {}, + "dehydrateTor": "TOR Users: Export session", + "@dehydrateTor": {}, + "dehydrateTorLong": "For TOR users, it is recommended to export the session before closing the window.", + "@dehydrateTorLong": {}, + "hydrateTor": "TOR Users: Import session export", + "@hydrateTor": {}, + "hydrateTorLong": "Did you export your session last time on TOR? Quickly import it and continue chatting.", + "@hydrateTorLong": {}, + "hydrate": "Restore from backup file", + "@hydrate": {}, + "loadingPleaseWait": "Loading… Please wait.", + "@loadingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "loadMore": "Load more…", + "@loadMore": { + "type": "String", + "placeholders": {} + }, + "locationDisabledNotice": "Location services are disabled. Please enable them to be able to share your location.", + "@locationDisabledNotice": { + "type": "String", + "placeholders": {} + }, + "locationPermissionDeniedNotice": "Location permission denied. Please grant them to be able to share your location.", + "@locationPermissionDeniedNotice": { + "type": "String", + "placeholders": {} + }, + "login": "Login", + "@login": { + "type": "String", + "placeholders": {} + }, + "logInTo": "Log in to {homeserver}", + "@logInTo": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "logout": "Logout", + "@logout": { + "type": "String", + "placeholders": {} + }, + "memberChanges": "Member changes", + "@memberChanges": { + "type": "String", + "placeholders": {} + }, + "mention": "Mention", + "@mention": { + "type": "String", + "placeholders": {} + }, + "messages": "Messages", + "@messages": { + "type": "String", + "placeholders": {} + }, + "messagesStyle": "Messages:", + "@messagesStyle": {}, + "moderator": "Moderator", + "@moderator": { + "type": "String", + "placeholders": {} + }, + "muteChat": "Mute chat", + "@muteChat": { + "type": "String", + "placeholders": {} + }, + "needPantalaimonWarning": "Please be aware that you need Pantalaimon to use end-to-end encryption for now.", + "@needPantalaimonWarning": { + "type": "String", + "placeholders": {} + }, + "newChat": "New chat", + "@newChat": { + "type": "String", + "placeholders": {} + }, + "newMessageInFluffyChat": "💬 New message in FluffyChat", + "@newMessageInFluffyChat": { + "type": "String", + "placeholders": {} + }, + "newVerificationRequest": "New verification request!", + "@newVerificationRequest": { + "type": "String", + "placeholders": {} + }, + "next": "Next", + "@next": { + "type": "String", + "placeholders": {} + }, + "no": "No", + "@no": { + "type": "String", + "placeholders": {} + }, + "noConnectionToTheServer": "No connection to the server", + "@noConnectionToTheServer": { + "type": "String", + "placeholders": {} + }, + "noEmotesFound": "No emotes found. 😕", + "@noEmotesFound": { + "type": "String", + "placeholders": {} + }, + "noEncryptionForPublicRooms": "You can only activate encryption as soon as the room is no longer publicly accessible.", + "@noEncryptionForPublicRooms": { + "type": "String", + "placeholders": {} + }, + "noGoogleServicesWarning": "Firebase Cloud Messaging doesn't appear to be available on your device. To still receive push notifications, we recommend installing ntfy. With ntfy or another Unified Push provider you can receive push notifications in a data secure way. You can download ntfy from the PlayStore or from F-Droid.", + "@noGoogleServicesWarning": { + "type": "String", + "placeholders": {} + }, + "noMatrixServer": "{server1} is no matrix server, use {server2} instead?", + "@noMatrixServer": { + "type": "String", + "placeholders": { + "server1": { + "type": "String" + }, + "server2": { + "type": "String" + } + } + }, + "shareInviteLink": "Share invite link", + "@shareInviteLink": {}, + "scanQrCode": "Scan QR code", + "@scanQrCode": {}, + "none": "None", + "@none": { + "type": "String", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "You have not added a way to recover your password yet.", + "@noPasswordRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "noPermission": "No permission", + "@noPermission": { + "type": "String", + "placeholders": {} + }, + "noRoomsFound": "No rooms found…", + "@noRoomsFound": { + "type": "String", + "placeholders": {} + }, + "notifications": "Notifications", + "@notifications": { + "type": "String", + "placeholders": {} + }, + "notificationsEnabledForThisAccount": "Notifications enabled for this account", + "@notificationsEnabledForThisAccount": { + "type": "String", + "placeholders": {} + }, + "numUsersTyping": "{count} users are typing…", + "@numUsersTyping": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "obtainingLocation": "Obtaining location…", + "@obtainingLocation": { + "type": "String", + "placeholders": {} + }, + "offensive": "Offensive", + "@offensive": { + "type": "String", + "placeholders": {} + }, + "offline": "Offline", + "@offline": { + "type": "String", + "placeholders": {} + }, + "ok": "Ok", + "@ok": { + "type": "String", + "placeholders": {} + }, + "online": "Online", + "@online": { + "type": "String", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "Online Key Backup is enabled", + "@onlineKeyBackupEnabled": { + "type": "String", + "placeholders": {} + }, + "oopsPushError": "Oops! Unfortunately, an error occurred when setting up the push notifications.", + "@oopsPushError": { + "type": "String", + "placeholders": {} + }, + "oopsSomethingWentWrong": "Oops, something went wrong…", + "@oopsSomethingWentWrong": { + "type": "String", + "placeholders": {} + }, + "openAppToReadMessages": "Open app to read messages", + "@openAppToReadMessages": { + "type": "String", + "placeholders": {} + }, + "openCamera": "Open camera", + "@openCamera": { + "type": "String", + "placeholders": {} + }, + "openVideoCamera": "Open camera for a video", + "@openVideoCamera": { + "type": "String", + "placeholders": {} + }, + "oneClientLoggedOut": "One of your clients has been logged out", + "@oneClientLoggedOut": {}, + "addAccount": "Add account", + "@addAccount": {}, + "editBundlesForAccount": "Edit bundles for this account", + "@editBundlesForAccount": {}, + "addToBundle": "Add to bundle", + "@addToBundle": {}, + "removeFromBundle": "Remove from this bundle", + "@removeFromBundle": {}, + "bundleName": "Bundle name", + "@bundleName": {}, + "enableMultiAccounts": "(BETA) Enable multi accounts on this device", + "@enableMultiAccounts": {}, + "openInMaps": "Open in maps", + "@openInMaps": { + "type": "String", + "placeholders": {} + }, + "link": "Link", + "@link": {}, + "serverRequiresEmail": "This server needs to validate your email address for registration.", + "@serverRequiresEmail": {}, + "or": "Or", + "@or": { + "type": "String", + "placeholders": {} + }, + "participant": "Participant", + "@participant": { + "type": "String", + "placeholders": {} + }, + "passphraseOrKey": "passphrase or recovery key", + "@passphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "password": "Password", + "@password": { + "type": "String", + "placeholders": {} + }, + "passwordForgotten": "Password forgotten", + "@passwordForgotten": { + "type": "String", + "placeholders": {} + }, + "passwordHasBeenChanged": "Password has been changed", + "@passwordHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "hideMemberChangesInPublicChats": "Hide member changes in public chats", + "@hideMemberChangesInPublicChats": {}, + "hideMemberChangesInPublicChatsBody": "Do not show in the chat timeline if someone joins or leaves a public chat to improve readability.", + "@hideMemberChangesInPublicChatsBody": {}, + "overview": "Overview", + "@overview": {}, + "notifyMeFor": "Notify me for", + "@notifyMeFor": {}, + "passwordRecoverySettings": "Password recovery settings", + "@passwordRecoverySettings": {}, + "passwordRecovery": "Password recovery", + "@passwordRecovery": { + "type": "String", + "placeholders": {} + }, + "people": "People", + "@people": { + "type": "String", + "placeholders": {} + }, + "pickImage": "Pick an image", + "@pickImage": { + "type": "String", + "placeholders": {} + }, + "pin": "Pin", + "@pin": { + "type": "String", + "placeholders": {} + }, + "play": "Play {fileName}", + "@play": { + "type": "String", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "pleaseChoose": "Please choose", + "@pleaseChoose": { + "type": "String", + "placeholders": {} + }, + "pleaseChooseAPasscode": "Please choose a pass code", + "@pleaseChooseAPasscode": { + "type": "String", + "placeholders": {} + }, + "pleaseClickOnLink": "Please click on the link in the email and then proceed.", + "@pleaseClickOnLink": { + "type": "String", + "placeholders": {} + }, + "pleaseEnter4Digits": "Please enter 4 digits or leave empty to disable app lock.", + "@pleaseEnter4Digits": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterRecoveryKey": "Please enter your recovery key:", + "@pleaseEnterRecoveryKey": {}, + "pleaseEnterYourPassword": "Please enter your password", + "@pleaseEnterYourPassword": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPin": "Please enter your pin", + "@pleaseEnterYourPin": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourUsername": "Please enter your username", + "@pleaseEnterYourUsername": { + "type": "String", + "placeholders": {} + }, + "pleaseFollowInstructionsOnWeb": "Please follow the instructions on the website and tap on next.", + "@pleaseFollowInstructionsOnWeb": { + "type": "String", + "placeholders": {} + }, + "privacy": "Privacy", + "@privacy": { + "type": "String", + "placeholders": {} + }, + "publicRooms": "Public Rooms", + "@publicRooms": { + "type": "String", + "placeholders": {} + }, + "pushRules": "Push rules", + "@pushRules": { + "type": "String", + "placeholders": {} + }, + "reason": "Reason", + "@reason": { + "type": "String", + "placeholders": {} + }, + "recording": "Recording", + "@recording": { + "type": "String", + "placeholders": {} + }, + "redactedBy": "Redacted by {username}", + "@redactedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "directChat": "Direct chat", + "@directChat": {}, + "redactedByBecause": "Redacted by {username} because: \"{reason}\"", + "@redactedByBecause": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "reason": { + "type": "String" + } + } + }, + "redactedAnEvent": "{username} redacted an event", + "@redactedAnEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "redactMessage": "Redact message", + "@redactMessage": { + "type": "String", + "placeholders": {} + }, + "register": "Register", + "@register": { + "type": "String", + "placeholders": {} + }, + "reject": "Reject", + "@reject": { + "type": "String", + "placeholders": {} + }, + "rejectedTheInvitation": "{username} rejected the invitation", + "@rejectedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "rejoin": "Rejoin", + "@rejoin": { + "type": "String", + "placeholders": {} + }, + "removeAllOtherDevices": "Remove all other devices", + "@removeAllOtherDevices": { + "type": "String", + "placeholders": {} + }, + "removedBy": "Removed by {username}", + "@removedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "removeDevice": "Remove device", + "@removeDevice": { + "type": "String", + "placeholders": {} + }, + "unbanFromChat": "Unban from chat", + "@unbanFromChat": { + "type": "String", + "placeholders": {} + }, + "removeYourAvatar": "Remove your avatar", + "@removeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "replaceRoomWithNewerVersion": "Replace room with newer version", + "@replaceRoomWithNewerVersion": { + "type": "String", + "placeholders": {} + }, + "reply": "Reply", + "@reply": { + "type": "String", + "placeholders": {} + }, + "reportMessage": "Report message", + "@reportMessage": { + "type": "String", + "placeholders": {} + }, + "requestPermission": "Request permission", + "@requestPermission": { + "type": "String", + "placeholders": {} + }, + "roomHasBeenUpgraded": "Room has been upgraded", + "@roomHasBeenUpgraded": { + "type": "String", + "placeholders": {} + }, + "roomVersion": "Room version", + "@roomVersion": { + "type": "String", + "placeholders": {} + }, + "saveFile": "Save file", + "@saveFile": { + "type": "String", + "placeholders": {} + }, + "search": "Search", + "@search": { + "type": "String", + "placeholders": {} + }, + "security": "Security", + "@security": { + "type": "String", + "placeholders": {} + }, + "recoveryKey": "Recovery key", + "@recoveryKey": {}, + "recoveryKeyLost": "Recovery key lost?", + "@recoveryKeyLost": {}, + "seenByUser": "Seen by {username}", + "@seenByUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "send": "Send", + "@send": { + "type": "String", + "placeholders": {} + }, + "sendAMessage": "Send a message", + "@sendAMessage": { + "type": "String", + "placeholders": {} + }, + "sendAsText": "Send as text", + "@sendAsText": { + "type": "String" + }, + "sendAudio": "Send audio", + "@sendAudio": { + "type": "String", + "placeholders": {} + }, + "sendFile": "Send file", + "@sendFile": { + "type": "String", + "placeholders": {} + }, + "sendImage": "Send image", + "@sendImage": { + "type": "String", + "placeholders": {} + }, + "sendImages": "Send {count} image", + "@sendImages": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "sendMessages": "Send messages", + "@sendMessages": { + "type": "String", + "placeholders": {} + }, + "sendOriginal": "Send original", + "@sendOriginal": { + "type": "String", + "placeholders": {} + }, + "sendSticker": "Send sticker", + "@sendSticker": { + "type": "String", + "placeholders": {} + }, + "sendVideo": "Send video", + "@sendVideo": { + "type": "String", + "placeholders": {} + }, + "sentAFile": "📁 {username} sent a file", + "@sentAFile": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAnAudio": "🎤 {username} sent an audio", + "@sentAnAudio": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAPicture": "🖼️ {username} sent a picture", + "@sentAPicture": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentASticker": "😊 {username} sent a sticker", + "@sentASticker": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAVideo": "🎥 {username} sent a video", + "@sentAVideo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentCallInformations": "{senderName} sent call information", + "@sentCallInformations": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "separateChatTypes": "Separate Direct Chats and Groups", + "@separateChatTypes": { + "type": "String", + "placeholders": {} + }, + "setAsCanonicalAlias": "Set as main alias", + "@setAsCanonicalAlias": { + "type": "String", + "placeholders": {} + }, + "setCustomEmotes": "Set custom emotes", + "@setCustomEmotes": { + "type": "String", + "placeholders": {} + }, + "setChatDescription": "Set chat description", + "@setChatDescription": {}, + "setInvitationLink": "Set invitation link", + "@setInvitationLink": { + "type": "String", + "placeholders": {} + }, + "setPermissionsLevel": "Set permissions level", + "@setPermissionsLevel": { + "type": "String", + "placeholders": {} + }, + "setStatus": "Set status", + "@setStatus": { + "type": "String", + "placeholders": {} + }, + "settings": "Settings", + "@settings": { + "type": "String", + "placeholders": {} + }, + "share": "Share", + "@share": { + "type": "String", + "placeholders": {} + }, + "sharedTheLocation": "{username} shared their location", + "@sharedTheLocation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "shareLocation": "Share location", + "@shareLocation": { + "type": "String", + "placeholders": {} + }, + "showPassword": "Show password", + "@showPassword": { + "type": "String", + "placeholders": {} + }, + "presenceStyle": "Presence:", + "@presenceStyle": { + "type": "String", + "placeholders": {} + }, + "presencesToggle": "Show status messages from other users", + "@presencesToggle": { + "type": "String", + "placeholders": {} + }, + "singlesignon": "Single Sign on", + "@singlesignon": { + "type": "String", + "placeholders": {} + }, + "skip": "Skip", + "@skip": { + "type": "String", + "placeholders": {} + }, + "sourceCode": "Source code", + "@sourceCode": { + "type": "String", + "placeholders": {} + }, + "spaceIsPublic": "Space is public", + "@spaceIsPublic": { + "type": "String", + "placeholders": {} + }, + "spaceName": "Space name", + "@spaceName": { + "type": "String", + "placeholders": {} + }, + "startedACall": "{senderName} started a call", + "@startedACall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "startFirstChat": "Start your first chat", + "@startFirstChat": {}, + "status": "Status", + "@status": { + "type": "String", + "placeholders": {} + }, + "statusExampleMessage": "How are you today?", + "@statusExampleMessage": { + "type": "String", + "placeholders": {} + }, + "submit": "Submit", + "@submit": { + "type": "String", + "placeholders": {} + }, + "synchronizingPleaseWait": "Synchronizing… Please wait.", + "@synchronizingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "synchronizingPleaseWaitCounter": " Synchronizing… ({percentage}%)", + "@synchronizingPleaseWaitCounter": { + "type": "String", + "placeholders": { + "percentage": { + "type": "String" + } + } + }, + "systemTheme": "System", + "@systemTheme": { + "type": "String", + "placeholders": {} + }, + "theyDontMatch": "They Don't Match", + "@theyDontMatch": { + "type": "String", + "placeholders": {} + }, + "theyMatch": "They Match", + "@theyMatch": { + "type": "String", + "placeholders": {} + }, + "title": "FluffyChat", + "@title": { + "description": "Title for the application", + "type": "String", + "placeholders": {} + }, + "toggleFavorite": "Toggle Favorite", + "@toggleFavorite": { + "type": "String", + "placeholders": {} + }, + "toggleMuted": "Toggle Muted", + "@toggleMuted": { + "type": "String", + "placeholders": {} + }, + "toggleUnread": "Mark Read/Unread", + "@toggleUnread": { + "type": "String", + "placeholders": {} + }, + "tooManyRequestsWarning": "Too many requests. Please try again later!", + "@tooManyRequestsWarning": { + "type": "String", + "placeholders": {} + }, + "transferFromAnotherDevice": "Transfer from another device", + "@transferFromAnotherDevice": { + "type": "String", + "placeholders": {} + }, + "tryToSendAgain": "Try to send again", + "@tryToSendAgain": { + "type": "String", + "placeholders": {} + }, + "unavailable": "Unavailable", + "@unavailable": { + "type": "String", + "placeholders": {} + }, + "unbannedUser": "{username} unbanned {targetName}", + "@unbannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "unblockDevice": "Unblock Device", + "@unblockDevice": { + "type": "String", + "placeholders": {} + }, + "unknownDevice": "Unknown device", + "@unknownDevice": { + "type": "String", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "Unknown encryption algorithm", + "@unknownEncryptionAlgorithm": { + "type": "String", + "placeholders": {} + }, + "unknownEvent": "Unknown event '{type}'", + "@unknownEvent": { + "type": "String", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "unmuteChat": "Unmute chat", + "@unmuteChat": { + "type": "String", + "placeholders": {} + }, + "unpin": "Unpin", + "@unpin": { + "type": "String", + "placeholders": {} + }, + "unreadChats": "{unreadCount, plural, =1{1 unread chat} other{{unreadCount} unread chats}}", + "@unreadChats": { + "type": "String", + "placeholders": { + "unreadCount": { + "type": "int" + } + } + }, + "userAndOthersAreTyping": "{username} and {count} others are typing…", + "@userAndOthersAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "userAndUserAreTyping": "{username} and {username2} are typing…", + "@userAndUserAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "username2": { + "type": "String" + } + } + }, + "userIsTyping": "{username} is typing…", + "@userIsTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "userLeftTheChat": "🚪 {username} left the chat", + "@userLeftTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "username": "Username", + "@username": { + "type": "String", + "placeholders": {} + }, + "userSentUnknownEvent": "{username} sent a {type} event", + "@userSentUnknownEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "type": { + "type": "String" + } + } + }, + "unverified": "Unverified", + "@unverified": {}, + "verified": "Verified", + "@verified": { + "type": "String", + "placeholders": {} + }, + "verify": "Verify", + "@verify": { + "type": "String", + "placeholders": {} + }, + "verifyStart": "Start Verification", + "@verifyStart": { + "type": "String", + "placeholders": {} + }, + "verifySuccess": "You successfully verified!", + "@verifySuccess": { + "type": "String", + "placeholders": {} + }, + "verifyTitle": "Verifying other account", + "@verifyTitle": { + "type": "String", + "placeholders": {} + }, + "videoCall": "Video call", + "@videoCall": { + "type": "String", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "Visibility of the chat history", + "@visibilityOfTheChatHistory": { + "type": "String", + "placeholders": {} + }, + "visibleForAllParticipants": "Visible for all participants", + "@visibleForAllParticipants": { + "type": "String", + "placeholders": {} + }, + "visibleForEveryone": "Visible for everyone", + "@visibleForEveryone": { + "type": "String", + "placeholders": {} + }, + "voiceMessage": "Voice message", + "@voiceMessage": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "Waiting for partner to accept the request…", + "@waitingPartnerAcceptRequest": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerEmoji": "Waiting for partner to accept the emoji…", + "@waitingPartnerEmoji": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerNumbers": "Waiting for partner to accept the numbers…", + "@waitingPartnerNumbers": { + "type": "String", + "placeholders": {} + }, + "wallpaper": "Wallpaper:", + "@wallpaper": { + "type": "String", + "placeholders": {} + }, + "warning": "Warning!", + "@warning": { + "type": "String", + "placeholders": {} + }, + "weSentYouAnEmail": "We sent you an email", + "@weSentYouAnEmail": { + "type": "String", + "placeholders": {} + }, + "whoCanPerformWhichAction": "Who can perform which action", + "@whoCanPerformWhichAction": { + "type": "String", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "Who is allowed to join this group", + "@whoIsAllowedToJoinThisGroup": { + "type": "String", + "placeholders": {} + }, + "whyDoYouWantToReportThis": "Why do you want to report this?", + "@whyDoYouWantToReportThis": { + "type": "String", + "placeholders": {} + }, + "wipeChatBackup": "Wipe your chat backup to create a new recovery key?", + "@wipeChatBackup": { + "type": "String", + "placeholders": {} + }, + "withTheseAddressesRecoveryDescription": "With these addresses you can recover your password.", + "@withTheseAddressesRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "writeAMessage": "Write a message…", + "@writeAMessage": { + "type": "String", + "placeholders": {} + }, + "yes": "Yes", + "@yes": { + "type": "String", + "placeholders": {} + }, + "you": "You", + "@you": { + "type": "String", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "You are no longer participating in this chat", + "@youAreNoLongerParticipatingInThisChat": { + "type": "String", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "You have been banned from this chat", + "@youHaveBeenBannedFromThisChat": { + "type": "String", + "placeholders": {} + }, + "yourPublicKey": "Your public key", + "@yourPublicKey": { + "type": "String", + "placeholders": {} + }, + "messageInfo": "Message info", + "@messageInfo": {}, + "time": "Time", + "@time": {}, + "messageType": "Message Type", + "@messageType": {}, + "sender": "Sender", + "@sender": {}, + "openGallery": "Open gallery", + "@openGallery": {}, + "removeFromSpace": "Remove from space", + "@removeFromSpace": {}, + "addToSpaceDescription": "Select a space to add this chat to it.", + "@addToSpaceDescription": {}, + "start": "Start", + "@start": {}, + "pleaseEnterRecoveryKeyDescription": "To unlock your old messages, please enter your recovery key that has been generated in a previous session. Your recovery key is NOT your password.", + "@pleaseEnterRecoveryKeyDescription": {}, + "publish": "Publish", + "@publish": {}, + "videoWithSize": "Video ({size})", + "@videoWithSize": { + "type": "String", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "openChat": "Open Chat", + "@openChat": {}, + "markAsRead": "Mark as read", + "@markAsRead": {}, + "reportUser": "Report user", + "@reportUser": {}, + "dismiss": "Dismiss", + "@dismiss": {}, + "reactedWith": "{sender} reacted with {reaction}", + "@reactedWith": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "reaction": { + "type": "String" + } + } + }, + "pinMessage": "Pin to room", + "@pinMessage": {}, + "confirmEventUnpin": "Are you sure to permanently unpin the event?", + "@confirmEventUnpin": {}, + "emojis": "Emojis", + "@emojis": {}, + "placeCall": "Place call", + "@placeCall": {}, + "voiceCall": "Voice call", + "@voiceCall": {}, + "unsupportedAndroidVersion": "Unsupported Android version", + "@unsupportedAndroidVersion": {}, + "unsupportedAndroidVersionLong": "This feature requires a newer Android version. Please check for updates or Lineage OS support.", + "@unsupportedAndroidVersionLong": {}, + "videoCallsBetaWarning": "Please note that video calls are currently in beta. They might not work as expected or work at all on all platforms.", + "@videoCallsBetaWarning": {}, + "experimentalVideoCalls": "Experimental video calls", + "@experimentalVideoCalls": {}, + "emailOrUsername": "Email or username", + "@emailOrUsername": {}, + "indexedDbErrorTitle": "Private mode issues", + "@indexedDbErrorTitle": {}, + "indexedDbErrorLong": "The message storage is unfortunately not enabled in private mode by default.\nPlease visit\n - about:config\n - set dom.indexedDB.privateBrowsing.enabled to true\nOtherwise, it is not possible to run FluffyChat.", + "@indexedDbErrorLong": {}, + "switchToAccount": "Switch to account {number}", + "@switchToAccount": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "nextAccount": "Next account", + "@nextAccount": {}, + "previousAccount": "Previous account", + "@previousAccount": {}, + "addWidget": "Add widget", + "@addWidget": {}, + "widgetVideo": "Video", + "@widgetVideo": {}, + "widgetEtherpad": "Text note", + "@widgetEtherpad": {}, + "widgetJitsi": "Jitsi Meet", + "@widgetJitsi": {}, + "widgetCustom": "Custom", + "@widgetCustom": {}, + "widgetName": "Name", + "@widgetName": {}, + "widgetUrlError": "This is not a valid URL.", + "@widgetUrlError": {}, + "widgetNameError": "Please provide a display name.", + "@widgetNameError": {}, + "errorAddingWidget": "Error adding the widget.", + "@errorAddingWidget": {}, + "youRejectedTheInvitation": "You rejected the invitation", + "@youRejectedTheInvitation": {}, + "youJoinedTheChat": "You joined the chat", + "@youJoinedTheChat": {}, + "youAcceptedTheInvitation": "👍 You accepted the invitation", + "@youAcceptedTheInvitation": {}, + "youBannedUser": "You banned {user}", + "@youBannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youHaveWithdrawnTheInvitationFor": "You have withdrawn the invitation for {user}", + "@youHaveWithdrawnTheInvitationFor": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youInvitedToBy": "📩 You have been invited via link to:\n{alias}", + "@youInvitedToBy": { + "placeholders": { + "alias": { + "type": "String" + } + } + }, + "youInvitedBy": "📩 You have been invited by {user}", + "@youInvitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "invitedBy": "📩 Invited by {user}", + "@invitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youInvitedUser": "📩 You invited {user}", + "@youInvitedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youKicked": "👞 You kicked {user}", + "@youKicked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youKickedAndBanned": "🙅 You kicked and banned {user}", + "@youKickedAndBanned": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youUnbannedUser": "You unbanned {user}", + "@youUnbannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "hasKnocked": "🚪 {user} has knocked", + "@hasKnocked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "usersMustKnock": "Users must knock", + "@usersMustKnock": {}, + "noOneCanJoin": "No one can join", + "@noOneCanJoin": {}, + "userWouldLikeToChangeTheChat": "{user} would like to join the chat.", + "@userWouldLikeToChangeTheChat": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "noPublicLinkHasBeenCreatedYet": "No public link has been created yet", + "@noPublicLinkHasBeenCreatedYet": {}, + "knock": "Knock", + "@knock": {}, + "users": "Users", + "@users": {}, + "unlockOldMessages": "Unlock old messages", + "@unlockOldMessages": {}, + "storeInSecureStorageDescription": "Store the recovery key in the secure storage of this device.", + "@storeInSecureStorageDescription": {}, + "saveKeyManuallyDescription": "Save this key manually by triggering the system share dialog or clipboard.", + "@saveKeyManuallyDescription": {}, + "storeInAndroidKeystore": "Store in Android KeyStore", + "@storeInAndroidKeystore": {}, + "storeInAppleKeyChain": "Store in Apple KeyChain", + "@storeInAppleKeyChain": {}, + "storeSecurlyOnThisDevice": "Store securely on this device", + "@storeSecurlyOnThisDevice": {}, + "countFiles": "{count} files", + "@countFiles": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "user": "User", + "@user": {}, + "custom": "Custom", + "@custom": {}, + "foregroundServiceRunning": "This notification appears when the foreground service is running.", + "@foregroundServiceRunning": {}, + "screenSharingTitle": "screen sharing", + "@screenSharingTitle": {}, + "screenSharingDetail": "You are sharing your screen in FuffyChat", + "@screenSharingDetail": {}, + "callingPermissions": "Calling permissions", + "@callingPermissions": {}, + "callingAccount": "Calling account", + "@callingAccount": {}, + "callingAccountDetails": "Allows FluffyChat to use the native android dialer app.", + "@callingAccountDetails": {}, + "appearOnTop": "Appear on top", + "@appearOnTop": {}, + "appearOnTopDetails": "Allows the app to appear on top (not needed if you already have Fluffychat setup as a calling account)", + "@appearOnTopDetails": {}, + "otherCallingPermissions": "Microphone, camera and other FluffyChat permissions", + "@otherCallingPermissions": {}, + "whyIsThisMessageEncrypted": "Why is this message unreadable?", + "@whyIsThisMessageEncrypted": {}, + "noKeyForThisMessage": "This can happen if the message was sent before you have signed in to your account at this device.\n\nIt is also possible that the sender has blocked your device or something went wrong with the internet connection.\n\nAre you able to read the message on another session? Then you can transfer the message from it! Go to Settings > Devices and make sure that your devices have verified each other. When you open the room the next time and both sessions are in the foreground, the keys will be transmitted automatically.\n\nDo you not want to lose the keys when logging out or switching devices? Make sure that you have enabled the chat backup in the settings.", + "@noKeyForThisMessage": {}, + "newGroup": "New group", + "@newGroup": {}, + "newSpace": "New space", + "@newSpace": {}, + "enterSpace": "Enter space", + "@enterSpace": {}, + "enterRoom": "Enter room", + "@enterRoom": {}, + "allSpaces": "All spaces", + "@allSpaces": {}, + "numChats": "{number} chats", + "@numChats": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "hideUnimportantStateEvents": "Hide unimportant state events", + "@hideUnimportantStateEvents": {}, + "hidePresences": "Hide Status List?", + "@hidePresences": {}, + "doNotShowAgain": "Do not show again", + "@doNotShowAgain": {}, + "wasDirectChatDisplayName": "Empty chat (was {oldDisplayName})", + "@wasDirectChatDisplayName": { + "type": "String", + "placeholders": { + "oldDisplayName": { + "type": "String" + } + } + }, + "newSpaceDescription": "Spaces allows you to consolidate your chats and build private or public communities.", + "@newSpaceDescription": {}, + "encryptThisChat": "Encrypt this chat", + "@encryptThisChat": {}, + "disableEncryptionWarning": "For security reasons you can not disable encryption in a chat, where it has been enabled before.", + "@disableEncryptionWarning": {}, + "sorryThatsNotPossible": "Sorry... that is not possible", + "@sorryThatsNotPossible": {}, + "deviceKeys": "Device keys:", + "@deviceKeys": {}, + "reopenChat": "Reopen chat", + "@reopenChat": {}, + "noBackupWarning": "Warning! Without enabling chat backup, you will lose access to your encrypted messages. It is highly recommended to enable the chat backup first before logging out.", + "@noBackupWarning": {}, + "noOtherDevicesFound": "No other devices found", + "@noOtherDevicesFound": {}, + "fileIsTooBigForServer": "Unable to send! The server only supports attachments up to {max}.", + "@fileIsTooBigForServer": { + "type": "String", + "placeholders": { + "max": { + "type": "String" + } + } + }, + "fileHasBeenSavedAt": "File has been saved at {path}", + "@fileHasBeenSavedAt": { + "type": "String", + "placeholders": { + "path": { + "type": "String" + } + } + }, + "jumpToLastReadMessage": "Jump to last read message", + "@jumpToLastReadMessage": {}, + "readUpToHere": "Read up to here", + "@readUpToHere": {}, + "jump": "Jump", + "@jump": {}, + "openLinkInBrowser": "Open link in browser", + "@openLinkInBrowser": {}, + "reportErrorDescription": "😭 Oh no. Something went wrong. If you want, you can report this bug to the developers.", + "@reportErrorDescription": {}, + "report": "report", + "@report": {}, + "signInWithPassword": "Sign in with password", + "@signInWithPassword": {}, + "pleaseTryAgainLaterOrChooseDifferentServer": "Please try again later or choose a different server.", + "@pleaseTryAgainLaterOrChooseDifferentServer": {}, + "signInWith": "Sign in with {provider}", + "@signInWith": { + "type": "String", + "placeholders": { + "provider": { + "type": "String" + } + } + }, + "profileNotFound": "The user could not be found on the server. Maybe there is a connection problem or the user doesn't exist.", + "@profileNotFound": {}, + "setTheme": "Set theme:", + "@setTheme": {}, + "setColorTheme": "Set color theme:", + "@setColorTheme": {}, + "invite": "Invite", + "@invite": {}, + "inviteGroupChat": "📨 Group chat invite", + "@inviteGroupChat": {}, + "invitePrivateChat": "📨 Private chat invite", + "@invitePrivateChat": {}, + "invalidInput": "Invalid input!", + "@invalidInput": {}, + "wrongPinEntered": "Wrong pin entered! Try again in {seconds} seconds...", + "@wrongPinEntered": { + "type": "String", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "pleaseEnterANumber": "Please enter a number greater than 0", + "@pleaseEnterANumber": {}, + "archiveRoomDescription": "The chat will be moved to the archive. Other users will be able to see that you have left the chat.", + "@archiveRoomDescription": {}, + "roomUpgradeDescription": "The chat will then be recreated with the new room version. All participants will be notified that they need to switch to the new chat. You can find out more about room versions at https://spec.matrix.org/latest/rooms/", + "@roomUpgradeDescription": {}, + "removeDevicesDescription": "You will be logged out of this device and will no longer be able to receive messages.", + "@removeDevicesDescription": {}, + "banUserDescription": "The user will be banned from the chat and will not be able to enter the chat again until they are unbanned.", + "@banUserDescription": {}, + "unbanUserDescription": "The user will be able to enter the chat again if they try.", + "@unbanUserDescription": {}, + "kickUserDescription": "The user is kicked out of the chat but not banned. In public chats, the user can rejoin at any time.", + "@kickUserDescription": {}, + "makeAdminDescription": "Once you make this user admin, you may not be able to undo this as they will then have the same permissions as you.", + "@makeAdminDescription": {}, + "pushNotificationsNotAvailable": "Push notifications not available", + "@pushNotificationsNotAvailable": {}, + "learnMore": "Learn more", + "@learnMore": {}, + "yourGlobalUserIdIs": "Your global user-ID is: ", + "@yourGlobalUserIdIs": {}, + "noUsersFoundWithQuery": "Unfortunately no user could be found with \"{query}\". Please check whether you made a typo.", + "@noUsersFoundWithQuery": { + "type": "String", + "placeholders": { + "query": { + "type": "String" + } + } + }, + "knocking": "Knocking", + "@knocking": {}, + "chatCanBeDiscoveredViaSearchOnServer": "Chat can be discovered via the search on {server}", + "@chatCanBeDiscoveredViaSearchOnServer": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "searchChatsRooms": "Search for #chats, @users...", + "@searchChatsRooms": {}, + "nothingFound": "Nothing found...", + "@nothingFound": {}, + "groupName": "Group name", + "@groupName": {}, + "createGroupAndInviteUsers": "Create a group and invite users", + "@createGroupAndInviteUsers": {}, + "groupCanBeFoundViaSearch": "Group can be found via search", + "@groupCanBeFoundViaSearch": {}, + "wrongRecoveryKey": "Sorry... this does not seem to be the correct recovery key.", + "@wrongRecoveryKey": {}, + "startConversation": "Start conversation", + "@startConversation": {}, + "commandHint_sendraw": "Send raw json", + "@commandHint_sendraw": {}, + "databaseMigrationTitle": "Database is optimized", + "@databaseMigrationTitle": {}, + "databaseMigrationBody": "Please wait. This may take a moment.", + "@databaseMigrationBody": {}, + "leaveEmptyToClearStatus": "Leave empty to clear your status.", + "@leaveEmptyToClearStatus": {}, + "select": "Select", + "@select": {}, + "searchForUsers": "Search for @users...", + "@searchForUsers": {}, + "pleaseEnterYourCurrentPassword": "Please enter your current password", + "@pleaseEnterYourCurrentPassword": {}, + "newPassword": "New password", + "@newPassword": {}, + "pleaseChooseAStrongPassword": "Please choose a strong password", + "@pleaseChooseAStrongPassword": {}, + "passwordsDoNotMatch": "Passwords do not match", + "@passwordsDoNotMatch": {}, + "passwordIsWrong": "Your entered password is wrong", + "@passwordIsWrong": {}, + "publicLink": "Public link", + "@publicLink": {}, + "publicChatAddresses": "Public chat addresses", + "@publicChatAddresses": {}, + "createNewAddress": "Create new address", + "@createNewAddress": {}, + "joinSpace": "Join space", + "@joinSpace": {}, + "publicSpaces": "Public spaces", + "@publicSpaces": {}, + "addChatOrSubSpace": "Add chat or sub space", + "@addChatOrSubSpace": {}, + "subspace": "Subspace", + "@subspace": {}, + "decline": "Decline", + "@decline": {}, + "thisDevice": "This device:", + "@thisDevice": {}, + "initAppError": "An error occured while init the app", + "@initAppError": {}, + "userRole": "User role", + "@userRole": {}, + "minimumPowerLevel": "{level} is the minimum power level.", + "@minimumPowerLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "String" + } + } + }, + "searchIn": "Search in chat \"{chat}\"...", + "@searchIn": { + "type": "String", + "placeholders": { + "chat": { + "type": "String" + } + } + }, + "searchMore": "Search more...", + "@searchMore": {}, + "gallery": "Gallery", + "@gallery": {}, + "files": "Files", + "@files": {}, + "databaseBuildErrorBody": "Unable to build the SQlite database. The app tries to use the legacy database for now. Please report this error to the developers at {url}. The error message is: {error}", + "@databaseBuildErrorBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "sessionLostBody": "Your session is lost. Please report this error to the developers at {url}. The error message is: {error}", + "@sessionLostBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "restoreSessionBody": "The app now tries to restore your session from the backup. Please report this error to the developers at {url}. The error message is: {error}", + "@restoreSessionBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "forwardMessageTo": "Forward message to {roomName}?", + "@forwardMessageTo": { + "type": "String", + "placeholders": { + "roomName": { + "type": "String" + } + } + }, + "sendReadReceipts": "Send read receipts", + "@sendReadReceipts": {}, + "sendTypingNotificationsDescription": "Other participants in a chat can see when you are typing a new message.", + "@sendTypingNotificationsDescription": {}, + "sendReadReceiptsDescription": "Other participants in a chat can see when you have read a message.", + "@sendReadReceiptsDescription": {}, + "formattedMessages": "Formatted messages", + "@formattedMessages": {}, + "formattedMessagesDescription": "Display rich message content like bold text using markdown.", + "@formattedMessagesDescription": {}, + "verifyOtherUser": "🔐 Verify other user", + "@verifyOtherUser": {}, + "verifyOtherUserDescription": "If you verify another user, you can be sure that you know who you are really writing to. 💪\n\nWhen you start a verification, you and the other user will see a popup in the app. There you will then see a series of emojis or numbers that you have to compare with each other.\n\nThe best way to do this is to meet up or start a video call. 👭", + "@verifyOtherUserDescription": {}, + "verifyOtherDevice": "🔐 Verify other device", + "@verifyOtherDevice": {}, + "verifyOtherDeviceDescription": "When you verify another device, those devices can exchange keys, increasing your overall security. 💪 When you start a verification, a popup will appear in the app on both devices. There you will then see a series of emojis or numbers that you have to compare with each other. It's best to have both devices handy before you start the verification. 🤳", + "@verifyOtherDeviceDescription": {}, + "acceptedKeyVerification": "{sender} accepted key verification", + "@acceptedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "canceledKeyVerification": "{sender} canceled key verification", + "@canceledKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "completedKeyVerification": "{sender} completed key verification", + "@completedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "isReadyForKeyVerification": "{sender} is ready for key verification", + "@isReadyForKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "requestedKeyVerification": "{sender} requested key verification", + "@requestedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "startedKeyVerification": "{sender} started key verification", + "@startedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "transparent": "Transparent", + "@transparent": {}, + "incomingMessages": "Incoming messages", + "@incomingMessages": {}, + "stickers": "Stickers", + "@stickers": {}, + "discover": "Discover", + "@discover": {}, + "commandHint_ignore": "Ignore the given matrix ID", + "@commandHint_ignore": {}, + "commandHint_unignore": "Unignore the given matrix ID", + "@commandHint_unignore": {}, + "unreadChatsInApp": "{appname}: {unread} unread chats", + "@unreadChatsInApp": { + "type": "String", + "placeholders": { + "appname": { + "type": "String" + }, + "unread": { + "type": "String" + } + } + }, + "noDatabaseEncryption": "Database encryption is not supported on this platform", + "@noDatabaseEncryption": {}, + "thereAreCountUsersBlocked": "Right now there are {count} users blocked.", + "@thereAreCountUsersBlocked": { + "type": "String", + "count": {} + }, + "restricted": "Restricted", + "@restricted": {}, + "knockRestricted": "Knock restricted", + "@knockRestricted": {}, + "goToSpace": "Go to space: {space}", + "@goToSpace": { + "type": "String", + "space": {} + }, + "markAsUnread": "Mark as unread", + "@markAsUnread": {}, + "userLevel": "{level} - User", + "@userLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "moderatorLevel": "{level} - Moderator", + "@moderatorLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "adminLevel": "{level} - Admin", + "@adminLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "changeGeneralChatSettings": "Change general chat settings", + "@changeGeneralChatSettings": {}, + "inviteOtherUsers": "Invite other users to this chat", + "@inviteOtherUsers": {}, + "changeTheChatPermissions": "Change the chat permissions", + "@changeTheChatPermissions": {}, + "changeTheVisibilityOfChatHistory": "Change the visibility of the chat history", + "@changeTheVisibilityOfChatHistory": {}, + "changeTheCanonicalRoomAlias": "Change the main public chat address", + "@changeTheCanonicalRoomAlias": {}, + "sendRoomNotifications": "Send a @room notifications", + "@sendRoomNotifications": {}, + "changeTheDescriptionOfTheGroup": "Change the description of the chat", + "@changeTheDescriptionOfTheGroup": {}, + "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": {}, + "updateInstalled": "🎉 Update {version} installed!", + "@updateInstalled": { + "type": "String", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "changelog": "Changelog", + "@changelog": {}, + "sendCanceled": "Sending canceled", + "@sendCanceled": {}, + "loginWithMatrixId": "Login with Matrix-ID", + "@loginWithMatrixId": {}, + "discoverHomeservers": "Discover homeservers", + "@discoverHomeservers": {}, + "whatIsAHomeserver": "What is a homeserver?", + "@whatIsAHomeserver": {}, + "homeserverDescription": "All your data is stored on the homeserver, just like an email provider. You can choose which homeserver you want to use, while you can still communicate with everyone. Learn more at at https://matrix.org.", + "@homeserverDescription": {}, + "doesNotSeemToBeAValidHomeserver": "Doesn't seem to be a compatible homeserver. Wrong URL?", + "@doesNotSeemToBeAValidHomeserver": {}, + "calculatingFileSize": "Calculating file size...", + "@calculatingFileSize": {}, + "prepareSendingAttachment": "Prepare sending attachment...", + "@prepareSendingAttachment": {}, + "sendingAttachment": "Sending attachment...", + "@sendingAttachment": {}, + "generatingVideoThumbnail": "Generating video thumbnail...", + "@generatingVideoThumbnail": {}, + "compressVideo": "Compressing video...", + "@compressVideo": {}, + "sendingAttachmentCountOfCount": "Sending attachment {index} of {length}...", + "@sendingAttachmentCountOfCount": { + "type": "integer", + "placeholders": { + "index": { + "type": "int" + }, + "length": { + "type": "int" + } + } + }, + "serverLimitReached": "Server limit reached! Waiting {seconds} seconds...", + "@serverLimitReached": { + "type": "integer", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "oneOfYourDevicesIsNotVerified": "One of your devices is not verified", + "@oneOfYourDevicesIsNotVerified": {}, + "noticeChatBackupDeviceVerification": "Note: When you connect all your devices to the chat backup, they are automatically verified.", + "@noticeChatBackupDeviceVerification": {}, + "continueText": "Continue", + "@continueText": {}, + "welcomeText": "Hey Hey 👋 This is FluffyChat. You can sign in to any homeserver, which is compatible with https://matrix.org. And then chat with anyone. It's a huge decentralized messaging network!", + "@welcomeText": {}, + "blur": "Blur:", + "@blur": {}, + "opacity": "Opacity:", + "@opacity": {}, + "setWallpaper": "Set wallpaper", + "@setWallpaper": {}, + "manageAccount": "Manage account", + "@manageAccount": {}, + "noContactInformationProvided": "Server does not provide any valid contact information", + "@noContactInformationProvided": {}, + "contactServerAdmin": "Contact server admin", + "@contactServerAdmin": {}, + "contactServerSecurity": "Contact server security", + "@contactServerSecurity": {}, + "supportPage": "Support page", + "@supportPage": {}, + "serverInformation": "Server information:", + "@serverInformation": {}, + "name": "Name", + "@name": {}, + "version": "Version", + "@version": {}, + "website": "Website", + "@website": {}, + "compress": "Compress", + "@compress": {}, + "boldText": "Bold text", + "@boldText": {}, + "italicText": "Italic text", + "@italicText": {}, + "strikeThrough": "Strikethrough", + "@strikeThrough": {}, + "pleaseFillOut": "Please fill out", + "@pleaseFillOut": {}, + "invalidUrl": "Invalid url", + "@invalidUrl": {}, + "addLink": "Add link", + "@addLink": {}, + "unableToJoinChat": "Unable to join chat. Maybe the other party has already closed the conversation.", + "@unableToJoinChat": {}, + "previous": "Previous", + "@previous": {}, + "otherPartyNotLoggedIn": "The other party is currently not logged in and therefore cannot receive messages!", + "@otherPartyNotLoggedIn": {}, + "appWantsToUseForLogin": "Use '{server}' to log in", + "@appWantsToUseForLogin": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "appWantsToUseForLoginDescription": "You hereby allow the app and website to share information about you.", + "@appWantsToUseForLoginDescription": {}, + "open": "Open", + "@open": {}, + "waitingForServer": "Waiting for server...", + "@waitingForServer": {}, + "appIntroduction": "FluffyChat lets you chat with your friends across different messengers. Learn more at https://matrix.org or just tap *Continue*.", + "@appIntroduction": {}, + "newChatRequest": "📩 New chat request", + "@newChatRequest": {}, + "contentNotificationSettings": "Content notification settings", + "@contentNotificationSettings": {}, + "generalNotificationSettings": "General notification settings", + "@generalNotificationSettings": {}, + "roomNotificationSettings": "Room notification settings", + "@roomNotificationSettings": {}, + "userSpecificNotificationSettings": "User specific notification settings", + "@userSpecificNotificationSettings": {}, + "otherNotificationSettings": "Other notification settings", + "@otherNotificationSettings": {}, + "notificationRuleContainsUserName": "Contains User Name", + "@notificationRuleContainsUserName": {}, + "notificationRuleContainsUserNameDescription": "Notifies the user when a message contains their username.", + "@notificationRuleContainsUserNameDescription": {}, + "notificationRuleMaster": "Mute all notifications", + "@notificationRuleMaster": {}, + "notificationRuleMasterDescription": "Overrides all other rules and disables all notifications.", + "@notificationRuleMasterDescription": {}, + "notificationRuleSuppressNotices": "Suppress Automated Messages", + "@notificationRuleSuppressNotices": {}, + "notificationRuleSuppressNoticesDescription": "Suppresses notifications from automated clients like bots.", + "@notificationRuleSuppressNoticesDescription": {}, + "notificationRuleInviteForMe": "Invite for Me", + "@notificationRuleInviteForMe": {}, + "notificationRuleInviteForMeDescription": "Notifies the user when they are invited to a room.", + "@notificationRuleInviteForMeDescription": {}, + "notificationRuleMemberEvent": "Member Event", + "@notificationRuleMemberEvent": {}, + "notificationRuleMemberEventDescription": "Suppresses notifications for membership events.", + "@notificationRuleMemberEventDescription": {}, + "notificationRuleIsUserMention": "User Mention", + "@notificationRuleIsUserMention": {}, + "notificationRuleIsUserMentionDescription": "Notifies the user when they are directly mentioned in a message.", + "@notificationRuleIsUserMentionDescription": {}, + "notificationRuleContainsDisplayName": "Contains Display Name", + "@notificationRuleContainsDisplayName": {}, + "notificationRuleContainsDisplayNameDescription": "Notifies the user when a message contains their display name.", + "@notificationRuleContainsDisplayNameDescription": {}, + "notificationRuleIsRoomMention": "Room Mention", + "@notificationRuleIsRoomMention": {}, + "notificationRuleIsRoomMentionDescription": "Notifies the user when there is a room mention.", + "@notificationRuleIsRoomMentionDescription": {}, + "notificationRuleRoomnotif": "Room Notification", + "@notificationRuleRoomnotif": {}, + "notificationRuleRoomnotifDescription": "Notifies the user when a message contains '@room'.", + "@notificationRuleRoomnotifDescription": {}, + "notificationRuleTombstone": "Tombstone", + "@notificationRuleTombstone": {}, + "notificationRuleTombstoneDescription": "Notifies the user about room deactivation messages.", + "@notificationRuleTombstoneDescription": {}, + "notificationRuleReaction": "Reaction", + "@notificationRuleReaction": {}, + "notificationRuleReactionDescription": "Suppresses notifications for reactions.", + "@notificationRuleReactionDescription": {}, + "notificationRuleRoomServerAcl": "Room Server ACL", + "@notificationRuleRoomServerAcl": {}, + "notificationRuleRoomServerAclDescription": "Suppresses notifications for room server access control lists (ACL).", + "@notificationRuleRoomServerAclDescription": {}, + "notificationRuleSuppressEdits": "Suppress Edits", + "@notificationRuleSuppressEdits": {}, + "notificationRuleSuppressEditsDescription": "Suppresses notifications for edited messages.", + "@notificationRuleSuppressEditsDescription": {}, + "notificationRuleCall": "Call", + "@notificationRuleCall": {}, + "notificationRuleCallDescription": "Notifies the user about calls.", + "@notificationRuleCallDescription": {}, + "notificationRuleEncryptedRoomOneToOne": "Encrypted Room One-to-One", + "@notificationRuleEncryptedRoomOneToOne": {}, + "notificationRuleEncryptedRoomOneToOneDescription": "Notifies the user about messages in encrypted one-to-one rooms.", + "@notificationRuleEncryptedRoomOneToOneDescription": {}, + "notificationRuleRoomOneToOne": "Room One-to-One", + "@notificationRuleRoomOneToOne": {}, + "notificationRuleRoomOneToOneDescription": "Notifies the user about messages in one-to-one rooms.", + "@notificationRuleRoomOneToOneDescription": {}, + "notificationRuleMessage": "Message", + "@notificationRuleMessage": {}, + "notificationRuleMessageDescription": "Notifies the user about general messages.", + "@notificationRuleMessageDescription": {}, + "notificationRuleEncrypted": "Encrypted", + "@notificationRuleEncrypted": {}, + "notificationRuleEncryptedDescription": "Notifies the user about messages in encrypted rooms.", + "@notificationRuleEncryptedDescription": {}, + "notificationRuleJitsi": "Jitsi", + "@notificationRuleJitsi": {}, + "notificationRuleJitsiDescription": "Notifies the user about Jitsi widget events.", + "@notificationRuleJitsiDescription": {}, + "notificationRuleServerAcl": "Suppress Server ACL Events", + "@notificationRuleServerAcl": {}, + "notificationRuleServerAclDescription": "Suppresses notifications for Server ACL events.", + "@notificationRuleServerAclDescription": {}, + "unknownPushRule": "Unknown push rule '{rule}'", + "@unknownPushRule": { + "type": "String", + "placeholders": { + "rule": { + "type": "String" + } + } + }, + "sentVoiceMessage": "🎙️ {duration} - Voice message from {sender}", + "@sentVoiceMessage": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "duration": { + "type": "String" + } + } + }, + "deletePushRuleCanNotBeUndone": "If you delete this notification setting, this can not be undone.", + "@deletePushRuleCanNotBeUndone": {}, + "more": "More", + "@more": {}, + "shareKeysWith": "Share keys with...", + "@shareKeysWith": {}, + "shareKeysWithDescription": "Which devices should be trusted so that they can read along your messages in encrypted chats?", + "@shareKeysWithDescription": {}, + "allDevices": "All devices", + "@allDevices": {}, + "crossVerifiedDevicesIfEnabled": "Cross verified devices if enabled", + "@crossVerifiedDevicesIfEnabled": {}, + "crossVerifiedDevices": "Cross verified devices", + "@crossVerifiedDevices": {}, + "verifiedDevicesOnly": "Verified devices only", + "@verifiedDevicesOnly": {}, + "takeAPhoto": "Take a photo", + "@takeAPhoto": {}, + "recordAVideo": "Record a video", + "@recordAVideo": {}, + "optionalMessage": "(Optional) message...", + "@optionalMessage": {}, + "notSupportedOnThisDevice": "Not supported on this device", + "@notSupportedOnThisDevice": {}, + "enterNewChat": "Enter new chat", + "@enterNewChat": {}, + "approve": "Approve", + "@approve": {}, + "youHaveKnocked": "You have knocked", + "@youHaveKnocked": {}, + "pleaseWaitUntilInvited": "Please wait now, until someone from the room invites you.", + "@pleaseWaitUntilInvited": {}, + "commandHint_logout": "Logout your current device", + "@commandHint_logout": {}, + "commandHint_logoutall": "Logout all active devices", + "@commandHint_logoutall": {}, + "displayNavigationRail": "Show navigation rail on mobile", + "@displayNavigationRail": {}, + "customReaction": "Custom reaction", + "@customReaction": {}, + "moreEvents": "More events", + "@moreEvents": {}, + "declineInvitation": "Decline invitation", + "@declineInvitation": {}, + "noMessagesYet": "No messages yet", + "longPressToRecordVoiceMessage": "Long press to record voice message.", + "pause": "Pause", + "resume": "Resume", + "newSubSpace": "New sub space", + "moveToDifferentSpace": "Move to different space", + "moveUp": "Move up", + "moveDown": "Move down", + "removeFromSpaceDescription": "The chat will be removed from the space but still appear in your chat list.", + "countChats": "{chats} chats", + "@countChats": { + "type": "String", + "placeholders": { + "chats": { + "type": "int" + } + } + }, + "spaceMemberOf": "Space member of {spaces}", + "@spaceMemberOf": { + "type": "String", + "placeholders": { + "spaces": { + "type": "String" + } + } + }, + "spaceMemberOfCanKnock": "Space member of {spaces} can knock", + "@spaceMemberOfCanKnock": { + "type": "String", + "placeholders": { + "spaces": { + "type": "String" + } + } + }, + "donate": "Donate", + "startedAPoll": "{username} started a poll.", + "@startedAPoll": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "poll": "Poll", + "startPoll": "Start poll", + "endPoll": "End poll", + "answersVisible": "Answers visible", + "answersHidden": "Answers hidden", + "pollQuestion": "Poll question", + "answerOption": "Answer option", + "addAnswerOption": "Add answer option", + "allowMultipleAnswers": "Allow multiple answers", + "pollHasBeenEnded": "Poll has been ended", + "countVotes": "{count, plural, =1{One vote} other{{count} votes}}", + "@countVotes": { + "type": "int", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "answersWillBeVisibleWhenPollHasEnded": "Answers will be visible when poll has ended", + "replyInThread": "Reply in thread", + "countReplies": "{count, plural, =1{One reply} other{{count} replies}}", + "@countReplies": { + "type": "int", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "thread": "Thread", + "backToMainChat": "Back to main chat" +} diff --git a/lib/l10n/intl_eo.arb b/lib/l10n/intl_eo.arb new file mode 100644 index 0000000..44b0404 --- /dev/null +++ b/lib/l10n/intl_eo.arb @@ -0,0 +1,2077 @@ +{ + "@@last_modified": "2021-08-14 12:41:10.107750", + "about": "Prio", + "@about": { + "type": "String", + "placeholders": {} + }, + "accept": "Akcepti", + "@accept": { + "type": "String", + "placeholders": {} + }, + "acceptedTheInvitation": "{username} akceptis la inviton", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "account": "Konto", + "@account": { + "type": "String", + "placeholders": {} + }, + "activatedEndToEndEncryption": "{username} aktivigis tutvojan ĉifradon", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "addEmail": "Aldoni retpoŝtadreson", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "admin": "Administranto", + "@admin": { + "type": "String", + "placeholders": {} + }, + "alias": "kromnomo", + "@alias": { + "type": "String", + "placeholders": {} + }, + "all": "Ĉio", + "@all": { + "type": "String", + "placeholders": {} + }, + "allChats": "Ĉiuj babiloj", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "answeredTheCall": "{senderName} respondis la vokon", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "anyoneCanJoin": "Ĉiu ajn povas aliĝi", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "appLock": "Ŝlosado", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "archive": "Arĥivo", + "@archive": { + "type": "String", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "Ĉu gastoj rajtas aliĝi", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "Ĉu vi certas?", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "areYouSureYouWantToLogout": "Ĉu vi certe volas adiaŭi?", + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "askSSSSSign": "Por ke vi povu kontroli (subskribi) la alian personon, bonvolu enigi pasfrazon de via sekreta deponejo aŭ vian rehavan ŝlosilon.", + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "askVerificationRequest": "Ĉu akcepti ĉi tiun kontrolpeton de {username}?", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "badServerLoginTypesException": "La hejmservilo subtenas la jenajn specojn de salutoj:\n{serverVersions}\nSed ĉi tiu aplikaĵo subtenas nur:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "badServerVersionsException": "La hejmservilo subtenas la jenajn version de la specifaĵo:\n{serverVersions}\nSed ĉi tiu aplikaĵo subtenas nur {supportedVersions}", + "@badServerVersionsException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "banFromChat": "Forbari de babilo", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "banned": "Forbarita", + "@banned": { + "type": "String", + "placeholders": {} + }, + "bannedUser": "{username} forbaris uzanton {targetName}", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "blockDevice": "Bloki aparaton", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "blocked": "Blokita", + "@blocked": { + "type": "String", + "placeholders": {} + }, + "botMessages": "Mesaĝoj de robotoj", + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "cancel": "Nuligi", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "cantOpenUri": "Ne povis malfermi URI {uri}", + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "changeDeviceName": "Ŝanĝi nomon de aparato", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "changedTheChatAvatar": "{username} ŝanĝis bildon de la babilo", + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheChatDescriptionTo": "{username} ŝanĝis priskribon de la babilo al: «{description}»", + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "changedTheChatNameTo": "{username} ŝanĝis nomon de la babilo al: «{chatname}»", + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "changedTheChatPermissions": "{username} ŝanĝis permesojn pri la babilo", + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheDisplaynameTo": "{username} ŝanĝis sian prezentan nomon al: {username}", + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "changedTheGuestAccessRules": "{username} ŝanĝis regulojn pri aliro de gastoj", + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheGuestAccessRulesTo": "{username} ŝanĝis regulojn pri aliro de gastoj al: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheHistoryVisibility": "{username} ŝanĝis videblecon de la historio", + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheHistoryVisibilityTo": "{username} ŝanĝis videblecon de la historio al: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheJoinRules": "{username} ŝanĝis regulojn pri aliĝado", + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheJoinRulesTo": "{username} ŝanĝis regulojn pri aliĝado al: {joinRules}", + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "changedTheProfileAvatar": "{username} ŝanĝis sian profilbildon", + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomAliases": "{username} ŝanĝis la kromnomojn de la ĉambro", + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomInvitationLink": "{username} ŝanĝis la invitan ligilon", + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changePassword": "Ŝanĝi pasvorton", + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "changeTheHomeserver": "Ŝanĝi hejmservilon", + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "changeTheme": "Ŝanĝu la haŭton", + "@changeTheme": { + "type": "String", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "Ŝanĝi nomon de la grupo", + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "changeYourAvatar": "Ŝanĝi vian profilbildon", + "@changeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "channelCorruptedDecryptError": "La ĉifrado estas difektita", + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "chat": "Babilo", + "@chat": { + "type": "String", + "placeholders": {} + }, + "chatBackup": "Savkopiado de babilo", + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "chatBackupDescription": "Via savkopio de babilo estas sekurigita per sekureca ŝlosilo. Bonvolu certigi, ke vi ne perdos ĝin.", + "@chatBackupDescription": { + "type": "String", + "placeholders": {} + }, + "chatDetails": "Detaloj pri babilo", + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "chats": "Babiloj", + "@chats": { + "type": "String", + "placeholders": {} + }, + "chooseAStrongPassword": "Elektu fortan pasvorton", + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "clearArchive": "Vakigi arĥivon", + "@clearArchive": {}, + "close": "Fermi", + "@close": { + "type": "String", + "placeholders": {} + }, + "commandHint_ban": "Forbari la donitan uzanton de ĉi tiu ĉambro", + "@commandHint_ban": { + "type": "String", + "description": "Usage hint for the command /ban" + }, + "commandHint_html": "Sendi tekston formatan je HTML", + "@commandHint_html": { + "type": "String", + "description": "Usage hint for the command /html" + }, + "commandHint_invite": "Inviti la donitan uzanton al ĉi tiu ĉambro", + "@commandHint_invite": { + "type": "String", + "description": "Usage hint for the command /invite" + }, + "commandHint_join": "Aliĝi al la donita ĉambro", + "@commandHint_join": { + "type": "String", + "description": "Usage hint for the command /join" + }, + "commandHint_kick": "Forigi la donitan uzanton de ĉi tiu ĉambro", + "@commandHint_kick": { + "type": "String", + "description": "Usage hint for the command /kick" + }, + "commandHint_leave": "Foriri de ĉi tiu ĉambro", + "@commandHint_leave": { + "type": "String", + "description": "Usage hint for the command /leave" + }, + "commandHint_me": "Priskribu vian agon", + "@commandHint_me": { + "type": "String", + "description": "Usage hint for the command /me" + }, + "commandHint_myroomavatar": "Agordi vian profilbildon por ĉi tiu ĉambro (laŭ mxc-uri)", + "@commandHint_myroomavatar": { + "type": "String", + "description": "Usage hint for the command /myroomavatar" + }, + "commandHint_myroomnick": "Agordi vian prezentan nomon en ĉi tiu ĉambro", + "@commandHint_myroomnick": { + "type": "String", + "description": "Usage hint for the command /myroomnick" + }, + "commandHint_op": "Agordi povnivelon de la donita uzanto (implicite: 50)", + "@commandHint_op": { + "type": "String", + "description": "Usage hint for the command /op" + }, + "commandHint_plain": "Sendi senformatan tekston", + "@commandHint_plain": { + "type": "String", + "description": "Usage hint for the command /plain" + }, + "commandHint_react": "Sendi respondon kiel reagon", + "@commandHint_react": { + "type": "String", + "description": "Usage hint for the command /react" + }, + "commandHint_unban": "Malforbari la donitan uzanton de ĉi tiu ĉambro", + "@commandHint_unban": { + "type": "String", + "description": "Usage hint for the command /unban" + }, + "commandInvalid": "Nevalida ordono", + "@commandInvalid": { + "type": "String" + }, + "commandMissing": "{command} ne estas ordono.", + "@commandMissing": { + "type": "String", + "placeholders": { + "command": { + "type": "String" + } + }, + "description": "State that {command} is not a valid /command." + }, + "compareEmojiMatch": "Komparu kaj certigu, ke la jenaj bildosignoj samas en ambaŭ aparatoj:", + "@compareEmojiMatch": { + "type": "String", + "placeholders": {} + }, + "compareNumbersMatch": "Komparu kaj certigu, ke la jenaj numeroj samas en ambaŭ aparatoj:", + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "configureChat": "Agordi babilon", + "@configureChat": { + "type": "String", + "placeholders": {} + }, + "confirm": "Konfirmi", + "@confirm": { + "type": "String", + "placeholders": {} + }, + "connect": "Konektiĝi", + "@connect": { + "type": "String", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "Kontakto invitiĝis al la grupo", + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "containsDisplayName": "Enhavas prezentan nomon", + "@containsDisplayName": { + "type": "String", + "placeholders": {} + }, + "containsUserName": "Enhavas uzantonomon", + "@containsUserName": { + "type": "String", + "placeholders": {} + }, + "contentHasBeenReported": "La enhavo raportiĝis al la administrantoj de la servilo", + "@contentHasBeenReported": { + "type": "String", + "placeholders": {} + }, + "copiedToClipboard": "Kopiite al tondujo", + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "copy": "Kopii", + "@copy": { + "type": "String", + "placeholders": {} + }, + "copyToClipboard": "Kopii al tondujo", + "@copyToClipboard": { + "type": "String", + "placeholders": {} + }, + "couldNotDecryptMessage": "Ne povis malĉifri mesaĝon: {error}", + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "countParticipants": "{count} partoprenantoj", + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "create": "Krei", + "@create": { + "type": "String", + "placeholders": {} + }, + "createdTheChat": "{username} kreis la babilon", + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "createNewSpace": "Nova aro", + "@createNewSpace": { + "type": "String", + "placeholders": {} + }, + "currentlyActive": "Nun aktiva", + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "darkTheme": "Malhela", + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "dateWithoutYear": "{day}a de la {month}a", + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "dateWithYear": "{day}a de la {month}a de {year}", + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "deactivateAccountWarning": "Ĉi tio malaktivigos vian konton de uzanto. Ne eblas tion malfari! Ĉu certe vi certas?", + "@deactivateAccountWarning": { + "type": "String", + "placeholders": {} + }, + "defaultPermissionLevel": "Norma nivelo de permesoj", + "@defaultPermissionLevel": { + "type": "String", + "placeholders": {} + }, + "delete": "Forigi", + "@delete": { + "type": "String", + "placeholders": {} + }, + "deleteAccount": "Forigi konton", + "@deleteAccount": { + "type": "String", + "placeholders": {} + }, + "deleteMessage": "Forigi mesaĝon", + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "device": "Aparato", + "@device": { + "type": "String", + "placeholders": {} + }, + "deviceId": "Identigilo de aparato", + "@deviceId": { + "type": "String", + "placeholders": {} + }, + "devices": "Aparatoj", + "@devices": { + "type": "String", + "placeholders": {} + }, + "directChats": "Rektaj babiloj", + "@directChats": { + "type": "String", + "placeholders": {} + }, + "displaynameHasBeenChanged": "Prezenta nomo ŝanĝiĝis", + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "downloadFile": "Elŝuti dosieron", + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "edit": "Redakti", + "@edit": { + "type": "String", + "placeholders": {} + }, + "editBlockedServers": "Redakti blokitajn servilojn", + "@editBlockedServers": { + "type": "String", + "placeholders": {} + }, + "editDisplayname": "Redakti prezentan nomon", + "@editDisplayname": { + "type": "String", + "placeholders": {} + }, + "editRoomAliases": "Ŝanĝi kromnomojn de ĉambro", + "@editRoomAliases": { + "type": "String", + "placeholders": {} + }, + "editRoomAvatar": "Redakti bildon de ĉambro", + "@editRoomAvatar": { + "type": "String", + "placeholders": {} + }, + "emoteExists": "Mieneto jam ekzistas!", + "@emoteExists": { + "type": "String", + "placeholders": {} + }, + "emoteInvalid": "Nevalida mallongigo de mieneto!", + "@emoteInvalid": { + "type": "String", + "placeholders": {} + }, + "emotePacks": "Mienetaroj por la ĉambro", + "@emotePacks": { + "type": "String", + "placeholders": {} + }, + "emoteSettings": "Agordoj pri mienetoj", + "@emoteSettings": { + "type": "String", + "placeholders": {} + }, + "emoteShortcode": "Mallongigo de mieneto", + "@emoteShortcode": { + "type": "String", + "placeholders": {} + }, + "emoteWarnNeedToPick": "Vi devas elekti mallongigon de mieneto kaj bildon!", + "@emoteWarnNeedToPick": { + "type": "String", + "placeholders": {} + }, + "emptyChat": "Malplena babilo", + "@emptyChat": { + "type": "String", + "placeholders": {} + }, + "enableEmotesGlobally": "Ŝalti mienetaron ĉie", + "@enableEmotesGlobally": { + "type": "String", + "placeholders": {} + }, + "enableEncryption": "Ŝalti ĉifradon", + "@enableEncryption": { + "type": "String", + "placeholders": {} + }, + "enableEncryptionWarning": "Vi ne povos malŝalti la ĉifradon. Ĉu vi certas?", + "@enableEncryptionWarning": { + "type": "String", + "placeholders": {} + }, + "encrypted": "Ĉifrite", + "@encrypted": { + "type": "String", + "placeholders": {} + }, + "encryption": "Ĉifrado", + "@encryption": { + "type": "String", + "placeholders": {} + }, + "encryptionNotEnabled": "Ĉifrado ne estas ŝaltita", + "@encryptionNotEnabled": { + "type": "String", + "placeholders": {} + }, + "endedTheCall": "{senderName} finis la vokon", + "@endedTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "enterAnEmailAddress": "Enigu retpoŝtadreson", + "@enterAnEmailAddress": { + "type": "String", + "placeholders": {} + }, + "enterYourHomeserver": "Enigu vian hejmservilon", + "@enterYourHomeserver": { + "type": "String", + "placeholders": {} + }, + "errorObtainingLocation": "Eraris akirado de loko: {error}", + "@errorObtainingLocation": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "everythingReady": "Ĉio pretas!", + "@everythingReady": { + "type": "String", + "placeholders": {} + }, + "extremeOffensive": "Tre ofenda", + "@extremeOffensive": { + "type": "String", + "placeholders": {} + }, + "fileName": "Dosiernomo", + "@fileName": { + "type": "String", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "String", + "placeholders": {} + }, + "fontSize": "Grandeco de tiparo", + "@fontSize": { + "type": "String", + "placeholders": {} + }, + "forward": "Plusendi", + "@forward": { + "type": "String", + "placeholders": {} + }, + "fromJoining": "Ekde aliĝo", + "@fromJoining": { + "type": "String", + "placeholders": {} + }, + "fromTheInvitation": "Ekde la invito", + "@fromTheInvitation": { + "type": "String", + "placeholders": {} + }, + "goToTheNewRoom": "Iri al la nova ĉambro", + "@goToTheNewRoom": { + "type": "String", + "placeholders": {} + }, + "group": "Grupo", + "@group": { + "type": "String", + "placeholders": {} + }, + "groupIsPublic": "Grupo estas publika", + "@groupIsPublic": { + "type": "String", + "placeholders": {} + }, + "groups": "Grupoj", + "@groups": { + "type": "String", + "placeholders": {} + }, + "groupWith": "Grupo kun {displayname}", + "@groupWith": { + "type": "String", + "placeholders": { + "displayname": { + "type": "String" + } + } + }, + "guestsAreForbidden": "Gastoj estas malpermesitaj", + "@guestsAreForbidden": { + "type": "String", + "placeholders": {} + }, + "guestsCanJoin": "Gastoj povas aliĝi", + "@guestsCanJoin": { + "type": "String", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "{username} nuligis la inviton por {targetName}", + "@hasWithdrawnTheInvitationFor": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "help": "Helpo", + "@help": { + "type": "String", + "placeholders": {} + }, + "hideRedactedEvents": "Kaŝi obskurigitajn eventojn", + "@hideRedactedEvents": { + "type": "String", + "placeholders": {} + }, + "hideUnknownEvents": "Kaŝi nekonatajn eventojn", + "@hideUnknownEvents": { + "type": "String", + "placeholders": {} + }, + "howOffensiveIsThisContent": "Kiel ofenda estas ĉi tiu enhavo?", + "@howOffensiveIsThisContent": { + "type": "String", + "placeholders": {} + }, + "id": "Identigilo", + "@id": { + "type": "String", + "placeholders": {} + }, + "identity": "Identeco", + "@identity": { + "type": "String", + "placeholders": {} + }, + "ignore": "Malatenti", + "@ignore": { + "type": "String", + "placeholders": {} + }, + "ignoredUsers": "Malatentitaj uzantoj", + "@ignoredUsers": { + "type": "String", + "placeholders": {} + }, + "iHaveClickedOnLink": "Mi klakis la ligilon", + "@iHaveClickedOnLink": { + "type": "String", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "Neĝusta pasfrazo aŭ rehava ŝlosilo", + "@incorrectPassphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "inoffensive": "Neofenda", + "@inoffensive": { + "type": "String", + "placeholders": {} + }, + "inviteContact": "Inviti kontakton", + "@inviteContact": { + "type": "String", + "placeholders": {} + }, + "inviteContactToGroup": "Inviti kontakton al {groupName}", + "@inviteContactToGroup": { + "type": "String", + "placeholders": { + "groupName": { + "type": "String" + } + } + }, + "invited": "Invitita", + "@invited": { + "type": "String", + "placeholders": {} + }, + "invitedUser": "{username} invitis uzanton {targetName}", + "@invitedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "invitedUsersOnly": "Nur invititoj", + "@invitedUsersOnly": { + "type": "String", + "placeholders": {} + }, + "inviteForMe": "Invito por mi", + "@inviteForMe": { + "type": "String", + "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": "String", + "placeholders": { + "username": { + "type": "String" + }, + "link": { + "type": "String" + } + } + }, + "isTyping": "tajpas…", + "@isTyping": { + "type": "String", + "placeholders": {} + }, + "joinedTheChat": "{username} aliĝis al la babilo", + "@joinedTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "joinRoom": "Aliĝi al ĉambro", + "@joinRoom": { + "type": "String", + "placeholders": {} + }, + "kicked": "{username} forpelis uzanton {targetName}", + "@kicked": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickedAndBanned": "{username} forpelis kaj forbaris uzanton {targetName}", + "@kickedAndBanned": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickFromChat": "Forpeli de babilo", + "@kickFromChat": { + "type": "String", + "placeholders": {} + }, + "lastActiveAgo": "Lastafoje aktiva: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "String", + "placeholders": { + "localizedTimeShort": { + "type": "String" + } + } + }, + "leave": "Foriri", + "@leave": { + "type": "String", + "placeholders": {} + }, + "leftTheChat": "Foriris de la ĉambro", + "@leftTheChat": { + "type": "String", + "placeholders": {} + }, + "license": "Permesilo", + "@license": { + "type": "String", + "placeholders": {} + }, + "lightTheme": "Hela", + "@lightTheme": { + "type": "String", + "placeholders": {} + }, + "loadCountMoreParticipants": "Enlegi {count} pliajn partoprenantojn", + "@loadCountMoreParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "loadingPleaseWait": "Enlegante… bonvolu atendi.", + "@loadingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "loadMore": "Enlegi pli…", + "@loadMore": { + "type": "String", + "placeholders": {} + }, + "login": "Saluti", + "@login": { + "type": "String", + "placeholders": {} + }, + "logInTo": "Saluti servilon {homeserver}", + "@logInTo": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "logout": "Adiaŭi", + "@logout": { + "type": "String", + "placeholders": {} + }, + "memberChanges": "Ŝanĝoj de anoj", + "@memberChanges": { + "type": "String", + "placeholders": {} + }, + "mention": "Mencii", + "@mention": { + "type": "String", + "placeholders": {} + }, + "messages": "Mesaĝoj", + "@messages": { + "type": "String", + "placeholders": {} + }, + "moderator": "Reguligisto", + "@moderator": { + "type": "String", + "placeholders": {} + }, + "muteChat": "Silentigi babilon", + "@muteChat": { + "type": "String", + "placeholders": {} + }, + "needPantalaimonWarning": "Bonvolu scii, ke vi ankoraŭ bezonas la programon Pantalaimon por uzi tutvojan ĉifradon.", + "@needPantalaimonWarning": { + "type": "String", + "placeholders": {} + }, + "newChat": "Nova babilo", + "@newChat": { + "type": "String", + "placeholders": {} + }, + "newMessageInFluffyChat": "Nova mesaĝo en FluffyChat", + "@newMessageInFluffyChat": { + "type": "String", + "placeholders": {} + }, + "newVerificationRequest": "Nova kontrolpeto!", + "@newVerificationRequest": { + "type": "String", + "placeholders": {} + }, + "next": "Sekva", + "@next": { + "type": "String", + "placeholders": {} + }, + "no": "Ne", + "@no": { + "type": "String", + "placeholders": {} + }, + "noConnectionToTheServer": "Neniu konekto al la servilo", + "@noConnectionToTheServer": { + "type": "String", + "placeholders": {} + }, + "noEmotesFound": "Neniuj mienetoj troviĝis. 😕", + "@noEmotesFound": { + "type": "String", + "placeholders": {} + }, + "noEncryptionForPublicRooms": "Vi nur povas aktivigi ĉifradon kiam la ĉambro ne plu estas publike alirebla.", + "@noEncryptionForPublicRooms": { + "type": "String", + "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": "String", + "placeholders": {} + }, + "none": "Neniu", + "@none": { + "type": "String", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "Vi ankoraŭ ne aldonis manieron rehavi vian pasvorton.", + "@noPasswordRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "noPermission": "Neniu permeso", + "@noPermission": { + "type": "String", + "placeholders": {} + }, + "noRoomsFound": "Neniuj ĉambroj troviĝis…", + "@noRoomsFound": { + "type": "String", + "placeholders": {} + }, + "notifications": "Sciigoj", + "@notifications": { + "type": "String", + "placeholders": {} + }, + "notificationsEnabledForThisAccount": "Sciigoj ŝaltiĝis por ĉi tiu konto", + "@notificationsEnabledForThisAccount": { + "type": "String", + "placeholders": {} + }, + "numUsersTyping": "{count} uzantoj tajpas…", + "@numUsersTyping": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "obtainingLocation": "Akirante lokon…", + "@obtainingLocation": { + "type": "String", + "placeholders": {} + }, + "offensive": "Ofenda", + "@offensive": { + "type": "String", + "placeholders": {} + }, + "offline": "Eksterrete", + "@offline": { + "type": "String", + "placeholders": {} + }, + "ok": "bone", + "@ok": { + "type": "String", + "placeholders": {} + }, + "online": "Enrete", + "@online": { + "type": "String", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "Enreta savkopiado de ŝlosiloj estas ŝaltita", + "@onlineKeyBackupEnabled": { + "type": "String", + "placeholders": {} + }, + "oopsPushError": "Oj! Bedaŭrinde eraris la agordado de pasivaj sciigoj.", + "@oopsPushError": { + "type": "String", + "placeholders": {} + }, + "oopsSomethingWentWrong": "Oj! Io misokazis…", + "@oopsSomethingWentWrong": { + "type": "String", + "placeholders": {} + }, + "openAppToReadMessages": "Malfermu la aplikaĵon por legi mesaĝojn", + "@openAppToReadMessages": { + "type": "String", + "placeholders": {} + }, + "openCamera": "Malfermi fotilon", + "@openCamera": { + "type": "String", + "placeholders": {} + }, + "or": "Aŭ", + "@or": { + "type": "String", + "placeholders": {} + }, + "participant": "Partoprenanto", + "@participant": { + "type": "String", + "placeholders": {} + }, + "passphraseOrKey": "pasfrazo aŭ rehava ŝlosilo", + "@passphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "password": "Pasvorto", + "@password": { + "type": "String", + "placeholders": {} + }, + "passwordForgotten": "Forgesita pasvorto", + "@passwordForgotten": { + "type": "String", + "placeholders": {} + }, + "passwordHasBeenChanged": "Pasvorto ŝanĝiĝis", + "@passwordHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "passwordRecovery": "Rehavo de pasvorto", + "@passwordRecovery": { + "type": "String", + "placeholders": {} + }, + "people": "Personoj", + "@people": { + "type": "String", + "placeholders": {} + }, + "pickImage": "Elekti bildon", + "@pickImage": { + "type": "String", + "placeholders": {} + }, + "pin": "Fiksi", + "@pin": { + "type": "String", + "placeholders": {} + }, + "play": "Ludi {fileName}", + "@play": { + "type": "String", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "pleaseChoose": "Bonvolu elekti", + "@pleaseChoose": { + "type": "String", + "placeholders": {} + }, + "pleaseChooseAPasscode": "Bonvolu elekti paskodon", + "@pleaseChooseAPasscode": { + "type": "String", + "placeholders": {} + }, + "pleaseClickOnLink": "Bonvolu klaki la ligilon en la retletero kaj pluiĝi.", + "@pleaseClickOnLink": { + "type": "String", + "placeholders": {} + }, + "pleaseEnter4Digits": "Bonvolu enigi 4 ciferojn, aŭ nenion por malŝalti ŝlosadon de la aplikaĵo.", + "@pleaseEnter4Digits": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPassword": "Bonvolu enigi vian pasvorton", + "@pleaseEnterYourPassword": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPin": "Bonvolu enigi vian personan identigan numeron", + "@pleaseEnterYourPin": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourUsername": "Bonvolu enigi vian uzantonomon", + "@pleaseEnterYourUsername": { + "type": "String", + "placeholders": {} + }, + "pleaseFollowInstructionsOnWeb": "Bonvolu sekvi la instrukciojn de la retejo kaj tuŝetu al «Sekva».", + "@pleaseFollowInstructionsOnWeb": { + "type": "String", + "placeholders": {} + }, + "privacy": "Privateco", + "@privacy": { + "type": "String", + "placeholders": {} + }, + "publicRooms": "Publikaj ĉambroj", + "@publicRooms": { + "type": "String", + "placeholders": {} + }, + "pushRules": "Reguloj de pasivaj sciigoj", + "@pushRules": { + "type": "String", + "placeholders": {} + }, + "reason": "Kialo", + "@reason": { + "type": "String", + "placeholders": {} + }, + "recording": "Registrante", + "@recording": { + "type": "String", + "placeholders": {} + }, + "redactedAnEvent": "{username} obskurigis eventon", + "@redactedAnEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "redactMessage": "Obskurigi mesaĝon", + "@redactMessage": { + "type": "String", + "placeholders": {} + }, + "register": "Registriĝi", + "@register": { + "type": "String", + "placeholders": {} + }, + "reject": "Rifuzi", + "@reject": { + "type": "String", + "placeholders": {} + }, + "rejectedTheInvitation": "{username} rifuzis la inviton", + "@rejectedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "rejoin": "Ree aliĝi", + "@rejoin": { + "type": "String", + "placeholders": {} + }, + "remove": "Forigi", + "@remove": { + "type": "String", + "placeholders": {} + }, + "removeAllOtherDevices": "Forigi ĉiujn aliajn aparatojn", + "@removeAllOtherDevices": { + "type": "String", + "placeholders": {} + }, + "removedBy": "Forigita de {username}", + "@removedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "removeDevice": "Forigi aparaton", + "@removeDevice": { + "type": "String", + "placeholders": {} + }, + "unbanFromChat": "Malforbari", + "@unbanFromChat": { + "type": "String", + "placeholders": {} + }, + "removeYourAvatar": "Forigi vian profilbildon", + "@removeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "replaceRoomWithNewerVersion": "Anstataŭigi ĉambron per nova versio", + "@replaceRoomWithNewerVersion": { + "type": "String", + "placeholders": {} + }, + "reply": "Respondi", + "@reply": { + "type": "String", + "placeholders": {} + }, + "reportMessage": "Raporti mesaĝon", + "@reportMessage": { + "type": "String", + "placeholders": {} + }, + "requestPermission": "Peti permeson", + "@requestPermission": { + "type": "String", + "placeholders": {} + }, + "roomHasBeenUpgraded": "Ĉambro gradaltiĝis", + "@roomHasBeenUpgraded": { + "type": "String", + "placeholders": {} + }, + "roomVersion": "Versio de ĉambro", + "@roomVersion": { + "type": "String", + "placeholders": {} + }, + "saveFile": "Konservi dosieron", + "@saveFile": { + "type": "String", + "placeholders": {} + }, + "search": "Serĉi", + "@search": { + "type": "String", + "placeholders": {} + }, + "security": "Sekureco", + "@security": { + "type": "String", + "placeholders": {} + }, + "seenByUser": "Vidita de {username}", + "@seenByUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "send": "Sendi", + "@send": { + "type": "String", + "placeholders": {} + }, + "sendAMessage": "Sendi mesaĝon", + "@sendAMessage": { + "type": "String", + "placeholders": {} + }, + "sendAudio": "Sendi sondosieron", + "@sendAudio": { + "type": "String", + "placeholders": {} + }, + "sendFile": "Sendi dosieron", + "@sendFile": { + "type": "String", + "placeholders": {} + }, + "sendImage": "Sendi bildon", + "@sendImage": { + "type": "String", + "placeholders": {} + }, + "sendMessages": "Sendi mesaĝojn", + "@sendMessages": { + "type": "String", + "placeholders": {} + }, + "sendOriginal": "Sendi originalon", + "@sendOriginal": { + "type": "String", + "placeholders": {} + }, + "sendSticker": "Sendi glumarkon", + "@sendSticker": { + "type": "String", + "placeholders": {} + }, + "sendVideo": "Sendi filmon", + "@sendVideo": { + "type": "String", + "placeholders": {} + }, + "sentAFile": "{username} sendis dosieron", + "@sentAFile": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAnAudio": "{username} sendis sondosieron", + "@sentAnAudio": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAPicture": "{username} sendis bildon", + "@sentAPicture": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentASticker": "{username} sendis glumarkon", + "@sentASticker": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAVideo": "{username} sendis filmon", + "@sentAVideo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentCallInformations": "{senderName} sendis informojn pri voko", + "@sentCallInformations": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "setAsCanonicalAlias": "Agordi kiel ĉefan kromnomon", + "@setAsCanonicalAlias": { + "type": "String", + "placeholders": {} + }, + "setCustomEmotes": "Agordi proprajn mienetojn", + "@setCustomEmotes": { + "type": "String", + "placeholders": {} + }, + "setInvitationLink": "Agordi invitan ligilon", + "@setInvitationLink": { + "type": "String", + "placeholders": {} + }, + "setPermissionsLevel": "Agordi nivelon de permesoj", + "@setPermissionsLevel": { + "type": "String", + "placeholders": {} + }, + "setStatus": "Agordi staton", + "@setStatus": { + "type": "String", + "placeholders": {} + }, + "settings": "Agordoj", + "@settings": { + "type": "String", + "placeholders": {} + }, + "share": "Konigi", + "@share": { + "type": "String", + "placeholders": {} + }, + "sharedTheLocation": "{username} konigis sian lokon", + "@sharedTheLocation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "shareLocation": "Konigi lokon", + "@shareLocation": { + "type": "String", + "placeholders": {} + }, + "showPassword": "Montri pasvorton", + "@showPassword": { + "type": "String", + "placeholders": {} + }, + "singlesignon": "Ununura saluto", + "@singlesignon": { + "type": "String", + "placeholders": {} + }, + "skip": "Preterpasi", + "@skip": { + "type": "String", + "placeholders": {} + }, + "sourceCode": "Fontkodo", + "@sourceCode": { + "type": "String", + "placeholders": {} + }, + "spaceIsPublic": "Aro estas publika", + "@spaceIsPublic": { + "type": "String", + "placeholders": {} + }, + "spaceName": "Nomo de aro", + "@spaceName": { + "type": "String", + "placeholders": {} + }, + "startedACall": "{senderName} komencis vokon", + "@startedACall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "status": "Stato", + "@status": { + "type": "String", + "placeholders": {} + }, + "statusExampleMessage": "Kiel vi fartas?", + "@statusExampleMessage": { + "type": "String", + "placeholders": {} + }, + "submit": "Sendi", + "@submit": { + "type": "String", + "placeholders": {} + }, + "synchronizingPleaseWait": "Spegulante… Bonvolu atendi.", + "@synchronizingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "systemTheme": "Sistema", + "@systemTheme": { + "type": "String", + "placeholders": {} + }, + "theyDontMatch": "Ili ne akordas", + "@theyDontMatch": { + "type": "String", + "placeholders": {} + }, + "theyMatch": "Ili akordas", + "@theyMatch": { + "type": "String", + "placeholders": {} + }, + "title": "FluffyChat", + "@title": { + "description": "Title for the application", + "type": "String", + "placeholders": {} + }, + "toggleFavorite": "Baskuli elstarigon", + "@toggleFavorite": { + "type": "String", + "placeholders": {} + }, + "toggleMuted": "Basklui silentigon", + "@toggleMuted": { + "type": "String", + "placeholders": {} + }, + "toggleUnread": "Baskuli legitecon", + "@toggleUnread": { + "type": "String", + "placeholders": {} + }, + "tooManyRequestsWarning": "Tro multaj petoj. Bonvolu reprovi poste!", + "@tooManyRequestsWarning": { + "type": "String", + "placeholders": {} + }, + "transferFromAnotherDevice": "Transporti de alia aparato", + "@transferFromAnotherDevice": { + "type": "String", + "placeholders": {} + }, + "tryToSendAgain": "Reprovi sendi", + "@tryToSendAgain": { + "type": "String", + "placeholders": {} + }, + "unavailable": "Nedisponeble", + "@unavailable": { + "type": "String", + "placeholders": {} + }, + "unbannedUser": "{username} malforbaris uzanton {targetName}", + "@unbannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "unblockDevice": "Malbloki aparaton", + "@unblockDevice": { + "type": "String", + "placeholders": {} + }, + "unknownDevice": "Nekonata aparato", + "@unknownDevice": { + "type": "String", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "Nekonata ĉifra algoritmo", + "@unknownEncryptionAlgorithm": { + "type": "String", + "placeholders": {} + }, + "unknownEvent": "Nekonata evento «{type}»", + "@unknownEvent": { + "type": "String", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "unmuteChat": "Malsilentigi babilon", + "@unmuteChat": { + "type": "String", + "placeholders": {} + }, + "unpin": "Malfiksi", + "@unpin": { + "type": "String", + "placeholders": {} + }, + "unreadChats": "{unreadCount, plural, =1{1 nelegita babilo} other{{unreadCount} nelegitaj babiloj}}", + "@unreadChats": { + "type": "String", + "placeholders": { + "unreadCount": { + "type": "int" + } + } + }, + "userAndOthersAreTyping": "{username} kaj {count} aliaj tajpas…", + "@userAndOthersAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "userAndUserAreTyping": "{username} kaj {username2} tajpas…", + "@userAndUserAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "username2": { + "type": "String" + } + } + }, + "userIsTyping": "{username} tajpas…", + "@userIsTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "userLeftTheChat": "{username} foriris de la babilo", + "@userLeftTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "username": "Uzantonomo", + "@username": { + "type": "String", + "placeholders": {} + }, + "userSentUnknownEvent": "{username} sendis eventon de speco {type}", + "@userSentUnknownEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "type": { + "type": "String" + } + } + }, + "verified": "Kontrolita", + "@verified": { + "type": "String", + "placeholders": {} + }, + "verify": "Kontroli", + "@verify": { + "type": "String", + "placeholders": {} + }, + "verifyStart": "Komenci kontrolon", + "@verifyStart": { + "type": "String", + "placeholders": {} + }, + "verifySuccess": "Vi sukcese kontrolis!", + "@verifySuccess": { + "type": "String", + "placeholders": {} + }, + "verifyTitle": "Kontrolante alian konton", + "@verifyTitle": { + "type": "String", + "placeholders": {} + }, + "videoCall": "Vidvoko", + "@videoCall": { + "type": "String", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "Videbleco de historio de la babilo", + "@visibilityOfTheChatHistory": { + "type": "String", + "placeholders": {} + }, + "visibleForAllParticipants": "Videbla al ĉiuj partoprenantoj", + "@visibleForAllParticipants": { + "type": "String", + "placeholders": {} + }, + "visibleForEveryone": "Videbla al ĉiuj", + "@visibleForEveryone": { + "type": "String", + "placeholders": {} + }, + "voiceMessage": "Voĉmesaĝo", + "@voiceMessage": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "Atendante konfirmon de peto de la kunulo…", + "@waitingPartnerAcceptRequest": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerEmoji": "Atendante akcepton de la bildosignoj de la kunulo…", + "@waitingPartnerEmoji": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerNumbers": "Atendante akcepton de la numeroj, de la kunulo…", + "@waitingPartnerNumbers": { + "type": "String", + "placeholders": {} + }, + "wallpaper": "Fonbildo", + "@wallpaper": { + "type": "String", + "placeholders": {} + }, + "warning": "Averto!", + "@warning": { + "type": "String", + "placeholders": {} + }, + "weSentYouAnEmail": "Ni sendis retleteron al vi", + "@weSentYouAnEmail": { + "type": "String", + "placeholders": {} + }, + "whoCanPerformWhichAction": "Kiu povas kion", + "@whoCanPerformWhichAction": { + "type": "String", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "Kiu rajtas aliĝi al ĉi tiu grupo", + "@whoIsAllowedToJoinThisGroup": { + "type": "String", + "placeholders": {} + }, + "whyDoYouWantToReportThis": "Kial vi volas tion ĉi raporti?", + "@whyDoYouWantToReportThis": { + "type": "String", + "placeholders": {} + }, + "wipeChatBackup": "Ĉu forviŝi la savkopion de via babilo por krei novan sekurecan ŝlosilon?", + "@wipeChatBackup": { + "type": "String", + "placeholders": {} + }, + "withTheseAddressesRecoveryDescription": "Per tiuj ĉi adresoj vi povas rehavi vian pasvorton.", + "@withTheseAddressesRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "writeAMessage": "Skribi mesaĝon…", + "@writeAMessage": { + "type": "String", + "placeholders": {} + }, + "yes": "Jes", + "@yes": { + "type": "String", + "placeholders": {} + }, + "you": "Vi", + "@you": { + "type": "String", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "Vi ne plu partoprenas ĉi tiun babilon", + "@youAreNoLongerParticipatingInThisChat": { + "type": "String", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "Vi estas forbarita de ĉi tiu babilo", + "@youHaveBeenBannedFromThisChat": { + "type": "String", + "placeholders": {} + }, + "yourPublicKey": "Via publika ŝlosilo", + "@yourPublicKey": { + "type": "String", + "placeholders": {} + }, + "sendAsText": "Sendi kiel tekston", + "@sendAsText": { + "type": "String" + }, + "noMatrixServer": "{server1} ne estas matriksa servilo, eble provu anstataŭe servilon {server2}?", + "@noMatrixServer": { + "type": "String", + "placeholders": { + "server1": { + "type": "String" + }, + "server2": { + "type": "String" + } + } + }, + "commandHint_send": "Sendi tekston", + "@commandHint_send": { + "type": "String", + "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": "String", + "placeholder": {} + }, + "addToSpace": "Aldoni al aro", + "@addToSpace": {}, + "homeserver": "Hejmservilo", + "@homeserver": {}, + "sendOnEnter": "Sendi per eniga klavo", + "@sendOnEnter": {} +} diff --git a/lib/l10n/intl_es.arb b/lib/l10n/intl_es.arb new file mode 100644 index 0000000..af913e6 --- /dev/null +++ b/lib/l10n/intl_es.arb @@ -0,0 +1,3396 @@ +{ + "@@locale": "es", + "@@last_modified": "2021-08-14 12:41:10.097243", + "about": "Acerca de", + "@about": { + "type": "String", + "placeholders": {} + }, + "accept": "Aceptar", + "@accept": { + "type": "String", + "placeholders": {} + }, + "acceptedTheInvitation": "👍 {username} aceptó la invitación", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "account": "Cuenta", + "@account": { + "type": "String", + "placeholders": {} + }, + "activatedEndToEndEncryption": "🔐 {username} activó el cifrado de extremo a extremo", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "addEmail": "Añadir dirección de correo", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "admin": "Administrador", + "@admin": { + "type": "String", + "placeholders": {} + }, + "alias": "alias", + "@alias": { + "type": "String", + "placeholders": {} + }, + "answeredTheCall": "{senderName} respondió a la llamada", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "anyoneCanJoin": "Cualquiera puede unirse", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "archive": "Archivo", + "@archive": { + "type": "String", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "¿Pueden unirse usuarios de visita?", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "¿Estás seguro?", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "areYouSureYouWantToLogout": "¿Confirma que quiere cerrar sesión?", + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "askSSSSSign": "Para poder confirmar a la otra persona, ingrese su contraseña de almacenamiento segura o la clave de recuperación.", + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "askVerificationRequest": "¿Aceptar esta solicitud de verificación de {username}?", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "badServerLoginTypesException": "El servidor soporta los siguientes mecanismos para autenticación:\n{serverVersions}\npero esta aplicación sólo soporta:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "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": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "banFromChat": "Vetar del chat", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "banned": "Vetado", + "@banned": { + "type": "String", + "placeholders": {} + }, + "bannedUser": "{username} vetó a {targetName}", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "blockDevice": "Bloquear dispositivo", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "blocked": "Bloqueado", + "@blocked": { + "type": "String", + "placeholders": {} + }, + "cancel": "Cancelar", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "changeDeviceName": "Cambiar el nombre del dispositivo", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "changedTheChatAvatar": "{username} cambió el icono del chat", + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheChatDescriptionTo": "{username} cambió la descripción del chat a: '{description}'", + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "changedTheChatNameTo": "{username} cambió el nombre del chat a: '{chatname}'", + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "changedTheChatPermissions": "{username} cambió los permisos del chat", + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheDisplaynameTo": "{username} cambió su nombre visible a: '{displayname}'", + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "changedTheGuestAccessRules": "{username} cambió las reglas de acceso de visitantes", + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheGuestAccessRulesTo": "{username} cambió las reglas de acceso de visitantes a: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheHistoryVisibility": "{username} cambió la visibilidad del historial", + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheHistoryVisibilityTo": "{username} cambió la visibilidad del historial a: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheJoinRules": "{username} cambió las reglas de ingreso", + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheJoinRulesTo": "{username} cambió las reglas de ingreso a {joinRules}", + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "changedTheProfileAvatar": "{username} cambió su imagen de perfil", + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomAliases": "{username} cambió el alias de la sala", + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomInvitationLink": "{username} cambió el enlace de invitación", + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changePassword": "Cambiar la contraseña", + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "changeTheHomeserver": "Cambiar el servidor", + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "changeTheme": "Cambia tu estilo", + "@changeTheme": { + "type": "String", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "Cambiar el nombre del grupo", + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "channelCorruptedDecryptError": "El cifrado se ha corrompido", + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "chat": "Chat", + "@chat": { + "type": "String", + "placeholders": {} + }, + "chatBackup": "Copia de respaldo del chat", + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "chatBackupDescription": "La copia de respaldo del chat está protegida por una llave de seguridad. Procure no perderla.", + "@chatBackupDescription": { + "type": "String", + "placeholders": {} + }, + "chatDetails": "Detalles del chat", + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "chats": "Conversaciones", + "@chats": { + "type": "String", + "placeholders": {} + }, + "chooseAStrongPassword": "Elija una contraseña segura", + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "clearArchive": "Borrar archivo", + "@clearArchive": {}, + "close": "Cerrar", + "@close": { + "type": "String", + "placeholders": {} + }, + "compareEmojiMatch": "Por favor compare los emojis", + "@compareEmojiMatch": { + "type": "String", + "placeholders": {} + }, + "compareNumbersMatch": "Por favor compare los números", + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "confirm": "Confirmar", + "@confirm": { + "type": "String", + "placeholders": {} + }, + "connect": "Conectar", + "@connect": { + "type": "String", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "El contacto ha sido invitado al grupo", + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "copiedToClipboard": "Copiado al portapapeles", + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "copy": "Copiar", + "@copy": { + "type": "String", + "placeholders": {} + }, + "copyToClipboard": "Copiar al portapapeles", + "@copyToClipboard": { + "type": "String", + "placeholders": {} + }, + "couldNotDecryptMessage": "No se pudo descifrar el mensaje: {error}", + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "countParticipants": "{count} participantes", + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "create": "Crear", + "@create": { + "type": "String", + "placeholders": {} + }, + "createdTheChat": "💬{username} creó el chat", + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "currentlyActive": "Actualmente activo", + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "darkTheme": "Oscuro", + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "dateWithoutYear": "{day}-{month}", + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "dateWithYear": "{day}-{month}-{year}", + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "deactivateAccountWarning": "Se desactivará su cuenta de usuario. ¡La operación no se puede cancelar! ¿Está seguro?", + "@deactivateAccountWarning": { + "type": "String", + "placeholders": {} + }, + "delete": "Eliminar", + "@delete": { + "type": "String", + "placeholders": {} + }, + "deleteAccount": "Cancelar cuenta", + "@deleteAccount": { + "type": "String", + "placeholders": {} + }, + "deleteMessage": "Eliminar mensaje", + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "device": "Dispositivo", + "@device": { + "type": "String", + "placeholders": {} + }, + "devices": "Dispositivos", + "@devices": { + "type": "String", + "placeholders": {} + }, + "displaynameHasBeenChanged": "El nombre visible ha cambiado", + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "downloadFile": "Descargar archivo", + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "editDisplayname": "Editar nombre visible", + "@editDisplayname": { + "type": "String", + "placeholders": {} + }, + "editRoomAliases": "Editar alias de la sala", + "@editRoomAliases": { + "type": "String", + "placeholders": {} + }, + "emoteExists": "¡El emote ya existe!", + "@emoteExists": { + "type": "String", + "placeholders": {} + }, + "emoteInvalid": "¡El atajo del emote es inválido!", + "@emoteInvalid": { + "type": "String", + "placeholders": {} + }, + "emotePacks": "Paquetes de emoticonos para la habitación", + "@emotePacks": { + "type": "String", + "placeholders": {} + }, + "emoteSettings": "Configuración de emotes", + "@emoteSettings": { + "type": "String", + "placeholders": {} + }, + "emoteShortcode": "Atajo de emote", + "@emoteShortcode": { + "type": "String", + "placeholders": {} + }, + "emoteWarnNeedToPick": "¡Debes elegir un atajo de emote y una imagen!", + "@emoteWarnNeedToPick": { + "type": "String", + "placeholders": {} + }, + "emptyChat": "Chat vacío", + "@emptyChat": { + "type": "String", + "placeholders": {} + }, + "enableEmotesGlobally": "Habilitar paquete de emoticonos a nivel general", + "@enableEmotesGlobally": { + "type": "String", + "placeholders": {} + }, + "enableEncryptionWarning": "Ya no podrá deshabilitar el cifrado. ¿Estás seguro?", + "@enableEncryptionWarning": { + "type": "String", + "placeholders": {} + }, + "encryption": "Cifrado", + "@encryption": { + "type": "String", + "placeholders": {} + }, + "encryptionNotEnabled": "El cifrado no está habilitado", + "@encryptionNotEnabled": { + "type": "String", + "placeholders": {} + }, + "endedTheCall": "{senderName} terminó la llamada", + "@endedTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "enterAnEmailAddress": "Introducir una dirección de correo electrónico", + "@enterAnEmailAddress": { + "type": "String", + "placeholders": {} + }, + "enterYourHomeserver": "Ingrese su servidor", + "@enterYourHomeserver": { + "type": "String", + "placeholders": {} + }, + "everythingReady": "¡Todo listo!", + "@everythingReady": { + "type": "String", + "placeholders": {} + }, + "fileName": "Nombre del archivo", + "@fileName": { + "type": "String", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "String", + "placeholders": {} + }, + "forward": "Reenviar", + "@forward": { + "type": "String", + "placeholders": {} + }, + "fromJoining": "Desde que se unió", + "@fromJoining": { + "type": "String", + "placeholders": {} + }, + "fromTheInvitation": "Desde la invitación", + "@fromTheInvitation": { + "type": "String", + "placeholders": {} + }, + "group": "Grupo", + "@group": { + "type": "String", + "placeholders": {} + }, + "groupIsPublic": "El grupo es público", + "@groupIsPublic": { + "type": "String", + "placeholders": {} + }, + "groupWith": "Grupo con {displayname}", + "@groupWith": { + "type": "String", + "placeholders": { + "displayname": { + "type": "String" + } + } + }, + "guestsAreForbidden": "Los visitantes están prohibidos", + "@guestsAreForbidden": { + "type": "String", + "placeholders": {} + }, + "guestsCanJoin": "Los visitantes pueden unirse", + "@guestsCanJoin": { + "type": "String", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "{username} ha retirado la invitación para {targetName}", + "@hasWithdrawnTheInvitationFor": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "help": "Ayuda", + "@help": { + "type": "String", + "placeholders": {} + }, + "hideRedactedEvents": "Ocultar sucesos censurados", + "@hideRedactedEvents": { + "type": "String", + "placeholders": {} + }, + "hideUnknownEvents": "Ocultar sucesos desconocidos", + "@hideUnknownEvents": { + "type": "String", + "placeholders": {} + }, + "id": "Identificación", + "@id": { + "type": "String", + "placeholders": {} + }, + "identity": "Identidad", + "@identity": { + "type": "String", + "placeholders": {} + }, + "ignoredUsers": "Usuarios ignorados", + "@ignoredUsers": { + "type": "String", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "Frase de contraseña o clave de recuperación incorrecta", + "@incorrectPassphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "inviteContact": "Invitar contacto", + "@inviteContact": { + "type": "String", + "placeholders": {} + }, + "inviteContactToGroup": "Invitar contacto a {groupName}", + "@inviteContactToGroup": { + "type": "String", + "placeholders": { + "groupName": { + "type": "String" + } + } + }, + "invited": "Invitado", + "@invited": { + "type": "String", + "placeholders": {} + }, + "invitedUser": "📩{username} invitó a {targetName}", + "@invitedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "invitedUsersOnly": "Sólo usuarios invitados", + "@invitedUsersOnly": { + "type": "String", + "placeholders": {} + }, + "inviteText": "{username} te invitó a FluffyChat.\n1.Visita fluffychat.im e instala la app\n2. Regístrate o inicia sesión\n3. Abre el enlace de invitación:\n{link}", + "@inviteText": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "link": { + "type": "String" + } + } + }, + "isTyping": "está escribiendo…", + "@isTyping": { + "type": "String", + "placeholders": {} + }, + "joinedTheChat": "👋{username} se unió al chat", + "@joinedTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "joinRoom": "Unirse a la sala", + "@joinRoom": { + "type": "String", + "placeholders": {} + }, + "kicked": "👞{username} echó a {targetName}", + "@kicked": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickedAndBanned": "🙅{username} echó y vetó a {targetName}", + "@kickedAndBanned": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickFromChat": "Echar del chat", + "@kickFromChat": { + "type": "String", + "placeholders": {} + }, + "lastActiveAgo": "Última vez activo: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "String", + "placeholders": { + "localizedTimeShort": { + "type": "String" + } + } + }, + "leave": "Abandonar", + "@leave": { + "type": "String", + "placeholders": {} + }, + "leftTheChat": "Abandonó el chat", + "@leftTheChat": { + "type": "String", + "placeholders": {} + }, + "license": "Licencia", + "@license": { + "type": "String", + "placeholders": {} + }, + "lightTheme": "Claro", + "@lightTheme": { + "type": "String", + "placeholders": {} + }, + "loadCountMoreParticipants": "Mostrar {count} participantes más", + "@loadCountMoreParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "loadingPleaseWait": "Cargando… Por favor espere.", + "@loadingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "loadMore": "Mostrar más…", + "@loadMore": { + "type": "String", + "placeholders": {} + }, + "login": "Acceso", + "@login": { + "type": "String", + "placeholders": {} + }, + "logInTo": "Iniciar sesión en {homeserver}", + "@logInTo": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "logout": "Cerrar sesión", + "@logout": { + "type": "String", + "placeholders": {} + }, + "mention": "Mencionar", + "@mention": { + "type": "String", + "placeholders": {} + }, + "moderator": "Moderador", + "@moderator": { + "type": "String", + "placeholders": {} + }, + "muteChat": "Silenciar chat", + "@muteChat": { + "type": "String", + "placeholders": {} + }, + "needPantalaimonWarning": "Tenga en cuenta que necesita Pantalaimon para utilizar el cifrado de extremo a extremo por ahora.", + "@needPantalaimonWarning": { + "type": "String", + "placeholders": {} + }, + "newMessageInFluffyChat": "Nuevo mensaje en FluffyChat", + "@newMessageInFluffyChat": { + "type": "String", + "placeholders": {} + }, + "newVerificationRequest": "¡Nueva solicitud de verificación!", + "@newVerificationRequest": { + "type": "String", + "placeholders": {} + }, + "next": "Siguiente", + "@next": { + "type": "String", + "placeholders": {} + }, + "no": "No", + "@no": { + "type": "String", + "placeholders": {} + }, + "noEmotesFound": "Ningún emote encontrado. 😕", + "@noEmotesFound": { + "type": "String", + "placeholders": {} + }, + "noEncryptionForPublicRooms": "Sólo se puede activar el cifrado en cuanto la sala deja de ser de acceso público.", + "@noEncryptionForPublicRooms": { + "type": "String", + "placeholders": {} + }, + "noGoogleServicesWarning": "Parece que no tienes servicios de Firebase Cloud Messaging en tu dispositivo. Para recibir de todas formas notificaciones, recomendamos instalar ntfy. Con ntfy o cualquier proveedor Unified Push, puedes recibir notificaciones manteniendo seguridad de datos. Puedes descargar ntfy de la PlayStore o de F-Droid.", + "@noGoogleServicesWarning": { + "type": "String", + "placeholders": {} + }, + "none": "Ninguno", + "@none": { + "type": "String", + "placeholders": {} + }, + "noPermission": "Sin autorización", + "@noPermission": { + "type": "String", + "placeholders": {} + }, + "noRoomsFound": "Ninguna sala encontrada…", + "@noRoomsFound": { + "type": "String", + "placeholders": {} + }, + "offline": "Desconectado", + "@offline": { + "type": "String", + "placeholders": {} + }, + "ok": "Ok", + "@ok": { + "type": "String", + "placeholders": {} + }, + "online": "Conectado", + "@online": { + "type": "String", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "La copia de seguridad de la clave en línea está habilitada", + "@onlineKeyBackupEnabled": { + "type": "String", + "placeholders": {} + }, + "oopsSomethingWentWrong": "Ups, algo salió mal…", + "@oopsSomethingWentWrong": { + "type": "String", + "placeholders": {} + }, + "openAppToReadMessages": "Abrir la aplicación para leer los mensajes", + "@openAppToReadMessages": { + "type": "String", + "placeholders": {} + }, + "openCamera": "Abrir cámara", + "@openCamera": { + "type": "String", + "placeholders": {} + }, + "passphraseOrKey": "contraseña o clave de recuperación", + "@passphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "password": "Contraseña", + "@password": { + "type": "String", + "placeholders": {} + }, + "passwordHasBeenChanged": "La contraseña ha sido cambiada", + "@passwordHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "people": "Personas", + "@people": { + "type": "String", + "placeholders": {} + }, + "pickImage": "Elegir imagen", + "@pickImage": { + "type": "String", + "placeholders": {} + }, + "pin": "Pin", + "@pin": { + "type": "String", + "placeholders": {} + }, + "play": "Reproducir {fileName}", + "@play": { + "type": "String", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "pleaseClickOnLink": "Haga clic en el enlace del correo electrónico y luego continúe.", + "@pleaseClickOnLink": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPassword": "Por favor ingrese su contraseña", + "@pleaseEnterYourPassword": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourUsername": "Por favor ingrese su nombre de usuario", + "@pleaseEnterYourUsername": { + "type": "String", + "placeholders": {} + }, + "pleaseFollowInstructionsOnWeb": "Por favor, siga las instrucciones del sitio web y presione \"siguiente\".", + "@pleaseFollowInstructionsOnWeb": { + "type": "String", + "placeholders": {} + }, + "privacy": "Privacidad", + "@privacy": { + "type": "String", + "placeholders": {} + }, + "publicRooms": "Salas públicas", + "@publicRooms": { + "type": "String", + "placeholders": {} + }, + "recording": "Grabando", + "@recording": { + "type": "String", + "placeholders": {} + }, + "redactedAnEvent": "{username} censuró un suceso", + "@redactedAnEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "reject": "Rechazar", + "@reject": { + "type": "String", + "placeholders": {} + }, + "rejectedTheInvitation": "{username} rechazó la invitación", + "@rejectedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "rejoin": "Volver a unirse", + "@rejoin": { + "type": "String", + "placeholders": {} + }, + "remove": "Eliminar", + "@remove": { + "type": "String", + "placeholders": {} + }, + "removeAllOtherDevices": "Eliminar todos los otros dispositivos", + "@removeAllOtherDevices": { + "type": "String", + "placeholders": {} + }, + "removedBy": "Eliminado por {username}", + "@removedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "removeDevice": "Eliminar dispositivo", + "@removeDevice": { + "type": "String", + "placeholders": {} + }, + "unbanFromChat": "Eliminar la expulsión", + "@unbanFromChat": { + "type": "String", + "placeholders": {} + }, + "reply": "Responder", + "@reply": { + "type": "String", + "placeholders": {} + }, + "requestPermission": "Solicitar permiso", + "@requestPermission": { + "type": "String", + "placeholders": {} + }, + "roomHasBeenUpgraded": "La sala ha subido de categoría", + "@roomHasBeenUpgraded": { + "type": "String", + "placeholders": {} + }, + "roomVersion": "Versión de sala", + "@roomVersion": { + "type": "String", + "placeholders": {} + }, + "seenByUser": "Visto por {username}", + "@seenByUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "send": "Enviar", + "@send": { + "type": "String", + "placeholders": {} + }, + "sendAMessage": "Enviar un mensaje", + "@sendAMessage": { + "type": "String", + "placeholders": {} + }, + "sendAudio": "Enviar audio", + "@sendAudio": { + "type": "String", + "placeholders": {} + }, + "sendFile": "Enviar un archivo", + "@sendFile": { + "type": "String", + "placeholders": {} + }, + "sendImage": "Enviar una imagen", + "@sendImage": { + "type": "String", + "placeholders": {} + }, + "sendOriginal": "Enviar el original", + "@sendOriginal": { + "type": "String", + "placeholders": {} + }, + "sendVideo": "Enviar video", + "@sendVideo": { + "type": "String", + "placeholders": {} + }, + "sentAFile": "{username} envió un archivo", + "@sentAFile": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAnAudio": "{username} envió un audio", + "@sentAnAudio": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAPicture": "{username} envió una imagen", + "@sentAPicture": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentASticker": "{username} envió un sticker", + "@sentASticker": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAVideo": "{username} envió un video", + "@sentAVideo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentCallInformations": "{senderName} envió información de la llamada", + "@sentCallInformations": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "setAsCanonicalAlias": "Fijar alias principal", + "@setAsCanonicalAlias": { + "type": "String", + "placeholders": {} + }, + "setInvitationLink": "Establecer enlace de invitación", + "@setInvitationLink": { + "type": "String", + "placeholders": {} + }, + "setStatus": "Establecer estado", + "@setStatus": { + "type": "String", + "placeholders": {} + }, + "settings": "Ajustes", + "@settings": { + "type": "String", + "placeholders": {} + }, + "share": "Compartir", + "@share": { + "type": "String", + "placeholders": {} + }, + "sharedTheLocation": "{username} compartió la ubicación", + "@sharedTheLocation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "showPassword": "Mostrar contraseña", + "@showPassword": { + "type": "String", + "placeholders": {} + }, + "skip": "Omitir", + "@skip": { + "type": "String", + "placeholders": {} + }, + "sourceCode": "Código fuente", + "@sourceCode": { + "type": "String", + "placeholders": {} + }, + "startedACall": "{senderName} comenzó una llamada", + "@startedACall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "statusExampleMessage": "¿Cómo estás hoy?", + "@statusExampleMessage": { + "type": "String", + "placeholders": {} + }, + "submit": "Enviar", + "@submit": { + "type": "String", + "placeholders": {} + }, + "systemTheme": "Sistema", + "@systemTheme": { + "type": "String", + "placeholders": {} + }, + "theyDontMatch": "No coinciden", + "@theyDontMatch": { + "type": "String", + "placeholders": {} + }, + "theyMatch": "Coinciden", + "@theyMatch": { + "type": "String", + "placeholders": {} + }, + "title": "FluffyChat", + "@title": { + "description": "Title for the application", + "type": "String", + "placeholders": {} + }, + "transferFromAnotherDevice": "Transferir desde otro dispositivo", + "@transferFromAnotherDevice": { + "type": "String", + "placeholders": {} + }, + "tryToSendAgain": "Intentar enviar nuevamente", + "@tryToSendAgain": { + "type": "String", + "placeholders": {} + }, + "unavailable": "Indisponible", + "@unavailable": { + "type": "String", + "placeholders": {} + }, + "unbannedUser": "{username} admitió a {targetName} nuevamente", + "@unbannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "unblockDevice": "Desbloquear dispositivo", + "@unblockDevice": { + "type": "String", + "placeholders": {} + }, + "unknownDevice": "Dispositivo desconocido", + "@unknownDevice": { + "type": "String", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "Algoritmo de cifrado desconocido", + "@unknownEncryptionAlgorithm": { + "type": "String", + "placeholders": {} + }, + "unknownEvent": "Evento desconocido '{type}'", + "@unknownEvent": { + "type": "String", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "unmuteChat": "Dejar de silenciar el chat", + "@unmuteChat": { + "type": "String", + "placeholders": {} + }, + "unpin": "Despinchar", + "@unpin": { + "type": "String", + "placeholders": {} + }, + "unreadChats": "{unreadCount, plural, =1{1 chat no leído} other{{unreadCount} chats no leídos}}", + "@unreadChats": { + "type": "String", + "placeholders": { + "unreadCount": { + "type": "int" + } + } + }, + "userAndOthersAreTyping": "{username} y {count} más están escribiendo…", + "@userAndOthersAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "userAndUserAreTyping": "{username} y {username2} están escribiendo…", + "@userAndUserAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "username2": { + "type": "String" + } + } + }, + "userIsTyping": "{username} está escribiendo…", + "@userIsTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "userLeftTheChat": "{username} abandonó el chat", + "@userLeftTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "username": "Nombre de usuario", + "@username": { + "type": "String", + "placeholders": {} + }, + "userSentUnknownEvent": "{username} envió un evento {type}", + "@userSentUnknownEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "type": { + "type": "String" + } + } + }, + "verified": "Verificado", + "@verified": { + "type": "String", + "placeholders": {} + }, + "verify": "Verificar", + "@verify": { + "type": "String", + "placeholders": {} + }, + "verifyStart": "Comenzar verificación", + "@verifyStart": { + "type": "String", + "placeholders": {} + }, + "verifySuccess": "¡Has verificado exitosamente!", + "@verifySuccess": { + "type": "String", + "placeholders": {} + }, + "verifyTitle": "Verificando la otra cuenta", + "@verifyTitle": { + "type": "String", + "placeholders": {} + }, + "videoCall": "Video llamada", + "@videoCall": { + "type": "String", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "Visibilidad del historial del chat", + "@visibilityOfTheChatHistory": { + "type": "String", + "placeholders": {} + }, + "visibleForAllParticipants": "Visible para todos los participantes", + "@visibleForAllParticipants": { + "type": "String", + "placeholders": {} + }, + "visibleForEveryone": "Visible para todo el mundo", + "@visibleForEveryone": { + "type": "String", + "placeholders": {} + }, + "voiceMessage": "Mensaje de voz", + "@voiceMessage": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "Esperando a que el socio acepte la solicitud…", + "@waitingPartnerAcceptRequest": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerEmoji": "Esperando a que el socio acepte los emojis…", + "@waitingPartnerEmoji": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerNumbers": "Esperando a que el socio acepte los números…", + "@waitingPartnerNumbers": { + "type": "String", + "placeholders": {} + }, + "wallpaper": "Fondo de pantalla:", + "@wallpaper": { + "type": "String", + "placeholders": {} + }, + "warning": "¡Advertencia!", + "@warning": { + "type": "String", + "placeholders": {} + }, + "weSentYouAnEmail": "Te enviamos un correo electrónico", + "@weSentYouAnEmail": { + "type": "String", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "Quién tiene permitido unirse al grupo", + "@whoIsAllowedToJoinThisGroup": { + "type": "String", + "placeholders": {} + }, + "writeAMessage": "Escribe un mensaje…", + "@writeAMessage": { + "type": "String", + "placeholders": {} + }, + "yes": "Sí", + "@yes": { + "type": "String", + "placeholders": {} + }, + "you": "Tú", + "@you": { + "type": "String", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "Ya no estás participando en este chat", + "@youAreNoLongerParticipatingInThisChat": { + "type": "String", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "Has sido vetado de este chat", + "@youHaveBeenBannedFromThisChat": { + "type": "String", + "placeholders": {} + }, + "autoplayImages": "Reproducir emoticonos y stickers animados automáticamente", + "@autoplayImages": { + "type": "String", + "placeholder": {} + }, + "allChats": "Todos los chats", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "addToSpace": "Agregar al espacio", + "@addToSpace": {}, + "cantOpenUri": "No puedo abrir el URI {uri}", + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "all": "Todo", + "@all": { + "type": "String", + "placeholders": {} + }, + "appLock": "Bloqueo de aplicación", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "botMessages": "Mensajes de bot", + "@botMessages": { + "type": "String", + "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": "String", + "placeholders": {} + }, + "sendSticker": "Enviar stickers", + "@sendSticker": { + "type": "String", + "placeholders": {} + }, + "setPermissionsLevel": "Establecer nivel de permisos", + "@setPermissionsLevel": { + "type": "String", + "placeholders": {} + }, + "shareLocation": "Compartir ubicación", + "@shareLocation": { + "type": "String", + "placeholders": {} + }, + "singlesignon": "Inicio de sesión único", + "@singlesignon": { + "type": "String", + "placeholders": {} + }, + "status": "Estado", + "@status": { + "type": "String", + "placeholders": {} + }, + "synchronizingPleaseWait": "Sincronizando... por favor espere.", + "@synchronizingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "iHaveClickedOnLink": "He hecho clic en el enlace", + "@iHaveClickedOnLink": { + "type": "String", + "placeholders": {} + }, + "directChats": "Chat directo", + "@directChats": { + "type": "String", + "placeholders": {} + }, + "errorObtainingLocation": "Error al obtener la ubicación: {error}", + "@errorObtainingLocation": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "howOffensiveIsThisContent": "¿Cuán ofensivo es este contenido?", + "@howOffensiveIsThisContent": { + "type": "String", + "placeholders": {} + }, + "inviteForMe": "Invitar por mí", + "@inviteForMe": { + "type": "String", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "Aún no ha agregado una forma de recuperar su contraseña.", + "@noPasswordRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "numUsersTyping": "{count} usuarios están escribiendo…", + "@numUsersTyping": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "or": "O", + "@or": { + "type": "String", + "placeholders": {} + }, + "spaceIsPublic": "El espacio es público", + "@spaceIsPublic": { + "type": "String", + "placeholders": {} + }, + "chatHasBeenAddedToThisSpace": "El chat se ha agregado a este espacio", + "@chatHasBeenAddedToThisSpace": {}, + "commandInvalid": "Comando inválido", + "@commandInvalid": { + "type": "String" + }, + "passwordRecovery": "Recuperación de contraseña", + "@passwordRecovery": { + "type": "String", + "placeholders": {} + }, + "security": "Seguridad", + "@security": { + "type": "String", + "placeholders": {} + }, + "extremeOffensive": "Extremadamente ofensivo", + "@extremeOffensive": { + "type": "String", + "placeholders": {} + }, + "editBlockedServers": "Editar servidores bloqueado", + "@editBlockedServers": { + "type": "String", + "placeholders": {} + }, + "configureChat": "Configurar chat", + "@configureChat": { + "type": "String", + "placeholders": {} + }, + "noConnectionToTheServer": "Sin conexión al servidor", + "@noConnectionToTheServer": { + "type": "String", + "placeholders": {} + }, + "yourPublicKey": "Tu clave pública", + "@yourPublicKey": { + "type": "String", + "placeholders": {} + }, + "passwordForgotten": "Contraseña olvidada", + "@passwordForgotten": { + "type": "String", + "placeholders": {} + }, + "inoffensive": "Inofensivo", + "@inoffensive": { + "type": "String", + "placeholders": {} + }, + "reason": "Razón", + "@reason": { + "type": "String", + "placeholders": {} + }, + "memberChanges": "Cambios de miembros", + "@memberChanges": { + "type": "String", + "placeholders": {} + }, + "createNewSpace": "Nuevo espacio", + "@createNewSpace": { + "type": "String", + "placeholders": {} + }, + "edit": "Editar", + "@edit": { + "type": "String", + "placeholders": {} + }, + "setCustomEmotes": "Establecer emoticonos personalizados", + "@setCustomEmotes": { + "type": "String", + "placeholders": {} + }, + "ignore": "Ignorar", + "@ignore": { + "type": "String", + "placeholders": {} + }, + "notifications": "Notificaciones", + "@notifications": { + "type": "String", + "placeholders": {} + }, + "notificationsEnabledForThisAccount": "Notificaciones habilitadas para esta cuenta", + "@notificationsEnabledForThisAccount": { + "type": "String", + "placeholders": {} + }, + "offensive": "Ofensiva", + "@offensive": { + "type": "String", + "placeholders": {} + }, + "serverRequiresEmail": "Este servidor necesita validar su dirección de correo electrónico para registrarse.", + "@serverRequiresEmail": {}, + "pleaseChoose": "Por favor elija", + "@pleaseChoose": { + "type": "String", + "placeholders": {} + }, + "replaceRoomWithNewerVersion": "Reemplazar habitación con una versión más nueva", + "@replaceRoomWithNewerVersion": { + "type": "String", + "placeholders": {} + }, + "contentHasBeenReported": "El contenido ha sido reportado a los administradores del servidor", + "@contentHasBeenReported": { + "type": "String", + "placeholders": {} + }, + "groups": "Grupos", + "@groups": { + "type": "String", + "placeholders": {} + }, + "reportMessage": "Mensaje de informe", + "@reportMessage": { + "type": "String", + "placeholders": {} + }, + "search": "Buscar", + "@search": { + "type": "String", + "placeholders": {} + }, + "locationPermissionDeniedNotice": "Permiso de ubicación denegado. Concédeles que puedan compartir tu ubicación.", + "@locationPermissionDeniedNotice": { + "type": "String", + "placeholders": {} + }, + "defaultPermissionLevel": "Nivel de permiso predeterminado para nuevo usuarios", + "@defaultPermissionLevel": { + "type": "String", + "placeholders": {} + }, + "obtainingLocation": "Obteniendo ubicación…", + "@obtainingLocation": { + "type": "String", + "placeholders": {} + }, + "participant": "Participante", + "@participant": { + "type": "String", + "placeholders": {} + }, + "pushRules": "Regla de Push", + "@pushRules": { + "type": "String", + "placeholders": {} + }, + "register": "Registrarse", + "@register": { + "type": "String", + "placeholders": {} + }, + "sendAsText": "Enviar como texto", + "@sendAsText": { + "type": "String" + }, + "toggleMuted": "Alternar silenciado", + "@toggleMuted": { + "type": "String", + "placeholders": {} + }, + "tooManyRequestsWarning": "Demasiadas solicitudes. ¡Por favor inténtelo más tarde!", + "@tooManyRequestsWarning": { + "type": "String", + "placeholders": {} + }, + "withTheseAddressesRecoveryDescription": "Con esta dirección puede recuperar su contraseña.", + "@withTheseAddressesRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "commandHint_send": "Enviar texto", + "@commandHint_send": { + "type": "String", + "description": "Usage hint for the command /send" + }, + "deviceId": "ID del dispositivo", + "@deviceId": { + "type": "String", + "placeholders": {} + }, + "containsUserName": "Contiene nombre de usuario", + "@containsUserName": { + "type": "String", + "placeholders": {} + }, + "oopsPushError": "¡UPS¡ Desafortunadamente, se produjo un error al configurar las notificaciones push.", + "@oopsPushError": { + "type": "String", + "placeholders": {} + }, + "removeYourAvatar": "Quitar tu avatar", + "@removeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "enableEncryption": "Habilitar la encriptación", + "@enableEncryption": { + "type": "String", + "placeholders": {} + }, + "messages": "Mensajes", + "@messages": { + "type": "String", + "placeholders": {} + }, + "fontSize": "Tamaño de fuente", + "@fontSize": { + "type": "String", + "placeholders": {} + }, + "commandHint_ban": "Prohibir al usuario dado en esta sala", + "@commandHint_ban": { + "type": "String", + "description": "Usage hint for the command /ban" + }, + "commandHint_unban": "Des banear al usuario dado en esta sala", + "@commandHint_unban": { + "type": "String", + "description": "Usage hint for the command /unban" + }, + "commandMissing": "{command} no es un comando.", + "@commandMissing": { + "type": "String", + "placeholders": { + "command": { + "type": "String" + } + }, + "description": "State that {command} is not a valid /command." + }, + "scanQrCode": "Escanear código QR", + "@scanQrCode": {}, + "homeserver": "Servidor inicial", + "@homeserver": {}, + "newChat": "Nuevo chat", + "@newChat": { + "type": "String", + "placeholders": {} + }, + "commandHint_join": "Únete a la sala indicada", + "@commandHint_join": { + "type": "String", + "description": "Usage hint for the command /join" + }, + "sendOnEnter": "Enviar con enter", + "@sendOnEnter": {}, + "changeYourAvatar": "Cambiar tu avatar", + "@changeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "commandHint_me": "Descríbete", + "@commandHint_me": { + "type": "String", + "description": "Usage hint for the command /me" + }, + "commandHint_html": "Enviar texto con formato HTML", + "@commandHint_html": { + "type": "String", + "description": "Usage hint for the command /html" + }, + "commandHint_invite": "Invitar al usuario indicado a esta sala", + "@commandHint_invite": { + "type": "String", + "description": "Usage hint for the command /invite" + }, + "commandHint_kick": "Eliminar el usuario indicado de esta sala", + "@commandHint_kick": { + "type": "String", + "description": "Usage hint for the command /kick" + }, + "commandHint_leave": "Deja esta sala", + "@commandHint_leave": { + "type": "String", + "description": "Usage hint for the command /leave" + }, + "commandHint_myroomavatar": "Selecciona tu foto para esta sala (by mxc-uri)", + "@commandHint_myroomavatar": { + "type": "String", + "description": "Usage hint for the command /myroomavatar" + }, + "commandHint_myroomnick": "Establece tu nombre para mostrar para esta sala", + "@commandHint_myroomnick": { + "type": "String", + "description": "Usage hint for the command /myroomnick" + }, + "commandHint_op": "Establece el nivel de potencia del usuario dado (default: 50)", + "@commandHint_op": { + "type": "String", + "description": "Usage hint for the command /op" + }, + "commandHint_plain": "Enviar texto sin formato", + "@commandHint_plain": { + "type": "String", + "description": "Usage hint for the command /plain" + }, + "commandHint_react": "Enviar respuesta como reacción", + "@commandHint_react": { + "type": "String", + "description": "Usage hint for the command /react" + }, + "containsDisplayName": "Contiene nombre para mostrar", + "@containsDisplayName": { + "type": "String", + "placeholders": {} + }, + "editRoomAvatar": "Editar avatar de sala", + "@editRoomAvatar": { + "type": "String", + "placeholders": {} + }, + "locationDisabledNotice": "Los servicios de ubicación están deshabilitado. Habilite para poder compartir su ubicación.", + "@locationDisabledNotice": { + "type": "String", + "placeholders": {} + }, + "encrypted": "Encriptado", + "@encrypted": { + "type": "String", + "placeholders": {} + }, + "goToTheNewRoom": "Ir a la nueva sala", + "@goToTheNewRoom": { + "type": "String", + "placeholders": {} + }, + "noMatrixServer": "{server1} no es un servidor matrix, usar {server2} en su lugar?", + "@noMatrixServer": { + "type": "String", + "placeholders": { + "server1": { + "type": "String" + }, + "server2": { + "type": "String" + } + } + }, + "openInMaps": "Abrir en maps", + "@openInMaps": { + "type": "String", + "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": "String", + "placeholders": {} + }, + "pleaseChooseAPasscode": "Elija un código de acceso", + "@pleaseChooseAPasscode": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPin": "Por favor ingrese su PIN", + "@pleaseEnterYourPin": { + "type": "String", + "placeholders": {} + }, + "redactMessage": "Censurar mensaje", + "@redactMessage": { + "type": "String", + "placeholders": {} + }, + "sendMessages": "Enviar mensajes", + "@sendMessages": { + "type": "String", + "placeholders": {} + }, + "spaceName": "Nombre del espacio", + "@spaceName": { + "type": "String", + "placeholders": {} + }, + "toggleFavorite": "Alternar favorito", + "@toggleFavorite": { + "type": "String", + "placeholders": {} + }, + "toggleUnread": "Marcar como: leído / no leído", + "@toggleUnread": { + "type": "String", + "placeholders": {} + }, + "whoCanPerformWhichAction": "Quién puede realizar qué acción", + "@whoCanPerformWhichAction": { + "type": "String", + "placeholders": {} + }, + "whyDoYouWantToReportThis": "¿Por qué quieres denunciar esto?", + "@whyDoYouWantToReportThis": { + "type": "String", + "placeholders": {} + }, + "wipeChatBackup": "¿Limpiar la copia de seguridad de tu chat para crear una nueva clave de recuperación?", + "@wipeChatBackup": { + "type": "String", + "placeholders": {} + }, + "yourChatBackupHasBeenSetUp": "Se ha configurado la copia de respaldo del chat.", + "@yourChatBackupHasBeenSetUp": {}, + "unverified": "No verificado", + "@unverified": {}, + "commandHint_clearcache": "Limpiar cache", + "@commandHint_clearcache": { + "type": "String", + "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": "String", + "placeholders": {} + }, + "repeatPassword": "Repite la contraseña", + "@repeatPassword": {}, + "removeFromSpace": "Eliminar del espacio", + "@removeFromSpace": {}, + "addToSpaceDescription": "Elige un espacio para añadirle este chat.", + "@addToSpaceDescription": {}, + "openGallery": "Abrir galería", + "@openGallery": {}, + "start": "Iniciar", + "@start": {}, + "commandHint_discardsession": "Descartar sesión", + "@commandHint_discardsession": { + "type": "String", + "description": "Usage hint for the command /discardsession" + }, + "messageType": "Tipo de Mensaje", + "@messageType": {}, + "videoWithSize": "Video ({size})", + "@videoWithSize": { + "type": "String", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "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": { + "type": "String" + } + } + }, + "youAcceptedTheInvitation": "👍 Aceptaste la invitación", + "@youAcceptedTheInvitation": {}, + "widgetEtherpad": "Nota de texto", + "@widgetEtherpad": {}, + "commandHint_cuddle": "Enviar un abrazo", + "@commandHint_cuddle": {}, + "supposedMxid": "Esto debería ser {mxid}", + "@supposedMxid": { + "type": "String", + "placeholders": { + "mxid": { + "type": "String" + } + } + }, + "importFromZipFile": "Importar de un archivo .zip", + "@importFromZipFile": {}, + "exportEmotePack": "Exportar paquete de emotes a .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": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "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": { + "type": "int" + } + } + }, + "reportUser": "Reportar usuario", + "@reportUser": {}, + "voiceCall": "Llamada de voz", + "@voiceCall": {}, + "reactedWith": "{sender} reaccionó con {reaction}", + "@reactedWith": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "reaction": { + "type": "String" + } + } + }, + "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": "String", + "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": "String", + "description": "Usage hint for the command /create" + }, + "user": "Usuario", + "@user": {}, + "separateChatTypes": "Separar chats directos de grupos", + "@separateChatTypes": { + "type": "String", + "placeholders": {} + }, + "tryAgain": "Inténtelo de nuevo", + "@tryAgain": {}, + "youKickedAndBanned": "🙅 Usted expulsó y prohibió el acceso a {user}", + "@youKickedAndBanned": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "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, proporciona un nombre para 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": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "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": { + "type": "String" + } + } + }, + "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": { + "type": "String" + } + } + }, + "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": "String", + "placeholders": { + "username": { + "type": "String" + }, + "reason": { + "type": "String" + } + } + }, + "youHaveWithdrawnTheInvitationFor": "Usted retiró la invitación a {user}", + "@youHaveWithdrawnTheInvitationFor": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "enterRoom": "Unirse a la sala", + "@enterRoom": {}, + "confirmEventUnpin": "¿Seguro que quiere desfijar permanentemente el evento?", + "@confirmEventUnpin": {}, + "youInvitedUser": "📩 Usted invitó a {user}", + "@youInvitedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "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": { + "type": "String" + } + } + }, + "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": "String", + "placeholders": { + "oldDisplayName": { + "type": "String" + } + } + }, + "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": { + "type": "String" + } + } + }, + "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": "String", + "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": "String", + "description": "Usage hint for the command /dm" + }, + "youUnbannedUser": "Usted volvió a permitir el acceso a {user}", + "@youUnbannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "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": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "cuddleContent": "{senderName} se acurruca contigo", + "@cuddleContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "commandHint_googly": "Enviar unos ojos saltones", + "@commandHint_googly": {}, + "noChatsFoundHere": "No se han encontrado chats. Inicia un nuevo chat usando el botón de abajo. ⤵️", + "@noChatsFoundHere": {}, + "joinedChats": "Chats Unidos", + "@joinedChats": {}, + "space": "Espacio", + "@space": {}, + "spaces": "Espacios", + "@spaces": {}, + "block": "Bloquear", + "@block": {}, + "blockListDescription": "Puedes bloquear usuarios que te estén molestando. No podrás recibir mensajes ni invitaciones de chat de los usuarios de tu lista de bloqueo.", + "@blockListDescription": {}, + "aboutHomeserver": "Acerca de {homeserver}", + "@aboutHomeserver": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "unread": "No leídos", + "@unread": {}, + "swipeRightToLeftToReply": "Desliza a la izquierda para responder", + "@swipeRightToLeftToReply": {}, + "hideRedactedMessagesBody": "Si alguien elimina un mensaje, este mensaje ya no será visible en el chat.", + "@hideRedactedMessagesBody": {}, + "hideInvalidOrUnknownMessageFormats": "Esconde formatos de mensajes inválidos o desconocidos", + "@hideInvalidOrUnknownMessageFormats": {}, + "hideRedactedMessages": "Esconde mensajes eliminados", + "@hideRedactedMessages": {}, + "appLockDescription": "Bloquear la aplicación cuando no se use con código pin", + "@appLockDescription": {}, + "alwaysUse24HourFormat": "true", + "@alwaysUse24HourFormat": { + "description": "Set to true to always display time of day in 24 hour format." + }, + "accessAndVisibility": "Acceso y visibilidad", + "@accessAndVisibility": {}, + "globalChatId": "ID de chat Global", + "@globalChatId": {}, + "accessAndVisibilityDescription": "A quién se le permite unirse a este chat y cómo se puede descubrir el chat.", + "@accessAndVisibilityDescription": {}, + "calls": "Llamadas", + "@calls": {}, + "customEmojisAndStickers": "Emojis y stickers personalizados", + "@customEmojisAndStickers": {}, + "customEmojisAndStickersBody": "Agrega o comparte emojis y stickers personalizados que se pueden utilizar en cualquier chat.", + "@customEmojisAndStickersBody": {}, + "blockedUsers": "Usuarios bloqueados", + "@blockedUsers": {}, + "blockUsername": "Ignorar nombre de usuario", + "@blockUsername": {}, + "noMoreChatsFound": "No se encontraron más chats...", + "@noMoreChatsFound": {}, + "countChatsAndCountParticipants": "{chats} chats y {participants} participantes", + "@countChatsAndCountParticipants": { + "type": "String", + "placeholders": { + "chats": { + "type": "int" + }, + "participants": { + "type": "int" + } + } + }, + "notifyMeFor": "Notificarme", + "@notifyMeFor": {}, + "presencesToggle": "Mostrar mensajes de estado de otros usuarios", + "@presencesToggle": { + "type": "String", + "placeholders": {} + }, + "placeCall": "Llamar", + "@placeCall": {}, + "callingAccount": "Llamando a cuenta", + "@callingAccount": {}, + "appearOnTopDetails": "Permite que la app aparezca delante (no hace falta si ya tienes Fluffychat configurado como cuenta llamante)", + "@appearOnTopDetails": {}, + "disableEncryptionWarning": "Por motivos de seguridad no es posible deshabilitar el cifrado en un chat si ha sido habilitado previamente.", + "@disableEncryptionWarning": {}, + "setColorTheme": "Poner tema de color:", + "@setColorTheme": {}, + "inviteGroupChat": "📨 Invitar a grupo", + "@inviteGroupChat": {}, + "invalidInput": "¡Entrada no válida!", + "@invalidInput": {}, + "wrongPinEntered": "¡Pin erróneo! Vuelve a intenrarlo en {seconds} segundos...", + "@wrongPinEntered": { + "type": "String", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "decline": "Declinar", + "@decline": {}, + "thisDevice": "Este dispositivo:", + "@thisDevice": {}, + "minimumPowerLevel": "{level} es el nivel mínimo.", + "@minimumPowerLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "String" + } + } + }, + "verifyOtherDevice": "🔐 Verificar otro dispositivo", + "@verifyOtherDevice": {}, + "chatPermissionsDescription": "Definir el nivel necesario para ciertas acciones en este chat. Los niveles 0, 50 y 100 habitualmente representan usuarios, moderadores y administradores, pero se puede establecer cualquier escala.", + "@chatPermissionsDescription": {}, + "updateInstalled": "¡🎉 Actualización {version} instalada!", + "@updateInstalled": { + "type": "String", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "changelog": "Cambios", + "@changelog": {}, + "sendCanceled": "Envío cancelado", + "@sendCanceled": {}, + "invite": "Invitar", + "@invite": {}, + "searchIn": "Buscar en chat \"{chat}\"...", + "@searchIn": { + "type": "String", + "placeholders": { + "chat": { + "type": "String" + } + } + }, + "appWantsToUseForLogin": "Usar '{server}' para entrar", + "@appWantsToUseForLogin": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "appWantsToUseForLoginDescription": "Por la presente permites a la app y web compartir información sobre ti.", + "@appWantsToUseForLoginDescription": {}, + "encryptThisChat": "Cifrar este chat", + "@encryptThisChat": {}, + "publicLink": "Enlace público", + "@publicLink": {}, + "transparent": "Transparente", + "@transparent": {}, + "select": "Elegir", + "@select": {}, + "newPassword": "Nueva clave", + "@newPassword": {}, + "nothingFound": "No se encontró nada...", + "@nothingFound": {}, + "subspace": "Sub espacio", + "@subspace": {}, + "openLinkInBrowser": "Abrir enlace en navegador", + "@openLinkInBrowser": {}, + "presenceStyle": "Presencia:", + "@presenceStyle": { + "type": "String", + "placeholders": {} + }, + "youInvitedToBy": "📩 Te han invitado con un enlace a:\n{alias}", + "@youInvitedToBy": { + "placeholders": { + "alias": { + "type": "String" + } + } + }, + "signInWith": "Entrar con {provider}", + "@signInWith": { + "type": "String", + "placeholders": { + "provider": { + "type": "String" + } + } + }, + "setTheme": "Poner tema:", + "@setTheme": {}, + "learnMore": "Aprender más", + "@learnMore": {}, + "incomingMessages": "Mensajes entrantes", + "@incomingMessages": {}, + "noOtherDevicesFound": "No se han encontrado otros dispositivos", + "@noOtherDevicesFound": {}, + "generalNotificationSettings": "Ajustes de notificación generales", + "@generalNotificationSettings": {}, + "roomNotificationSettings": "Ajustes de notificación de salas", + "@roomNotificationSettings": {}, + "userSpecificNotificationSettings": "Ajustes de notificación por usuario", + "@userSpecificNotificationSettings": {}, + "contentNotificationSettings": "Ajustes de notificación de contenido", + "@contentNotificationSettings": {}, + "otherNotificationSettings": "Otros ajustes de notificación", + "@otherNotificationSettings": {}, + "notificationRuleContainsUserName": "Contiene nombre de usuario", + "@notificationRuleContainsUserName": {}, + "notificationRuleContainsUserNameDescription": "Notifica al usuario cuando un mensaje contiene su nombre de usuario.", + "@notificationRuleContainsUserNameDescription": {}, + "notificationRuleMaster": "Silenciar todas las notificaciones", + "@notificationRuleMaster": {}, + "notificationRuleMasterDescription": "Anula todas las demás reglas y desactiva todas las notificaciones.", + "@notificationRuleMasterDescription": {}, + "notificationRuleSuppressNotices": "Suprimir los mensajes automáticos", + "@notificationRuleSuppressNotices": {}, + "notificationRuleSuppressNoticesDescription": "Suprimir notificaciones de clientes automáticos, como bots.", + "@notificationRuleSuppressNoticesDescription": {}, + "notificationRuleInviteForMe": "Invitación para mí", + "@notificationRuleInviteForMe": {}, + "notificationRuleInviteForMeDescription": "Notifica al usuario cuando se les invita a una sala.", + "@notificationRuleInviteForMeDescription": {}, + "notificationRuleMemberEvent": "Evento para miembros", + "@notificationRuleMemberEvent": {}, + "notificationRuleMemberEventDescription": "Suprimir notificaciones de eventos para miembros.", + "@notificationRuleMemberEventDescription": {}, + "notificationRuleIsUserMention": "Mención al usuario", + "@notificationRuleIsUserMention": {}, + "notificationRuleIsUserMentionDescription": "Notifica al usuario cuando son mencionados directamente en un mensaje.", + "@notificationRuleIsUserMentionDescription": {}, + "notificationRuleContainsDisplayName": "Contiene el nombre visible", + "@notificationRuleContainsDisplayName": {}, + "notificationRuleContainsDisplayNameDescription": "Notifica al usuario cuando un mensaje contiene su nombre visible.", + "@notificationRuleContainsDisplayNameDescription": {}, + "notificationRuleIsRoomMention": "Mención de sala", + "@notificationRuleIsRoomMention": {}, + "notificationRuleIsRoomMentionDescription": "Notifica al usuario cuando hay una mención de sala.", + "@notificationRuleIsRoomMentionDescription": {}, + "notificationRuleRoomnotif": "Notificación de sala", + "@notificationRuleRoomnotif": {}, + "notificationRuleRoomnotifDescription": "Notifica al usuario cuando un mensaje contiene '@sala'.", + "@notificationRuleRoomnotifDescription": {}, + "notificationRuleTombstone": "Lápida", + "@notificationRuleTombstone": {}, + "notificationRuleTombstoneDescription": "Notifica al usuario sobre mensajes de desactivación de sala.", + "@notificationRuleTombstoneDescription": {}, + "notificationRuleReaction": "Reacción", + "@notificationRuleReaction": {}, + "notificationRuleReactionDescription": "Suprime notificaciones por reacciones.", + "@notificationRuleReactionDescription": {}, + "notificationRuleRoomServerAcl": "ACL de servidor de sala", + "@notificationRuleRoomServerAcl": {}, + "notificationRuleRoomServerAclDescription": "Suprime notificaciones de listas de control de acceso de servidores de sala.", + "@notificationRuleRoomServerAclDescription": {}, + "notificationRuleSuppressEdits": "Suprimir ediciones", + "@notificationRuleSuppressEdits": {}, + "notificationRuleSuppressEditsDescription": "Suprime las notificaciones de mensajes editados.", + "@notificationRuleSuppressEditsDescription": {}, + "notificationRuleCall": "Llamar", + "@notificationRuleCall": {}, + "notificationRuleCallDescription": "Notifica al usuario de llamadas.", + "@notificationRuleCallDescription": {}, + "notificationRuleEncryptedRoomOneToOne": "Sala cifrada uno a uno", + "@notificationRuleEncryptedRoomOneToOne": {}, + "notificationRuleEncryptedRoomOneToOneDescription": "Notifica al usuario sobre mensajes en salas cifradas uno a uno.", + "@notificationRuleEncryptedRoomOneToOneDescription": {}, + "notificationRuleRoomOneToOne": "Sala uno a uno", + "@notificationRuleRoomOneToOne": {}, + "notificationRuleRoomOneToOneDescription": "Notifica al usuario sobre mensajes en salas uno a uno.", + "@notificationRuleRoomOneToOneDescription": {}, + "notificationRuleMessage": "Mensaje", + "@notificationRuleMessage": {}, + "notificationRuleMessageDescription": "Notifica al usuario sobre mensajes generales.", + "@notificationRuleMessageDescription": {}, + "notificationRuleEncrypted": "Cifrado", + "@notificationRuleEncrypted": {}, + "notificationRuleEncryptedDescription": "Notifica al usuario sobre mensajes en salas cifradas.", + "@notificationRuleEncryptedDescription": {}, + "notificationRuleJitsi": "Jitsi", + "@notificationRuleJitsi": {}, + "notificationRuleJitsiDescription": "Notifica al usuario sobre eventos del componente de Jitsi.", + "@notificationRuleJitsiDescription": {}, + "notificationRuleServerAcl": "Suprimir eventos de ACL del servidor", + "@notificationRuleServerAcl": {}, + "notificationRuleServerAclDescription": "Suprime notificaciones de eventos de ACL del servidor.", + "@notificationRuleServerAclDescription": {}, + "unknownPushRule": "Regla de notificación desconocida '{rule}'", + "@unknownPushRule": { + "type": "String", + "placeholders": { + "rule": { + "type": "String" + } + } + }, + "deletePushRuleCanNotBeUndone": "Si eliminas este ajuste de notificación, esto no se puede deshacer.", + "@deletePushRuleCanNotBeUndone": {}, + "more": "Más", + "@more": {}, + "serverLimitReached": "¡Alcanzado límite del servidor! Esperando {seconds} segundos...", + "@serverLimitReached": { + "type": "integer", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "groupCanBeFoundViaSearch": "Los grupos se pueden encontrar buscando", + "@groupCanBeFoundViaSearch": {}, + "addChatOrSubSpace": "Añadir chat o sub espacio", + "@addChatOrSubSpace": {}, + "sendRoomNotifications": "Mandar notificación @sala", + "@sendRoomNotifications": {}, + "changeTheChatPermissions": "Cambiar los permisos de chat", + "@changeTheChatPermissions": {}, + "setWallpaper": "Poner fondo", + "@setWallpaper": {}, + "sendImages": "Envío de la imagen {count}", + "@sendImages": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "invitedBy": "📩 Invitado por {user}", + "@invitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "usersMustKnock": "Los usuarios han de avisar", + "@usersMustKnock": {}, + "noOneCanJoin": "Nadie puede unirse", + "@noOneCanJoin": {}, + "reopenChat": "Reabrir chat", + "@reopenChat": {}, + "hidePresences": "¿Esconder la lista de estado?", + "@hidePresences": {}, + "fileIsTooBigForServer": "¡No se pudo mandar! El servidor solamente permite adjuntos de hasta {max}.", + "@fileIsTooBigForServer": { + "type": "String", + "placeholders": { + "max": { + "type": "String" + } + } + }, + "jumpToLastReadMessage": "Saltar al último mensaje leído", + "@jumpToLastReadMessage": {}, + "report": "informe", + "@report": {}, + "readUpToHere": "Leer hasta aquí", + "@readUpToHere": {}, + "signInWithPassword": "Entrar con clave", + "@signInWithPassword": {}, + "formattedMessages": "Mensajes con formato", + "@formattedMessages": {}, + "publicSpaces": "Espacios públicos", + "@publicSpaces": {}, + "formattedMessagesDescription": "Mostrar contenido de mensaje enriquecido, como texto en negrita, usando markdown.", + "@formattedMessagesDescription": {}, + "userLevel": "{level} - Usuario", + "@userLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "completedKeyVerification": "{sender} completó la verificación de clave", + "@completedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "sendingAttachment": "Enviando adjunto...", + "@sendingAttachment": {}, + "compress": "Comprimir", + "@compress": {}, + "pleaseFillOut": "Por favor, rellenar", + "@pleaseFillOut": {}, + "newChatRequest": "📩 Nueva petición de chat", + "@newChatRequest": {}, + "unbanUserDescription": "El usuario podrá entrar al chat de nuevo si lo intenta.", + "@unbanUserDescription": {}, + "roomUpgradeDescription": "El chat se volverá a crear con la nueva versión de sala. Todos los participantes serán notificados de que tienen que cambiarse al nuevo chat. Puedes encontrar más información sobre versiones de salas en https://spec.matrix.org/latest/rooms/", + "@roomUpgradeDescription": {}, + "makeAdminDescription": "Una vez hagas que este usuario sea admin, puede que no puedas deshacerlo porque tendrá los mismos permisos que tú.", + "@makeAdminDescription": {}, + "knocking": "Avisando", + "@knocking": {}, + "chatCanBeDiscoveredViaSearchOnServer": "El chat se puede descubrir buscando en {server}", + "@chatCanBeDiscoveredViaSearchOnServer": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "searchChatsRooms": "Buscar #chats, @usuarios...", + "@searchChatsRooms": {}, + "groupName": "Nombre de grupo", + "@groupName": {}, + "createGroupAndInviteUsers": "Crear un grupo e invitar usuarios", + "@createGroupAndInviteUsers": {}, + "databaseMigrationTitle": "La base de datos está optimizada", + "@databaseMigrationTitle": {}, + "searchForUsers": "Buscar @usuarios...", + "@searchForUsers": {}, + "startConversation": "Iniciar conversación", + "@startConversation": {}, + "gallery": "Galería", + "@gallery": {}, + "files": "Archivos", + "@files": {}, + "initAppError": "Hubo un error al arrancar la app", + "@initAppError": {}, + "sessionLostBody": "Se perdió tu sesión. Por favor, informa de este error a los desarrolladores en {url}. El mensaje de error es: {error}", + "@sessionLostBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "unreadChatsInApp": "{appname}: {unread} chats no leídos", + "@unreadChatsInApp": { + "type": "String", + "placeholders": { + "appname": { + "type": "String" + }, + "unread": { + "type": "String" + } + } + }, + "restricted": "Restringido", + "@restricted": {}, + "requestedKeyVerification": "{sender} ha pedido verificación de clave", + "@requestedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "adminLevel": "{level} - Administrador", + "@adminLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "changeGeneralChatSettings": "Cambiar los ajustes generales de chat", + "@changeGeneralChatSettings": {}, + "inviteOtherUsers": "Invitar a otros usuarios a este chat", + "@inviteOtherUsers": {}, + "calculatingFileSize": "Calculando tamaño de archivo...", + "@calculatingFileSize": {}, + "prepareSendingAttachment": "Prepara envío del adjunto...", + "@prepareSendingAttachment": {}, + "generatingVideoThumbnail": "Generando miniatura de vídeo...", + "@generatingVideoThumbnail": {}, + "sendingAttachmentCountOfCount": "Enviando adjunto {index} de {length}...", + "@sendingAttachmentCountOfCount": { + "type": "integer", + "placeholders": { + "index": { + "type": "int" + }, + "length": { + "type": "int" + } + } + }, + "compressVideo": "Comprimiendo vídeo...", + "@compressVideo": {}, + "blur": "Difuminar:", + "@blur": {}, + "continueText": "Continuar", + "@continueText": {}, + "welcomeText": "Eh, eh, 👋 Esto es FluffyChat. Puedes acceder a cualquier homeserver, que sea compatible con https://matrix.org. Y luego chatear con cualquiera. ¡Es una red de mensajería descentralizada enorme!", + "@welcomeText": {}, + "opacity": "Opacidad:", + "@opacity": {}, + "version": "Versión", + "@version": {}, + "serverInformation": "Información del servidor:", + "@serverInformation": {}, + "website": "Web", + "@website": {}, + "name": "Nombre", + "@name": {}, + "knockRestricted": "Aviso restringido", + "@knockRestricted": {}, + "hideMemberChangesInPublicChats": "Ocultar cambios de miembros en salas públicas", + "@hideMemberChangesInPublicChats": {}, + "hideMemberChangesInPublicChatsBody": "No mostrar en el chat que alguien entra o sale de una sala pública para mejorar la inteligibilidad.", + "@hideMemberChangesInPublicChatsBody": {}, + "passwordRecoverySettings": "Ajustes de recuperación de clave", + "@passwordRecoverySettings": {}, + "acceptedKeyVerification": "{sender} aceptó la verificación de clave", + "@acceptedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "stickers": "Pegatinas", + "@stickers": {}, + "shareKeysWith": "Compartir claves con...", + "@shareKeysWith": {}, + "shareKeysWithDescription": "¿Qué dispositivos deben ser de confianza para que puedan leer tus mensajes en chats cifrados?", + "@shareKeysWithDescription": {}, + "crossVerifiedDevicesIfEnabled": "Dispositivos verificados si están habilitados", + "@crossVerifiedDevicesIfEnabled": {}, + "allDevices": "Todos los dispositivos", + "@allDevices": {}, + "crossVerifiedDevices": "Dispositivos verificados", + "@crossVerifiedDevices": {}, + "verifiedDevicesOnly": "Solo dispositivos verificados", + "@verifiedDevicesOnly": {}, + "deviceKeys": "Claves de dispositivo:", + "@deviceKeys": {}, + "overview": "Vista general", + "@overview": {}, + "removeDevicesDescription": "Vas a salir en este dispositivo y ya no podrás recibir mensajes.", + "@removeDevicesDescription": {}, + "databaseMigrationBody": "Por favor espera. Esto llevará un momento.", + "@databaseMigrationBody": {}, + "pleaseEnterYourCurrentPassword": "Por favor, pon tu clave actual", + "@pleaseEnterYourCurrentPassword": {}, + "pleaseChooseAStrongPassword": "Por favor, pon una clave fuerte", + "@pleaseChooseAStrongPassword": {}, + "joinSpace": "Unirse al espacio", + "@joinSpace": {}, + "wrongRecoveryKey": "Lo siento... esta no parece ser la clave de recuperación correcta.", + "@wrongRecoveryKey": {}, + "leaveEmptyToClearStatus": "Deja vacío para limpiar tu estado.", + "@leaveEmptyToClearStatus": {}, + "databaseBuildErrorBody": "No pude crear la base de datos SQlite. La app intenta usar la base de datos heredada por ahora. Por favor, informa de este error a los desarrolladores en {url}. El mensaje de error es: {error}", + "@databaseBuildErrorBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "restoreSessionBody": "La app ahora trata de recuperar tu sesión de la copia de seguridad. Por favor, informa de este error a los desarrolladores en {url}. El mensaje de error es: {error}", + "@restoreSessionBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "sendReadReceipts": "Mandar recibos de lectura", + "@sendReadReceipts": {}, + "sendTypingNotificationsDescription": "Otros participantes en un chat pueden ver cuándo estás escribiendo un mensaje.", + "@sendTypingNotificationsDescription": {}, + "sendReadReceiptsDescription": "Otros participantes en un chat pueden ver cuándo has leído un mensaje.", + "@sendReadReceiptsDescription": {}, + "verifyOtherUserDescription": "Si verificas a otro usuario, puedes estar seguro de a quién estás escribiendo realmente. 💪\n\nCuando empiezas una verificación, tú y el otro usuario veréis una ventana emergente en la app. En ella veréis una serie de emojiso números que tenéis que comparar.\n\nLa mejor forma de hacer esto es quedar o una videollamada. 👭", + "@verifyOtherUserDescription": {}, + "verifyOtherDeviceDescription": "Cuando verificas otro dispositivo, esos dispositivos pueden intercambiar claves, incrementando tu seguridad global. 💪 Cuando inicias una verificación, aparece una ventana en la app en ambos dispositivos. En ella, verás una serie de emojis o números que tienes que comparar. Es mejor tener ambos dispositivos a mano antes de empezar la verificación. 🤳", + "@verifyOtherDeviceDescription": {}, + "canceledKeyVerification": "{sender} canceló la verificación de clave", + "@canceledKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "commandHint_unignore": "No ignorar la ID de matrix dada", + "@commandHint_unignore": {}, + "noDatabaseEncryption": "En esta plataforma no hay cifrado de base de datos", + "@noDatabaseEncryption": {}, + "startedKeyVerification": "{sender} ha comenzado verificación de clave", + "@startedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "discover": "Descubrir", + "@discover": {}, + "thereAreCountUsersBlocked": "Ahora mismo, hay {count} usuarios bloqueados.", + "@thereAreCountUsersBlocked": { + "type": "String", + "count": {} + }, + "commandHint_ignore": "Ignorar la ID de matrix dada", + "@commandHint_ignore": {}, + "jump": "Saltar", + "@jump": {}, + "commandHint_sendraw": "Mandar json pelado", + "@commandHint_sendraw": {}, + "kickUserDescription": "Se expulsa al usuario del chat, pero no se le prohíbe volver a entrar. En chats públicos, el usuario podrá volver a entrar en cualquier momento.", + "@kickUserDescription": {}, + "fileHasBeenSavedAt": "Archivo guardado en {path}", + "@fileHasBeenSavedAt": { + "type": "String", + "placeholders": { + "path": { + "type": "String" + } + } + }, + "markAsUnread": "Marcar no leído", + "@markAsUnread": {}, + "changeTheDescriptionOfTheGroup": "Cambiar la descripción del chat", + "@changeTheDescriptionOfTheGroup": {}, + "sorryThatsNotPossible": "Lo siento... eso no es posible", + "@sorryThatsNotPossible": {}, + "publicChatAddresses": "Dirección de chat pública", + "@publicChatAddresses": {}, + "createNewAddress": "Crear nueva dirección", + "@createNewAddress": {}, + "userRole": "Rol de usuario", + "@userRole": {}, + "boldText": "Texto en negrita", + "@boldText": {}, + "italicText": "Texto en cursiva", + "@italicText": {}, + "strikeThrough": "Tachado", + "@strikeThrough": {}, + "searchMore": "Buscar más...", + "@searchMore": {}, + "noPublicLinkHasBeenCreatedYet": "No se ha creado un enlace público aún", + "@noPublicLinkHasBeenCreatedYet": {}, + "knock": "Aviso", + "@knock": {}, + "newSpaceDescription": "Los espacios permiten consolidar los chats y montar comunidades privadas o públicas.", + "@newSpaceDescription": {}, + "pleaseTryAgainLaterOrChooseDifferentServer": "Por favor, intente luego o elija un servidor distinto.", + "@pleaseTryAgainLaterOrChooseDifferentServer": {}, + "pleaseEnterANumber": "Por favor pon un número mayor que 0", + "@pleaseEnterANumber": {}, + "archiveRoomDescription": "El chat se moverá al archivo. Otros usuarios podrán ver que has abandonado el chat.", + "@archiveRoomDescription": {}, + "pushNotificationsNotAvailable": "No están disponibles las notificaciones emergentes", + "@pushNotificationsNotAvailable": {}, + "passwordsDoNotMatch": "Las claves no coinciden", + "@passwordsDoNotMatch": {}, + "passwordIsWrong": "La clave que has puesto es incorrecta", + "@passwordIsWrong": {}, + "verifyOtherUser": "🔐 Verificar a otro usuario", + "@verifyOtherUser": {}, + "isReadyForKeyVerification": "{sender} está preparado para verificación de clave", + "@isReadyForKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "goToSpace": "Ir al espacio: {space}", + "@goToSpace": { + "type": "String", + "space": {} + }, + "oneOfYourDevicesIsNotVerified": "Uno de tus dispositivos no está verificado", + "@oneOfYourDevicesIsNotVerified": {}, + "noticeChatBackupDeviceVerification": "Nota: Cuando conectas todos tus dispositivos a la copia de seguridad del chat, son verificados automáticamente.", + "@noticeChatBackupDeviceVerification": {}, + "manageAccount": "Gestionar cuenta", + "@manageAccount": {}, + "contactServerAdmin": "Contactar con el administrador del servidor", + "@contactServerAdmin": {}, + "contactServerSecurity": "Contactar con seguridad del servidor", + "@contactServerSecurity": {}, + "supportPage": "Página de atención", + "@supportPage": {}, + "invalidUrl": "URL incorrecta", + "@invalidUrl": {}, + "addLink": "Añadir enlace", + "@addLink": {}, + "unableToJoinChat": "No se puede entrar al chat. Puede que la otra parte ya haya cerrado la conversación.", + "@unableToJoinChat": {}, + "waitingForServer": "Esperando al servidor...", + "@waitingForServer": {}, + "discoverHomeservers": "Descubrir homeservers", + "@discoverHomeservers": {}, + "profileNotFound": "El usuario no se encontró en el servidor. Puede que haya un problema de conexión o el usuario no exista.", + "@profileNotFound": {}, + "synchronizingPleaseWaitCounter": " Sincronizando… ({percentage}%)", + "@synchronizingPleaseWaitCounter": { + "type": "String", + "placeholders": { + "percentage": { + "type": "String" + } + } + }, + "reportErrorDescription": "😭 Oh, no. Algo ha salido mal. Si quieres, puedes informar de este fallo a los desarrolladores.", + "@reportErrorDescription": {}, + "hasKnocked": "🚪 {user} ha avisado", + "@hasKnocked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "noBackupWarning": "¡Cuidado! Si no se habilita la copia de seguridad del chat, perderás acceso a tus mensajes cifrados. Se recomienda encarecidamente habilitar la copia de seguridad del chat antes de salir.", + "@noBackupWarning": {}, + "userWouldLikeToChangeTheChat": "{user} quiere unirse al chat.", + "@userWouldLikeToChangeTheChat": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "yourGlobalUserIdIs": "Tu id de usuario global es: ", + "@yourGlobalUserIdIs": {}, + "noKeyForThisMessage": "Esto puede ocurrir si el mensaje se envió antes de que entraras en tu cuenta en este dispositivo.\n\nTambién puede que el remitente haya bloqueado tu dispositivo o haya fallado algo en la conexión a Internet.\n\n¿Puedes leer el mensaje en otra sesión? Entonces, ¡puedes transferir el mensaje desde allí! Ve a Ajustes > Dispositivos y asegúrate de que tus dispositivos se han verificado mutuamente. Cuando abras la sala la próxima vez y ambas sesiones estén en primer plano, las claves se transmitirán automáticamente.\n\n¿No quieres perder las claves al salir o al cambiar de dispositivo? Asegúrate de que has habilitado la copia de seguridad del chat en los ajustes.", + "@noKeyForThisMessage": {}, + "invitePrivateChat": "📨 Invitar a grupo privado", + "@invitePrivateChat": {}, + "banUserDescription": "Se expulsará al usuario del chat y no podrá volver a entrar hasta que se le permita.", + "@banUserDescription": {}, + "loginWithMatrixId": "Entrar con un ID de Matrix", + "@loginWithMatrixId": {}, + "changeTheCanonicalRoomAlias": "Cambiar la dirección pública principal de chat", + "@changeTheCanonicalRoomAlias": {}, + "noContactInformationProvided": "El servidor no suministra ninguna información de contacto válida", + "@noContactInformationProvided": {}, + "noUsersFoundWithQuery": "Desgraciadamente, no se encontró ningún usuario con \"{query}\". Por favor, revisa si cometiste un error.", + "@noUsersFoundWithQuery": { + "type": "String", + "placeholders": { + "query": { + "type": "String" + } + } + }, + "changeTheVisibilityOfChatHistory": "Cambiar la visibilidad de la historia de chat", + "@changeTheVisibilityOfChatHistory": {}, + "doesNotSeemToBeAValidHomeserver": "No parece ser un homeserver compatible. ¿URL equivocada?", + "@doesNotSeemToBeAValidHomeserver": {}, + "moderatorLevel": "{level} - Moderador", + "@moderatorLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "homeserverDescription": "Todos tus datos se guardan en el homeserver, como en un proveedor de correo electrónico. Puedes elegir el homeserver que quieres usar, a la par que te puedes comunicar con todos. Más en https://matrix.org.", + "@homeserverDescription": {}, + "whatIsAHomeserver": "¿Qué es un homeserver?", + "@whatIsAHomeserver": {}, + "open": "Abrir", + "@open": {}, + "appIntroduction": "FluffyChat te permite chatear con tus amigos con diferentes mensajerías. Aprende más en https://matrix.org o simplemente pincha *Continuar*.", + "@appIntroduction": {}, + "forwardMessageTo": "¿Reenviar mensaje a {roomName}?", + "@forwardMessageTo": { + "type": "String", + "placeholders": { + "roomName": { + "type": "String" + } + } + }, + "previous": "Anterior", + "@previous": {}, + "otherPartyNotLoggedIn": "La otra parte ahora mismo no está conectada y por tanto ¡no puede recibir mensajes!", + "@otherPartyNotLoggedIn": {}, + "takeAPhoto": "Tomar foto", + "@takeAPhoto": {}, + "recordAVideo": "Grabar video", + "@recordAVideo": {}, + "optionalMessage": "(Opcional) mensaje...", + "@optionalMessage": {}, + "notSupportedOnThisDevice": "No es compatible con este dispositivo", + "@notSupportedOnThisDevice": {}, + "enterNewChat": "Ingresar a nuevo chat", + "@enterNewChat": {}, + "pleaseWaitUntilInvited": "Por favor espera, hasta que alguien del chat te invite.", + "@pleaseWaitUntilInvited": {}, + "commandHint_roomupgrade": "Actualizar este chat a la versión de chat dada", + "@commandHint_roomupgrade": {}, + "checkList": "Lista de tareas", + "@checkList": {}, + "countInvited": "{count} invitado", + "@countInvited": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "sentVoiceMessage": "🎙️ {duration} - Mensaje de voz de {sender}", + "@sentVoiceMessage": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "duration": { + "type": "String" + } + } + }, + "setCustomPermissionLevel": "Agregar nivel personalizado de permiso", + "@setCustomPermissionLevel": {}, + "setPermissionsLevelDescription": "Por favor elige un rol predeterminado o un nivel de permiso personalizado entre 0 a 100.", + "@setPermissionsLevelDescription": {}, + "ignoreUser": "Ignorar usuario", + "@ignoreUser": {}, + "normalUser": "Usuario normal", + "@normalUser": {}, + "commandHint_logout": "Salir del dispositivo actual", + "@commandHint_logout": {}, + "commandHint_logoutall": "Salir de todos los dispositivos activos", + "@commandHint_logoutall": {}, + "displayNavigationRail": "Mostrar carril de navegación en móvil", + "@displayNavigationRail": {}, + "approve": "Aprobar", + "@approve": {}, + "youHaveKnocked": "Has sido golpeado", + "@youHaveKnocked": {}, + "customReaction": "Reacción personalizada", + "@customReaction": {}, + "moreEvents": "Más eventos", + "@moreEvents": {}, + "declineInvitation": "Rechazar invitación", + "@declineInvitation": {} +} diff --git a/lib/l10n/intl_et.arb b/lib/l10n/intl_et.arb new file mode 100644 index 0000000..12f7030 --- /dev/null +++ b/lib/l10n/intl_et.arb @@ -0,0 +1,3491 @@ +{ + "@@locale": "et", + "@@last_modified": "2021-08-14 12:41:10.079944", + "about": "Rakenduse teave", + "@about": { + "type": "String", + "placeholders": {} + }, + "accept": "Nõustu", + "@accept": { + "type": "String", + "placeholders": {} + }, + "acceptedTheInvitation": "👍 {username} võttis kutse vastu", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "account": "Kasutajakonto", + "@account": { + "type": "String", + "placeholders": {} + }, + "activatedEndToEndEncryption": "🔐{username} võttis kasutusele läbiva krüptimise", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "addEmail": "Lisa e-posti aadress", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "admin": "Peakasutaja", + "@admin": { + "type": "String", + "placeholders": {} + }, + "alias": "alias", + "@alias": { + "type": "String", + "placeholders": {} + }, + "all": "Kõik", + "@all": { + "type": "String", + "placeholders": {} + }, + "allChats": "Kõik vestlused", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "answeredTheCall": "{senderName} vastas kõnele", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "anyoneCanJoin": "Kõik võivad liituda", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "appLock": "Rakenduse lukustus", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "archive": "Arhiiv", + "@archive": { + "type": "String", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "Kas külalised võivad liituda", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "Kas sa oled kindel?", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "areYouSureYouWantToLogout": "Kas sa oled kindel, et soovid välja logida?", + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "askSSSSSign": "Selleks, et teist osapoolt identifitseerivat allkirja anda, palun sisesta oma turvahoidla paroolifraas või taastevõti.", + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "askVerificationRequest": "Kas võtad vastu selle verifitseerimispalve kasutajalt {username}?", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "autoplayImages": "Esita liikuvad kleepse ja emotikone automaatselt", + "@autoplayImages": { + "type": "String", + "placeholder": {} + }, + "badServerLoginTypesException": "See koduserver toetab Matrixi võrku sisselogimiseks:\n{serverVersions}\nAga see rakendus toetab vaid järgmisi võimalusi:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "badServerVersionsException": "See koduserver toetab Matrixi spetsifikatsioonist järgmisi versioone:\n{serverVersions}\nAga see rakendus toetab vaid järgmisi versioone: {supportedVersions}", + "@badServerVersionsException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "banFromChat": "Keela ligipääs vestlusele", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "banned": "Ligipääs vestlusele on keelatud", + "@banned": { + "type": "String", + "placeholders": {} + }, + "bannedUser": "{username} keelas ligipääsu kasutajale {targetName}", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "blockDevice": "Blokeeri seade", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "blocked": "Blokeeritud", + "@blocked": { + "type": "String", + "placeholders": {} + }, + "botMessages": "Robotite sõnumid", + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "cancel": "Katkesta", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "cantOpenUri": "{uri} aadressi avamine ei õnnestu", + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "changeDeviceName": "Muuda seadme nime", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "changedTheChatAvatar": "{username} muutis vestluse tunnuspilti", + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheChatDescriptionTo": "{username} muutis vestluse uueks kirjelduseks '{description}'", + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "changedTheChatNameTo": "{username} muutis vestluse uueks nimeks '{chatname}'", + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "changedTheChatPermissions": "{username} muutis vestlusega seotud õigusi", + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheDisplaynameTo": "{username} muutis oma uueks kuvatavaks nimeks: '{displayname}'", + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "changedTheGuestAccessRules": "{username} muutis külaliste ligipääsureegleid", + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheGuestAccessRulesTo": "{username} muutis külaliste ligipääsureegleid järgnevalt: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheHistoryVisibility": "{username} muutis sõnumite ajaloo nähtavust", + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheHistoryVisibilityTo": "{username} muutis sõnumite ajaloo nähtavust järgnevalt: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheJoinRules": "{username} muutis liitumise reegleid", + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheJoinRulesTo": "{username} muutis liitumise reegleid järgnevalt: {joinRules}", + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "changedTheProfileAvatar": "{username} muutis oma tunnuspilti", + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomAliases": "{username} muutis jututoa aliast", + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomInvitationLink": "{username} muutis kutse linki", + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changePassword": "Muuda salasõna", + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "changeTheHomeserver": "Muuda koduserverit", + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "changeTheme": "Muuda oma stiili", + "@changeTheme": { + "type": "String", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "Muuda vestlusrühma nime", + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "changeYourAvatar": "Muuda oma tunnuspilti", + "@changeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "channelCorruptedDecryptError": "Kasutatud krüptimine on vigane", + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "chat": "Vestlus", + "@chat": { + "type": "String", + "placeholders": {} + }, + "chatBackup": "Varunda vestlus", + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "chatBackupDescription": "Sinu vestluste varukoopia on krüptitud taastamiseks mõeldud turvavõtmega. Palun vaata, et sa seda ei kaota.", + "@chatBackupDescription": { + "type": "String", + "placeholders": {} + }, + "chatDetails": "Vestluse teave", + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "chats": "Vestlused", + "@chats": { + "type": "String", + "placeholders": {} + }, + "chooseAStrongPassword": "Vali korralik salasõna", + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "clearArchive": "Kustuta arhiiv", + "@clearArchive": {}, + "close": "Sulge", + "@close": { + "type": "String", + "placeholders": {} + }, + "commandHint_ban": "Sea sellele kasutajale antud jututoas suhtluskeeld", + "@commandHint_ban": { + "type": "String", + "description": "Usage hint for the command /ban" + }, + "commandHint_html": "Saada HTML-vormingus tekst", + "@commandHint_html": { + "type": "String", + "description": "Usage hint for the command /html" + }, + "commandHint_invite": "Kutsu see kasutaja antud jututuppa", + "@commandHint_invite": { + "type": "String", + "description": "Usage hint for the command /invite" + }, + "commandHint_join": "Liitu selle jututoaga", + "@commandHint_join": { + "type": "String", + "description": "Usage hint for the command /join" + }, + "commandHint_kick": "Eemalda antud kasutaja sellest jututoast", + "@commandHint_kick": { + "type": "String", + "description": "Usage hint for the command /kick" + }, + "commandHint_leave": "Lahku sellest jututoast", + "@commandHint_leave": { + "type": "String", + "description": "Usage hint for the command /leave" + }, + "commandHint_me": "Kirjelda ennast", + "@commandHint_me": { + "type": "String", + "description": "Usage hint for the command /me" + }, + "commandHint_myroomavatar": "Määra selles jututoas oma tunnuspilt (mxc-uri vahendusel)", + "@commandHint_myroomavatar": { + "type": "String", + "description": "Usage hint for the command /myroomavatar" + }, + "commandHint_myroomnick": "Määra selles jututoas oma kuvatav nimi", + "@commandHint_myroomnick": { + "type": "String", + "description": "Usage hint for the command /myroomnick" + }, + "commandHint_op": "Seadista selle kasutaja õigusi (vaikimisi: 50)", + "@commandHint_op": { + "type": "String", + "description": "Usage hint for the command /op" + }, + "commandHint_plain": "Saada vormindamata tekst", + "@commandHint_plain": { + "type": "String", + "description": "Usage hint for the command /plain" + }, + "commandHint_react": "Saada vastus reaktsioonina", + "@commandHint_react": { + "type": "String", + "description": "Usage hint for the command /react" + }, + "commandHint_send": "Saada sõnum", + "@commandHint_send": { + "type": "String", + "description": "Usage hint for the command /send" + }, + "commandHint_unban": "Eemalda sellelt kasutajalt antud jututoas suhtluskeeld", + "@commandHint_unban": { + "type": "String", + "description": "Usage hint for the command /unban" + }, + "commandInvalid": "Vigane käsk", + "@commandInvalid": { + "type": "String" + }, + "commandMissing": "{command} ei ole käsk.", + "@commandMissing": { + "type": "String", + "placeholders": { + "command": { + "type": "String" + } + }, + "description": "State that {command} is not a valid /command." + }, + "compareEmojiMatch": "Palun võrdle emotikone", + "@compareEmojiMatch": { + "type": "String", + "placeholders": {} + }, + "compareNumbersMatch": "Palun võrdle numbreid", + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "configureChat": "Seadista vestlust", + "@configureChat": { + "type": "String", + "placeholders": {} + }, + "confirm": "Kinnita", + "@confirm": { + "type": "String", + "placeholders": {} + }, + "connect": "Ühenda", + "@connect": { + "type": "String", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "Sinu kontakt on kutsutud liituma vestlusrühma", + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "containsDisplayName": "Sisaldab kuvatavat nime", + "@containsDisplayName": { + "type": "String", + "placeholders": {} + }, + "containsUserName": "Sisaldab kasutajanime", + "@containsUserName": { + "type": "String", + "placeholders": {} + }, + "contentHasBeenReported": "Saatsime selle sisu kohta teate koduserveri haldajate", + "@contentHasBeenReported": { + "type": "String", + "placeholders": {} + }, + "copiedToClipboard": "Kopeerisin lõikelauale", + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "copy": "Kopeeri", + "@copy": { + "type": "String", + "placeholders": {} + }, + "copyToClipboard": "Kopeeri lõikelauale", + "@copyToClipboard": { + "type": "String", + "placeholders": {} + }, + "couldNotDecryptMessage": "Sõnumi dekrüptimine ei õnnestunud: {error}", + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "countParticipants": "{count} osalejat", + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "create": "Loo", + "@create": { + "type": "String", + "placeholders": {} + }, + "createdTheChat": "💬 {username} algatas vestluse", + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "createNewSpace": "Uus kogukond", + "@createNewSpace": { + "type": "String", + "placeholders": {} + }, + "currentlyActive": "Hetkel aktiivne", + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "darkTheme": "Tume", + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "dateWithoutYear": "{day}.{month}", + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "dateWithYear": "{year}.{month}.{day}", + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "deactivateAccountWarning": "Järgnevaga eemaldatakse sinu konto kasutusest. Seda tegevust ei saa tagasi pöörata! Kas sa ikka oled kindel?", + "@deactivateAccountWarning": { + "type": "String", + "placeholders": {} + }, + "defaultPermissionLevel": "Vaikimisi õigused uutele kasutajatele", + "@defaultPermissionLevel": { + "type": "String", + "placeholders": {} + }, + "delete": "Kustuta", + "@delete": { + "type": "String", + "placeholders": {} + }, + "deleteAccount": "Kustuta kasutajakonto", + "@deleteAccount": { + "type": "String", + "placeholders": {} + }, + "deleteMessage": "Kustuta sõnum", + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "device": "Seade", + "@device": { + "type": "String", + "placeholders": {} + }, + "deviceId": "Seadme tunnus", + "@deviceId": { + "type": "String", + "placeholders": {} + }, + "devices": "Seadmed", + "@devices": { + "type": "String", + "placeholders": {} + }, + "directChats": "Otsevestlused", + "@directChats": { + "type": "String", + "placeholders": {} + }, + "displaynameHasBeenChanged": "Kuvatav nimi on muudetud", + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "downloadFile": "Laadi fail alla", + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "edit": "Muuda", + "@edit": { + "type": "String", + "placeholders": {} + }, + "editBlockedServers": "Muuda blokeeritud serverite loendit", + "@editBlockedServers": { + "type": "String", + "placeholders": {} + }, + "editDisplayname": "Muuda kuvatavat nime", + "@editDisplayname": { + "type": "String", + "placeholders": {} + }, + "editRoomAliases": "Muuda jututoa aliast", + "@editRoomAliases": { + "type": "String", + "placeholders": {} + }, + "editRoomAvatar": "Muuda jututoa tunnuspilti", + "@editRoomAvatar": { + "type": "String", + "placeholders": {} + }, + "emoteExists": "Selline emotsioonitegevus on juba olemas!", + "@emoteExists": { + "type": "String", + "placeholders": {} + }, + "emoteInvalid": "Vigane emotsioonitegevuse lühikood!", + "@emoteInvalid": { + "type": "String", + "placeholders": {} + }, + "emotePacks": "Emotsioonitegevuste pakid jututoa jaoks", + "@emotePacks": { + "type": "String", + "placeholders": {} + }, + "emoteSettings": "Emotsioonitegevuste seadistused", + "@emoteSettings": { + "type": "String", + "placeholders": {} + }, + "emoteShortcode": "Emotsioonitegevuse lühikood", + "@emoteShortcode": { + "type": "String", + "placeholders": {} + }, + "emoteWarnNeedToPick": "Sa pead valima emotsioonitegevuse lühikoodi ja pildi!", + "@emoteWarnNeedToPick": { + "type": "String", + "placeholders": {} + }, + "emptyChat": "Vestlust pole olnud", + "@emptyChat": { + "type": "String", + "placeholders": {} + }, + "enableEmotesGlobally": "Võta emotsioonitegevuste pakid läbivalt kasutusele", + "@enableEmotesGlobally": { + "type": "String", + "placeholders": {} + }, + "enableEncryption": "Kasuta krüptimist", + "@enableEncryption": { + "type": "String", + "placeholders": {} + }, + "enableEncryptionWarning": "Sa ei saa hiljem enam krüptimist välja lülitada. Kas oled kindel?", + "@enableEncryptionWarning": { + "type": "String", + "placeholders": {} + }, + "encrypted": "Krüptitud", + "@encrypted": { + "type": "String", + "placeholders": {} + }, + "encryption": "Krüptimine", + "@encryption": { + "type": "String", + "placeholders": {} + }, + "encryptionNotEnabled": "Krüptimine ei ole kasutusel", + "@encryptionNotEnabled": { + "type": "String", + "placeholders": {} + }, + "endedTheCall": "{senderName} lõpetas kõne", + "@endedTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "enterAnEmailAddress": "Sisesta e-posti aadress", + "@enterAnEmailAddress": { + "type": "String", + "placeholders": {} + }, + "enterYourHomeserver": "Sisesta oma koduserveri aadress", + "@enterYourHomeserver": { + "type": "String", + "placeholders": {} + }, + "errorObtainingLocation": "Viga asukoha tuvastamisel: {error}", + "@errorObtainingLocation": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "everythingReady": "Kõik on valmis!", + "@everythingReady": { + "type": "String", + "placeholders": {} + }, + "extremeOffensive": "Äärmiselt solvav", + "@extremeOffensive": { + "type": "String", + "placeholders": {} + }, + "fileName": "Faili nimi", + "@fileName": { + "type": "String", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "String", + "placeholders": {} + }, + "fontSize": "Fondi suurus", + "@fontSize": { + "type": "String", + "placeholders": {} + }, + "forward": "Edasta", + "@forward": { + "type": "String", + "placeholders": {} + }, + "fromJoining": "Alates liitumise hetkest", + "@fromJoining": { + "type": "String", + "placeholders": {} + }, + "fromTheInvitation": "Kutse saamisest", + "@fromTheInvitation": { + "type": "String", + "placeholders": {} + }, + "goToTheNewRoom": "Hakka kasutama uut jututuba", + "@goToTheNewRoom": { + "type": "String", + "placeholders": {} + }, + "group": "Vestlusrühm", + "@group": { + "type": "String", + "placeholders": {} + }, + "groupIsPublic": "Vestlusrühm on avalik", + "@groupIsPublic": { + "type": "String", + "placeholders": {} + }, + "groups": "Vestlusrühmad", + "@groups": { + "type": "String", + "placeholders": {} + }, + "groupWith": "Vestlusrühm {displayname} kasutajanimega", + "@groupWith": { + "type": "String", + "placeholders": { + "displayname": { + "type": "String" + } + } + }, + "guestsAreForbidden": "Külalised ei ole lubatud", + "@guestsAreForbidden": { + "type": "String", + "placeholders": {} + }, + "guestsCanJoin": "Külalised võivad liituda", + "@guestsCanJoin": { + "type": "String", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "{username} on võtnud tagasi {targetName} kutse", + "@hasWithdrawnTheInvitationFor": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "help": "Abiteave", + "@help": { + "type": "String", + "placeholders": {} + }, + "hideRedactedEvents": "Peida muudetud sündmused", + "@hideRedactedEvents": { + "type": "String", + "placeholders": {} + }, + "hideUnknownEvents": "Peida tundmatud sündmused", + "@hideUnknownEvents": { + "type": "String", + "placeholders": {} + }, + "howOffensiveIsThisContent": "Kui solvav see sisu on?", + "@howOffensiveIsThisContent": { + "type": "String", + "placeholders": {} + }, + "id": "ID", + "@id": { + "type": "String", + "placeholders": {} + }, + "identity": "Identiteet", + "@identity": { + "type": "String", + "placeholders": {} + }, + "ignore": "Eira", + "@ignore": { + "type": "String", + "placeholders": {} + }, + "ignoredUsers": "Eiratud kasutajad", + "@ignoredUsers": { + "type": "String", + "placeholders": {} + }, + "iHaveClickedOnLink": "Ma olen klõpsinud saadetud linki", + "@iHaveClickedOnLink": { + "type": "String", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "Vigane paroolifraas või taastevõti", + "@incorrectPassphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "inoffensive": "Kahjutu", + "@inoffensive": { + "type": "String", + "placeholders": {} + }, + "inviteContact": "Kutsu sõpru ja tuttavaid", + "@inviteContact": { + "type": "String", + "placeholders": {} + }, + "inviteContactToGroup": "Kutsu sõpru ja tuttavaid {groupName} liikmeks", + "@inviteContactToGroup": { + "type": "String", + "placeholders": { + "groupName": { + "type": "String" + } + } + }, + "invited": "Kutsutud", + "@invited": { + "type": "String", + "placeholders": {} + }, + "invitedUser": "📩 {username} saatis kutse kasutajale {targetName}", + "@invitedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "invitedUsersOnly": "Ainult kutsutud kasutajatele", + "@invitedUsersOnly": { + "type": "String", + "placeholders": {} + }, + "inviteForMe": "Kutse minu jaoks", + "@inviteForMe": { + "type": "String", + "placeholders": {} + }, + "inviteText": "{username} kutsus sind kasutama Matrix'i-põhist suhtlusrakendust FluffyChat. \n1. Ava fluffychat.im ja paigalda FluffyChat'i rakendus \n2. Liitu kasutajaks või logi sisse olemasoleva Matrix'i kasutajakontoga\n3. Ava kutse link: \n {link}", + "@inviteText": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "link": { + "type": "String" + } + } + }, + "isTyping": "kirjutab…", + "@isTyping": { + "type": "String", + "placeholders": {} + }, + "joinedTheChat": "👋 {username} liitus vestlusega", + "@joinedTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "joinRoom": "Liitu jututoaga", + "@joinRoom": { + "type": "String", + "placeholders": {} + }, + "kicked": "👞 {username} müksas kasutaja {targetName} välja", + "@kicked": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickedAndBanned": "🙅{username} müksas kasutaja {targetName} välja ning seadis talle suhtluskeelu", + "@kickedAndBanned": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickFromChat": "Müksa vestlusest välja", + "@kickFromChat": { + "type": "String", + "placeholders": {} + }, + "lastActiveAgo": "Viimati nähtud: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "String", + "placeholders": { + "localizedTimeShort": { + "type": "String" + } + } + }, + "leave": "Lahku", + "@leave": { + "type": "String", + "placeholders": {} + }, + "leftTheChat": "Lahkus vestlusest", + "@leftTheChat": { + "type": "String", + "placeholders": {} + }, + "license": "Litsents", + "@license": { + "type": "String", + "placeholders": {} + }, + "lightTheme": "Hele", + "@lightTheme": { + "type": "String", + "placeholders": {} + }, + "loadCountMoreParticipants": "Lisa veel {count} osalejat", + "@loadCountMoreParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "loadingPleaseWait": "Laadin andmeid… Palun oota.", + "@loadingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "loadMore": "Laadi veel…", + "@loadMore": { + "type": "String", + "placeholders": {} + }, + "locationDisabledNotice": "Asukohateenused on seadmes väljalülitatud. Asukoha jagamiseks palun lülita nad sisse.", + "@locationDisabledNotice": { + "type": "String", + "placeholders": {} + }, + "locationPermissionDeniedNotice": "Puudub luba asukohateenuste kasutamiseks. Asukoha jagamiseks palun anna rakendusele vastavad õigused.", + "@locationPermissionDeniedNotice": { + "type": "String", + "placeholders": {} + }, + "login": "Logi sisse", + "@login": { + "type": "String", + "placeholders": {} + }, + "logInTo": "Logi sisse {homeserver} serverisse", + "@logInTo": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "logout": "Logi välja", + "@logout": { + "type": "String", + "placeholders": {} + }, + "memberChanges": "Muudatused liikmeskonnas", + "@memberChanges": { + "type": "String", + "placeholders": {} + }, + "mention": "Märgi ära", + "@mention": { + "type": "String", + "placeholders": {} + }, + "messages": "Sõnumid", + "@messages": { + "type": "String", + "placeholders": {} + }, + "moderator": "Moderaator", + "@moderator": { + "type": "String", + "placeholders": {} + }, + "muteChat": "Summuta vestlus", + "@muteChat": { + "type": "String", + "placeholders": {} + }, + "needPantalaimonWarning": "Palun arvesta, et sa saad hetkel kasutada läbivat krüptimist vaid siis, kui koduserver kasutab Pantalaimon'it.", + "@needPantalaimonWarning": { + "type": "String", + "placeholders": {} + }, + "newChat": "Uus vestlus", + "@newChat": { + "type": "String", + "placeholders": {} + }, + "newMessageInFluffyChat": "💬 Uus sõnum FluffyChat'i vahendusel", + "@newMessageInFluffyChat": { + "type": "String", + "placeholders": {} + }, + "newVerificationRequest": "Uus verifitseerimispäring!", + "@newVerificationRequest": { + "type": "String", + "placeholders": {} + }, + "next": "Edasi", + "@next": { + "type": "String", + "placeholders": {} + }, + "no": "Ei", + "@no": { + "type": "String", + "placeholders": {} + }, + "noConnectionToTheServer": "Puudub ühendus koduserveriga", + "@noConnectionToTheServer": { + "type": "String", + "placeholders": {} + }, + "noEmotesFound": "Ühtegi emotsioonitegevust ei leidunud. 😕", + "@noEmotesFound": { + "type": "String", + "placeholders": {} + }, + "noEncryptionForPublicRooms": "Sa võid krüptimise kasutusele võtta niipea, kui jututuba pole enam avalik.", + "@noEncryptionForPublicRooms": { + "type": "String", + "placeholders": {} + }, + "noGoogleServicesWarning": "Tundub, et sinu nutiseadmes pole Firebase Cloud Messaging teenuseid. Sinu privaatsuse mõttes on see kindlasti hea otsus! Kui sa soovid FluffyChatis näha tõuketeavitusi, siis soovitame, et selle jaoks kasutad ntfy liidestust. Kasutades ntfyd või mõnda muud Unified Push standardil põhinevat liidestust saad tõuketeavitusi turvalisel moel. Ntfy rakendus on saadaval nii PlayStore kui F-Droidi rakendusepoodides.", + "@noGoogleServicesWarning": { + "type": "String", + "placeholders": {} + }, + "noMatrixServer": "{server1} pole Matrix'i server, kas kasutame selle asemel {server2} serverit?", + "@noMatrixServer": { + "type": "String", + "placeholders": { + "server1": { + "type": "String" + }, + "server2": { + "type": "String" + } + } + }, + "none": "Mitte midagi", + "@none": { + "type": "String", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "Sa pole veel lisanud võimalust salasõna taastamiseks.", + "@noPasswordRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "noPermission": "Õigused puuduvad", + "@noPermission": { + "type": "String", + "placeholders": {} + }, + "noRoomsFound": "Jututubasid ei leidunud…", + "@noRoomsFound": { + "type": "String", + "placeholders": {} + }, + "notifications": "Teavitused", + "@notifications": { + "type": "String", + "placeholders": {} + }, + "notificationsEnabledForThisAccount": "Teavitused on sellel kontol kasutusel", + "@notificationsEnabledForThisAccount": { + "type": "String", + "placeholders": {} + }, + "numUsersTyping": "{count} kasutajat kirjutavad…", + "@numUsersTyping": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "obtainingLocation": "Tuvastan asukohta…", + "@obtainingLocation": { + "type": "String", + "placeholders": {} + }, + "offensive": "Solvav", + "@offensive": { + "type": "String", + "placeholders": {} + }, + "offline": "Väljas", + "@offline": { + "type": "String", + "placeholders": {} + }, + "ok": "Sobib", + "@ok": { + "type": "String", + "placeholders": {} + }, + "online": "Saadaval", + "@online": { + "type": "String", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "Krüptovõtmete veebipõhine varundus on kasutusel", + "@onlineKeyBackupEnabled": { + "type": "String", + "placeholders": {} + }, + "oopsPushError": "Hopsti! Kahjuks tekkis tõuketeavituste seadistamisel viga.", + "@oopsPushError": { + "type": "String", + "placeholders": {} + }, + "oopsSomethingWentWrong": "Hopsti! Midagi läks nüüd viltu…", + "@oopsSomethingWentWrong": { + "type": "String", + "placeholders": {} + }, + "openAppToReadMessages": "Sõnumite lugemiseks ava rakendus", + "@openAppToReadMessages": { + "type": "String", + "placeholders": {} + }, + "openCamera": "Ava kaamera", + "@openCamera": { + "type": "String", + "placeholders": {} + }, + "openInMaps": "Ava kaardirakendusega", + "@openInMaps": { + "type": "String", + "placeholders": {} + }, + "or": "või", + "@or": { + "type": "String", + "placeholders": {} + }, + "participant": "Osaleja", + "@participant": { + "type": "String", + "placeholders": {} + }, + "passphraseOrKey": "paroolifraas või taastevõti", + "@passphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "password": "Salasõna", + "@password": { + "type": "String", + "placeholders": {} + }, + "passwordForgotten": "Salasõna on ununenud", + "@passwordForgotten": { + "type": "String", + "placeholders": {} + }, + "passwordHasBeenChanged": "Salasõna on muudetud", + "@passwordHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "passwordRecovery": "Salasõna taastamine", + "@passwordRecovery": { + "type": "String", + "placeholders": {} + }, + "people": "Inimesed", + "@people": { + "type": "String", + "placeholders": {} + }, + "pickImage": "Vali pilt", + "@pickImage": { + "type": "String", + "placeholders": {} + }, + "pin": "Tõsta esile", + "@pin": { + "type": "String", + "placeholders": {} + }, + "play": "Esita {fileName}", + "@play": { + "type": "String", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "pleaseChoose": "Palun vali", + "@pleaseChoose": { + "type": "String", + "placeholders": {} + }, + "pleaseChooseAPasscode": "Palun vali rakenduse PIN-kood", + "@pleaseChooseAPasscode": { + "type": "String", + "placeholders": {} + }, + "pleaseClickOnLink": "Jätkamiseks palun klõpsi sulle saadetud e-kirjas leiduvat linki.", + "@pleaseClickOnLink": { + "type": "String", + "placeholders": {} + }, + "pleaseEnter4Digits": "Rakenduse luku jaoks sisesta 4 numbrit või kui sa sellist võimalust ei soovi kasutada, siis jäta nad tühjaks.", + "@pleaseEnter4Digits": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPassword": "Palun sisesta oma salasõna", + "@pleaseEnterYourPassword": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPin": "Palun sisesta oma PIN-kood", + "@pleaseEnterYourPin": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourUsername": "Palun sisesta oma kasutajanimi", + "@pleaseEnterYourUsername": { + "type": "String", + "placeholders": {} + }, + "pleaseFollowInstructionsOnWeb": "Palun järgi veebilehel olevaid juhiseid ja klõpsi nuppu Edasi.", + "@pleaseFollowInstructionsOnWeb": { + "type": "String", + "placeholders": {} + }, + "privacy": "Privaatsus", + "@privacy": { + "type": "String", + "placeholders": {} + }, + "publicRooms": "Avalikud jututoad", + "@publicRooms": { + "type": "String", + "placeholders": {} + }, + "pushRules": "Tõukereeglid", + "@pushRules": { + "type": "String", + "placeholders": {} + }, + "reason": "Põhjus", + "@reason": { + "type": "String", + "placeholders": {} + }, + "recording": "Salvestan", + "@recording": { + "type": "String", + "placeholders": {} + }, + "redactedAnEvent": "{username} muutis sündmust", + "@redactedAnEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "redactMessage": "Muuda sõnumit", + "@redactMessage": { + "type": "String", + "placeholders": {} + }, + "register": "Registreeru", + "@register": { + "type": "String", + "placeholders": {} + }, + "reject": "Lükka tagasi", + "@reject": { + "type": "String", + "placeholders": {} + }, + "rejectedTheInvitation": "{username} lükkas kutse tagasi", + "@rejectedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "rejoin": "Liitu uuesti", + "@rejoin": { + "type": "String", + "placeholders": {} + }, + "remove": "Eemalda", + "@remove": { + "type": "String", + "placeholders": {} + }, + "removeAllOtherDevices": "Eemalda kõik muud seadmed", + "@removeAllOtherDevices": { + "type": "String", + "placeholders": {} + }, + "removedBy": "{username} eemaldas sündmuse", + "@removedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "removeDevice": "Eemalda seade", + "@removeDevice": { + "type": "String", + "placeholders": {} + }, + "unbanFromChat": "Eemalda suhtluskeeld", + "@unbanFromChat": { + "type": "String", + "placeholders": {} + }, + "removeYourAvatar": "Kustuta oma tunnuspilt", + "@removeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "replaceRoomWithNewerVersion": "Asenda jututoa senine versioon uuega", + "@replaceRoomWithNewerVersion": { + "type": "String", + "placeholders": {} + }, + "reply": "Vasta", + "@reply": { + "type": "String", + "placeholders": {} + }, + "reportMessage": "Teata sõnumist", + "@reportMessage": { + "type": "String", + "placeholders": {} + }, + "requestPermission": "Palu õigusi", + "@requestPermission": { + "type": "String", + "placeholders": {} + }, + "roomHasBeenUpgraded": "Jututoa vesrioon on uuendatud", + "@roomHasBeenUpgraded": { + "type": "String", + "placeholders": {} + }, + "roomVersion": "Jututoa versioon", + "@roomVersion": { + "type": "String", + "placeholders": {} + }, + "saveFile": "Salvesta fail", + "@saveFile": { + "type": "String", + "placeholders": {} + }, + "search": "Otsi", + "@search": { + "type": "String", + "placeholders": {} + }, + "security": "Turvalisus", + "@security": { + "type": "String", + "placeholders": {} + }, + "seenByUser": "Sõnumit nägi {username}", + "@seenByUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "send": "Saada", + "@send": { + "type": "String", + "placeholders": {} + }, + "sendAMessage": "Saada sõnum", + "@sendAMessage": { + "type": "String", + "placeholders": {} + }, + "sendAsText": "Saada tekstisõnumina", + "@sendAsText": { + "type": "String" + }, + "sendAudio": "Saada helifail", + "@sendAudio": { + "type": "String", + "placeholders": {} + }, + "sendFile": "Saada fail", + "@sendFile": { + "type": "String", + "placeholders": {} + }, + "sendImage": "Saada pilt", + "@sendImage": { + "type": "String", + "placeholders": {} + }, + "sendMessages": "Saada sõnumeid", + "@sendMessages": { + "type": "String", + "placeholders": {} + }, + "sendOriginal": "Saada fail muutmata kujul", + "@sendOriginal": { + "type": "String", + "placeholders": {} + }, + "sendSticker": "Saada kleeps", + "@sendSticker": { + "type": "String", + "placeholders": {} + }, + "sendVideo": "Saada videofail", + "@sendVideo": { + "type": "String", + "placeholders": {} + }, + "sentAFile": "📁 {username} saatis faili", + "@sentAFile": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAnAudio": "🎤 {username} saatis helifaili", + "@sentAnAudio": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAPicture": "🖼️ {username} saatis pildi", + "@sentAPicture": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentASticker": "😊 {username} saatis kleepsu", + "@sentASticker": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAVideo": "🎥 {username} saatis video", + "@sentAVideo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentCallInformations": "{senderName} saatis teavet kõne kohta", + "@sentCallInformations": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "setAsCanonicalAlias": "Määra põhinimeks", + "@setAsCanonicalAlias": { + "type": "String", + "placeholders": {} + }, + "setCustomEmotes": "Kohanda emotsioonitegevusi", + "@setCustomEmotes": { + "type": "String", + "placeholders": {} + }, + "setInvitationLink": "Tee kutselink", + "@setInvitationLink": { + "type": "String", + "placeholders": {} + }, + "setPermissionsLevel": "Seadista õigusi", + "@setPermissionsLevel": { + "type": "String", + "placeholders": {} + }, + "setStatus": "Määra olek", + "@setStatus": { + "type": "String", + "placeholders": {} + }, + "settings": "Seadistused", + "@settings": { + "type": "String", + "placeholders": {} + }, + "share": "Jaga", + "@share": { + "type": "String", + "placeholders": {} + }, + "sharedTheLocation": "{username} jagas oma asukohta", + "@sharedTheLocation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "shareLocation": "Jaga asukohta", + "@shareLocation": { + "type": "String", + "placeholders": {} + }, + "showPassword": "Näita salasõna", + "@showPassword": { + "type": "String", + "placeholders": {} + }, + "singlesignon": "Ühekordne sisselogimine", + "@singlesignon": { + "type": "String", + "placeholders": {} + }, + "skip": "Jäta vahele", + "@skip": { + "type": "String", + "placeholders": {} + }, + "sourceCode": "Lähtekood", + "@sourceCode": { + "type": "String", + "placeholders": {} + }, + "spaceIsPublic": "Kogukond on avalik", + "@spaceIsPublic": { + "type": "String", + "placeholders": {} + }, + "spaceName": "Kogukonna nimi", + "@spaceName": { + "type": "String", + "placeholders": {} + }, + "startedACall": "{senderName} alustas kõnet", + "@startedACall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "status": "Olek", + "@status": { + "type": "String", + "placeholders": {} + }, + "statusExampleMessage": "Kuidas sul täna läheb?", + "@statusExampleMessage": { + "type": "String", + "placeholders": {} + }, + "submit": "Saada", + "@submit": { + "type": "String", + "placeholders": {} + }, + "synchronizingPleaseWait": "Sünkroniseerin andmeid… Palun oota.", + "@synchronizingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "systemTheme": "Süsteem", + "@systemTheme": { + "type": "String", + "placeholders": {} + }, + "theyDontMatch": "Nad ei klapi omavahel", + "@theyDontMatch": { + "type": "String", + "placeholders": {} + }, + "theyMatch": "Nad klapivad omavahel", + "@theyMatch": { + "type": "String", + "placeholders": {} + }, + "title": "FluffyChat", + "@title": { + "description": "Title for the application", + "type": "String", + "placeholders": {} + }, + "toggleFavorite": "Muuda olekut lemmikuna", + "@toggleFavorite": { + "type": "String", + "placeholders": {} + }, + "toggleMuted": "Lülita summutamine sisse või välja", + "@toggleMuted": { + "type": "String", + "placeholders": {} + }, + "toggleUnread": "Märgi loetuks / lugemata", + "@toggleUnread": { + "type": "String", + "placeholders": {} + }, + "tooManyRequestsWarning": "Liiga palju päringuid. Palun proovi hiljem uuesti!", + "@tooManyRequestsWarning": { + "type": "String", + "placeholders": {} + }, + "transferFromAnotherDevice": "Tõsta teisest seadmest", + "@transferFromAnotherDevice": { + "type": "String", + "placeholders": {} + }, + "tryToSendAgain": "Proovi uuesti saata", + "@tryToSendAgain": { + "type": "String", + "placeholders": {} + }, + "unavailable": "Eemal", + "@unavailable": { + "type": "String", + "placeholders": {} + }, + "unbannedUser": "{username} eemaldas ligipääsukeelu kasutajalt {targetName}", + "@unbannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "unblockDevice": "Eemalda seadmelt blokeering", + "@unblockDevice": { + "type": "String", + "placeholders": {} + }, + "unknownDevice": "Tundmatu seade", + "@unknownDevice": { + "type": "String", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "Tundmatu krüptoalgoritm", + "@unknownEncryptionAlgorithm": { + "type": "String", + "placeholders": {} + }, + "unknownEvent": "Tundmatu sündmuse tüüp '{type}'", + "@unknownEvent": { + "type": "String", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "unmuteChat": "Lõpeta vestluse vaigistamine", + "@unmuteChat": { + "type": "String", + "placeholders": {} + }, + "unpin": "Eemalda esiletõstmine", + "@unpin": { + "type": "String", + "placeholders": {} + }, + "unreadChats": "{unreadCount, plural, =1{1 lugemata vestlus} other{{unreadCount} lugemata vestlust}}", + "@unreadChats": { + "type": "String", + "placeholders": { + "unreadCount": { + "type": "int" + } + } + }, + "userAndOthersAreTyping": "{username} ja {count} muud kirjutavad…", + "@userAndOthersAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "userAndUserAreTyping": "{username} ja {username2} kirjutavad…", + "@userAndUserAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "username2": { + "type": "String" + } + } + }, + "userIsTyping": "{username} kirjutab…", + "@userIsTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "userLeftTheChat": "🚪{username} lahkus vestlusest", + "@userLeftTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "username": "Kasutajanimi", + "@username": { + "type": "String", + "placeholders": {} + }, + "userSentUnknownEvent": "{username} saatis {type} sündmuse", + "@userSentUnknownEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "type": { + "type": "String" + } + } + }, + "verified": "Verifitseeritud", + "@verified": { + "type": "String", + "placeholders": {} + }, + "verify": "Verifitseeri", + "@verify": { + "type": "String", + "placeholders": {} + }, + "verifyStart": "Alusta verifitseerimist", + "@verifyStart": { + "type": "String", + "placeholders": {} + }, + "verifySuccess": "Sinu verifitseerimine õnnestus!", + "@verifySuccess": { + "type": "String", + "placeholders": {} + }, + "verifyTitle": "Verifitseerin teist kasutajakontot", + "@verifyTitle": { + "type": "String", + "placeholders": {} + }, + "videoCall": "Videokõne", + "@videoCall": { + "type": "String", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "Vestluse ajaloo nähtavus", + "@visibilityOfTheChatHistory": { + "type": "String", + "placeholders": {} + }, + "visibleForAllParticipants": "Nähtav kõikidele osalejatele", + "@visibleForAllParticipants": { + "type": "String", + "placeholders": {} + }, + "visibleForEveryone": "Nähtav kõikidele", + "@visibleForEveryone": { + "type": "String", + "placeholders": {} + }, + "voiceMessage": "Häälsõnum", + "@voiceMessage": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "Ootan, et teine osapool nõustuks päringuga…", + "@waitingPartnerAcceptRequest": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerEmoji": "Ootan teise osapoole kinnitust, et tegemist on samade emojidega…", + "@waitingPartnerEmoji": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerNumbers": "Ootan teise osapoole kinnitust, et tegemist on samade numbritega…", + "@waitingPartnerNumbers": { + "type": "String", + "placeholders": {} + }, + "wallpaper": "Taustapilt:", + "@wallpaper": { + "type": "String", + "placeholders": {} + }, + "warning": "Hoiatus!", + "@warning": { + "type": "String", + "placeholders": {} + }, + "weSentYouAnEmail": "Me saatsime sulle e-kirja", + "@weSentYouAnEmail": { + "type": "String", + "placeholders": {} + }, + "whoCanPerformWhichAction": "Erinevatele kasutajatele lubatud toimingud", + "@whoCanPerformWhichAction": { + "type": "String", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "Kes võivad selle vestlusrühmaga liituda", + "@whoIsAllowedToJoinThisGroup": { + "type": "String", + "placeholders": {} + }, + "whyDoYouWantToReportThis": "Miks sa soovid sellest teatada?", + "@whyDoYouWantToReportThis": { + "type": "String", + "placeholders": {} + }, + "wipeChatBackup": "Kas kustutame sinu vestluste varukoopia ja loome uue taastamiseks mõeldud krüptovõtme?", + "@wipeChatBackup": { + "type": "String", + "placeholders": {} + }, + "withTheseAddressesRecoveryDescription": "Nende e-posti aadresside abil saad taastada oma salasõna.", + "@withTheseAddressesRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "writeAMessage": "Kirjuta üks sõnum…", + "@writeAMessage": { + "type": "String", + "placeholders": {} + }, + "yes": "Jah", + "@yes": { + "type": "String", + "placeholders": {} + }, + "you": "Sina", + "@you": { + "type": "String", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "Sa enam ei osale selles vestluses", + "@youAreNoLongerParticipatingInThisChat": { + "type": "String", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "Sinule on selles vestluses seatud suhtluskeeld", + "@youHaveBeenBannedFromThisChat": { + "type": "String", + "placeholders": {} + }, + "yourPublicKey": "Sinu avalik võti", + "@yourPublicKey": { + "type": "String", + "placeholders": {} + }, + "chatHasBeenAddedToThisSpace": "Lisasime vestluse kogukonda", + "@chatHasBeenAddedToThisSpace": {}, + "addToSpace": "Lisa kogukonda", + "@addToSpace": {}, + "scanQrCode": "Skaneeri QR-koodi", + "@scanQrCode": {}, + "sendOnEnter": "Saada sõnum sisestusklahvi vajutusel", + "@sendOnEnter": {}, + "homeserver": "Koduserver", + "@homeserver": {}, + "serverRequiresEmail": "See koduserver eeldab registreerimisel kasutatava e-postiaadressi kinnitamist.", + "@serverRequiresEmail": {}, + "enableMultiAccounts": "(KATSELINE) Pruugi selles seadmes mitut Matrix'i kasutajakontot", + "@enableMultiAccounts": {}, + "bundleName": "Köite nimi", + "@bundleName": {}, + "removeFromBundle": "Eemalda sellest köitest", + "@removeFromBundle": {}, + "addToBundle": "Lisa köitesse", + "@addToBundle": {}, + "editBundlesForAccount": "Muuda selle kasutajakonto köiteid", + "@editBundlesForAccount": {}, + "addAccount": "Lisa kasutajakonto", + "@addAccount": {}, + "oneClientLoggedOut": "Üks sinu klientrakendustest on Matrix'i võrgust välja loginud", + "@oneClientLoggedOut": {}, + "link": "Link", + "@link": {}, + "yourChatBackupHasBeenSetUp": "Sinu vestluste varundus on seadistatud.", + "@yourChatBackupHasBeenSetUp": {}, + "unverified": "Verifitseerimata", + "@unverified": {}, + "repeatPassword": "Korda salasõna", + "@repeatPassword": {}, + "messageInfo": "Sõnumi teave", + "@messageInfo": {}, + "time": "Kellaaeg", + "@time": {}, + "messageType": "Sõnumi tüüp", + "@messageType": {}, + "sender": "Saatja", + "@sender": {}, + "openGallery": "Ava galerii", + "@openGallery": {}, + "addToSpaceDescription": "Vali kogukond, kuhu soovid seda vestlust lisada.", + "@addToSpaceDescription": {}, + "removeFromSpace": "Eemalda kogukonnast", + "@removeFromSpace": {}, + "start": "Alusta", + "@start": {}, + "commandHint_discardsession": "Loobu sessioonist", + "@commandHint_discardsession": { + "type": "String", + "description": "Usage hint for the command /discardsession" + }, + "commandHint_clearcache": "Tühjenda vahemälu", + "@commandHint_clearcache": { + "type": "String", + "description": "Usage hint for the command /clearcache" + }, + "commandHint_dm": "Alusta otsevestlust\nKrüptimise keelamiseks kasuta --no-encryption võtit", + "@commandHint_dm": { + "type": "String", + "description": "Usage hint for the command /dm" + }, + "commandHint_create": "Loo tühi vestlusrühm\nKrüptimise keelamiseks kasuta --no-encryption võtit", + "@commandHint_create": { + "type": "String", + "description": "Usage hint for the command /create" + }, + "openVideoCamera": "Tee video", + "@openVideoCamera": { + "type": "String", + "placeholders": {} + }, + "markAsRead": "Märgi loetuks", + "@markAsRead": {}, + "reportUser": "Teata kasutajast", + "@reportUser": {}, + "openChat": "Ava vestlus", + "@openChat": {}, + "dismiss": "Loobu", + "@dismiss": {}, + "reactedWith": "{sender} reageeris nii {reaction}", + "@reactedWith": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "reaction": { + "type": "String" + } + } + }, + "emojis": "Emotikonid", + "@emojis": {}, + "placeCall": "Helista", + "@placeCall": {}, + "unsupportedAndroidVersion": "See Androidi versioon ei ole toetatud", + "@unsupportedAndroidVersion": {}, + "voiceCall": "Häälkõne", + "@voiceCall": {}, + "confirmEventUnpin": "Kas sa oled kindel, et tahad esiletõstetud sündmuse jäädavalt eemaldada?", + "@confirmEventUnpin": {}, + "pinMessage": "Tõsta sõnum jututoas esile", + "@pinMessage": {}, + "videoCallsBetaWarning": "Palun arvesta, et videokõned on veel beetajärgus. Nad ei pruugi veel toimida kõikidel platvormidel korrektselt.", + "@videoCallsBetaWarning": {}, + "emailOrUsername": "E-posti aadress või kasutajanimi", + "@emailOrUsername": {}, + "experimentalVideoCalls": "Katselised videokõned", + "@experimentalVideoCalls": {}, + "unsupportedAndroidVersionLong": "See funktsionaalsus eeldab uuemat Androidi versiooni. Palun kontrolli, kas sinu nutiseadmele leidub süsteemiuuendusi või saaks seal Lineage OSi kasutada.", + "@unsupportedAndroidVersionLong": {}, + "nextAccount": "Järgmine kasutajakonto", + "@nextAccount": {}, + "separateChatTypes": "Eraldi vestlused ja jututoad", + "@separateChatTypes": { + "type": "String", + "placeholders": {} + }, + "errorAddingWidget": "Vidina lisamisel tekkis viga.", + "@errorAddingWidget": {}, + "widgetNameError": "Palun sisesta kuvatav nimi.", + "@widgetNameError": {}, + "addWidget": "Lisa vidin", + "@addWidget": {}, + "previousAccount": "Eelmine kasutajakonto", + "@previousAccount": {}, + "widgetUrlError": "See pole korrektne URL.", + "@widgetUrlError": {}, + "widgetName": "Nimi", + "@widgetName": {}, + "widgetCustom": "Kohandatud", + "@widgetCustom": {}, + "widgetJitsi": "Jitsi Meet", + "@widgetJitsi": {}, + "widgetEtherpad": "Märkmed ja tekstid", + "@widgetEtherpad": {}, + "widgetVideo": "Video", + "@widgetVideo": {}, + "switchToAccount": "Pruugi kasutajakontot # {number}", + "@switchToAccount": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "youAcceptedTheInvitation": "👍 Sa võtsid kutse vastu", + "@youAcceptedTheInvitation": {}, + "youUnbannedUser": "Sa eemaldasid suhtluskeelu kasutajalt {user}", + "@youUnbannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youHaveWithdrawnTheInvitationFor": "Sa oled tühistanud kutse kasutajale {user}", + "@youHaveWithdrawnTheInvitationFor": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youBannedUser": "Sa seadsid suhtluskeelu kasutajale {user}", + "@youBannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youJoinedTheChat": "Sa liitusid vestlusega", + "@youJoinedTheChat": {}, + "youKickedAndBanned": "🙅Sa müksasid kasutaja {user} välja ning seadsid talle suhtluskeelu", + "@youKickedAndBanned": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "videoWithSize": "Video ({size})", + "@videoWithSize": { + "type": "String", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "youRejectedTheInvitation": "Sa lükkasid kutse tagasi", + "@youRejectedTheInvitation": {}, + "youKicked": "👞 Sa müksasid kasutaja {user} välja", + "@youKicked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youInvitedUser": "📩 Sa saatsid kutse kasutajale {user}", + "@youInvitedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youInvitedBy": "📩 {user} saatis sulle kutse", + "@youInvitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "publish": "Avalda", + "@publish": {}, + "pleaseEnterRecoveryKey": "Palun sisesta oma taastevõti:", + "@pleaseEnterRecoveryKey": {}, + "recoveryKey": "Taastevõti", + "@recoveryKey": {}, + "users": "Kasutajad", + "@users": {}, + "storeInSecureStorageDescription": "Salvesta taastevõti selle seadme turvahoidlas.", + "@storeInSecureStorageDescription": {}, + "saveKeyManuallyDescription": "Salvesta see krüptovõti kasutades selle süsteemi jagamisvalikuid või lõikelauda.", + "@saveKeyManuallyDescription": {}, + "storeInAndroidKeystore": "Vali salvestuskohaks Android KeyStore", + "@storeInAndroidKeystore": {}, + "storeInAppleKeyChain": "Vali salvestuskohaks Apple KeyChain", + "@storeInAppleKeyChain": {}, + "recoveryKeyLost": "Kas taasetvõti on kadunud?", + "@recoveryKeyLost": {}, + "pleaseEnterRecoveryKeyDescription": "Vanade sõnumite lugemiseks palun siseta oma varasemas sessioonis loodud taastevõti. Taastamiseks mõeldud krüptovõti EI OLE sinu salasõna.", + "@pleaseEnterRecoveryKeyDescription": {}, + "storeSecurlyOnThisDevice": "Salvesta turvaliselt selles seadmes", + "@storeSecurlyOnThisDevice": {}, + "unlockOldMessages": "Muuda vanad sõnumid loetavaks", + "@unlockOldMessages": {}, + "countFiles": "{count} faili", + "@countFiles": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "dehydrate": "Ekspordi sessiooni teave ja kustuta nutiseadmest rakenduse andmed", + "@dehydrate": {}, + "dehydrateTor": "TOR'i kasutajad: Ekspordi sessioon", + "@dehydrateTor": {}, + "hydrateTor": "TOR'i kasutajatele: impordi viimati eksporditud sessiooni andmed", + "@hydrateTor": {}, + "hydrateTorLong": "Kui viimati TOR'i võrku kasutasid, siis kas sa eksportisid oma sessiooni andmed? Kui jah, siis impordi nad mugavasti ja jätka suhtlemist.", + "@hydrateTorLong": {}, + "indexedDbErrorTitle": "Brauseri privaatse akna kasutamisega seotud asjaolud", + "@indexedDbErrorTitle": {}, + "dehydrateWarning": "Seda tegevust ei saa tagasi pöörata. Palun kontrolli, et sa oled varukoopia turvaliselt salvestanud.", + "@dehydrateWarning": {}, + "dehydrateTorLong": "Kui oled TOR'i võrgu kasutaja, siis enne akna sulgemist palun ekspordi viimase sessiooni andmed.", + "@dehydrateTorLong": {}, + "indexedDbErrorLong": "Privaatse akna puhul andmete salvestamine vaikimisi pole kasutusel.\nPalun toimi alljärgnevalt:\n- ava about:config\n- määra dom.indexedDB.privateBrowsing.enabled väärtuseks true\nVastasel juhul sa ei saa FluffyChat'i kasutada.", + "@indexedDbErrorLong": {}, + "hydrate": "Taasta varundatud failist", + "@hydrate": {}, + "user": "Kasutaja", + "@user": {}, + "custom": "Kohandatud", + "@custom": {}, + "confirmMatrixId": "Konto kustutamiseks palun kinnitage oma Matrix'i ID.", + "@confirmMatrixId": {}, + "supposedMxid": "See peaks olema {mxid}", + "@supposedMxid": { + "type": "String", + "placeholders": { + "mxid": { + "type": "String" + } + } + }, + "commandHint_markasgroup": "Märgi vestlusrühmaks", + "@commandHint_markasgroup": {}, + "commandHint_markasdm": "Märgi otsevestusluseks antud Matrixi ID jaoks", + "@commandHint_markasdm": {}, + "whyIsThisMessageEncrypted": "Miks see sõnum pole loetav?", + "@whyIsThisMessageEncrypted": {}, + "noKeyForThisMessage": "See võib juhtuda, kui sõnum oli saadetud enne, kui siin seadmes oma kontoga sisse logisid.\n\nSamuti võib juhtuda siis, kui saatja on lugemises selles seadmes blokeerinud või on tekkinud tõrkeid veebiühenduses.\n\nAga mõnes teises seadmes saad seda sõnumit lugeda? Siis sa võid sõnumi sealt üle tõsta. Ava Seadistused -> Seadmed ning kontrolli, et kõik sinu seadmed on omavahel verifitseeritud. Kui avad selle vestluse või jututoa ning mõlemad sessioonid on avatud, siis vajalikud krüptovõtmed saadetakse automaatset.\n\nKas sa soovid vältida krüptovõtmete kadumist väljalogimisel ja seadmete vahetusel? Siis palun kontrolli, et seadistuses on krüptovõtmete varundus sisse lülitatud.", + "@noKeyForThisMessage": {}, + "callingPermissions": "Helistamise õigused", + "@callingPermissions": {}, + "callingAccountDetails": "Võimaldab FluffyChat'il kasutada Androidi helistamisrakendust.", + "@callingAccountDetails": {}, + "appearOnTop": "Luba pealmise rakendusena", + "@appearOnTop": {}, + "otherCallingPermissions": "Mikrofoni, kaamera ja muud FluffyChat'i õigused", + "@otherCallingPermissions": {}, + "newGroup": "Uus jututuba", + "@newGroup": {}, + "newSpace": "Uus kogukond", + "@newSpace": {}, + "enterSpace": "Sisene kogukonda", + "@enterSpace": {}, + "enterRoom": "Ava jututuba", + "@enterRoom": {}, + "appearOnTopDetails": "Sellega lubad rakendust avada kõige pealmisena (pole vajalik, kui Fluffychat on juba seadistatud toimima helistamiskontoga)", + "@appearOnTopDetails": {}, + "callingAccount": "Helistamiskonto", + "@callingAccount": {}, + "screenSharingTitle": "ekraani jagamine", + "@screenSharingTitle": {}, + "foregroundServiceRunning": "See teavitus toimib siis, kui esiplaaniteenus töötab.", + "@foregroundServiceRunning": {}, + "allSpaces": "Kõik kogukonnad", + "@allSpaces": {}, + "screenSharingDetail": "Sa jagad oma ekraani FuffyChati vahendusel", + "@screenSharingDetail": {}, + "numChats": "{number} vestlust", + "@numChats": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "hideUnimportantStateEvents": "Peida väheolulised olekuteated", + "@hideUnimportantStateEvents": {}, + "doNotShowAgain": "Ära näita uuesti", + "@doNotShowAgain": {}, + "commandHint_cuddle": "Saada üks kaisutus", + "@commandHint_cuddle": {}, + "commandHint_hug": "Saada üks kallistus", + "@commandHint_hug": {}, + "googlyEyesContent": "{senderName} saatis sulle otsivad silmad", + "@googlyEyesContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "cuddleContent": "{senderName} kaisutab sind", + "@cuddleContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "hugContent": "{senderName} kallistab sind", + "@hugContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "commandHint_googly": "Saada ühed otsivad silmad", + "@commandHint_googly": {}, + "wasDirectChatDisplayName": "Sõnumiteta vestlus (vana nimega {oldDisplayName})", + "@wasDirectChatDisplayName": { + "type": "String", + "placeholders": { + "oldDisplayName": { + "type": "String" + } + } + }, + "startFirstChat": "Alusta oma esimest vestlust", + "@startFirstChat": {}, + "encryptThisChat": "Krüpti see vestlus", + "@encryptThisChat": {}, + "disableEncryptionWarning": "Kui vestluses on krüptimine kasutusele võetud, siis turvalisuse huvides ei saa seda hiljem välja lülitada.", + "@disableEncryptionWarning": {}, + "sorryThatsNotPossible": "Vabandust... see ei ole võimalik", + "@sorryThatsNotPossible": {}, + "deviceKeys": "Seadme võtmed:", + "@deviceKeys": {}, + "newSpaceDescription": "Kogukonnad võimaldavad sul koondada erinevaid vestlusi ning korraldada avalikku või privaatset ühistegevust.", + "@newSpaceDescription": {}, + "reopenChat": "Alusta vestlust uuesti", + "@reopenChat": {}, + "noOtherDevicesFound": "Muid seadmeid ei leidu", + "@noOtherDevicesFound": {}, + "noBackupWarning": "Hoiatus! Kui sa ei lülita sisse vestluse varundust, siis sul puudub hiljem ligipääs krüptitud sõnumitele. Me tungivalt soovitame, et palun lülita vestluse varundamine sisse enne väljalogimist.", + "@noBackupWarning": {}, + "fileIsTooBigForServer": "Saatmine ei õnnestu! Serveri vaid kuni {max} suurusega manuseid.", + "@fileIsTooBigForServer": {}, + "fileHasBeenSavedAt": "Fail on salvestatud kausta: {path}", + "@fileHasBeenSavedAt": { + "type": "String", + "placeholders": { + "path": { + "type": "String" + } + } + }, + "jumpToLastReadMessage": "Liigu viimase loetud sõnumini", + "@jumpToLastReadMessage": {}, + "readUpToHere": "Siiamaani on loetud", + "@readUpToHere": {}, + "jump": "Hüppa", + "@jump": {}, + "openLinkInBrowser": "Ava link veebibrauseris", + "@openLinkInBrowser": {}, + "report": "teata", + "@report": {}, + "allRooms": "Kõik vestlusrühmad", + "@allRooms": { + "type": "String", + "placeholders": {} + }, + "reportErrorDescription": "😭 Oh appike! Midagi läks valesti. Kui soovid, võid sellest veast arendajatele teatada.", + "@reportErrorDescription": {}, + "signInWithPassword": "Logi sisse salasõnaga", + "@signInWithPassword": {}, + "pleaseTryAgainLaterOrChooseDifferentServer": "Palun proovi hiljem uuesti või muuda serveri nime.", + "@pleaseTryAgainLaterOrChooseDifferentServer": {}, + "signInWith": "Logi sisse kasutades teenusepakkujat {provider}", + "@signInWith": { + "type": "String", + "placeholders": { + "provider": { + "type": "String" + } + } + }, + "importFromZipFile": "Impordi zip-failist", + "@importFromZipFile": {}, + "exportEmotePack": "Ekspordi emotikonide pakk zip-failina", + "@exportEmotePack": {}, + "replace": "Asenda", + "@replace": {}, + "notAnImage": "See pole pildifail.", + "@notAnImage": {}, + "importNow": "Impordi kohe", + "@importNow": {}, + "importEmojis": "Impordi emojid", + "@importEmojis": {}, + "sendTypingNotifications": "Saada kirjutamise teavitusi", + "@sendTypingNotifications": {}, + "createGroup": "Loo vestlusrühm", + "@createGroup": {}, + "setTheme": "Vali teema:", + "@setTheme": {}, + "inviteContactToGroupQuestion": "Kas sa soovid kutsuda kasutajat {contact} „{groupName}“ jututuppa?", + "@inviteContactToGroupQuestion": {}, + "tryAgain": "Proovi uuesti", + "@tryAgain": {}, + "chatPermissions": "Vestluse õigused", + "@chatPermissions": {}, + "chatDescription": "Vestluse kirjeldus", + "@chatDescription": {}, + "noChatDescriptionYet": "Vestluse kirjeldus on puudu.", + "@noChatDescriptionYet": {}, + "optionalRedactReason": "(Kui soovid lisada) Sõnumi muutmise põhjus...", + "@optionalRedactReason": {}, + "messagesStyle": "Sõnumid:", + "@messagesStyle": {}, + "shareInviteLink": "Jaga kutse linki", + "@shareInviteLink": {}, + "directChat": "Otsevestlus", + "@directChat": {}, + "setChatDescription": "Lisa vestluse kirjeldus", + "@setChatDescription": {}, + "profileNotFound": "Sellist kasutajat serveris ei leidu. Tegemist võib olla kas võrguühenduse probleemiga või sellist kasutajat tõesti pole olemas.", + "@profileNotFound": {}, + "setColorTheme": "Vali värviteema:", + "@setColorTheme": {}, + "invite": "Kutsu", + "@invite": {}, + "invalidServerName": "Vigane serveri nimi", + "@invalidServerName": {}, + "addChatDescription": "Lisa vestluse kirjeldus...", + "@addChatDescription": {}, + "chatDescriptionHasBeenChanged": "Vestluse kirjeldus on muutunud", + "@chatDescriptionHasBeenChanged": {}, + "redactMessageDescription": "Sõnumi muudatus kehtib kõikidele vestluses osalejatele. Seda muudatust ei saa tagasi pöörata.", + "@redactMessageDescription": {}, + "redactedBy": "Muutja: {username}", + "@redactedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "redactedByBecause": "Muutja {username} märkis põhjuseks: „{reason}“", + "@redactedByBecause": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "reason": { + "type": "String" + } + } + }, + "inviteGroupChat": "📨 Kutse vestlusrühma", + "@inviteGroupChat": {}, + "invitePrivateChat": "📨 Kutsu omavahelisele vestlusele", + "@invitePrivateChat": {}, + "emoteKeyboardNoRecents": "Hiljuti kasutatud emotikonid kuvame siin...", + "@emoteKeyboardNoRecents": { + "type": "String", + "placeholders": {} + }, + "invalidInput": "Vigane sisend!", + "@invalidInput": {}, + "wrongPinEntered": "Sisestasid vale PIN-koodi! Proovi uuesti {seconds} sekundi pärast...", + "@wrongPinEntered": { + "type": "String", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "banUserDescription": "Sellele kasutajale on nüüd selles jututoas seatud suhtluskeeld ning ta ei saa vestluses osaleda seni, kuni suhtluskeeld pole eemaldatud.", + "@banUserDescription": {}, + "removeDevicesDescription": "Sind logitakse sellest seadmest välja ja sa enam ei saa sõnumeid.", + "@removeDevicesDescription": {}, + "unbanUserDescription": "Uuesti proovimisel saab see kasutaja nüüd vestlusega liituda.", + "@unbanUserDescription": {}, + "pushNotificationsNotAvailable": "Tõuketeavitused pole saadaval", + "@pushNotificationsNotAvailable": {}, + "makeAdminDescription": "Kui annad sellele kasutajale peakasutaja õigused, siis kuna tal on sinuga samad õigused, sa ei saa seda toimingut enam tagasi pöörata.", + "@makeAdminDescription": {}, + "archiveRoomDescription": "Selle vestluse tõstame nüüd arhiivi. Muud osalejad näevad, et sa oled vestlusest lahkunud.", + "@archiveRoomDescription": {}, + "hasKnocked": "🚪{user} on jututoa uksele koputanud", + "@hasKnocked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "learnMore": "Loe lisaks", + "@learnMore": {}, + "roomUpgradeDescription": "See vestlus luuakse nüüd uuesti jututoa uue versioonina. Kõik senised osalejad saavad teate, et nad peavad liituma uue vestlusega. Jututubade versioonide kohta leiad teavet https://spec.matrix.org/latest/rooms/ lehelt", + "@roomUpgradeDescription": {}, + "pleaseEnterANumber": "Palun sisesta 0'st suurem number", + "@pleaseEnterANumber": {}, + "kickUserDescription": "See kasutaja on nüüd jutuoast välja müksatud, kuid talle pole seatud suhtluskeeldu. Avaliku jututoa puhul saab ta alati uuesti liituda.", + "@kickUserDescription": {}, + "blockListDescription": "Sul on võimalik blokeerida neid kasutajaid, kes sind segavad. Oma isiklikku blokerimisloendisse lisatud kasutajad ei saa sulle saata sõnumeid ega kutseid.", + "@blockListDescription": {}, + "createGroupAndInviteUsers": "Lisavestlusrühm ja kutsu sinna kasutajaid", + "@createGroupAndInviteUsers": {}, + "startConversation": "Alusta vestlust", + "@startConversation": {}, + "blockedUsers": "Blokeeritud kasutajad", + "@blockedUsers": {}, + "groupCanBeFoundViaSearch": "Vestlusrühm on leitav otsinguga", + "@groupCanBeFoundViaSearch": {}, + "noUsersFoundWithQuery": "Päringuga „{query}“ ei leidunud kahkus ühtegi kasutajat. Palun kontrolli, et päringus poleks vigu.", + "@noUsersFoundWithQuery": { + "type": "String", + "placeholders": { + "query": { + "type": "String" + } + } + }, + "block": "Blokeeri", + "@block": {}, + "yourGlobalUserIdIs": "Sinu üldine kasutajatunnus on: ", + "@yourGlobalUserIdIs": {}, + "commandHint_sendraw": "Saada json oma algupärasel kujul", + "@commandHint_sendraw": {}, + "wrongRecoveryKey": "Vabandust..., see ei tundu olema korrektne taastevõti.", + "@wrongRecoveryKey": {}, + "blockUsername": "Eira kasutajanime", + "@blockUsername": {}, + "groupName": "Vestlusrühma nimi", + "@groupName": {}, + "databaseMigrationTitle": "Andmebaas on optimeeritud", + "@databaseMigrationTitle": {}, + "searchChatsRooms": "Otsi #vestlusi, @kasutajaid...", + "@searchChatsRooms": {}, + "databaseMigrationBody": "Palun oota üks hetk. Natuke võib kuluda aega.", + "@databaseMigrationBody": {}, + "thisDevice": "See seade:", + "@thisDevice": {}, + "publicSpaces": "Avalikud kogukonnad", + "@publicSpaces": {}, + "passwordIsWrong": "Sinu sisestatud salasõna on vale", + "@passwordIsWrong": {}, + "pleaseEnterYourCurrentPassword": "Palun sisesta oma praegune salasõna", + "@pleaseEnterYourCurrentPassword": {}, + "publicLink": "Avalik link", + "@publicLink": {}, + "nothingFound": "Ei leidnud mitte midagi...", + "@nothingFound": {}, + "decline": "Keeldu", + "@decline": {}, + "newPassword": "Uus salasõna", + "@newPassword": {}, + "passwordsDoNotMatch": "Salasõnad ei klapi omavahel", + "@passwordsDoNotMatch": {}, + "subspace": "Jututuba või alamkogukond", + "@subspace": {}, + "select": "Vali", + "@select": {}, + "pleaseChooseAStrongPassword": "Palun sisesta korralik salasõna", + "@pleaseChooseAStrongPassword": {}, + "addChatOrSubSpace": "Lisa vestlus või jututuba", + "@addChatOrSubSpace": {}, + "leaveEmptyToClearStatus": "Senise oleku eemaldamiseks jäta väärtus tühjaks.", + "@leaveEmptyToClearStatus": {}, + "joinSpace": "Liitu kogukonnaga", + "@joinSpace": {}, + "searchForUsers": "Otsi kasutajat @kasutajanimi ...", + "@searchForUsers": {}, + "databaseBuildErrorBody": "SQlite andmebaasi loomine ei õnnestu. Seetõttu üritab rakendus kasutada senist andmehoidlat. Palun teata sellest veast arendajatele siin: {url} märkides veateate: {error}", + "@databaseBuildErrorBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "initAppError": "Rakenduse käivitamisel tekkis viga", + "@initAppError": {}, + "sessionLostBody": "Sinu sessioon on kadunud. Palun teata sellest veast arendajatele siin: {url} märkides veateate: {error}", + "@sessionLostBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "restoreSessionBody": "Nüüd üritab rakendus taastada sinu sessiooni varukoopiast. Palun teata sellest veast arendajatele siin: {url} märkides veateate: {error}", + "@restoreSessionBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "transparent": "Läbipaistev", + "@transparent": {}, + "youInvitedToBy": "📩 Sa oled lingiga saanud kutse jututuppa:\n{alias}", + "@youInvitedToBy": { + "placeholders": { + "alias": { + "type": "String" + } + } + }, + "sendReadReceipts": "Saada lugemisteatisi", + "@sendReadReceipts": {}, + "verifyOtherUserDescription": "Kui sa oled vestluse teise osapoole verifitseerinud, siis saad kindel olla, et tead, kellega suhtled. 💪\n\nKui alustad verifitseerimist, siis sinul ja teisel osapoolel tekib rakenduses hüpikaken. Seal kuvatakse emotikonide või numbrite jada, mida peate omavahel võrdlema.\n\nKõige lihtsam on seda teha kas omavahelise kohtumise ajal või videokõne kestel. 👭", + "@verifyOtherUserDescription": {}, + "forwardMessageTo": "Kas edastame sõnumi jututuppa {roomName}?", + "@forwardMessageTo": { + "type": "String", + "placeholders": { + "roomName": { + "type": "String" + } + } + }, + "sendTypingNotificationsDescription": "Muud vestluses osalejad saavad näha, kui sa oled uut sõnumit kirjutamas.", + "@sendTypingNotificationsDescription": {}, + "sendReadReceiptsDescription": "Muud vestluses osalejad näevad, kas oled sõnumit lugenud.", + "@sendReadReceiptsDescription": {}, + "formattedMessages": "Vormindatud sõnumid", + "@formattedMessages": {}, + "verifyOtherUser": "🔐 Verifitseeri teine kasutaja", + "@verifyOtherUser": {}, + "verifyOtherDevice": "🔐 Verifitseeri oma muu seade", + "@verifyOtherDevice": {}, + "canceledKeyVerification": "{sender} katkestas krüptovõtmete verifitseerimise", + "@canceledKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "completedKeyVerification": "{sender} sai valmis krüptovõtmete verifitseerimise", + "@completedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "formattedMessagesDescription": "Kasutades markdown-süntaksit kuva vormindust, nagu rasvases kirjas tekst.", + "@formattedMessagesDescription": {}, + "verifyOtherDeviceDescription": "Kui sa oled oma muu seadme verifitseerinud, siis need seadmed võivad vahetada krüptovõtmeid ning see parandab üldist turvalisust. 💪 Kui alustad verifitseerimist, siis sinu mõlemas seadmes tekib rakenduses hüpikaken. Seal kuvatakse emotikonide või numbrite jada, mida pead omavahel võrdlema. On oluline, et mõlemad seadmed on verifitseerimise alustamisel sinu kõrval. 🤳", + "@verifyOtherDeviceDescription": {}, + "acceptedKeyVerification": "{sender} nõustus krüptovõtmete verifitseerimisega", + "@acceptedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "isReadyForKeyVerification": "{sender} on valmis krüptovõtmete verifitseerimiseks", + "@isReadyForKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "requestedKeyVerification": "{sender} palus krüptovõtmete verifitseerimist", + "@requestedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "startedKeyVerification": "{sender} alustas krüptovõtmete verifitseerimist", + "@startedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "presenceStyle": "Olekuteated:", + "@presenceStyle": { + "type": "String", + "placeholders": {} + }, + "presencesToggle": "Näita teiste kasutajate olekuteateid", + "@presencesToggle": { + "type": "String", + "placeholders": {} + }, + "incomingMessages": "Saabuvad sõnumid", + "@incomingMessages": {}, + "hidePresences": "Peida olekute loend?", + "@hidePresences": {}, + "stickers": "Kleepsud", + "@stickers": {}, + "discover": "Otsi ja leia", + "@discover": {}, + "commandHint_ignore": "Eira seda Matrixi kasutajatunnust", + "@commandHint_ignore": {}, + "commandHint_unignore": "Lõpeta selle Matrixi kasutajatunnuse eiramine", + "@commandHint_unignore": {}, + "unreadChatsInApp": "{appname}: {unread} lugemata vestlust", + "@unreadChatsInApp": { + "type": "String", + "placeholders": { + "appname": { + "type": "String" + }, + "unread": { + "type": "String" + } + } + }, + "globalChatId": "Üldine vestluse tunnus", + "@globalChatId": {}, + "accessAndVisibilityDescription": "Kes võib selle vestlusega liituda ja kuidas on võimalik seda vestlust leida.", + "@accessAndVisibilityDescription": {}, + "hideRedactedMessagesBody": "Kui keegi muudab sõnumit, siis teda enam ei kuvataks vestluses.", + "@hideRedactedMessagesBody": {}, + "userWouldLikeToChangeTheChat": "{user} soovib liituda vestlusega.", + "@userWouldLikeToChangeTheChat": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "hideMemberChangesInPublicChats": "Peida avalike vestluste liikmelisuse muutused", + "@hideMemberChangesInPublicChats": {}, + "notifyMeFor": "Teavita mind kui", + "@notifyMeFor": {}, + "usersMustKnock": "Kasutajad peavad uksele koputama", + "@usersMustKnock": {}, + "noOneCanJoin": "Mitte keegi ei saa liituda", + "@noOneCanJoin": {}, + "knocking": "Koputus uksele", + "@knocking": {}, + "chatCanBeDiscoveredViaSearchOnServer": "Vestluse või jututoa saad leida otsingust serveris {server}", + "@chatCanBeDiscoveredViaSearchOnServer": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "publicChatAddresses": "Vestluse avalik aadress", + "@publicChatAddresses": {}, + "minimumPowerLevel": "{level} on väikseim võimalik õiguste tase.", + "@minimumPowerLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "String" + } + } + }, + "noDatabaseEncryption": "Andmebaasi krüptimine pole sellel platvormil toetatud", + "@noDatabaseEncryption": {}, + "noPublicLinkHasBeenCreatedYet": "Avalikult kasutatavat linki pole veel olemas", + "@noPublicLinkHasBeenCreatedYet": {}, + "knock": "Koputa uksele", + "@knock": {}, + "appLockDescription": "Kui sa rakendust parasjagu ei kasuta, siis lukusta ta PIN-koodiga", + "@appLockDescription": {}, + "accessAndVisibility": "Ligipääsetavus ja nähtavus", + "@accessAndVisibility": {}, + "calls": "Kõned", + "@calls": {}, + "customEmojisAndStickers": "Kohandatud emotikonid ja kleepsud", + "@customEmojisAndStickers": {}, + "customEmojisAndStickersBody": "Lisa või jaga kohandatud emotikone või kleepsupakke, mida võiks kasutada igas vestluses.", + "@customEmojisAndStickersBody": {}, + "hideRedactedMessages": "Peida muudetud sõnumid", + "@hideRedactedMessages": {}, + "hideInvalidOrUnknownMessageFormats": "Peida vigase või tundmatu vorminguga sõnumid", + "@hideInvalidOrUnknownMessageFormats": {}, + "hideMemberChangesInPublicChatsBody": "Parema loetavuse nimel ära näita vestluse ajajoonel avaliku jututoaga liitumisi ja sealt lahkumisi.", + "@hideMemberChangesInPublicChatsBody": {}, + "overview": "Ülevaade", + "@overview": {}, + "passwordRecoverySettings": "Salasõna taastamise seadistused", + "@passwordRecoverySettings": {}, + "createNewAddress": "Loo uus aadress", + "@createNewAddress": {}, + "userRole": "Kasutaja roll", + "@userRole": {}, + "thereAreCountUsersBlocked": "Hetkel on {count} blokeeritud kasutajat.", + "@thereAreCountUsersBlocked": { + "type": "String", + "count": {} + }, + "searchIn": "Otsi vestlusest „{chat}“...", + "@searchIn": { + "type": "String", + "placeholders": { + "chat": { + "type": "String" + } + } + }, + "searchMore": "Otsi veel...", + "@searchMore": {}, + "knockRestricted": "Koputa piiratud ligipääsuga jututoa uksele", + "@knockRestricted": {}, + "restricted": "Piiratud", + "@restricted": {}, + "gallery": "Galerii", + "@gallery": {}, + "files": "Failid", + "@files": {}, + "swipeRightToLeftToReply": "Vastamiseks viipa paremalt vasakule", + "@swipeRightToLeftToReply": {}, + "alwaysUse24HourFormat": "false", + "@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": "String", + "space": {} + }, + "markAsUnread": "Märgi mitteloetuks", + "@markAsUnread": {}, + "countChatsAndCountParticipants": "{chats} vestlust ja {participants} osalejat", + "@countChatsAndCountParticipants": { + "type": "String", + "placeholders": { + "chats": { + "type": "int" + }, + "participants": { + "type": "int" + } + } + }, + "userLevel": "{level} - kasutaja", + "@userLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "moderatorLevel": "{level} - moderaator", + "@moderatorLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "adminLevel": "{level} - peakasutaja", + "@adminLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "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": {}, + "chatPermissionsDescription": "Määra erinevatele kasutajatele selles vestluses vajalikud õigused. Tüüpiliselt on need 0, 50 ja 100 (vastavalt kasutajad, moderaatorid ja peakasutajad), kuid igasugused vahepealsed variatsioonid on ka võimalikud.", + "@chatPermissionsDescription": {}, + "invitedBy": "📩 Kutsujaks {user}", + "@invitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "updateInstalled": "🎉 Versiooniuuendus {version} on paigaldatud!", + "@updateInstalled": { + "type": "String", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "changelog": "Muudatuste logi", + "@changelog": {}, + "sendCanceled": "Saatmine on katkestatud", + "@sendCanceled": {}, + "noChatsFoundHere": "Siin ei leidu veel ühtegi vestlust. Alusta uut vestlust klõpsides allpool asuvat nuppu. ⤵️", + "@noChatsFoundHere": {}, + "loginWithMatrixId": "Logi sisse Matrix-ID alusel", + "@loginWithMatrixId": {}, + "discoverHomeservers": "Leia koduservereid", + "@discoverHomeservers": {}, + "whatIsAHomeserver": "Mis on koduserver?", + "@whatIsAHomeserver": {}, + "homeserverDescription": "Sarnaselt e-postiteenuse pakkujale on kõik sinu sõnumid salvestatud koduserveris. Sa võid valida sellise koduserveri, nagu sulle meeldib ja nad kõik suudavad teiste koduserveritega suhelda. Lisateavet leiad veebisaidist https://matrix.org.", + "@homeserverDescription": {}, + "doesNotSeemToBeAValidHomeserver": "Ei tundu olema ühilduv koduserver. Kas võrguaadress on ikka õige?", + "@doesNotSeemToBeAValidHomeserver": {}, + "prepareSendingAttachment": "Valmistume manuse saatmiseks...", + "@prepareSendingAttachment": {}, + "generatingVideoThumbnail": "Loome video pisipilti...", + "@generatingVideoThumbnail": {}, + "compressVideo": "Pakime videot väiksemaks...", + "@compressVideo": {}, + "sendingAttachmentCountOfCount": "Saadame manust: {index} pikkusega {length}...", + "@sendingAttachmentCountOfCount": { + "type": "integer", + "placeholders": { + "index": { + "type": "int" + }, + "length": { + "type": "int" + } + } + }, + "serverLimitReached": "Serveri poolt lubatud ülempiir on käes. Ootame {seconds} sekundit...", + "@serverLimitReached": { + "type": "integer", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "sendingAttachment": "Saadame manust...", + "@sendingAttachment": {}, + "calculatingFileSize": "Arvutame faili suurust...", + "@calculatingFileSize": {}, + "oneOfYourDevicesIsNotVerified": "Üks sinu seadmetest pole verifitseeritud", + "@oneOfYourDevicesIsNotVerified": {}, + "noticeChatBackupDeviceVerification": "Märkus: kui liidad kõik oma seadmed vestluste varundamisega, siis on nad sellega ka automaatselt verifitseeritud.", + "@noticeChatBackupDeviceVerification": {}, + "continueText": "Jätka", + "@continueText": {}, + "welcomeText": "Tere, tere 👋 See on FluffyChat. Sa võid sisse logida igasse koduserverisse, mis ühildub https://matrix.org serveriga. Ja seejärel saad suhelda kõigiga. Tegemist on ikka väga suure detsentraliseeritud sõnumivõrguga!", + "@welcomeText": {}, + "setWallpaper": "Määra taustapildiks", + "@setWallpaper": {}, + "manageAccount": "Halda kasutajakontot", + "@manageAccount": {}, + "blur": "Hägusus:", + "@blur": {}, + "opacity": "Läbipaistmatus:", + "@opacity": {}, + "contactServerSecurity": "Võta ühendust serveri andmeturbe eest vastutajaga", + "@contactServerSecurity": {}, + "supportPage": "Kasutajatugi", + "@supportPage": {}, + "serverInformation": "Serveri teave:", + "@serverInformation": {}, + "name": "Nimi", + "@name": {}, + "version": "Versioon", + "@version": {}, + "noContactInformationProvided": "Server ei jaga asjakohast kontaktteavet", + "@noContactInformationProvided": {}, + "contactServerAdmin": "Võta ühendust serveri haldajaga", + "@contactServerAdmin": {}, + "website": "Veebisait", + "@website": {}, + "aboutHomeserver": "Koduserveri teave: {homeserver}", + "@aboutHomeserver": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "pleaseFillOut": "Palun täida", + "@pleaseFillOut": {}, + "invalidUrl": "Vigane võrguaadress", + "@invalidUrl": {}, + "addLink": "Lisa link", + "@addLink": {}, + "strikeThrough": "Läbikriipsutatud kiri", + "@strikeThrough": {}, + "boldText": "Paks kiri", + "@boldText": {}, + "italicText": "Kaldkiri", + "@italicText": {}, + "unableToJoinChat": "Vestlusega liitumine ei õnnestu. Võib-olla on teine osapool juba vestluse sulgenud.", + "@unableToJoinChat": {}, + "sendImages": "Saada {count} pilti", + "@sendImages": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "compress": "Paki kokku", + "@compress": {}, + "previous": "Eelmine", + "@previous": {}, + "otherPartyNotLoggedIn": "Vestluse teine osapool pole hetkel võrku loginud ega seega saa neid sõnumeid kohe kätte!", + "@otherPartyNotLoggedIn": {}, + "open": "Ava", + "@open": {}, + "appWantsToUseForLoginDescription": "Järgnevaga lubad sa, et rakendus ja veebisait jagavad teavet sinu kohta.", + "@appWantsToUseForLoginDescription": {}, + "appWantsToUseForLogin": "Sisselogimiseks kasuta serverit '{server}'", + "@appWantsToUseForLogin": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "waitingForServer": "Ootame serveri vastust...", + "@waitingForServer": {}, + "appIntroduction": "FluffyChat võimaldab sul suhelda sõprade ja tuttavatega, kes kasutavad erinevaid sõnumikliente. Lisateavet leiad https://matrix.org saidist või lihtsalt klõpsi „Jätka“.", + "@appIntroduction": {}, + "synchronizingPleaseWaitCounter": " Sünkroniseerime… ({percentage}%)", + "@synchronizingPleaseWaitCounter": { + "type": "String", + "placeholders": { + "percentage": { + "type": "String" + } + } + }, + "newChatRequest": "📩 Uus vestluskutse", + "@newChatRequest": {}, + "notificationRuleCallDescription": "Teavita kasutajat saabuvast video- või häälkõnest.", + "@notificationRuleCallDescription": {}, + "notificationRuleEncryptedRoomOneToOneDescription": "Teavita kasutajat kahepoolse krüptitud vestluse sõnumitest.", + "@notificationRuleEncryptedRoomOneToOneDescription": {}, + "notificationRuleMasterDescription": "Ära järgi muid reegleid ja lülita kõik teavitused välja.", + "@notificationRuleMasterDescription": {}, + "notificationRuleSuppressNoticesDescription": "Ära teavita sõnumite puhul, mis on genereeritud masinate, nt jututubade robotite poolt.", + "@notificationRuleSuppressNoticesDescription": {}, + "notificationRuleSuppressEdits": "Peida muutmised", + "@notificationRuleSuppressEdits": {}, + "notificationRuleInviteForMeDescription": "Teavita kasutajat jututoa kutse saamisel.", + "@notificationRuleInviteForMeDescription": {}, + "notificationRuleIsUserMentionDescription": "Teavita kasutajat, kui ta on sõnumis otseselt mainitud.", + "@notificationRuleIsUserMentionDescription": {}, + "notificationRuleContainsDisplayNameDescription": "Teavita kasutajat, kui sõnumis leidub ta kuvatav nimi.", + "@notificationRuleContainsDisplayNameDescription": {}, + "notificationRuleJitsi": "Jitsi videokõned", + "@notificationRuleJitsi": {}, + "notificationRuleRoomnotif": "Jututoa üldteavitus", + "@notificationRuleRoomnotif": {}, + "notificationRuleRoomnotifDescription": "Teavita kasutajat, kui jututuba on sõnumis otseselt mainitud viisil „@toanimi“.", + "@notificationRuleRoomnotifDescription": {}, + "generalNotificationSettings": "Üldised teavituste seadistused", + "@generalNotificationSettings": {}, + "roomNotificationSettings": "Jututoa teavituste seadistused", + "@roomNotificationSettings": {}, + "userSpecificNotificationSettings": "Kasutajakohaste teavituste seadistused", + "@userSpecificNotificationSettings": {}, + "notificationRuleContainsUserName": "Kasutajanime olemasolul", + "@notificationRuleContainsUserName": {}, + "notificationRuleSuppressNotices": "Ära teavita automaatsete sõnumite korral", + "@notificationRuleSuppressNotices": {}, + "notificationRuleMemberEventDescription": "Ära teavita sõnumite puhul, mis seotud jututubade liikmelisusega.", + "@notificationRuleMemberEventDescription": {}, + "notificationRuleIsUserMention": "Kasutaja mainimised", + "@notificationRuleIsUserMention": {}, + "notificationRuleContainsDisplayName": "Kuvatava nime sisaldumisel", + "@notificationRuleContainsDisplayName": {}, + "notificationRuleIsRoomMention": "Jututoa mainimine", + "@notificationRuleIsRoomMention": {}, + "notificationRuleIsRoomMentionDescription": "Teavita kasutajat, kui jututuba on sõnumis otseselt mainitud.", + "@notificationRuleIsRoomMentionDescription": {}, + "notificationRuleTombstone": "Jututoa tegevuse lõpetamine", + "@notificationRuleTombstone": {}, + "notificationRuleTombstoneDescription": "Teavita kasutajat jututoa väljalülitamisega seotud sõnumite korral.", + "@notificationRuleTombstoneDescription": {}, + "notificationRuleReaction": "Reageerimised", + "@notificationRuleReaction": {}, + "notificationRuleRoomServerAcl": "Jututoa ligipääsuõigused serveris", + "@notificationRuleRoomServerAcl": {}, + "notificationRuleSuppressEditsDescription": "Peida teavitused sõnumite muutmise kohta.", + "@notificationRuleSuppressEditsDescription": {}, + "notificationRuleCall": "Kõned", + "@notificationRuleCall": {}, + "notificationRuleEncryptedRoomOneToOne": "Kahepoolne vestlus krüptitud jututoas", + "@notificationRuleEncryptedRoomOneToOne": {}, + "notificationRuleRoomOneToOne": "Kahepoolne vestlus krüptimata jututoas", + "@notificationRuleRoomOneToOne": {}, + "notificationRuleMessageDescription": "Teavita kasutajat üldistest sõnumitest.", + "@notificationRuleMessageDescription": {}, + "notificationRuleEncrypted": "Krüptitud sõnumid", + "@notificationRuleEncrypted": {}, + "notificationRuleEncryptedDescription": "Teavita kasutajat sõnumitest krüptitud jututubades.", + "@notificationRuleEncryptedDescription": {}, + "notificationRuleJitsiDescription": "Teavita kasutajat sündmustest Jitsi vidinas.", + "@notificationRuleJitsiDescription": {}, + "notificationRuleMessage": "Üldised sõnumid", + "@notificationRuleMessage": {}, + "notificationRuleServerAclDescription": "Peida teavitused ligipääsuõiguste muutuste korral serveris.", + "@notificationRuleServerAclDescription": {}, + "unknownPushRule": "Tõuketeavituse tundmatu reegel '{rule}'", + "@unknownPushRule": { + "type": "String", + "placeholders": { + "rule": { + "type": "String" + } + } + }, + "more": "Lisateave", + "@more": {}, + "notificationRuleInviteForMe": "Kutsed mulle", + "@notificationRuleInviteForMe": {}, + "notificationRuleContainsUserNameDescription": "Teavita kasutajat, kui sõnumis on tema kasutajanimi.", + "@notificationRuleContainsUserNameDescription": {}, + "contentNotificationSettings": "Sisuteavituste seadistused", + "@contentNotificationSettings": {}, + "notificationRuleRoomServerAclDescription": "Peida teavitused jututoa ligipääsuõiguste muutuste korral serveris.", + "@notificationRuleRoomServerAclDescription": {}, + "notificationRuleRoomOneToOneDescription": "Teavita kasutajat kahepoolse krüptimata vestluse sõnumitest.", + "@notificationRuleRoomOneToOneDescription": {}, + "notificationRuleServerAcl": "Ligipääsuõigused serveris", + "@notificationRuleServerAcl": {}, + "notificationRuleMemberEvent": "Jututoa liikmelisusega seotud sündmus", + "@notificationRuleMemberEvent": {}, + "notificationRuleMaster": "Summuta kõik teavitused", + "@notificationRuleMaster": {}, + "notificationRuleReactionDescription": "Teavita kasutajat sõnumitele reageerimise korral.", + "@notificationRuleReactionDescription": {}, + "otherNotificationSettings": "Muud teavituste seadistused", + "@otherNotificationSettings": {}, + "deletePushRuleCanNotBeUndone": "Kui sa kustutad selle teavituse seadistuse, siis seda tegevust tagasi võtta ei saa.", + "@deletePushRuleCanNotBeUndone": {}, + "shareKeysWith": "Jaga võtmeid seadmega...", + "@shareKeysWith": {}, + "shareKeysWithDescription": "Missuguseid seadmeid sa usaldad, et neist võiks lugeda krüptitud vestluste sõnumeid?", + "@shareKeysWithDescription": {}, + "allDevices": "Kõiki seadmeid", + "@allDevices": {}, + "crossVerifiedDevicesIfEnabled": "Risttunnustatud seadmeid, kui see võimalus on kasutusel", + "@crossVerifiedDevicesIfEnabled": {}, + "crossVerifiedDevices": "Risttunnustatud seadmeid", + "@crossVerifiedDevices": {}, + "verifiedDevicesOnly": "Vaid verifitseeritud seadmeid", + "@verifiedDevicesOnly": {}, + "recordAVideo": "Salvesta video", + "@recordAVideo": {}, + "takeAPhoto": "Pildista", + "@takeAPhoto": {}, + "optionalMessage": "Sõnum (kui soovid lisada)...", + "@optionalMessage": {}, + "notSupportedOnThisDevice": "See pole antud seadmes toetatud", + "@notSupportedOnThisDevice": {}, + "enterNewChat": "Liitu uue vestlusega", + "@enterNewChat": {}, + "commandHint_roomupgrade": "Uuenda see jututuba antud jututoa versioonini", + "@commandHint_roomupgrade": {}, + "setCustomPermissionLevel": "Seadista kohandatud õiguste tase", + "@setCustomPermissionLevel": {}, + "setPermissionsLevelDescription": "Palun vali eelvalitud rollide seast või lisa õiguste tase vahemikus 0 kuni 100.", + "@setPermissionsLevelDescription": {}, + "ignoreUser": "Eira kasutajat", + "@ignoreUser": {}, + "normalUser": "Tavakasutaja", + "@normalUser": {}, + "approve": "Kiida heaks", + "@approve": {}, + "pleaseWaitUntilInvited": "Palun oota seni, kuni keegi jututoast saadab sulle kutse.", + "@pleaseWaitUntilInvited": {}, + "youHaveKnocked": "Sa oled koputanud", + "@youHaveKnocked": {}, + "countInvited": "{count} kutsutut", + "@countInvited": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "sentVoiceMessage": "🎙️ {duration} - Häälsõnum kasutajalt {sender}", + "@sentVoiceMessage": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "duration": { + "type": "String" + } + } + }, + "checkList": "Kontrollnimekiri", + "@checkList": {}, + "commandHint_logoutall": "Logi kõikidest aktiivsetest seadmetest välja", + "@commandHint_logoutall": {}, + "commandHint_logout": "Logi oma praegusest seadmest välja", + "@commandHint_logout": {}, + "displayNavigationRail": "Näita mobiilis külgmist tööriistariba", + "@displayNavigationRail": {}, + "customReaction": "Kohandatud reaktsioon", + "@customReaction": {}, + "moreEvents": "Veel sündmusi", + "@moreEvents": {}, + "declineInvitation": "Keeldu kutsest", + "@declineInvitation": {}, + "noMessagesYet": "Pole veel ühtegi sõnumit", + "@noMessagesYet": {}, + "longPressToRecordVoiceMessage": "Pika vajutusega saad salvestada häälsõnumi.", + "@longPressToRecordVoiceMessage": {}, + "pause": "Peata", + "@pause": {}, + "resume": "Jätka", + "@resume": {}, + "newSubSpace": "Uus alamkogukond", + "@newSubSpace": {}, + "moveToDifferentSpace": "Tõsta teise kogukonda", + "@moveToDifferentSpace": {}, + "moveUp": "Liiguta ülespoole", + "@moveUp": {}, + "moveDown": "Liiguta allapoole", + "@moveDown": {}, + "removeFromSpaceDescription": "See vestlus eemaldatakse nüüd kogukonnast, kuid on jätkuvalt nähtav sinu vestluste loendis.", + "@removeFromSpaceDescription": {}, + "countChats": "{chats} vestlust", + "@countChats": { + "type": "String", + "placeholders": { + "chats": { + "type": "int" + } + } + }, + "spaceMemberOf": "Kogukonna liige: {spaces}", + "@spaceMemberOf": { + "type": "String", + "placeholders": { + "spaces": { + "type": "String" + } + } + }, + "spaceMemberOfCanKnock": "{spaces} kogukonna liige võib uksele koputada", + "@spaceMemberOfCanKnock": { + "type": "String", + "placeholders": { + "spaces": { + "type": "String" + } + } + }, + "donate": "Toeta meid rahaliselt", + "@donate": {}, + "startedAPoll": "{username} koostas küsitluse.", + "@startedAPoll": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "poll": "Küsitlus", + "@poll": {}, + "startPoll": "Koosta küsitlus", + "@startPoll": {}, + "endPoll": "Lõpeta küsitlus", + "@endPoll": {}, + "answersVisible": "Vastused on näha", + "@answersVisible": {}, + "answersHidden": "Vastused on peidetud", + "@answersHidden": {}, + "pollQuestion": "Küsitluse küsimus", + "@pollQuestion": {}, + "answerOption": "Valikvastus", + "@answerOption": {}, + "addAnswerOption": "Lisa valikvastus", + "@addAnswerOption": {}, + "allowMultipleAnswers": "Luba mitu vastusevalikut", + "@allowMultipleAnswers": {}, + "pollHasBeenEnded": "Küsitlus on lõppenud", + "@pollHasBeenEnded": {}, + "countVotes": "{count, plural, =1{Üks hääl} other{{count} häält}}", + "@countVotes": { + "type": "int", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "answersWillBeVisibleWhenPollHasEnded": "Vastused on näha küsitluse lõppedes", + "@answersWillBeVisibleWhenPollHasEnded": {}, + "replyInThread": "Vasta jutulõngas", + "@replyInThread": {}, + "countReplies": "{count, plural, =1{Üks vastus} other{{count} vastust}}", + "@countReplies": { + "type": "int", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "thread": "Jutulõng", + "@thread": {}, + "backToMainChat": "Tagasi põhivestlusesse", + "@backToMainChat": {} +} diff --git a/lib/l10n/intl_eu.arb b/lib/l10n/intl_eu.arb new file mode 100644 index 0000000..c65dda1 --- /dev/null +++ b/lib/l10n/intl_eu.arb @@ -0,0 +1,3491 @@ +{ + "@@locale": "eu", + "@@last_modified": "2021-08-14 12:41:10.062383", + "about": "Honi buruz", + "@about": { + "type": "String", + "placeholders": {} + }, + "accept": "Onartu", + "@accept": { + "type": "String", + "placeholders": {} + }, + "acceptedTheInvitation": "👍 {username}(e)k gonbidapena onartu du", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "account": "Kontua", + "@account": { + "type": "String", + "placeholders": {} + }, + "activatedEndToEndEncryption": "🔐 {username}(e)k ertzetik ertzerako zifratzea gaitu du", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "admin": "Administratzailea", + "@admin": { + "type": "String", + "placeholders": {} + }, + "alias": "ezizena", + "@alias": { + "type": "String", + "placeholders": {} + }, + "answeredTheCall": "{senderName}(e)k deia erantzun du", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "anyoneCanJoin": "Edonor batu daiteke", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "archive": "Fitxategia", + "@archive": { + "type": "String", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "Batu daitezke bisitan dauden erabiltzaileak?", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "Ziur zaude?", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "askSSSSSign": "Beste pertsona egiaztatzeko, sartu zure biltegiratze segururako pasaesaldia edo berreskuratze-gakoa.", + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "askVerificationRequest": "{username}(r)en egiaztaketa-eskaera onartu?", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "banFromChat": "Txatera batzeko debekua ezarri", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "banned": "Kanporatuta", + "@banned": { + "type": "String", + "placeholders": {} + }, + "bannedUser": "{username}(e)k {targetName}(r)i debekua ezarri dio", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "blockDevice": "Blokeatu gailua", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "cancel": "Utzi", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "changedTheChatAvatar": "{username}(e)k txataren abatarra aldatu du", + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheChatDescriptionTo": "{username}(e)k txataren deskribapena aldatu du: '{description}'", + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "changedTheChatNameTo": "{username}(e)k txataren izena '{chatname}'(e)ra aldatu du", + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "changedTheChatPermissions": "{username}(e)k txataren baimenak aldatu ditu", + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheDisplaynameTo": "{username}(e)k bere ezizena aldatu du. Aurrerantzean '{displayname}' izango da", + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "changedTheGuestAccessRules": "{username}(e)k bisitarien sarbide-arauak aldatu ditu", + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheGuestAccessRulesTo": "{username}(e)k bisitarien arauak aldatu ditu: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheHistoryVisibility": "{username}(e)k historiaren ikusgaitasuna aldatu du", + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheHistoryVisibilityTo": "{username}(e)k historiaren ikusgaitasuna {rules}-(e)ra aldatu du", + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheJoinRules": "{username}(e)k batzeko arauak aldatu ditu", + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheJoinRulesTo": "{username}(e)k batzeko arauak aldatu ditu: {joinRules}", + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "changedTheProfileAvatar": "{username}(e)k profileko abatarra aldatu du", + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomAliases": "{username}(e)k gelaren ezizena aldatu du", + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomInvitationLink": "{username}(e)k gonbidapen-esteka aldatu du", + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changeTheHomeserver": "Aldatu zerbitzaria", + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "changeTheme": "Aldatu itxura", + "@changeTheme": { + "type": "String", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "Taldearen izena aldatu", + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "channelCorruptedDecryptError": "Zifratzea hondatu egin da", + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "chat": "Txata", + "@chat": { + "type": "String", + "placeholders": {} + }, + "chatDetails": "Txataren xehetasunak", + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "chooseAStrongPassword": "Aukeratu pasahitz sendo bat", + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "close": "Itxi", + "@close": { + "type": "String", + "placeholders": {} + }, + "compareEmojiMatch": "Konparatu emojiak", + "@compareEmojiMatch": { + "type": "String", + "placeholders": {} + }, + "compareNumbersMatch": "Konparatu zenbakiak", + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "confirm": "Baieztatu", + "@confirm": { + "type": "String", + "placeholders": {} + }, + "connect": "Konektatu", + "@connect": { + "type": "String", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "Kontaktua taldera gonbidatu da", + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "copiedToClipboard": "Arbelera kopiatu da", + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "copy": "Kopiatu", + "@copy": { + "type": "String", + "placeholders": {} + }, + "couldNotDecryptMessage": "Ezin izan da mezua deszifratu: {error}", + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "countParticipants": "{count} partaide", + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "create": "Sortu", + "@create": { + "type": "String", + "placeholders": {} + }, + "createdTheChat": "💬 {username}(e)k txata sortu du", + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "currentlyActive": "Une honetan aktibo", + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "darkTheme": "Iluna", + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "dateWithoutYear": "{month}/{day}", + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "dateWithYear": "{year}/{month}/{day}", + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "delete": "Ezabatu", + "@delete": { + "type": "String", + "placeholders": {} + }, + "deleteMessage": "Mezuak ezabatu", + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "device": "Gailua", + "@device": { + "type": "String", + "placeholders": {} + }, + "devices": "Gailuak", + "@devices": { + "type": "String", + "placeholders": {} + }, + "displaynameHasBeenChanged": "Ezizena aldatu da", + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "downloadFile": "Deskargatu fitxategia", + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "editDisplayname": "Editatu ezizena", + "@editDisplayname": { + "type": "String", + "placeholders": {} + }, + "emoteExists": "Emotea badago lehendik ere!", + "@emoteExists": { + "type": "String", + "placeholders": {} + }, + "emoteInvalid": "Emotearen laburdura ez da baliozkoa!", + "@emoteInvalid": { + "type": "String", + "placeholders": {} + }, + "emoteSettings": "Emote-ezarpenak", + "@emoteSettings": { + "type": "String", + "placeholders": {} + }, + "emoteShortcode": "Laburdura", + "@emoteShortcode": { + "type": "String", + "placeholders": {} + }, + "emoteWarnNeedToPick": "Emote-laburdura eta irudi bat aukeratu behar dituzu!", + "@emoteWarnNeedToPick": { + "type": "String", + "placeholders": {} + }, + "emptyChat": "Txata hutsik dago", + "@emptyChat": { + "type": "String", + "placeholders": {} + }, + "enableEncryptionWarning": "Ezingo duzu zifratzea ezgaitu. Ziur zaude?", + "@enableEncryptionWarning": { + "type": "String", + "placeholders": {} + }, + "encryption": "Zifratzea", + "@encryption": { + "type": "String", + "placeholders": {} + }, + "encryptionNotEnabled": "Zifratzea ez dago gaituta", + "@encryptionNotEnabled": { + "type": "String", + "placeholders": {} + }, + "endedTheCall": "{senderName}(e)k deia amaitu du", + "@endedTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "enterYourHomeserver": "Sartu zure zerbitzaria", + "@enterYourHomeserver": { + "type": "String", + "placeholders": {} + }, + "fileName": "Fitxategiaren izena", + "@fileName": { + "type": "String", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "String", + "placeholders": {} + }, + "forward": "Birbidali", + "@forward": { + "type": "String", + "placeholders": {} + }, + "fromJoining": "Batzeaz geroztik", + "@fromJoining": { + "type": "String", + "placeholders": {} + }, + "fromTheInvitation": "Gonbidapenaz geroztik", + "@fromTheInvitation": { + "type": "String", + "placeholders": {} + }, + "group": "Taldea", + "@group": { + "type": "String", + "placeholders": {} + }, + "groupIsPublic": "Taldea publikoa da", + "@groupIsPublic": { + "type": "String", + "placeholders": {} + }, + "groupWith": "{displayname} duen taldea", + "@groupWith": { + "type": "String", + "placeholders": { + "displayname": { + "type": "String" + } + } + }, + "guestsAreForbidden": "Ez, bisitariak ez daude baimenduta", + "@guestsAreForbidden": { + "type": "String", + "placeholders": {} + }, + "guestsCanJoin": "Bai, bisitariak batu daitezke", + "@guestsCanJoin": { + "type": "String", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "{username}(e)k {targetName}(r)en gonbidapena atzera bota du", + "@hasWithdrawnTheInvitationFor": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "help": "Laguntza", + "@help": { + "type": "String", + "placeholders": {} + }, + "id": "IDa", + "@id": { + "type": "String", + "placeholders": {} + }, + "identity": "Identitatea", + "@identity": { + "type": "String", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "Pasaesaldi edo berreskuratze-gakoa ez da zuzena", + "@incorrectPassphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "inviteContact": "Kontaktuak gonbidatu", + "@inviteContact": { + "type": "String", + "placeholders": {} + }, + "inviteContactToGroup": "Gonbidatu kontaktua {groupName}(e)ra", + "@inviteContactToGroup": { + "type": "String", + "placeholders": { + "groupName": { + "type": "String" + } + } + }, + "invited": "Gonbidatuta", + "@invited": { + "type": "String", + "placeholders": {} + }, + "invitedUser": "📩 {username}(e)k {targetName} gonbidatu du", + "@invitedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "invitedUsersOnly": "Gonbidatutako erabiltzaileak solik", + "@invitedUsersOnly": { + "type": "String", + "placeholders": {} + }, + "inviteText": "{username}(e)k FluffyChatera gonbidatu zaitu.\n1. Bisitatu https://fluffychat.im eta instalatu aplikazioa\n2. Eman izena edo hasi saioa\n3. Ireki gonbidapen-esteka:\n{link}", + "@inviteText": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "link": { + "type": "String" + } + } + }, + "isTyping": "idazten ari da…", + "@isTyping": { + "type": "String", + "placeholders": {} + }, + "joinedTheChat": "👋 {username} txatera batu da", + "@joinedTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "joinRoom": "Batu gelara", + "@joinRoom": { + "type": "String", + "placeholders": {} + }, + "kicked": "👞 {username}(e)k {targetName} kanporatu du", + "@kicked": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickedAndBanned": "🙅 {username}(e)k {targetName} kanporatu eta debekua ezarri dio", + "@kickedAndBanned": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickFromChat": "Txatetik kanporatu", + "@kickFromChat": { + "type": "String", + "placeholders": {} + }, + "lastActiveAgo": "Azkenekoz aktibo: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "String", + "placeholders": { + "localizedTimeShort": { + "type": "String" + } + } + }, + "leave": "Irten", + "@leave": { + "type": "String", + "placeholders": {} + }, + "leftTheChat": "Txatetik irten da", + "@leftTheChat": { + "type": "String", + "placeholders": {} + }, + "license": "Lizentzia", + "@license": { + "type": "String", + "placeholders": {} + }, + "lightTheme": "Argia", + "@lightTheme": { + "type": "String", + "placeholders": {} + }, + "loadCountMoreParticipants": "Kargatu {count} partaide gehiago", + "@loadCountMoreParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "loadingPleaseWait": "Kargatzen… itxaron.", + "@loadingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "loadMore": "Kargatu gehiago…", + "@loadMore": { + "type": "String", + "placeholders": {} + }, + "login": "Hasi saioa", + "@login": { + "type": "String", + "placeholders": {} + }, + "logInTo": "Hasi saioa {homeserver}(e)n", + "@logInTo": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "logout": "Amaitu saioa", + "@logout": { + "type": "String", + "placeholders": {} + }, + "moderator": "Moderatzailea", + "@moderator": { + "type": "String", + "placeholders": {} + }, + "muteChat": "Mututu txata", + "@muteChat": { + "type": "String", + "placeholders": {} + }, + "needPantalaimonWarning": "Kontuan izan oraingoz Pantalaimon behar duzula ertzetik ertzerako zifratzerako.", + "@needPantalaimonWarning": { + "type": "String", + "placeholders": {} + }, + "newMessageInFluffyChat": "💬 Mezu berria FluffyChaten", + "@newMessageInFluffyChat": { + "type": "String", + "placeholders": {} + }, + "newVerificationRequest": "Egiaztaketa-eskaera berria!", + "@newVerificationRequest": { + "type": "String", + "placeholders": {} + }, + "no": "Ez", + "@no": { + "type": "String", + "placeholders": {} + }, + "noEmotesFound": "Ez da emoterik aurkitu. 😕", + "@noEmotesFound": { + "type": "String", + "placeholders": {} + }, + "noGoogleServicesWarning": "Ez dirudi Firebase Cloud Messaging zure mugikorrean erabilgarri dagoenik. Jakinarazpenak jasotzeko ntfy instalatzea gomendatzen dugu. ntfy edo beste Unified Push hornitzaileren batekin, push jakinarazpenak jaso ditzazkezu datuentzako segurua den modu batean. ntfy PlayStore edo F-Droid dendetatik deskarga dezakezu.", + "@noGoogleServicesWarning": { + "type": "String", + "placeholders": {} + }, + "none": "Bat ere ez", + "@none": { + "type": "String", + "placeholders": {} + }, + "noPermission": "Baimenik gabe", + "@noPermission": { + "type": "String", + "placeholders": {} + }, + "noRoomsFound": "Ez da gelarik aurkitu…", + "@noRoomsFound": { + "type": "String", + "placeholders": {} + }, + "ok": "Ados", + "@ok": { + "type": "String", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "Gakoen online babeskopia gaituta dago", + "@onlineKeyBackupEnabled": { + "type": "String", + "placeholders": {} + }, + "oopsSomethingWentWrong": "Hara, zerbaitek huts egin du…", + "@oopsSomethingWentWrong": { + "type": "String", + "placeholders": {} + }, + "openAppToReadMessages": "Ireki aplikazioa mezuak irakurtzeko", + "@openAppToReadMessages": { + "type": "String", + "placeholders": {} + }, + "openCamera": "Ireki kamera", + "@openCamera": { + "type": "String", + "placeholders": {} + }, + "passphraseOrKey": "pasaesaldia edo berreskuratze-gakoa", + "@passphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "password": "Pasahitza", + "@password": { + "type": "String", + "placeholders": {} + }, + "pickImage": "Aukeratu irudi bat", + "@pickImage": { + "type": "String", + "placeholders": {} + }, + "pin": "Finkatu", + "@pin": { + "type": "String", + "placeholders": {} + }, + "play": "Abiarazi {fileName}", + "@play": { + "type": "String", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "pleaseEnterYourPassword": "Sartu zure pasahitza", + "@pleaseEnterYourPassword": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourUsername": "Sartu zure erabiltzaile-izena", + "@pleaseEnterYourUsername": { + "type": "String", + "placeholders": {} + }, + "publicRooms": "Gela publikoak", + "@publicRooms": { + "type": "String", + "placeholders": {} + }, + "recording": "Grabatzen", + "@recording": { + "type": "String", + "placeholders": {} + }, + "redactedAnEvent": "{username}(e)k gertaera bat atzera bota du", + "@redactedAnEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "reject": "Baztertu", + "@reject": { + "type": "String", + "placeholders": {} + }, + "rejectedTheInvitation": "{username}(e)k gonbidapena baztertu du", + "@rejectedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "rejoin": "Batu berriro", + "@rejoin": { + "type": "String", + "placeholders": {} + }, + "remove": "Kendu", + "@remove": { + "type": "String", + "placeholders": {} + }, + "removeAllOtherDevices": "Kendu gainerako gailu guztiak", + "@removeAllOtherDevices": { + "type": "String", + "placeholders": {} + }, + "removedBy": "{username}(e)k kendu du", + "@removedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "removeDevice": "Kendu gailua", + "@removeDevice": { + "type": "String", + "placeholders": {} + }, + "unbanFromChat": "Kendu txatean duen debekua", + "@unbanFromChat": { + "type": "String", + "placeholders": {} + }, + "reply": "Erantzun", + "@reply": { + "type": "String", + "placeholders": {} + }, + "requestPermission": "Eskatu baimena", + "@requestPermission": { + "type": "String", + "placeholders": {} + }, + "roomHasBeenUpgraded": "Gela bertsio-berritu da", + "@roomHasBeenUpgraded": { + "type": "String", + "placeholders": {} + }, + "seenByUser": "{username}(e)k ikusi du", + "@seenByUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "send": "Bidali", + "@send": { + "type": "String", + "placeholders": {} + }, + "sendAMessage": "Bidali mezua", + "@sendAMessage": { + "type": "String", + "placeholders": {} + }, + "sendAudio": "Bidali audioa", + "@sendAudio": { + "type": "String", + "placeholders": {} + }, + "sendFile": "Bidali fitxategia", + "@sendFile": { + "type": "String", + "placeholders": {} + }, + "sendImage": "Bidali irudia", + "@sendImage": { + "type": "String", + "placeholders": {} + }, + "sendOriginal": "Bidali jatorrizkoa", + "@sendOriginal": { + "type": "String", + "placeholders": {} + }, + "sendVideo": "Bidali bideoa", + "@sendVideo": { + "type": "String", + "placeholders": {} + }, + "sentAFile": "📁 {username}(e)k fitxategia bidali du", + "@sentAFile": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAnAudio": "🎤 {username}(e)k audioa bidali du", + "@sentAnAudio": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAPicture": "🖼️ {username}(e)k irudia bidali du", + "@sentAPicture": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentASticker": "😊 {username}(e)k pegatina bidali du", + "@sentASticker": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAVideo": "🎥 {username}(e)k bideoa bidali du", + "@sentAVideo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentCallInformations": "{senderName}(e)k deiaren informazioa bidali du", + "@sentCallInformations": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "setInvitationLink": "Gonbidapen-esteka ezarri", + "@setInvitationLink": { + "type": "String", + "placeholders": {} + }, + "setStatus": "Ezarri egoera", + "@setStatus": { + "type": "String", + "placeholders": {} + }, + "settings": "Ezarpenak", + "@settings": { + "type": "String", + "placeholders": {} + }, + "share": "Partekatu", + "@share": { + "type": "String", + "placeholders": {} + }, + "sharedTheLocation": "{username}(e)k kokapena partekatu du", + "@sharedTheLocation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "skip": "Saltatu", + "@skip": { + "type": "String", + "placeholders": {} + }, + "sourceCode": "Iturburu kodea", + "@sourceCode": { + "type": "String", + "placeholders": {} + }, + "startedACall": "{senderName}(e)k deia hasi du", + "@startedACall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "statusExampleMessage": "Zer moduz zaude gaur?", + "@statusExampleMessage": { + "type": "String", + "placeholders": {} + }, + "submit": "Bidali", + "@submit": { + "type": "String", + "placeholders": {} + }, + "systemTheme": "Sistemak darabilena", + "@systemTheme": { + "type": "String", + "placeholders": {} + }, + "theyDontMatch": "Ez datoz bat", + "@theyDontMatch": { + "type": "String", + "placeholders": {} + }, + "theyMatch": "Bat datoz", + "@theyMatch": { + "type": "String", + "placeholders": {} + }, + "title": "FluffyChat", + "@title": { + "description": "Title for the application", + "type": "String", + "placeholders": {} + }, + "tryToSendAgain": "Saiatu berriro bidaltzen", + "@tryToSendAgain": { + "type": "String", + "placeholders": {} + }, + "unbannedUser": "{username}(e)k {targetName}(r)i debekua kendu dio", + "@unbannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "unblockDevice": "Desblokeatu gailua", + "@unblockDevice": { + "type": "String", + "placeholders": {} + }, + "unknownDevice": "Gailu ezezaguna", + "@unknownDevice": { + "type": "String", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "Zifratze-algoritmo ezezaguna", + "@unknownEncryptionAlgorithm": { + "type": "String", + "placeholders": {} + }, + "unknownEvent": "'{type}' gertaera ezezaguna", + "@unknownEvent": { + "type": "String", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "unmuteChat": "Utzi txata mututzeari", + "@unmuteChat": { + "type": "String", + "placeholders": {} + }, + "unpin": "Utzi finkatzeari", + "@unpin": { + "type": "String", + "placeholders": {} + }, + "userAndOthersAreTyping": "{username} eta beste {count} idazten ari dira…", + "@userAndOthersAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "userAndUserAreTyping": "{username} eta {username2} idazten ari dira…", + "@userAndUserAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "username2": { + "type": "String" + } + } + }, + "userIsTyping": "{username} idazten ari da…", + "@userIsTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "userLeftTheChat": "🚪 {username}(e)k txata utzi du", + "@userLeftTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "username": "Erabiltzaile-izena", + "@username": { + "type": "String", + "placeholders": {} + }, + "userSentUnknownEvent": "{username}(e)k {type} gertaera bat bidali du", + "@userSentUnknownEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "type": { + "type": "String" + } + } + }, + "verify": "Egiaztatu", + "@verify": { + "type": "String", + "placeholders": {} + }, + "verifyStart": "Abiarazi egiaztaketa", + "@verifyStart": { + "type": "String", + "placeholders": {} + }, + "verifySuccess": "Ondo egiaztatu duzu!", + "@verifySuccess": { + "type": "String", + "placeholders": {} + }, + "verifyTitle": "Beste kontua egiaztatzen", + "@verifyTitle": { + "type": "String", + "placeholders": {} + }, + "videoCall": "Bideo-deia", + "@videoCall": { + "type": "String", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "Txat-historiaren ikusgaitasuna", + "@visibilityOfTheChatHistory": { + "type": "String", + "placeholders": {} + }, + "visibleForAllParticipants": "Partaide guztientzat ikusgai", + "@visibleForAllParticipants": { + "type": "String", + "placeholders": {} + }, + "visibleForEveryone": "Edonorentzat ikusgai", + "@visibleForEveryone": { + "type": "String", + "placeholders": {} + }, + "voiceMessage": "Ahozko mezua", + "@voiceMessage": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "Kideak eskaera onartuko zain…", + "@waitingPartnerAcceptRequest": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerEmoji": "Kideak emojia onartuko zain…", + "@waitingPartnerEmoji": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerNumbers": "Kideak zenbakiak onartuko zain…", + "@waitingPartnerNumbers": { + "type": "String", + "placeholders": {} + }, + "wallpaper": "Horma-irudia:", + "@wallpaper": { + "type": "String", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "Nor batu daiteke talde honetara?", + "@whoIsAllowedToJoinThisGroup": { + "type": "String", + "placeholders": {} + }, + "writeAMessage": "Idatzi mezua…", + "@writeAMessage": { + "type": "String", + "placeholders": {} + }, + "yes": "Bai", + "@yes": { + "type": "String", + "placeholders": {} + }, + "you": "Zeu", + "@you": { + "type": "String", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "Ez duzu txat honetan parte hartzen honezkero", + "@youAreNoLongerParticipatingInThisChat": { + "type": "String", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "Txat honetan debekua ezarri dizute", + "@youHaveBeenBannedFromThisChat": { + "type": "String", + "placeholders": {} + }, + "editRoomAliases": "Editatu gelaren aliasak", + "@editRoomAliases": { + "type": "String", + "placeholders": {} + }, + "chats": "Txatak", + "@chats": { + "type": "String", + "placeholders": {} + }, + "emojis": "Emojiak", + "@emojis": {}, + "placeCall": "Egin deia", + "@placeCall": {}, + "voiceCall": "Ahozko deia", + "@voiceCall": {}, + "unsupportedAndroidVersion": "Android bertsioa ez da bateragarria", + "@unsupportedAndroidVersion": {}, + "unsupportedAndroidVersionLong": "Funtzio honek Android bertsio berriago bat behar du. Egiaztatu eguneraketak ote dauden edo begiratu Lineage OS-ek zure gailuarentzat aukerarik eskaintzen duen.", + "@unsupportedAndroidVersionLong": {}, + "commandHint_ban": "Debekatu erabiltzailea gela honetan", + "@commandHint_ban": { + "type": "String", + "description": "Usage hint for the command /ban" + }, + "commandHint_clearcache": "Ezabatu katxea", + "@commandHint_clearcache": { + "type": "String", + "description": "Usage hint for the command /clearcache" + }, + "commandHint_create": "Sortu taldeko-txat huts bat\nErabili --no-encyption zifratzea desgaitzeko", + "@commandHint_create": { + "type": "String", + "description": "Usage hint for the command /create" + }, + "commandHint_op": "Zehaztu erabiltzaile honen botere-maila (defektuz: 50)", + "@commandHint_op": { + "type": "String", + "description": "Usage hint for the command /op" + }, + "commandHint_plain": "Bidali formaturik gabeko testua", + "@commandHint_plain": { + "type": "String", + "description": "Usage hint for the command /plain" + }, + "commandHint_react": "Bidali erantzuna erreakzio gisa", + "@commandHint_react": { + "type": "String", + "description": "Usage hint for the command /react" + }, + "commandHint_send": "Bidali testua", + "@commandHint_send": { + "type": "String", + "description": "Usage hint for the command /send" + }, + "createNewSpace": "Gune berria", + "@createNewSpace": { + "type": "String", + "placeholders": {} + }, + "editBlockedServers": "Editatu blokeatutako zerbitzariak", + "@editBlockedServers": { + "type": "String", + "placeholders": {} + }, + "editRoomAvatar": "Gelaren abatarra editatu", + "@editRoomAvatar": { + "type": "String", + "placeholders": {} + }, + "encrypted": "Zifratuta", + "@encrypted": { + "type": "String", + "placeholders": {} + }, + "enterAnEmailAddress": "Sartu helbide elektroniko bat", + "@enterAnEmailAddress": { + "type": "String", + "placeholders": {} + }, + "homeserver": "Zerbitzaria", + "@homeserver": {}, + "errorObtainingLocation": "Errorea kokapena lortzerakoan: {error}", + "@errorObtainingLocation": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "everythingReady": "Dena prest!", + "@everythingReady": { + "type": "String", + "placeholders": {} + }, + "extremeOffensive": "Izugarri iraingarria", + "@extremeOffensive": { + "type": "String", + "placeholders": {} + }, + "goToTheNewRoom": "Joan gela berrira", + "@goToTheNewRoom": { + "type": "String", + "placeholders": {} + }, + "groups": "Taldeak", + "@groups": { + "type": "String", + "placeholders": {} + }, + "hideRedactedEvents": "Ezkutatu atzera botatako gertaerak", + "@hideRedactedEvents": { + "type": "String", + "placeholders": {} + }, + "hideUnknownEvents": "Ezkutatu gertaera ezezagunak", + "@hideUnknownEvents": { + "type": "String", + "placeholders": {} + }, + "inviteForMe": "Niretzako gonbidapenak", + "@inviteForMe": { + "type": "String", + "placeholders": {} + }, + "notificationsEnabledForThisAccount": "Gaitu kontu honentzako jakinarazpenak", + "@notificationsEnabledForThisAccount": { + "type": "String", + "placeholders": {} + }, + "numUsersTyping": "{count} erabiltzaile idazten ari dira…", + "@numUsersTyping": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notifications": "Jakinarazpenak", + "@notifications": { + "type": "String", + "placeholders": {} + }, + "oneClientLoggedOut": "Zure gailuetako batek saioa amaitu du", + "@oneClientLoggedOut": {}, + "addAccount": "Gehitu kontua", + "@addAccount": {}, + "editBundlesForAccount": "Editatu kontu honetarako sortak", + "@editBundlesForAccount": {}, + "oopsPushError": "Hara! Zoritxarrez, errore bat gertatu da push jakinarazpenak ezartzerakoan.", + "@oopsPushError": { + "type": "String", + "placeholders": {} + }, + "pleaseChoose": "Aukeratu", + "@pleaseChoose": { + "type": "String", + "placeholders": {} + }, + "saveFile": "Gorde fitxategia", + "@saveFile": { + "type": "String", + "placeholders": {} + }, + "singlesignon": "Single Sign on", + "@singlesignon": { + "type": "String", + "placeholders": {} + }, + "unreadChats": "{unreadCount, plural, =1{irakurri gabeko txat 1} other {irakurri gabeko {unreadCount} txat}}", + "@unreadChats": { + "type": "String", + "placeholders": { + "unreadCount": { + "type": "int" + } + } + }, + "videoCallsBetaWarning": "Kontuan izan bideo-deiak beta fasean daudela. Litekeena da behar bezala erabili ezin izatea —erabili ahal badira—.", + "@videoCallsBetaWarning": {}, + "toggleMuted": "Ikusi / Ezkutatu mutututakoak", + "@toggleMuted": { + "type": "String", + "placeholders": {} + }, + "all": "Guztia", + "@all": { + "type": "String", + "placeholders": {} + }, + "next": "Hurrengoa", + "@next": { + "type": "String", + "placeholders": {} + }, + "experimentalVideoCalls": "Bideo-dei esperimentalak", + "@experimentalVideoCalls": {}, + "emailOrUsername": "ePosta edo erabiltzaile-izena", + "@emailOrUsername": {}, + "enableMultiAccounts": "(BETA) Gaitu kontu bat baino gehiago gailu honetan", + "@enableMultiAccounts": {}, + "openVideoCamera": "Ireki kamera bideorako", + "@openVideoCamera": { + "type": "String", + "placeholders": {} + }, + "removeFromBundle": "Kendu sorta honetatik", + "@removeFromBundle": {}, + "serverRequiresEmail": "Zerbitzari honek zure posta elektronikoa egiaztatu behar du izena eman dezazun.", + "@serverRequiresEmail": {}, + "or": "Edo", + "@or": { + "type": "String", + "placeholders": {} + }, + "link": "Esteka", + "@link": {}, + "privacy": "Pribatutasuna", + "@privacy": { + "type": "String", + "placeholders": {} + }, + "redactMessage": "Bota mezua atzera", + "@redactMessage": { + "type": "String", + "placeholders": {} + }, + "register": "Eman izena", + "@register": { + "type": "String", + "placeholders": {} + }, + "pleaseFollowInstructionsOnWeb": "Jarraitu webguneko argibideak eta sakatu 'Hurrengoa'.", + "@pleaseFollowInstructionsOnWeb": { + "type": "String", + "placeholders": {} + }, + "reason": "Arrazoia", + "@reason": { + "type": "String", + "placeholders": {} + }, + "reportMessage": "Salatu mezua", + "@reportMessage": { + "type": "String", + "placeholders": {} + }, + "status": "Egoera", + "@status": { + "type": "String", + "placeholders": {} + }, + "yourPublicKey": "Zure gako publikoa", + "@yourPublicKey": { + "type": "String", + "placeholders": {} + }, + "messageType": "Mezu mota", + "@messageType": {}, + "time": "Ordua", + "@time": {}, + "dismiss": "Baztertu", + "@dismiss": {}, + "switchToAccount": "Aldatu {number} kontura", + "@switchToAccount": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "previousAccount": "Aurreko kontua", + "@previousAccount": {}, + "edit": "Editatu", + "@edit": { + "type": "String", + "placeholders": {} + }, + "mention": "Aipatu", + "@mention": { + "type": "String", + "placeholders": {} + }, + "repeatPassword": "Idatzi berriro pasahitza", + "@repeatPassword": {}, + "addEmail": "Gehitu ePosta", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "areYouSureYouWantToLogout": "Ziur zaude saioa amaitu nahi duzula?", + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "copyToClipboard": "Kopiatu arbelera", + "@copyToClipboard": { + "type": "String", + "placeholders": {} + }, + "ignoredUsers": "Ez ikusia egindako erabiltzaileak", + "@ignoredUsers": { + "type": "String", + "placeholders": {} + }, + "security": "Segurtasuna", + "@security": { + "type": "String", + "placeholders": {} + }, + "autoplayImages": "Automatikoki abiarazi pegatina eta emote animatuak", + "@autoplayImages": { + "type": "String", + "placeholder": {} + }, + "sendOnEnter": "Bidali enter sakatuz", + "@sendOnEnter": {}, + "badServerVersionsException": "Zerbitzariak ondorengo ezaugarriak onartzen ditu:\n{serverVersions}\nBaina aplikazioak hauek onartzen ditu bakarrik: {supportedVersions}", + "@badServerVersionsException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "botMessages": "Boten mezuak", + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "cantOpenUri": "Ezin da {uri} URIa ireki", + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "changeDeviceName": "Aldatu gailuaren izena", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "changePassword": "Aldatu pasahitza", + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "changeYourAvatar": "Aldatu abatarra", + "@changeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "chatBackup": "Txataren babeskopia", + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "chatBackupDescription": "Txat zaharrak berreskuratze-gako batekin daude babestuta. Ez galdu gako hori.", + "@chatBackupDescription": { + "type": "String", + "placeholders": {} + }, + "chatHasBeenAddedToThisSpace": "Txata gune honetara gehitu da", + "@chatHasBeenAddedToThisSpace": {}, + "configureChat": "Txata konfiguratu", + "@configureChat": { + "type": "String", + "placeholders": {} + }, + "contentHasBeenReported": "Edukia zerbitzariko administratzaileei jakinarazi zaie", + "@contentHasBeenReported": { + "type": "String", + "placeholders": {} + }, + "memberChanges": "Kideen aldaketak", + "@memberChanges": { + "type": "String", + "placeholders": {} + }, + "setAsCanonicalAlias": "Ezarri alias nagusi bezala", + "@setAsCanonicalAlias": { + "type": "String", + "placeholders": {} + }, + "setCustomEmotes": "Ezarri zure emoteak", + "@setCustomEmotes": { + "type": "String", + "placeholders": {} + }, + "appLock": "Aplikazioa blokeatzea", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "addToSpace": "Gehitu gunera", + "@addToSpace": {}, + "allChats": "Txat guztiak", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "badServerLoginTypesException": "Zerbitzariak ondorengo aukerak onartzen ditu saioa hasteko:\n{serverVersions}\nBaina aplikazioak hauek onartzen ditu bakarrik:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "commandHint_dm": "Hasi banakako txat bat\nErabili --no-encyption zifratzea desgaitzeko", + "@commandHint_dm": { + "type": "String", + "description": "Usage hint for the command /dm" + }, + "commandHint_leave": "Utzi gela hau", + "@commandHint_leave": { + "type": "String", + "description": "Usage hint for the command /leave" + }, + "blocked": "Blokeatuta", + "@blocked": { + "type": "String", + "placeholders": {} + }, + "commandInvalid": "Komandoa ez da baliozkoa", + "@commandInvalid": { + "type": "String" + }, + "commandHint_myroomnick": "Ezarri zure ezizena gela honetarako", + "@commandHint_myroomnick": { + "type": "String", + "description": "Usage hint for the command /myroomnick" + }, + "ignore": "Ezikusi", + "@ignore": { + "type": "String", + "placeholders": {} + }, + "containsUserName": "Erabiltzaile-izena dauka", + "@containsUserName": { + "type": "String", + "placeholders": {} + }, + "containsDisplayName": "Ezizena dauka", + "@containsDisplayName": { + "type": "String", + "placeholders": {} + }, + "locationDisabledNotice": "Kokapen zerbitzuak ezgaituta daude. Gaitu zure kokapena partekatu ahal izateko.", + "@locationDisabledNotice": { + "type": "String", + "placeholders": {} + }, + "directChats": "Banakako txatak", + "@directChats": { + "type": "String", + "placeholders": {} + }, + "enableEncryption": "Gaitu zifratzea", + "@enableEncryption": { + "type": "String", + "placeholders": {} + }, + "iHaveClickedOnLink": "Estekan sakatu dut", + "@iHaveClickedOnLink": { + "type": "String", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "Oraindik ez duzu pasahitza berreskuratzeko modurik gehitu.", + "@noPasswordRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "online": "Linean", + "@online": { + "type": "String", + "placeholders": {} + }, + "pushRules": "Push arauak", + "@pushRules": { + "type": "String", + "placeholders": {} + }, + "pleaseEnter4Digits": "Sartu lau zenbaki edo utzi hutsik aplikazioa babestu nahi ez baduzu.", + "@pleaseEnter4Digits": { + "type": "String", + "placeholders": {} + }, + "replaceRoomWithNewerVersion": "Ordezkatu gela bertsio berriago batekin", + "@replaceRoomWithNewerVersion": { + "type": "String", + "placeholders": {} + }, + "search": "Bilatu", + "@search": { + "type": "String", + "placeholders": {} + }, + "withTheseAddressesRecoveryDescription": "Helbide hauekin pasahitza berreskuratu dezakezu.", + "@withTheseAddressesRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "whyDoYouWantToReportThis": "Zergatik salatu nahi duzu?", + "@whyDoYouWantToReportThis": { + "type": "String", + "placeholders": {} + }, + "videoWithSize": "Bideoa ({size})", + "@videoWithSize": { + "type": "String", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "openGallery": "Ireki bilduma", + "@openGallery": {}, + "pinMessage": "Finkatu gelan", + "@pinMessage": {}, + "reactedWith": "{sender}(e)k {reaction}(r)ekin erreakzionatu du", + "@reactedWith": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "reaction": { + "type": "String" + } + } + }, + "confirmEventUnpin": "Ziur zaude gertaera finaktzeari utzi nahi diozula?", + "@confirmEventUnpin": {}, + "nextAccount": "Hurrengo kontua", + "@nextAccount": {}, + "markAsRead": "Markatu irakurritzat", + "@markAsRead": {}, + "yourChatBackupHasBeenSetUp": "Txaten babeskopiak ezarri dira.", + "@yourChatBackupHasBeenSetUp": {}, + "clearArchive": "Ezabatu artxiboa", + "@clearArchive": {}, + "commandHint_html": "Bidali testua HTML formatuan", + "@commandHint_html": { + "type": "String", + "description": "Usage hint for the command /html" + }, + "commandHint_invite": "Gonbidatu erabiltzailea gela honetara", + "@commandHint_invite": { + "type": "String", + "description": "Usage hint for the command /invite" + }, + "commandHint_join": "Batu adierazitako gelara", + "@commandHint_join": { + "type": "String", + "description": "Usage hint for the command /join" + }, + "commandHint_kick": "Kendu erabiltzaile hori gela honetatik", + "@commandHint_kick": { + "type": "String", + "description": "Usage hint for the command /kick" + }, + "commandHint_me": "Deskribatu zure burua", + "@commandHint_me": { + "type": "String", + "description": "Usage hint for the command /me" + }, + "commandHint_myroomavatar": "Ezarri zure irudia gela honetarako (mxc-uri bidez)", + "@commandHint_myroomavatar": { + "type": "String", + "description": "Usage hint for the command /myroomavatar" + }, + "commandHint_unban": "Kendu erabiltzaileak gela honetan duen debekua", + "@commandHint_unban": { + "type": "String", + "description": "Usage hint for the command /unban" + }, + "commandMissing": "{command} ez da komandoa.", + "@commandMissing": { + "type": "String", + "placeholders": { + "command": { + "type": "String" + } + }, + "description": "State that {command} is not a valid /command." + }, + "commandHint_discardsession": "Baztertu saioa", + "@commandHint_discardsession": { + "type": "String", + "description": "Usage hint for the command /discardsession" + }, + "deactivateAccountWarning": "Honek zure kontua desaktibatuko du. Ezin da desegin! Ziur zaude?", + "@deactivateAccountWarning": { + "type": "String", + "placeholders": {} + }, + "defaultPermissionLevel": "Erabiltzaile berrien defektuzko botere-maila", + "@defaultPermissionLevel": { + "type": "String", + "placeholders": {} + }, + "deleteAccount": "Ezabatu kontua", + "@deleteAccount": { + "type": "String", + "placeholders": {} + }, + "deviceId": "Gailuaren IDa", + "@deviceId": { + "type": "String", + "placeholders": {} + }, + "emotePacks": "Gelarako emote-sortak", + "@emotePacks": { + "type": "String", + "placeholders": {} + }, + "enableEmotesGlobally": "Gaitu emote-sorta txat guztietarako", + "@enableEmotesGlobally": { + "type": "String", + "placeholders": {} + }, + "fontSize": "Letraren tamaina", + "@fontSize": { + "type": "String", + "placeholders": {} + }, + "howOffensiveIsThisContent": "Zenbaterainoko iraingarria da eduki hau?", + "@howOffensiveIsThisContent": { + "type": "String", + "placeholders": {} + }, + "inoffensive": "Ez da iraingarria", + "@inoffensive": { + "type": "String", + "placeholders": {} + }, + "locationPermissionDeniedNotice": "Kokapen baimena ukatu da. Eman zure kokapena partekatzeko baimena.", + "@locationPermissionDeniedNotice": { + "type": "String", + "placeholders": {} + }, + "messages": "Mezuak", + "@messages": { + "type": "String", + "placeholders": {} + }, + "newChat": "Txat berria", + "@newChat": { + "type": "String", + "placeholders": {} + }, + "noConnectionToTheServer": "Ez dago konexiorik zerbitzariarekin", + "@noConnectionToTheServer": { + "type": "String", + "placeholders": {} + }, + "noEncryptionForPublicRooms": "Zifratzea aktiba dezakezu soilik gelak publikoa izateari utzi badio.", + "@noEncryptionForPublicRooms": { + "type": "String", + "placeholders": {} + }, + "noMatrixServer": "{server1} ez da matrix zerbitzari bat, {server2} erabili nahi duzu haren ordez?", + "@noMatrixServer": { + "type": "String", + "placeholders": { + "server1": { + "type": "String" + }, + "server2": { + "type": "String" + } + } + }, + "scanQrCode": "Eskaneatu QR kodea", + "@scanQrCode": {}, + "obtainingLocation": "Kokapena atzitzen…", + "@obtainingLocation": { + "type": "String", + "placeholders": {} + }, + "offensive": "Iraingarria", + "@offensive": { + "type": "String", + "placeholders": {} + }, + "offline": "Lineaz kanpo", + "@offline": { + "type": "String", + "placeholders": {} + }, + "addToBundle": "Gehitu sortara", + "@addToBundle": {}, + "bundleName": "Sortaren izena", + "@bundleName": {}, + "openInMaps": "Ireki mapen aplikazioan", + "@openInMaps": { + "type": "String", + "placeholders": {} + }, + "participant": "Partaide", + "@participant": { + "type": "String", + "placeholders": {} + }, + "passwordForgotten": "Pasahitza ahaztu dut", + "@passwordForgotten": { + "type": "String", + "placeholders": {} + }, + "passwordHasBeenChanged": "Pasahitza aldatu da", + "@passwordHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "passwordRecovery": "Pasahitzaren berreskurapena", + "@passwordRecovery": { + "type": "String", + "placeholders": {} + }, + "people": "Jendea", + "@people": { + "type": "String", + "placeholders": {} + }, + "pleaseChooseAPasscode": "Aukeratu sartzeko kode bat", + "@pleaseChooseAPasscode": { + "type": "String", + "placeholders": {} + }, + "pleaseClickOnLink": "Sakatu ePostako estekan eta ondoren jarraitu.", + "@pleaseClickOnLink": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPin": "Sartu zure PINa", + "@pleaseEnterYourPin": { + "type": "String", + "placeholders": {} + }, + "removeYourAvatar": "Kendu zure abatarra", + "@removeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "roomVersion": "Gelaren bertsioa", + "@roomVersion": { + "type": "String", + "placeholders": {} + }, + "sendAsText": "Bidali testu bezala", + "@sendAsText": { + "type": "String" + }, + "sendMessages": "Mezuak bidali", + "@sendMessages": { + "type": "String", + "placeholders": {} + }, + "sendSticker": "Bidali pegatina", + "@sendSticker": { + "type": "String", + "placeholders": {} + }, + "setPermissionsLevel": "Ezarri baimen-maila", + "@setPermissionsLevel": { + "type": "String", + "placeholders": {} + }, + "shareLocation": "Partekatu kokapena", + "@shareLocation": { + "type": "String", + "placeholders": {} + }, + "showPassword": "Erakutsi pasahitza", + "@showPassword": { + "type": "String", + "placeholders": {} + }, + "spaceIsPublic": "Gunea publikoa da", + "@spaceIsPublic": { + "type": "String", + "placeholders": {} + }, + "spaceName": "Gunearen izena", + "@spaceName": { + "type": "String", + "placeholders": {} + }, + "synchronizingPleaseWait": "Sinkronizatzen… itxaron.", + "@synchronizingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "toggleFavorite": "Ikusi / Ezkutatu gogokoak", + "@toggleFavorite": { + "type": "String", + "placeholders": {} + }, + "toggleUnread": "Markatu irakurrita / irakurri gabe", + "@toggleUnread": { + "type": "String", + "placeholders": {} + }, + "tooManyRequestsWarning": "Eskaera gehiegi. Saiatu berriro geroago!", + "@tooManyRequestsWarning": { + "type": "String", + "placeholders": {} + }, + "transferFromAnotherDevice": "Beste gailu batetik transferitu", + "@transferFromAnotherDevice": { + "type": "String", + "placeholders": {} + }, + "unavailable": "Ez dago eskuragai", + "@unavailable": { + "type": "String", + "placeholders": {} + }, + "unverified": "Egiaztatu gabe(a)", + "@unverified": {}, + "verified": "Egiaztatuta", + "@verified": { + "type": "String", + "placeholders": {} + }, + "warning": "Kontuz!", + "@warning": { + "type": "String", + "placeholders": {} + }, + "weSentYouAnEmail": "ePosta bat bidali dizugu", + "@weSentYouAnEmail": { + "type": "String", + "placeholders": {} + }, + "whoCanPerformWhichAction": "Nork zer egin dezakeen", + "@whoCanPerformWhichAction": { + "type": "String", + "placeholders": {} + }, + "wipeChatBackup": "Ezabatu txataren babeskopia berreskuratze-gako berria sortzeko?", + "@wipeChatBackup": { + "type": "String", + "placeholders": {} + }, + "messageInfo": "Mezuaren xehetasunak", + "@messageInfo": {}, + "sender": "Igorlea", + "@sender": {}, + "removeFromSpace": "Kendu gunetik", + "@removeFromSpace": {}, + "addToSpaceDescription": "Hautatu gune bat txat hau bertara gehitzeko.", + "@addToSpaceDescription": {}, + "start": "Hasi", + "@start": {}, + "publish": "Argitaratu", + "@publish": {}, + "reportUser": "Salatu erabiltzailea", + "@reportUser": {}, + "openChat": "Ireki txata", + "@openChat": {}, + "addWidget": "Gehitu widgeta", + "@addWidget": {}, + "widgetVideo": "Bideoa", + "@widgetVideo": {}, + "widgetEtherpad": "Testu-oharra", + "@widgetEtherpad": {}, + "widgetJitsi": "Jitsi Meet", + "@widgetJitsi": {}, + "widgetCustom": "Norberak ezarritakoa", + "@widgetCustom": {}, + "widgetName": "Izena", + "@widgetName": {}, + "youJoinedTheChat": "Txatera batu zara", + "@youJoinedTheChat": {}, + "youAcceptedTheInvitation": "👍 Gonbidapena onartu duzu", + "@youAcceptedTheInvitation": {}, + "youBannedUser": "{user}(r)i debekua ezarri diozu", + "@youBannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youHaveWithdrawnTheInvitationFor": "{user}(r)i luzatutako gonbidapena baliogabetu duzu", + "@youHaveWithdrawnTheInvitationFor": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youInvitedBy": "📩 {user}(e)k gonbidatu zaitu", + "@youInvitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youInvitedUser": "📩 {user} gonbidatu duzu", + "@youInvitedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youKicked": "👞 {user} kanporatu duzu", + "@youKicked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youKickedAndBanned": "🙅 {user} kanporatu eta debekua ezarri diozu", + "@youKickedAndBanned": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youUnbannedUser": "{user}(r)i debekua kendu diozu", + "@youUnbannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youRejectedTheInvitation": "Gonbidapena baztertu duzu", + "@youRejectedTheInvitation": {}, + "separateChatTypes": "Bereizi banakako mezuak eta taldeak", + "@separateChatTypes": { + "type": "String", + "placeholders": {} + }, + "widgetUrlError": "Ez da baliozko URLa.", + "@widgetUrlError": {}, + "widgetNameError": "Zehaztu ezizen bat.", + "@widgetNameError": {}, + "errorAddingWidget": "Errorea widgeta gehitzerakoan.", + "@errorAddingWidget": {}, + "pleaseEnterRecoveryKey": "Sartu berreskuratze-gakoa:", + "@pleaseEnterRecoveryKey": {}, + "recoveryKey": "Berreskuratze-gakoa", + "@recoveryKey": {}, + "recoveryKeyLost": "Berreskuratze-gakoa galdu duzu?", + "@recoveryKeyLost": {}, + "users": "Erabiltzaileak", + "@users": {}, + "storeInAndroidKeystore": "Gorde Android KeyStore-n", + "@storeInAndroidKeystore": {}, + "dehydrate": "Esportatu saioa eta ezabatu gailua", + "@dehydrate": {}, + "dehydrateWarning": "Ekintza hau ezin da desegin. Egiaztatu babeskopia toki seguruan gorde duzula.", + "@dehydrateWarning": {}, + "hydrate": "Lehengoratu babeskopia bat erabiliz", + "@hydrate": {}, + "pleaseEnterRecoveryKeyDescription": "Mezu zaharrak ikusi ahal izateko, sartu aurreko saioan sortu zen berreskuratze-gakoa. Berreskuratze-gakoa EZ da zure pasahitza.", + "@pleaseEnterRecoveryKeyDescription": {}, + "indexedDbErrorLong": "Mezuen artxibatzea ez dago defektuz gaituta modu pribatua erabiltzean.\nGaitzeko:\n - about:config\n - dom.indexedDB.privateBrowsing.enabled aukerak true erakutsi dezala\nBestela ezin da FluffyChat erabili.", + "@indexedDbErrorLong": {}, + "storeSecurlyOnThisDevice": "Gorde gailu honetan modu seguruan", + "@storeSecurlyOnThisDevice": {}, + "countFiles": "{count} fitxategi", + "@countFiles": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "user": "Erabiltzailea", + "@user": {}, + "custom": "Neurrira egindakoa", + "@custom": {}, + "storeInSecureStorageDescription": "Gorde berreskuratze-gakoa gailu honetako biltegiratze seguruan.", + "@storeInSecureStorageDescription": {}, + "storeInAppleKeyChain": "Gorde Apple KeyChain-en", + "@storeInAppleKeyChain": {}, + "unlockOldMessages": "Desblokeatu mezu zaharrak", + "@unlockOldMessages": {}, + "dehydrateTorLong": "TOR erabiltzaileentzat gomendioa leihoa itxi baino lehen saioa esportatzea da.", + "@dehydrateTorLong": {}, + "hydrateTorLong": "Esportatu al zenuen zure saioa TOR erabili zenuen azken aldian? Inportatu segidan eta jarraitu txateatzen.", + "@hydrateTorLong": {}, + "dehydrateTor": "TOR Erabiltzaileak: Esportatu saioa", + "@dehydrateTor": {}, + "hydrateTor": "TOR Erabiltzaileak: Inportatu esportatutako saioa", + "@hydrateTor": {}, + "saveKeyManuallyDescription": "Gorde eskuz gako hau gailuko partekatze-menua edo arbela erabiliz.", + "@saveKeyManuallyDescription": {}, + "indexedDbErrorTitle": "Arazoak modu pribatuarekin", + "@indexedDbErrorTitle": {}, + "confirmMatrixId": "Baieztatu zure Matrix IDa kontua ezabatu ahal izateko.", + "@confirmMatrixId": {}, + "newSpace": "Gune berria", + "@newSpace": {}, + "enterRoom": "Sartu gelara", + "@enterRoom": {}, + "whyIsThisMessageEncrypted": "Zergatik ezin da mezu hau irakurri?", + "@whyIsThisMessageEncrypted": {}, + "allSpaces": "Gune guztiak", + "@allSpaces": {}, + "newGroup": "Talde berria", + "@newGroup": {}, + "enterSpace": "Sartu gunera", + "@enterSpace": {}, + "appearOnTopDetails": "Aplikazioa goikaldean agertzea baimentzen du (ez da beharrezkoa FluffyChat deitzeko kontutzat ezarri baduzu)", + "@appearOnTopDetails": {}, + "screenSharingTitle": "pantaila-partekatzea", + "@screenSharingTitle": {}, + "screenSharingDetail": "Pantaila FluffyChaten partekatzen ari zara", + "@screenSharingDetail": {}, + "callingPermissions": "Deitzeko baimenak", + "@callingPermissions": {}, + "callingAccount": "Deitzen ari den kontua", + "@callingAccount": {}, + "callingAccountDetails": "Baimendu FluffyChat Android gailuko telefono-markagailua erabiltzea.", + "@callingAccountDetails": {}, + "appearOnTop": "Gainean erakutsi", + "@appearOnTop": {}, + "otherCallingPermissions": "Mikrofono, kamera eta FluffyChaten beste baimen batzuk", + "@otherCallingPermissions": {}, + "numChats": "{number} txat", + "@numChats": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "hideUnimportantStateEvents": "Ezkutatu garrantzirik gabeko gertaerak", + "@hideUnimportantStateEvents": {}, + "noKeyForThisMessage": "Mezua gailu honetan saioa hasi baino lehen bidali bazen gertatu daiteke.\n\nBeste aukera bat igorleak zure gailua blokeatu izana da, edo zerbaitek huts egin izana interneteko konexioan.\n\nMezua beste saio batean irakur dezakezu? Hala bada, mezua transferitu dezakezu! Zoaz Ezrpenetara > Gailuak eta baieztatu zure gailuek bata bestea egiaztatu dutela. Gela irekiko duzun hurrengo aldian eta bi saioak aurreko planoan irekita daudenean, gakoak automatikoki partekatuko dira.\n\nEz duzu gakorik galdu nahi saioa amaitu edo gailuak aldatzen dituzunean? Baieztatu ezarpenetan txaten babeskopiak gaituta dituzula.", + "@noKeyForThisMessage": {}, + "supposedMxid": "Hau {mxid} izan behar da", + "@supposedMxid": { + "type": "String", + "placeholders": { + "mxid": { + "type": "String" + } + } + }, + "commandHint_markasgroup": "Markatu talde bezala", + "@commandHint_markasgroup": {}, + "foregroundServiceRunning": "Jakinarazpen hau zerbitzua martxan dagoenean agertzen da.", + "@foregroundServiceRunning": {}, + "commandHint_markasdm": "Markatu mezu-zuzen gela bezala Matrix ID jakin honentzat", + "@commandHint_markasdm": {}, + "wasDirectChatDisplayName": "Txata hutsik dago ({oldDisplayName} zen lehen)", + "@wasDirectChatDisplayName": { + "type": "String", + "placeholders": { + "oldDisplayName": { + "type": "String" + } + } + }, + "deviceKeys": "Gailuaren gakoak:", + "@deviceKeys": {}, + "noBackupWarning": "Adi! Txataren babeskopia gaitzen ez baduzu, ezingo dituzu zifratutako txatak atzitu. Oso gomendagarria da txaten babeskopia gaitzea saioa amaitu baino lehen.", + "@noBackupWarning": {}, + "doNotShowAgain": "Ez erakutsi berriro", + "@doNotShowAgain": {}, + "fileIsTooBigForServer": "Ezin da bidali! Zerbitzariak gehienez {max}-ko eranskinak onartzen ditu.", + "@fileIsTooBigForServer": {}, + "noOtherDevicesFound": "Ez da beste gailurik aurkitu", + "@noOtherDevicesFound": {}, + "startFirstChat": "Hasi zure lehen txata", + "@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 zifratzea ezgaitu.", + "@disableEncryptionWarning": {}, + "encryptThisChat": "Zifratu txata", + "@encryptThisChat": {}, + "commandHint_hug": "Bidali besarkada", + "@commandHint_hug": {}, + "hugContent": "{senderName}(e)k besarkatu zaitu", + "@hugContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "sorryThatsNotPossible": "Barka… hori ez da posible", + "@sorryThatsNotPossible": {}, + "reopenChat": "Ireki txata berriro", + "@reopenChat": {}, + "commandHint_googly": "Bidali begi dibertigarri batzuk", + "@commandHint_googly": {}, + "commandHint_cuddle": "Bidali besarkada samurra", + "@commandHint_cuddle": {}, + "googlyEyesContent": "{senderName}(e)k begi dibertigarri batzuk bidali dizkizu", + "@googlyEyesContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "allRooms": "Talde-txat guztiak", + "@allRooms": { + "type": "String", + "placeholders": {} + }, + "jumpToLastReadMessage": "Joan irakurritako azken mezura", + "@jumpToLastReadMessage": {}, + "reportErrorDescription": "😭 O ez! Zerbaitek huts egin du. Nahi izanez gero, eman garatzaileei errorearen berri.", + "@reportErrorDescription": {}, + "cuddleContent": "{senderName}(e)k samurki besarkatu zaitu", + "@cuddleContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "readUpToHere": "Honaino irakurrita", + "@readUpToHere": {}, + "fileHasBeenSavedAt": "Fitxategia {path}(e)n gorde da", + "@fileHasBeenSavedAt": { + "type": "String", + "placeholders": { + "path": { + "type": "String" + } + } + }, + "jump": "Joan", + "@jump": {}, + "openLinkInBrowser": "Ireki esteka nabigatzailean", + "@openLinkInBrowser": {}, + "report": "salatu", + "@report": {}, + "signInWithPassword": "Hasi saioa pasahitzarekin", + "@signInWithPassword": {}, + "pleaseTryAgainLaterOrChooseDifferentServer": "Saiatu geroago edo aukeratu beste zerbitzari bat.", + "@pleaseTryAgainLaterOrChooseDifferentServer": {}, + "signInWith": "Hasi saioa {provider}(r)ekin", + "@signInWith": { + "type": "String", + "placeholders": { + "provider": { + "type": "String" + } + } + }, + "notAnImage": "Ez da irudi-fitxategia.", + "@notAnImage": {}, + "importNow": "Inportatu orain", + "@importNow": {}, + "importEmojis": "Inportatu emojiak", + "@importEmojis": {}, + "importFromZipFile": "Inportatu .zip fitxategi batetik", + "@importFromZipFile": {}, + "exportEmotePack": "Esportatu emote-sorta .zip gisa", + "@exportEmotePack": {}, + "replace": "Ordezkatu", + "@replace": {}, + "sendTypingNotifications": "Jakinarazi idazten nagoela", + "@sendTypingNotifications": {}, + "setColorTheme": "Ezarri kolore-gaia:", + "@setColorTheme": {}, + "tryAgain": "Saiatu berriro", + "@tryAgain": {}, + "messagesStyle": "Mezuak:", + "@messagesStyle": {}, + "chatDescription": "Txataren deskribapena", + "@chatDescription": {}, + "invalidServerName": "Zerbitzari-izenak ez du balio", + "@invalidServerName": {}, + "chatPermissions": "Txataren baimenak", + "@chatPermissions": {}, + "setChatDescription": "Ezarri txataren deskribapena", + "@setChatDescription": {}, + "redactedBy": "{username}(e)k atzera bota du", + "@redactedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "optionalRedactReason": "(Aukerakoa) Mezua atzera botatzearen arrazoia…", + "@optionalRedactReason": {}, + "inviteContactToGroupQuestion": "{contact} \"{groupName}\" txatera gonbidatu nahi duzu?", + "@inviteContactToGroupQuestion": {}, + "redactedByBecause": "{username}(e)k atzera bota du \"{reason}\" dela-eta", + "@redactedByBecause": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "reason": { + "type": "String" + } + } + }, + "redactMessageDescription": "Mezua elkarrizketa honetako partaide guztientzat botako da atzera. Ezin da desegin.", + "@redactMessageDescription": {}, + "addChatDescription": "Gehitu txataren deskribapena…", + "@addChatDescription": {}, + "directChat": "Banakako txata", + "@directChat": {}, + "wrongPinEntered": "PIN okerra! Saiatu berriro {seconds} segundu barru…", + "@wrongPinEntered": { + "type": "String", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "noChatDescriptionYet": "Ez da txaterako deskribapenik sortu oraindik.", + "@noChatDescriptionYet": {}, + "chatDescriptionHasBeenChanged": "Txataren deskribapena aldatu da", + "@chatDescriptionHasBeenChanged": {}, + "profileNotFound": "Ezin izan da erabiltzailea zerbitzarian aurkitu. Agian arazo bat dago konexioarekin edo erabiltzailea ez da existitzen.", + "@profileNotFound": {}, + "shareInviteLink": "Partekatu gonbidapen-esteka", + "@shareInviteLink": {}, + "emoteKeyboardNoRecents": "Oraintsu erabilitako emoteak hemen ageriko dira…", + "@emoteKeyboardNoRecents": { + "type": "String", + "placeholders": {} + }, + "setTheme": "Ezarri gaia:", + "@setTheme": {}, + "createGroup": "Sortu taldea", + "@createGroup": {}, + "invite": "Gonbidatu", + "@invite": {}, + "invalidInput": "Sartu duzunak ez du balio!", + "@invalidInput": {}, + "inviteGroupChat": "📨 Taldeko txatera gonbidapena", + "@inviteGroupChat": {}, + "invitePrivateChat": "📨 Txat pribatura gonbidapena", + "@invitePrivateChat": {}, + "banUserDescription": "Erabiltzailea txatetik kanporatu eta berriro sartzeko debekua ezarriko zaio; ezingo da berriro sartu debekua kendu arte.", + "@banUserDescription": {}, + "removeDevicesDescription": "Gailu honetako saioa amaituko da eta ezingo duzu mezurik jaso aurrerantzean.", + "@removeDevicesDescription": {}, + "unbanUserDescription": "Erabiltzailea txatera berriro sartu ahal izango da berak nahi izanez gero.", + "@unbanUserDescription": {}, + "pushNotificationsNotAvailable": "Push jakinarazpenak ez daude erabilgarri", + "@pushNotificationsNotAvailable": {}, + "makeAdminDescription": "Behin erabiltzaile hau administratzaile eginda, litekeena da desegin ezin izatea zuk dituzun baimenak izango dituelako.", + "@makeAdminDescription": {}, + "archiveRoomDescription": "Txata artxibategira mugituko da. Beste erabiltzaileek txatetik alde egin duzula ikusi ahal izango dute.", + "@archiveRoomDescription": {}, + "hasKnocked": "🚪 {user}(e)k baimena eskatu du", + "@hasKnocked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "learnMore": "Gehiago irakurri", + "@learnMore": {}, + "roomUpgradeDescription": "Gela bertsio berri gisa birsortuko da txata. Partaide guztiei jakinaraziko zaie txat berrira aldatu behar direla. Gehiago irakur dezakezu gela bertsioei buruz ondorengo estekan: https://spec.matrix.org/latest/rooms/", + "@roomUpgradeDescription": {}, + "pleaseEnterANumber": "Sartu 0 baino zenbaki handiago bat", + "@pleaseEnterANumber": {}, + "kickUserDescription": "Erabiltzailea txatetik kanporatu da baina ez zaio debekua ezarri. Txat publikoen kasuan, edozein momentutan batu daiteke berriro.", + "@kickUserDescription": {}, + "createGroupAndInviteUsers": "Sortu talde bat eta gonbidatu partaideak", + "@createGroupAndInviteUsers": {}, + "startConversation": "Hasi elkarrizketa", + "@startConversation": {}, + "groupCanBeFoundViaSearch": "Bilaketa erabiliz aurkitu daiteke taldea", + "@groupCanBeFoundViaSearch": {}, + "noUsersFoundWithQuery": "Zoritxarrez ez da \"{query}\" duen erabiltzailerik aurkitu. Egiaztatu zuzen idatzi duzula.", + "@noUsersFoundWithQuery": { + "type": "String", + "placeholders": { + "query": { + "type": "String" + } + } + }, + "yourGlobalUserIdIs": "Zure erabiltzaile-ID orokorra: ", + "@yourGlobalUserIdIs": {}, + "commandHint_sendraw": "Bidali json gordina", + "@commandHint_sendraw": {}, + "wrongRecoveryKey": "Barka baina ez dirudi berreskuratze-gako zuzena denik.", + "@wrongRecoveryKey": {}, + "groupName": "Taldearen izena", + "@groupName": {}, + "searchChatsRooms": "Bilatu #txatak, @erabiltzaileak…", + "@searchChatsRooms": {}, + "blockListDescription": "Gogaitzen zaituzten erabiltzaileak blokeatu ditzakezu. Ez duzu blokeatutakoen zerrendan dituzun erabiltzaileen mezurik edo gelara batzeko gonbidapenik jasoko.", + "@blockListDescription": {}, + "blockedUsers": "Blokeatutako erabiltzaileak", + "@blockedUsers": {}, + "block": "Blokeatu", + "@block": {}, + "blockUsername": "Ezikusi erabiltzaile-izena", + "@blockUsername": {}, + "databaseMigrationTitle": "Datu-basea optimizatu da", + "@databaseMigrationTitle": {}, + "databaseMigrationBody": "Itxaron, litekeena da tarte bat behar izatea.", + "@databaseMigrationBody": {}, + "publicSpaces": "Gune publikoak", + "@publicSpaces": {}, + "passwordIsWrong": "Sartu duzun pasahitza okerra da", + "@passwordIsWrong": {}, + "pleaseEnterYourCurrentPassword": "Sartu oraingo pasahitza", + "@pleaseEnterYourCurrentPassword": {}, + "publicLink": "Esteka publikoa", + "@publicLink": {}, + "nothingFound": "Ez da ezer aurkitu…", + "@nothingFound": {}, + "newPassword": "Pasahitz berria", + "@newPassword": {}, + "passwordsDoNotMatch": "Pasahitzak ez datoz bat", + "@passwordsDoNotMatch": {}, + "subspace": "Azpi-gunea", + "@subspace": {}, + "select": "Hautatu", + "@select": {}, + "pleaseChooseAStrongPassword": "Aukeratu pasahitz sendo bat", + "@pleaseChooseAStrongPassword": {}, + "addChatOrSubSpace": "Gehitu txata edo azpi-gunea", + "@addChatOrSubSpace": {}, + "leaveEmptyToClearStatus": "Utzi hutsik zure egoera garbitzeko.", + "@leaveEmptyToClearStatus": {}, + "joinSpace": "Batu gunera", + "@joinSpace": {}, + "searchForUsers": "Bilatu @erabiltzaileak…", + "@searchForUsers": {}, + "thisDevice": "Gailu hau:", + "@thisDevice": {}, + "decline": "Baztertu", + "@decline": {}, + "databaseBuildErrorBody": "Ezin da SQlite datu-basea eraiki. Aplikazioa aurreko datu-basea erabiltzen saiatuko da oraingoz. Jakinarazi errorea garatzaileei {url} helbidean. Errorearen mezua ondorengoa da: {error}", + "@databaseBuildErrorBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "initAppError": "Errorea aplikazioa abiaraztean", + "@initAppError": {}, + "sessionLostBody": "Zure saioa galdu da. Jakinarazi errorea garatzaileei {url} helbidean. Errorearen mezua ondorengoa da: {error}", + "@sessionLostBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "restoreSessionBody": "Aplikazioa babeskopia erabiliz saioa leheneratzen saiatuko da. Jakinarazi errorea garatzaileei {url} helbidean. Errorearen mezua ondorengoa da: {error}", + "@restoreSessionBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "youInvitedToBy": "📩 Esteka baten bidez gonbidatu zaituzte:\n{alias}", + "@youInvitedToBy": { + "placeholders": { + "alias": { + "type": "String" + } + } + }, + "transparent": "Gardena", + "@transparent": {}, + "sendReadReceipts": "Bidali irakurri izanaren agiria", + "@sendReadReceipts": {}, + "formattedMessages": "Formatua duten mezuak", + "@formattedMessages": {}, + "verifyOtherDevice": "🔐 Egiaztatu beste gailu bat", + "@verifyOtherDevice": {}, + "acceptedKeyVerification": "{sender}(e)k gakoaren egiaztapena onartu du", + "@acceptedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "canceledKeyVerification": "{sender}(e)k gakoen egiaztapena ezeztatu du", + "@canceledKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "requestedKeyVerification": "{sender}(e)k gakoen egiaztapena galdegin du", + "@requestedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "sendReadReceiptsDescription": "Txateko beste partaideek mezu bat irakurri duzula ikus dezakete.", + "@sendReadReceiptsDescription": {}, + "forwardMessageTo": "Birbidali mezua {roomName}(e)ra?", + "@forwardMessageTo": { + "type": "String", + "placeholders": { + "roomName": { + "type": "String" + } + } + }, + "completedKeyVerification": "{sender}(e)k gakoen egiaztapena osatu du", + "@completedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "isReadyForKeyVerification": "{sender} gakoak egiaztatzeko prest dago", + "@isReadyForKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "verifyOtherDeviceDescription": "Beste gailu bat egiaztatzean, gailu horiek gakoak truka ditzakete, eta segurtasun orokorra handitu. 💪 Egiaztapena hasten duzunean, laster-leiho bat agertuko da bi gailuetan. Bertan, elkarrekin alderatu behar diren emoji edo zenbaki batzuk ikusiko dituzu. Hobe da bi gailuak eskura izatea egiaztapena hasi aurretik. 🤳", + "@verifyOtherDeviceDescription": {}, + "verifyOtherUserDescription": "Beste erabiltzaile bat egiaztatzen baduzu, ziur egon zaitezke nori idazten ari zaren. 💪\n\nEgiaztapena hasten duzunean, zuk eta beste erabiltzaileak laster-leiho bat ikusiko duzue aplikazioan. Bertan, elkarrekin alderatu behar diren emoji edo zenbaki batzuk erakutsiko dira.\n\nBideo-dei bat hastea edo aurrez-aurre batzea da horretarako modurik onena. 👭", + "@verifyOtherUserDescription": {}, + "formattedMessagesDescription": "Erakutsi mezu aberatsen edukia markdown erabiliz, testu lodia esaterako.", + "@formattedMessagesDescription": {}, + "sendTypingNotificationsDescription": "Txateko beste partaideek mezu berri bat idazten ari zarela ikus dezakete.", + "@sendTypingNotificationsDescription": {}, + "verifyOtherUser": "🔐 Egiaztatu beste erabiltzaile bat", + "@verifyOtherUser": {}, + "startedKeyVerification": "{sender}(e)k gakoen egiaztapena hasi du", + "@startedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "presencesToggle": "Erakutsi beste erabiltzaileen egoera-mezuak", + "@presencesToggle": { + "type": "String", + "placeholders": {} + }, + "presenceStyle": "Presentzia:", + "@presenceStyle": { + "type": "String", + "placeholders": {} + }, + "incomingMessages": "Jasotako mezuak", + "@incomingMessages": {}, + "hidePresences": "Ezkutatu Egoeren Zerrenda?", + "@hidePresences": {}, + "discover": "Arakatu", + "@discover": {}, + "stickers": "Pegatinak", + "@stickers": {}, + "commandHint_unignore": "Utzi Matrix ID honi muzin egiteari", + "@commandHint_unignore": {}, + "commandHint_ignore": "Muzin egin Matrix ID honi", + "@commandHint_ignore": {}, + "unreadChatsInApp": "{appname}: {unread} mezu irakurri gabe", + "@unreadChatsInApp": { + "type": "String", + "placeholders": { + "appname": { + "type": "String" + }, + "unread": { + "type": "String" + } + } + }, + "noDatabaseEncryption": "Plataforma honetan ezin da datu-basea zifratu", + "@noDatabaseEncryption": {}, + "usersMustKnock": "Erabiltzaileek baimena eskatu behar dute", + "@usersMustKnock": {}, + "userWouldLikeToChangeTheChat": "{user}(e)k txatera batu nahiko luke.", + "@userWouldLikeToChangeTheChat": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "knock": "Eskatu baimena", + "@knock": {}, + "knocking": "Baimena eskatzen", + "@knocking": {}, + "chatCanBeDiscoveredViaSearchOnServer": "Txata {server}(e)n bilaketa eginez aurkitu daiteke", + "@chatCanBeDiscoveredViaSearchOnServer": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "thereAreCountUsersBlocked": "Une honetan {count} erabiltzaile daude blokeatuta.", + "@thereAreCountUsersBlocked": { + "type": "String", + "count": {} + }, + "appLockDescription": "Blokeatu aplikazioa pin kode batekin erabiltzen ari ez zarenean", + "@appLockDescription": {}, + "accessAndVisibility": "Sarbidea eta ikusgaitasuna", + "@accessAndVisibility": {}, + "accessAndVisibilityDescription": "Nork du txat honetara batzeko baimena eta nola aurkitu daiteke txata.", + "@accessAndVisibilityDescription": {}, + "customEmojisAndStickers": "Emoji eta pegatina propioak", + "@customEmojisAndStickers": {}, + "customEmojisAndStickersBody": "Gehitu edo partekatu edozein txatetan erabil daitezkeen emoji edo pegatina propioak.", + "@customEmojisAndStickersBody": {}, + "hideRedactedMessages": "Ezkutatu atzera botatako mezuak", + "@hideRedactedMessages": {}, + "hideRedactedMessagesBody": "Norbaitek mezuren bat atzera botaz gero, mezua txatetik kenduko da, abisurik gabe.", + "@hideRedactedMessagesBody": {}, + "hideInvalidOrUnknownMessageFormats": "Ezkutatu mezuen formatu ezezagun edo baliogabea", + "@hideInvalidOrUnknownMessageFormats": {}, + "overview": "Ikuspegi orokorra", + "@overview": {}, + "notifyMeFor": "Jakinarazi…", + "@notifyMeFor": {}, + "passwordRecoverySettings": "Pasahitza berreskuratzeko ezarpenak", + "@passwordRecoverySettings": {}, + "hideMemberChangesInPublicChats": "Ezkutatu kideen egoera aldaketak txat publikoetan", + "@hideMemberChangesInPublicChats": {}, + "globalChatId": "Txat ID orokorra", + "@globalChatId": {}, + "calls": "Deiak", + "@calls": {}, + "hideMemberChangesInPublicChatsBody": "Ez erakutsi txataren denbora-lerroan norbait txat publikora batu edo txatetik irteten dela, irakurgaitasuna hobetzeko.", + "@hideMemberChangesInPublicChatsBody": {}, + "noOneCanJoin": "Ezin da inor batu", + "@noOneCanJoin": {}, + "noPublicLinkHasBeenCreatedYet": "Oraindik ez da esteka publikorik sortu", + "@noPublicLinkHasBeenCreatedYet": {}, + "userRole": "Erabiltzailearen rola", + "@userRole": {}, + "minimumPowerLevel": "{level} da gutxieneko botere-maila.", + "@minimumPowerLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "String" + } + } + }, + "publicChatAddresses": "Txataren helbide publikoak", + "@publicChatAddresses": {}, + "createNewAddress": "Sortu helbide berria", + "@createNewAddress": {}, + "files": "Fitxategiak", + "@files": {}, + "gallery": "Galeria", + "@gallery": {}, + "searchIn": "Bilatu {chat} txatean...", + "@searchIn": { + "type": "String", + "placeholders": { + "chat": { + "type": "String" + } + } + }, + "searchMore": "Bilatu gehiago...", + "@searchMore": {}, + "restricted": "Mugatuta", + "@restricted": {}, + "knockRestricted": "Eskatu baimena sarrera mugatua duen txatean", + "@knockRestricted": {}, + "swipeRightToLeftToReply": "Herrestatu eskuin-ezker erantzuteko", + "@swipeRightToLeftToReply": {}, + "alwaysUse24HourFormat": "false", + "@alwaysUse24HourFormat": { + "description": "Set to true to always display time of day in 24 hour format." + }, + "noMoreChatsFound": "Ez da beste txatik aurkitu...", + "@noMoreChatsFound": {}, + "unread": "Irakurtzeke", + "@unread": {}, + "space": "Gunea", + "@space": {}, + "joinedChats": "Batu zaren txatak", + "@joinedChats": {}, + "goToSpace": "Joan {space} gunera", + "@goToSpace": { + "type": "String", + "space": {} + }, + "markAsUnread": "Markatu irakurri gabetzat", + "@markAsUnread": {}, + "countChatsAndCountParticipants": "{chats} txat eta {participants} partaide", + "@countChatsAndCountParticipants": { + "type": "String", + "placeholders": { + "chats": { + "type": "int" + }, + "participants": { + "type": "int" + } + } + }, + "spaces": "Guneak", + "@spaces": {}, + "adminLevel": "{level} - Administratzailea", + "@adminLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "changeTheChatPermissions": "Aldatu txataren baimenak", + "@changeTheChatPermissions": {}, + "inviteOtherUsers": "Gonbidatu beste erabiltzaileak txat honetara", + "@inviteOtherUsers": {}, + "userLevel": "{level} - Erabiltzailea", + "@userLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "moderatorLevel": "{level} - Moderatzailea", + "@moderatorLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "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": {}, + "invitedBy": "📩 {user}(e)k gonbidatua", + "@invitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "updateInstalled": "🎉 {version} bertsioa instalatu da!", + "@updateInstalled": { + "type": "String", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "changelog": "Aldaketak", + "@changelog": {}, + "chatPermissionsDescription": "Definitu zer botere-maila behar den txat honetako ekintza jakinetarako. 0, 50 eta 100 botere-mailek erabiltzaileak, moderatzaileak eta administratzaileak ordezkatzen dituzte, baina edozein graduazio posible da.", + "@chatPermissionsDescription": {}, + "sendCanceled": "Bidalketa bertan behera utzi da", + "@sendCanceled": {}, + "noChatsFoundHere": "Ez da txatik aurkitu. Hasi norbaitekin txateatzen beheko botoia erabiliz. ⤵️", + "@noChatsFoundHere": {}, + "homeserverDescription": "Zerbitzariak datuak gordetzen ditu, ePosta hornitzaileek mezuak gordetzen dituzten bezala. Nahi duzun zerbitzaria aukeratu dezakezu eta, hala ere, besteetako edonorekin hitz egin. Ikasi gehiago https://matrix.org webgunean.", + "@homeserverDescription": {}, + "loginWithMatrixId": "Hasi saioa Matrix IDarekin", + "@loginWithMatrixId": {}, + "discoverHomeservers": "Arakatu zerbitzariak", + "@discoverHomeservers": {}, + "whatIsAHomeserver": "Zer da zerbitzari bat?", + "@whatIsAHomeserver": {}, + "doesNotSeemToBeAValidHomeserver": "Ez dirudi zerbitzaria bateragarria denik. Zuzena da URLa?", + "@doesNotSeemToBeAValidHomeserver": {}, + "calculatingFileSize": "Fitxategiaren tamaina kalkulatzen…", + "@calculatingFileSize": {}, + "prepareSendingAttachment": "Eranskinaren bidalketa prestatzen…", + "@prepareSendingAttachment": {}, + "sendingAttachment": "Eranskina bidaltzen…", + "@sendingAttachment": {}, + "compressVideo": "Bideoa konprimatzen…", + "@compressVideo": {}, + "generatingVideoThumbnail": "Bideoaren iruditxoa sortzen…", + "@generatingVideoThumbnail": {}, + "serverLimitReached": "Zerbitzariaren muga gainditu da! Itxaron {seconds} segundo…", + "@serverLimitReached": { + "type": "integer", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "sendingAttachmentCountOfCount": "{index}. eranskina bidaltzen ({length} guztira)…", + "@sendingAttachmentCountOfCount": { + "type": "integer", + "placeholders": { + "index": { + "type": "int" + }, + "length": { + "type": "int" + } + } + }, + "oneOfYourDevicesIsNotVerified": "Zure gailuetako bat ez dago egiaztatuta", + "@oneOfYourDevicesIsNotVerified": {}, + "noticeChatBackupDeviceVerification": "Oharra: gailu guztiak txat-babeskopiarekin konektatzen dituzunean, automatikoki egiaztatzen dira.", + "@noticeChatBackupDeviceVerification": {}, + "opacity": "Opakutasuna:", + "@opacity": {}, + "manageAccount": "Kudeatu kontua", + "@manageAccount": {}, + "setWallpaper": "Ezarri horma-irudia", + "@setWallpaper": {}, + "blur": "Lausotu:", + "@blur": {}, + "continueText": "Jarraitu", + "@continueText": {}, + "welcomeText": "Ieup 👋 Ongi etorri FluffyChat-era. https://matrix.org-rekin bateragarria den edozein zerbitzaritan hasi dezakezu saioa eta edonorekin txateatu. Mezularitza-sare deszentralizatu eraraldoia da!", + "@welcomeText": {}, + "contactServerAdmin": "Jarri harremanetan zerbitzariaren administratzailearekin", + "@contactServerAdmin": {}, + "aboutHomeserver": "{homeserver}(e)ri buruz", + "@aboutHomeserver": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "supportPage": "Laguntza orria", + "@supportPage": {}, + "serverInformation": "Zerbitzariaren informazioa:", + "@serverInformation": {}, + "name": "Izena", + "@name": {}, + "version": "Bertsioa", + "@version": {}, + "website": "Webgunea", + "@website": {}, + "contactServerSecurity": "Jakinarazi segurtasun arazo bat", + "@contactServerSecurity": {}, + "noContactInformationProvided": "Zerbitzariak ez du harremanetarako informaziorik zehaztu", + "@noContactInformationProvided": {}, + "boldText": "Testu lodia", + "@boldText": {}, + "italicText": "Testu etzana", + "@italicText": {}, + "invalidUrl": "URL baliogabea", + "@invalidUrl": {}, + "addLink": "Gehitu esteka", + "@addLink": {}, + "strikeThrough": "Zirrimarra", + "@strikeThrough": {}, + "pleaseFillOut": "Bete ezazu", + "@pleaseFillOut": {}, + "unableToJoinChat": "Ezin da txatera batu. Agian besteak elkarrizketa itxiko zuen honezkero.", + "@unableToJoinChat": {}, + "sendImages": "Bidali {count} irudi", + "@sendImages": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "compress": "Konprimatu", + "@compress": {}, + "previous": "Aurrekoa", + "@previous": {}, + "otherPartyNotLoggedIn": "Besteak ez du saiorik hasita eta, beraz, ezin du mezurik jaso!", + "@otherPartyNotLoggedIn": {}, + "appWantsToUseForLogin": "Erabili '{server}' saioa hasteko", + "@appWantsToUseForLogin": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "appWantsToUseForLoginDescription": "Honenbestez, aplikazioak eta webguneak zuri buruzko informazioa partekatzea baimentzen duzu.", + "@appWantsToUseForLoginDescription": {}, + "open": "Ireki", + "@open": {}, + "generalNotificationSettings": "Jakinarazpen orokorren ezarpenak", + "@generalNotificationSettings": {}, + "notificationRuleContainsUserName": "Erabiltzaile-izena dauka", + "@notificationRuleContainsUserName": {}, + "notificationRuleMaster": "Isilarazi jakinarazpen guztiak", + "@notificationRuleMaster": {}, + "userSpecificNotificationSettings": "Erabiltzaile zehatzen jakinarazpenen ezarpenak", + "@userSpecificNotificationSettings": {}, + "more": "Gehiago", + "@more": {}, + "newChatRequest": "📩 Txat-eskaera berria", + "@newChatRequest": {}, + "contentNotificationSettings": "Edukiaren jakinarazpenen ezarpenak", + "@contentNotificationSettings": {}, + "notificationRuleContainsUserNameDescription": "Mezuan erabiltzaile-izena aipatzen denean jakinarazten du.", + "@notificationRuleContainsUserNameDescription": {}, + "notificationRuleMasterDescription": "Gainerako arauak gainidatzi eta jakinarazpenak ezgaitzen ditu.", + "@notificationRuleMasterDescription": {}, + "roomNotificationSettings": "Gelen jakinarazpenen ezarpenak", + "@roomNotificationSettings": {}, + "otherNotificationSettings": "Beste jakinarazpenen ezarpenak", + "@otherNotificationSettings": {}, + "waitingForServer": "Zerbitzariaren zain…", + "@waitingForServer": {}, + "appIntroduction": "FluffyChatek mezularitza-programa desberdinak erabiltzen dituzten lagunekin txateatzea ahalbidetzen dizu. Ikasi gehiago https://matrix.org estekan edo sakatu *Jarraitu*.", + "@appIntroduction": {}, + "synchronizingPleaseWaitCounter": " Sinkronizatzen… (%{percentage})", + "@synchronizingPleaseWaitCounter": { + "type": "String", + "placeholders": { + "percentage": { + "type": "String" + } + } + }, + "notificationRuleInviteForMe": "Gonbidapena niretzat", + "@notificationRuleInviteForMe": {}, + "notificationRuleInviteForMeDescription": "Erabiltzailea gela batera gonbidatzen dutenean jakinarazten du.", + "@notificationRuleInviteForMeDescription": {}, + "notificationRuleSuppressNotices": "Ezkutatu mezu automatikoak", + "@notificationRuleSuppressNotices": {}, + "notificationRuleSuppressNoticesDescription": "BOTen eta bestelako bezero automatikoen jakinarazpenak ezkutatzen ditu.", + "@notificationRuleSuppressNoticesDescription": {}, + "notificationRuleMemberEvent": "Kideen gertaera", + "@notificationRuleMemberEvent": {}, + "notificationRuleMemberEventDescription": "Kideen gertaeren jakinarazpenak ezkutatzen ditu.", + "@notificationRuleMemberEventDescription": {}, + "notificationRuleIsUserMention": "Erabiltzailea aipatzea", + "@notificationRuleIsUserMention": {}, + "notificationRuleContainsDisplayName": "Pantaila-izena dauka", + "@notificationRuleContainsDisplayName": {}, + "notificationRuleIsUserMentionDescription": "Erabiltzailea mezu zuzen batean aipatzen dutenean jakinarazten du.", + "@notificationRuleIsUserMentionDescription": {}, + "notificationRuleContainsDisplayNameDescription": "Mezu batek erabiltzailearen pantaila-izena duenean jakinarazten du.", + "@notificationRuleContainsDisplayNameDescription": {}, + "notificationRuleIsRoomMention": "Gelaren aipamena", + "@notificationRuleIsRoomMention": {}, + "notificationRuleIsRoomMentionDescription": "Gela aipatzen denean erabiltzailea jakinarazten du.", + "@notificationRuleIsRoomMentionDescription": {}, + "notificationRuleRoomnotif": "Gelaren jakinarazpena", + "@notificationRuleRoomnotif": {}, + "notificationRuleRoomnotifDescription": "Mezu batek '@room' duenean erabiltzaileari jakinarazten dio.", + "@notificationRuleRoomnotifDescription": {}, + "notificationRuleTombstone": "Hilarria", + "@notificationRuleTombstone": {}, + "notificationRuleReaction": "Erreakzioa", + "@notificationRuleReaction": {}, + "notificationRuleReactionDescription": "Erreakzioen jakinarazpenak ezkutatzen ditu.", + "@notificationRuleReactionDescription": {}, + "notificationRuleTombstoneDescription": "Gela desaktibatzeko mezuei buruz jakinarazten dio erabiltzaileari.", + "@notificationRuleTombstoneDescription": {}, + "notificationRuleRoomServerAcl": "Gelaren zerbitzariaren ACLa", + "@notificationRuleRoomServerAcl": {}, + "notificationRuleSuppressEdits": "Ezkutatu edizioak", + "@notificationRuleSuppressEdits": {}, + "notificationRuleCall": "Deia", + "@notificationRuleCall": {}, + "notificationRuleEncryptedRoomOneToOne": "Zifratutako bien arteko gela", + "@notificationRuleEncryptedRoomOneToOne": {}, + "notificationRuleSuppressEditsDescription": "Editatutako mezuen jakinarazpenak ezkutatzen ditu.", + "@notificationRuleSuppressEditsDescription": {}, + "notificationRuleCallDescription": "Erabiltzaileari deiei buruz jakinarazten dio.", + "@notificationRuleCallDescription": {}, + "notificationRuleEncryptedRoomOneToOneDescription": "Erabiltzailea jakinarazten du zifratutako bien arteko geletako mezuei buruz.", + "@notificationRuleEncryptedRoomOneToOneDescription": {}, + "notificationRuleRoomOneToOne": "Bien arteko gela", + "@notificationRuleRoomOneToOne": {}, + "notificationRuleRoomOneToOneDescription": "Erabiltzailea jakinarazten du bien arteko geletako mezuei buruz.", + "@notificationRuleRoomOneToOneDescription": {}, + "notificationRuleMessage": "Mezua", + "@notificationRuleMessage": {}, + "notificationRuleMessageDescription": "Erabiltzailea jakinarazten du mezu orokorrei buruz.", + "@notificationRuleMessageDescription": {}, + "notificationRuleEncrypted": "Zifratuak", + "@notificationRuleEncrypted": {}, + "notificationRuleEncryptedDescription": "Erabiltzailea jakinarazten du zifratutako geletako mezuei buruz.", + "@notificationRuleEncryptedDescription": {}, + "notificationRuleJitsi": "Jitsi", + "@notificationRuleJitsi": {}, + "notificationRuleJitsiDescription": "Erabiltzailea jakinarazten du Jitsi widgetaren gertaerei buruz.", + "@notificationRuleJitsiDescription": {}, + "notificationRuleServerAcl": "Ezkutatu zerbitzariaren ACL gertaerak", + "@notificationRuleServerAcl": {}, + "notificationRuleServerAclDescription": "Zerbitzariaren ACL gertaerak ezkutatzen ditu.", + "@notificationRuleServerAclDescription": {}, + "unknownPushRule": "Push arau ezezaguna '{rule}'", + "@unknownPushRule": { + "type": "String", + "placeholders": { + "rule": { + "type": "String" + } + } + }, + "deletePushRuleCanNotBeUndone": "Jakinarazpen ezarpen hau ezabatzen baduzu, ezin da desegin.", + "@deletePushRuleCanNotBeUndone": {}, + "shareKeysWith": "Partekatu gakoak…", + "@shareKeysWith": {}, + "allDevices": "Gailu guztiekin", + "@allDevices": {}, + "shareKeysWithDescription": "Zein gailu hartu beharko litzateke fidagarritzat zifratutako txaten mezuak irakur ditzaten?", + "@shareKeysWithDescription": {}, + "crossVerifiedDevicesIfEnabled": "Egiaztapen gurutzatuko gailuekin, gaituta badaude", + "@crossVerifiedDevicesIfEnabled": {}, + "verifiedDevicesOnly": "Egiaztatutako gailuekin soilik", + "@verifiedDevicesOnly": {}, + "crossVerifiedDevices": "Egiaztapen gurutzatuko gailuekin", + "@crossVerifiedDevices": {}, + "takeAPhoto": "Egin argazkia", + "@takeAPhoto": {}, + "recordAVideo": "Grabatu bideoa", + "@recordAVideo": {}, + "optionalMessage": "Mezua (aukerakoa)…", + "@optionalMessage": {}, + "notSupportedOnThisDevice": "Ez da gailu honekin bateragarria", + "@notSupportedOnThisDevice": {}, + "commandHint_roomupgrade": "Bertsio-berritu gela adierazitako gela-bertsiora", + "@commandHint_roomupgrade": {}, + "enterNewChat": "Sartu txat berrira", + "@enterNewChat": {}, + "normalUser": "Erabiltzaile arrunta", + "@normalUser": {}, + "notificationRuleRoomServerAclDescription": "Gela-zerbitzarirako sarbide-kontroleko zerrenden (ACL) jakinarazpenak ezkutatzen ditu.", + "@notificationRuleRoomServerAclDescription": {}, + "ignoreUser": "Egin muzin erabiltzaileari", + "@ignoreUser": {}, + "setCustomPermissionLevel": "Ezarri baimen-maila propioak", + "@setCustomPermissionLevel": {}, + "setPermissionsLevelDescription": "Aukeratu defektuzko rola edo sartu baimen-maila pertsonalizatu bat 0 eta 100 artean.", + "@setPermissionsLevelDescription": {}, + "approve": "Onetsi", + "@approve": {}, + "youHaveKnocked": "Sartzeko baimena eskatu duzu", + "@youHaveKnocked": {}, + "pleaseWaitUntilInvited": "Orain itxaron gelako norbaitek gonbidatzen zaituen arte.", + "@pleaseWaitUntilInvited": {}, + "checkList": "Kontrol-zerrenda", + "@checkList": {}, + "countInvited": "{count} gonbidatu", + "@countInvited": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "sentVoiceMessage": "🎙️ {duration} - {sender}(r)en ahots-mezua", + "@sentVoiceMessage": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "duration": { + "type": "String" + } + } + }, + "commandHint_logout": "Amaitu saioa gailu honetan", + "@commandHint_logout": {}, + "commandHint_logoutall": "Amaitu saioa aktibo dauden gailu guztietan", + "@commandHint_logoutall": {}, + "moreEvents": "Gertaera gehiago", + "@moreEvents": {}, + "displayNavigationRail": "Erakutsi nabigazio-barra mugikorrean", + "@displayNavigationRail": {}, + "customReaction": "Erreakzio pertsonalizatua", + "@customReaction": {}, + "declineInvitation": "Uko egin gonbidapenari", + "@declineInvitation": {}, + "noMessagesYet": "Mezurik ez oraingoz", + "@noMessagesYet": {}, + "longPressToRecordVoiceMessage": "Sakatuta mantendu ahots-mezua grabatzeko.", + "@longPressToRecordVoiceMessage": {}, + "pause": "Gelditu", + "@pause": {}, + "resume": "Jarraitu", + "@resume": {}, + "moveToDifferentSpace": "Beste gune batera mugitu", + "@moveToDifferentSpace": {}, + "moveUp": "Eraman gora", + "@moveUp": {}, + "moveDown": "Eraman behera", + "@moveDown": {}, + "removeFromSpaceDescription": "Txata gunetik kenduko da, baina txaten zerrendan mantenduko da.", + "@removeFromSpaceDescription": {}, + "countChats": "{chats} txat", + "@countChats": { + "type": "String", + "placeholders": { + "chats": { + "type": "int" + } + } + }, + "donate": "Egin dohaintza", + "@donate": {}, + "newSubSpace": "Azpi-gune berria", + "@newSubSpace": {}, + "spaceMemberOf": "{spaces} guneko kidea", + "@spaceMemberOf": { + "type": "String", + "placeholders": { + "spaces": { + "type": "String" + } + } + }, + "spaceMemberOfCanKnock": "{spaces} guneko kideak sartzeko baimena eska dezake", + "@spaceMemberOfCanKnock": { + "type": "String", + "placeholders": { + "spaces": { + "type": "String" + } + } + }, + "startedAPoll": "{username}(e)k bozketa hasi du.", + "@startedAPoll": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "poll": "Bozketa", + "@poll": {}, + "startPoll": "Hasi bozketa", + "@startPoll": {}, + "endPoll": "Amaitu bozketa", + "@endPoll": {}, + "answersVisible": "Erakutsi emaitzak", + "@answersVisible": {}, + "answersHidden": "Ezkutatu emaitzak", + "@answersHidden": {}, + "pollQuestion": "Bozketako galdera", + "@pollQuestion": {}, + "answerOption": "Erantzun-aukera", + "@answerOption": {}, + "addAnswerOption": "Gehitu erantzun-aukera", + "@addAnswerOption": {}, + "allowMultipleAnswers": "Baimendu erantzun bat baino gehiago", + "@allowMultipleAnswers": {}, + "pollHasBeenEnded": "Bozketa amaitu da", + "@pollHasBeenEnded": {}, + "countVotes": "{count, plural, =1{Bozka bat} other{{count} bozka}}", + "@countVotes": { + "type": "int", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "answersWillBeVisibleWhenPollHasEnded": "Emaitzak bozketak amaitu duenean egongo dira ikusgai", + "@answersWillBeVisibleWhenPollHasEnded": {}, + "replyInThread": "Erantzun harian", + "@replyInThread": {}, + "countReplies": "{count, plural, =1{Erantzun bat} other{{count} erantzun}}", + "@countReplies": { + "type": "int", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "thread": "Haria", + "@thread": {}, + "backToMainChat": "Joan txat nagusira", + "@backToMainChat": {} +} diff --git a/lib/l10n/intl_fa.arb b/lib/l10n/intl_fa.arb new file mode 100644 index 0000000..ea9b692 --- /dev/null +++ b/lib/l10n/intl_fa.arb @@ -0,0 +1,3386 @@ +{ + "@@last_modified": "2021-08-14 12:41:10.061080", + "repeatPassword": "تکرار گذرواژه", + "@repeatPassword": {}, + "about": "درباره", + "@about": { + "type": "String", + "placeholders": {} + }, + "accept": "پذیرش", + "@accept": { + "type": "String", + "placeholders": {} + }, + "acceptedTheInvitation": "👍 {username} دعوت را پذیرفت", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "account": "حساب", + "@account": { + "type": "String", + "placeholders": {} + }, + "addToSpace": "به فضا افزودن", + "@addToSpace": {}, + "appLock": "قفل برنامه", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "all": "همه", + "@all": { + "type": "String", + "placeholders": {} + }, + "allChats": "همه گپ‌ها", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "addEmail": "افزودن رایانامه", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "answeredTheCall": "{senderName} به تماس پاسخ داد", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "anyoneCanJoin": "هرکسی می‌تواند بپیوندد", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "archive": "بایگانی", + "@archive": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "مطمئن هستید؟", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "areYouSureYouWantToLogout": "مطمئن هستید می‌خواهید خارج شوید؟", + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "activatedEndToEndEncryption": "🔐 {username} رمزنگاری سراسری را فعال کرد", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "admin": "مدیر", + "@admin": { + "type": "String", + "placeholders": {} + }, + "supposedMxid": "گمان میرود {mxid} باشد", + "@supposedMxid": { + "type": "String", + "placeholders": { + "mxid": { + "type": "String" + } + } + }, + "botMessages": "پیام‌های ربات", + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "changedTheDisplaynameTo": "{username} نام نمایشی را به '{displayname}' تغییر داد", + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "confirmMatrixId": "برای پاک کردن حساب، لطفاً هویت ماتریکس خود را بپذیرید.", + "@confirmMatrixId": {}, + "changeDeviceName": "تغییر نام دستگاه", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "alias": "نام مستعار", + "@alias": { + "type": "String", + "placeholders": {} + }, + "banFromChat": "محروم کردن از گپ", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "askVerificationRequest": "آیا درخواست بازبینی {username} را می‌پذیرید؟", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "areGuestsAllowedToJoin": "آیا مهمانان اجازه پیوستن دارند", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "autoplayImages": "پخش خودکار شکلک‌ها و برچسب‌های متحرک", + "@autoplayImages": { + "type": "String", + "placeholder": {} + }, + "sendOnEnter": "فرستادن با کلید Enter", + "@sendOnEnter": {}, + "cancel": "رد کردن", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "changedTheChatDescriptionTo": "{username} توضیح گپ را به '{description}' تغییر داد", + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "changedTheChatPermissions": "{username} دسترسی‌های گپ را تغییر داد", + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheChatNameTo": "{username} نام گپ را به '{chatname}' تغییر داد", + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "cantOpenUri": "نمی‌توان پیوند {uri} را باز کرد", + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "banned": "محروم‌شده", + "@banned": { + "type": "String", + "placeholders": {} + }, + "bannedUser": "{username} کاربر {targetName} را محروم کرد", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "blockDevice": "مسدود کردن دستگاه", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "blocked": "مسدود‌شده", + "@blocked": { + "type": "String", + "placeholders": {} + }, + "badServerLoginTypesException": "سرور از این نوع ورود پشتیبانی می‌کند:\n{serverVersions}\nاما برنامه تنها از این‌ها پشتیبانی می‌کند:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "badServerVersionsException": "سرور از این نسخه‌های مشخصات پشتیبانی می‌کند:\n{serverVersions}\nاما برنامه تنها از این‌ها پشتیبانی می‌کند:\n{supportedVersions}", + "@badServerVersionsException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "changedTheChatAvatar": "{username} نماد گپ را تغییر داد", + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheGuestAccessRules": "{username} قوانین دسترسی مهمان را تغییر داد", + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheProfileAvatar": "{username} نماد نمایه را تغییر داد", + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "chats": "گپ‌ها", + "@chats": { + "type": "String", + "placeholders": {} + }, + "messages": "پیام‌ها", + "@messages": { + "type": "String", + "placeholders": {} + }, + "send": "فرستادن", + "@send": { + "type": "String", + "placeholders": {} + }, + "sendAudio": "فرستادن صدا", + "@sendAudio": { + "type": "String", + "placeholders": {} + }, + "sendOriginal": "فرستادن نسخه اصلی", + "@sendOriginal": { + "type": "String", + "placeholders": {} + }, + "changedTheRoomAliases": "{username} نام‌های مستعار اتاق را تغییر داد", + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomInvitationLink": "{username} پیوند دعوت را تغییر داد", + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "close": "بستن", + "@close": { + "type": "String", + "placeholders": {} + }, + "sendImage": "فرستادن تصویر", + "@sendImage": { + "type": "String", + "placeholders": {} + }, + "sendMessages": "فرستادن پیام‌ها", + "@sendMessages": { + "type": "String", + "placeholders": {} + }, + "changedTheHistoryVisibility": "{username} ویژگی دیدن تاریخچه را تغییر داد", + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheGuestAccessRulesTo": "{username} قوانین دسترسی مهمان را به {rules} تغییر داد", + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheJoinRulesTo": "{username} قوانین پیوستن را به {joinRules} تغییر داد", + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "changedTheHistoryVisibilityTo": "{username} ویژگی دیدن تاریخچه را به {rules} تغییر داد", + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "chooseAStrongPassword": "یک گذرواژه قوی انتخاب کنید", + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "yourChatBackupHasBeenSetUp": "پشتیبان گپ شما تنظیم شد.", + "@yourChatBackupHasBeenSetUp": {}, + "changeTheme": "تغییر پوسته", + "@changeTheme": { + "type": "String", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "تغییر نام گروه", + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "changeYourAvatar": "تغییر نماد نمایه", + "@changeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "channelCorruptedDecryptError": "رمزنگاری مخدوش شده است", + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "clearArchive": "پاک کردن بایگانی", + "@clearArchive": {}, + "commandHint_create": "ساختن یک گپ گروهی خالی\nاز «--no-encryption» برای غیرفعال کردن رمزنگاری استفاده کنید", + "@commandHint_create": { + "type": "String", + "description": "Usage hint for the command /create" + }, + "commandHint_dm": "شروع یک گپ مستقیم\nاز «--no-encryption» برای غیرفعال کردن رمزنگاری استفاده کنید", + "@commandHint_dm": { + "type": "String", + "description": "Usage hint for the command /dm" + }, + "sendSticker": "فرستادن برچسب", + "@sendSticker": { + "type": "String", + "placeholders": {} + }, + "sendVideo": "فرستادن ویدئو", + "@sendVideo": { + "type": "String", + "placeholders": {} + }, + "sender": "فرستنده", + "@sender": {}, + "changedTheJoinRules": "{username} قوانین پیوستن را تغییر داد", + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "chatDetails": "جزئیات گپ", + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "commandHint_markasdm": "علامت‌گذاری به‌عنوان اتاق پیام مستقیم با شناسه ماتریکس", + "@commandHint_markasdm": {}, + "commandHint_markasgroup": "علامت‌گذاری به‌عنوان گروه", + "@commandHint_markasgroup": {}, + "commandHint_clearcache": "پاک کردن حافظه نهان", + "@commandHint_clearcache": { + "type": "String", + "description": "Usage hint for the command /clearcache" + }, + "commandHint_discardsession": "رد کردن نشست", + "@commandHint_discardsession": { + "type": "String", + "description": "Usage hint for the command /discardsession" + }, + "groups": "گروه‌ها", + "@groups": { + "type": "String", + "placeholders": {} + }, + "openAppToReadMessages": "برای خواندن پیام‌ها، برنامه را باز کنید", + "@openAppToReadMessages": { + "type": "String", + "placeholders": {} + }, + "sendAMessage": "فرستادن پیام", + "@sendAMessage": { + "type": "String", + "placeholders": {} + }, + "sentCallInformations": "{senderName} اطلاعات تماس را فرستاد", + "@sentCallInformations": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "sendAsText": "فرستادن به‌عنوان متن", + "@sendAsText": { + "type": "String" + }, + "sendFile": "فرستادن پرونده", + "@sendFile": { + "type": "String", + "placeholders": {} + }, + "startedACall": "{senderName} تماس را آغاز کرد", + "@startedACall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "tryToSendAgain": "تلاش دوباره برای فرستادن", + "@tryToSendAgain": { + "type": "String", + "placeholders": {} + }, + "reactedWith": "{sender} با {reaction} واکنش نشان داد", + "@reactedWith": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "reaction": { + "type": "String" + } + } + }, + "askSSSSSign": "لطفاً عبارت عبور یا کلید بازیابی حافظه امن را وارد کنید تا شخص دیگری را امضا کنید.", + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "chatHasBeenAddedToThisSpace": "گپ به این فضا افزوده شد", + "@chatHasBeenAddedToThisSpace": {}, + "chat": "گپ", + "@chat": { + "type": "String", + "placeholders": {} + }, + "chatBackup": "پشتیبان گپ", + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "changePassword": "تغییر گذرواژه", + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "changeTheHomeserver": "تغییر سرور خانگی", + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "separateChatTypes": "جداسازی گپ‌های مستقیم از گروه‌ها", + "@separateChatTypes": { + "type": "String", + "placeholders": {} + }, + "sentAPicture": "🖼️ {username} یک تصویر فرستاد", + "@sentAPicture": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAVideo": "🎥 {username} یک ویدئو فرستاد", + "@sentAVideo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "commandInvalid": "دستور نامعتبر", + "@commandInvalid": { + "type": "String" + }, + "commandMissing": "{command} یک دستور نیست.", + "@commandMissing": { + "type": "String", + "placeholders": { + "command": { + "type": "String" + } + }, + "description": "State that {command} is not a valid /command." + }, + "contactHasBeenInvitedToTheGroup": "مخاطب به گروه دعوت شد", + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "sentAFile": "📁 {username} یک پرونده فرستاد", + "@sentAFile": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAnAudio": "🎤 {username} یک صدا فرستاد", + "@sentAnAudio": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "userSentUnknownEvent": "{username} یک رویداد {type} فرستاد", + "@userSentUnknownEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "type": { + "type": "String" + } + } + }, + "weSentYouAnEmail": "یک رایانامه برای شما فرستادیم", + "@weSentYouAnEmail": { + "type": "String", + "placeholders": {} + }, + "loadCountMoreParticipants": "بارگیری {count} شرکت‌کننده دیگر", + "@loadCountMoreParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "sentASticker": "😊 {username} یک برچسب فرستاد", + "@sentASticker": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "connect": "اتصال", + "@connect": { + "type": "String", + "placeholders": {} + }, + "confirm": "پذیرفتن", + "@confirm": { + "type": "String", + "placeholders": {} + }, + "allSpaces": "همه فضاها", + "@allSpaces": {}, + "commandHint_ban": "محروم کردن کاربر مشخص‌شده از این اتاق", + "@commandHint_ban": { + "type": "String", + "description": "Usage hint for the command /ban" + }, + "commandHint_kick": "بیرون کردن کاربر مشخص‌شده از این اتاق", + "@commandHint_kick": { + "type": "String", + "description": "Usage hint for the command /kick" + }, + "commandHint_plain": "فرستادن متن بدون قالب", + "@commandHint_plain": { + "type": "String", + "description": "Usage hint for the command /plain" + }, + "commandHint_unban": "رد محرومیت کاربر مشخص‌شده از این اتاق", + "@commandHint_unban": { + "type": "String", + "description": "Usage hint for the command /unban" + }, + "containsDisplayName": "دارای نام نمایشی", + "@containsDisplayName": { + "type": "String", + "placeholders": {} + }, + "containsUserName": "دارای نام کاربری", + "@containsUserName": { + "type": "String", + "placeholders": {} + }, + "device": "دستگاه", + "@device": { + "type": "String", + "placeholders": {} + }, + "copy": "رونوشت", + "@copy": { + "type": "String", + "placeholders": {} + }, + "defaultPermissionLevel": "سطح دسترسی پیش‌فرض", + "@defaultPermissionLevel": { + "type": "String", + "placeholders": {} + }, + "delete": "پاک کردن", + "@delete": { + "type": "String", + "placeholders": {} + }, + "deleteAccount": "پاک کردن حساب", + "@deleteAccount": { + "type": "String", + "placeholders": {} + }, + "deleteMessage": "پاک کردن پیام", + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "commandHint_html": "فرستادن متن با قالب HTML", + "@commandHint_html": { + "type": "String", + "description": "Usage hint for the command /html" + }, + "commandHint_join": "پیوستن به اتاق مشخص‌شده", + "@commandHint_join": { + "type": "String", + "description": "Usage hint for the command /join" + }, + "commandHint_leave": "ترک این اتاق", + "@commandHint_leave": { + "type": "String", + "description": "Usage hint for the command /leave" + }, + "commandHint_myroomnick": "تنظیم نام نمایشی برای این اتاق", + "@commandHint_myroomnick": { + "type": "String", + "description": "Usage hint for the command /myroomnick" + }, + "commandHint_myroomavatar": "تنظیم نماد نمایه برای این اتاق (با mxc-uri)", + "@commandHint_myroomavatar": { + "type": "String", + "description": "Usage hint for the command /myroomavatar" + }, + "commandHint_op": "تنظیم سطح دسترسی کاربر مشخص‌شده (پیش‌فرض: ۵۰)", + "@commandHint_op": { + "type": "String", + "description": "Usage hint for the command /op" + }, + "commandHint_react": "فرستادن پاسخ به‌عنوان واکنش", + "@commandHint_react": { + "type": "String", + "description": "Usage hint for the command /react" + }, + "compareEmojiMatch": "لطفاً شکلک‌ها را مقایسه کنید", + "@compareEmojiMatch": { + "type": "String", + "placeholders": {} + }, + "copyToClipboard": "رونوشت به بریده‌دان", + "@copyToClipboard": { + "type": "String", + "placeholders": {} + }, + "countParticipants": "{count} شرکت‌کننده", + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "create": "ساختن", + "@create": { + "type": "String", + "placeholders": {} + }, + "createNewSpace": "فضای جدید", + "@createNewSpace": { + "type": "String", + "placeholders": {} + }, + "dateWithYear": "{year}-{month}-{day}", + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "deviceId": "شناسه دستگاه", + "@deviceId": { + "type": "String", + "placeholders": {} + }, + "devices": "دستگاه‌ها", + "@devices": { + "type": "String", + "placeholders": {} + }, + "displaynameHasBeenChanged": "نام نمایشی تغییر کرد", + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "downloadFile": "بارگیری پرونده", + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "edit": "ویرایش", + "@edit": { + "type": "String", + "placeholders": {} + }, + "editBlockedServers": "ویرایش سرورهای مسدود", + "@editBlockedServers": { + "type": "String", + "placeholders": {} + }, + "editRoomAliases": "ویرایش نام‌های مستعار اتاق", + "@editRoomAliases": { + "type": "String", + "placeholders": {} + }, + "editRoomAvatar": "ویرایش نماد اتاق", + "@editRoomAvatar": { + "type": "String", + "placeholders": {} + }, + "emoteExists": "شکلک از پیش وجود دارد!", + "@emoteExists": { + "type": "String", + "placeholders": {} + }, + "emoteWarnNeedToPick": "باید یک کد کوتاه شکلک و یک تصویر انتخاب کنید!", + "@emoteWarnNeedToPick": { + "type": "String", + "placeholders": {} + }, + "emoteInvalid": "کد کوتاه شکلک نامعتبر است!", + "@emoteInvalid": { + "type": "String", + "placeholders": {} + }, + "emptyChat": "گپ خالی", + "@emptyChat": { + "type": "String", + "placeholders": {} + }, + "copiedToClipboard": "به بریده‌دان رونوشت شد", + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "createdTheChat": "💬 {username} گپ را ساخت", + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "darkTheme": "تیره", + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "directChats": "گپ‌های مستقیم", + "@directChats": { + "type": "String", + "placeholders": {} + }, + "emotePacks": "بسته‌های شکلک برای اتاق", + "@emotePacks": { + "type": "String", + "placeholders": {} + }, + "emoteSettings": "تنظیمات شکلک", + "@emoteSettings": { + "type": "String", + "placeholders": {} + }, + "emoteShortcode": "کد کوتاه شکلک", + "@emoteShortcode": { + "type": "String", + "placeholders": {} + }, + "commandHint_me": "توصیف خود", + "@commandHint_me": { + "type": "String", + "description": "Usage hint for the command /me" + }, + "commandHint_send": "فرستادن متن", + "@commandHint_send": { + "type": "String", + "description": "Usage hint for the command /send" + }, + "couldNotDecryptMessage": "نمی‌توان پیام را رمزگشایی کرد: {error}", + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "chatBackupDescription": "پیام‌های قدیمی شما با یک کلید بازیابی امن می‌شوند. لطفاً مطمئن شوید آن را گم نمی‌کنید.", + "@chatBackupDescription": { + "type": "String", + "placeholders": {} + }, + "deactivateAccountWarning": "این کار حساب شما را غیرفعال می‌کند. این کنش برگشت‌ناپذیر است! آیا مطمئن هستید؟", + "@deactivateAccountWarning": { + "type": "String", + "placeholders": {} + }, + "commandHint_invite": "دعوت از کاربر مشخص‌شده به این اتاق", + "@commandHint_invite": { + "type": "String", + "description": "Usage hint for the command /invite" + }, + "compareNumbersMatch": "لطفاً اعداد را مقایسه کنید", + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "configureChat": "پیکربندی گپ", + "@configureChat": { + "type": "String", + "placeholders": {} + }, + "dateWithoutYear": "{month}-{day}", + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "currentlyActive": "اکنون فعال", + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "dateAndTimeOfDay": "{date}، {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "editDisplayname": "ویرایش نام نمایشی", + "@editDisplayname": { + "type": "String", + "placeholders": {} + }, + "id": "شناسه", + "@id": { + "type": "String", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "{username} دعوت {targetName} را پس گرفت", + "@hasWithdrawnTheInvitationFor": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "guestsAreForbidden": "مهمان‌ها ممنوع هستند", + "@guestsAreForbidden": { + "type": "String", + "placeholders": {} + }, + "hideRedactedEvents": "پنهان کردن رویدادهای ویرایش‌شده", + "@hideRedactedEvents": { + "type": "String", + "placeholders": {} + }, + "hideUnknownEvents": "پنهان کردن رویدادهای ناشناخته", + "@hideUnknownEvents": { + "type": "String", + "placeholders": {} + }, + "contentHasBeenReported": "محتوا به مدیران سرور گزارش شد", + "@contentHasBeenReported": { + "type": "String", + "placeholders": {} + }, + "fromJoining": "از پیوستن", + "@fromJoining": { + "type": "String", + "placeholders": {} + }, + "fromTheInvitation": "از دعوت", + "@fromTheInvitation": { + "type": "String", + "placeholders": {} + }, + "goToTheNewRoom": "رفتن به اتاق جدید", + "@goToTheNewRoom": { + "type": "String", + "placeholders": {} + }, + "group": "گروه", + "@group": { + "type": "String", + "placeholders": {} + }, + "groupIsPublic": "گروه عمومی است", + "@groupIsPublic": { + "type": "String", + "placeholders": {} + }, + "groupWith": "گروه با {displayname}", + "@groupWith": { + "type": "String", + "placeholders": { + "displayname": { + "type": "String" + } + } + }, + "howOffensiveIsThisContent": "این محتوا چقدر توهین‌آمیز است؟", + "@howOffensiveIsThisContent": { + "type": "String", + "placeholders": {} + }, + "enableEmotesGlobally": "فعال کردن بسته شکلک به‌صورت سراسری", + "@enableEmotesGlobally": { + "type": "String", + "placeholders": {} + }, + "enableEncryption": "فعال کردن رمزنگاری", + "@enableEncryption": { + "type": "String", + "placeholders": {} + }, + "enableEncryptionWarning": "نمی‌توانید رمزنگاری را غیرفعال کنید. آیا مطمئن هستید؟", + "@enableEncryptionWarning": { + "type": "String", + "placeholders": {} + }, + "encrypted": "رمزنگاری‌شده", + "@encrypted": { + "type": "String", + "placeholders": {} + }, + "encryption": "رمزنگاری", + "@encryption": { + "type": "String", + "placeholders": {} + }, + "encryptionNotEnabled": "رمزنگاری فعال نیست", + "@encryptionNotEnabled": { + "type": "String", + "placeholders": {} + }, + "enterAnEmailAddress": "یک نشانی رایانامه وارد کنید", + "@enterAnEmailAddress": { + "type": "String", + "placeholders": {} + }, + "endedTheCall": "{senderName} به تماس پایان داد", + "@endedTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "homeserver": "سرور خانگی", + "@homeserver": {}, + "enterYourHomeserver": "سرور خانگی خود را وارد کنید", + "@enterYourHomeserver": { + "type": "String", + "placeholders": {} + }, + "errorObtainingLocation": "خطا در به‌دست آوردن مکان: {error}", + "@errorObtainingLocation": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "everythingReady": "همه‌چیز آماده است!", + "@everythingReady": { + "type": "String", + "placeholders": {} + }, + "extremeOffensive": "بسیار توهین‌آمیز", + "@extremeOffensive": { + "type": "String", + "placeholders": {} + }, + "fileName": "نام پرونده", + "@fileName": { + "type": "String", + "placeholders": {} + }, + "fluffychat": "فلافی‌چت", + "@fluffychat": { + "type": "String", + "placeholders": {} + }, + "fontSize": "اندازه قلم", + "@fontSize": { + "type": "String", + "placeholders": {} + }, + "forward": "هدایت", + "@forward": { + "type": "String", + "placeholders": {} + }, + "help": "کمک", + "@help": { + "type": "String", + "placeholders": {} + }, + "guestsCanJoin": "مهمان‌ها می‌توانند بپیوندند", + "@guestsCanJoin": { + "type": "String", + "placeholders": {} + }, + "ignoredUsers": "کاربران نادیده‌گرفته شده", + "@ignoredUsers": { + "type": "String", + "placeholders": {} + }, + "commandHint_googly": "فرستادن چند چشم گوگولی", + "@commandHint_googly": {}, + "googlyEyesContent": "{senderName} برای شما چشم‌های گوگولی می‌فرستد", + "@googlyEyesContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "ignore": "نادیده‌گرفتن", + "@ignore": { + "type": "String", + "placeholders": {} + }, + "cuddleContent": "{senderName} شما را در آغوش می‌گیرد", + "@cuddleContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "identity": "هویت", + "@identity": { + "type": "String", + "placeholders": {} + }, + "hugContent": "{senderName} شما را بغل می‌کند", + "@hugContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "commandHint_cuddle": "فرستادن آغوش", + "@commandHint_cuddle": {}, + "commandHint_hug": "فرستادن بغل", + "@commandHint_hug": {}, + "editBundlesForAccount": "ویرایش بسته‌های این حساب", + "@editBundlesForAccount": {}, + "logout": "خروج", + "@logout": { + "type": "String", + "placeholders": {} + }, + "mention": "نام‌بردن", + "@mention": { + "type": "String", + "placeholders": {} + }, + "muteChat": "بی‌صدا کردن گپ", + "@muteChat": { + "type": "String", + "placeholders": {} + }, + "newChat": "گپ جدید", + "@newChat": { + "type": "String", + "placeholders": {} + }, + "newMessageInFluffyChat": "💬 پیام جدید در فلافی‌چت", + "@newMessageInFluffyChat": { + "type": "String", + "placeholders": {} + }, + "noConnectionToTheServer": "بدون اتصال به سرور", + "@noConnectionToTheServer": { + "type": "String", + "placeholders": {} + }, + "no": "خیر", + "@no": { + "type": "String", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "هنوز روشی برای بازیابی گذرواژه خود اضافه نکرده‌اید.", + "@noPasswordRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "notificationsEnabledForThisAccount": "آگاه‌سازها برای این حساب فعال شدند", + "@notificationsEnabledForThisAccount": { + "type": "String", + "placeholders": {} + }, + "or": "یا", + "@or": { + "type": "String", + "placeholders": {} + }, + "participant": "شرکت‌کننده", + "@participant": { + "type": "String", + "placeholders": {} + }, + "passphraseOrKey": "عبارت عبور یا کلید بازیابی", + "@passphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "password": "گذرواژه", + "@password": { + "type": "String", + "placeholders": {} + }, + "passwordHasBeenChanged": "گذرواژه تغییر کرد", + "@passwordHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "passwordRecovery": "بازیابی گذرواژه", + "@passwordRecovery": { + "type": "String", + "placeholders": {} + }, + "pin": "سنجاق کردن", + "@pin": { + "type": "String", + "placeholders": {} + }, + "play": "پخش {fileName}", + "@play": { + "type": "String", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "pleaseEnter4Digits": "لطفاً ۴ رقم وارد کنید یا خالی بگذارید تا قفل برنامه غیرفعال شود.", + "@pleaseEnter4Digits": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPin": "لطفاً رمز کوتاه خود را وارد کنید", + "@pleaseEnterYourPin": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPassword": "لطفاً گذرواژه خود را وارد کنید", + "@pleaseEnterYourPassword": { + "type": "String", + "placeholders": {} + }, + "pleaseFollowInstructionsOnWeb": "لطفاً دستورالعمل‌های وبگاه را دنبال کنید و روی بعدی بزنید.", + "@pleaseFollowInstructionsOnWeb": { + "type": "String", + "placeholders": {} + }, + "publicRooms": "اتاق‌های عمومی", + "@publicRooms": { + "type": "String", + "placeholders": {} + }, + "obtainingLocation": "در حال به‌دست آوردن مکان…", + "@obtainingLocation": { + "type": "String", + "placeholders": {} + }, + "oopsSomethingWentWrong": "اوه، مشکلی پیش آمد…", + "@oopsSomethingWentWrong": { + "type": "String", + "placeholders": {} + }, + "addToBundle": "افزودن به بسته", + "@addToBundle": {}, + "passwordForgotten": "فراموشی گذرواژه", + "@passwordForgotten": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterRecoveryKey": "لطفاً کلید بازیابی خود را وارد کنید:", + "@pleaseEnterRecoveryKey": {}, + "link": "پیوند", + "@link": {}, + "iHaveClickedOnLink": "روی پیوند کلیک کردم", + "@iHaveClickedOnLink": { + "type": "String", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "عبارت عبور یا کلید بازیابی نادرست است", + "@incorrectPassphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "inoffensive": "بی‌ضرر", + "@inoffensive": { + "type": "String", + "placeholders": {} + }, + "inviteContactToGroup": "دعوت مخاطب به {groupName}", + "@inviteContactToGroup": { + "type": "String", + "placeholders": { + "groupName": { + "type": "String" + } + } + }, + "invitedUsersOnly": "فقط کاربران دعوت‌شده", + "@invitedUsersOnly": { + "type": "String", + "placeholders": {} + }, + "inviteForMe": "دعوت برای من", + "@inviteForMe": { + "type": "String", + "placeholders": {} + }, + "isTyping": "در حال نوشتن…", + "@isTyping": { + "type": "String", + "placeholders": {} + }, + "joinRoom": "پیوستن به اتاق", + "@joinRoom": { + "type": "String", + "placeholders": {} + }, + "kicked": "👞 {username} کاربر {targetName} را بیرون کرد", + "@kicked": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickFromChat": "بیرون کردن از گپ", + "@kickFromChat": { + "type": "String", + "placeholders": {} + }, + "leftTheChat": "گپ را ترک کرد", + "@leftTheChat": { + "type": "String", + "placeholders": {} + }, + "dehydrate": "صدور نشست و پاک کردن دستگاه", + "@dehydrate": {}, + "hydrateTorLong": "آیا آخرین بار نشست خود را با تور صادر کردید؟ آن را وارد کنید و گپ را ادامه دهید.", + "@hydrateTorLong": {}, + "loadingPleaseWait": "در حال بارگذاری… لطفاً صبر کنید.", + "@loadingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "loadMore": "بارگذاری بیشتر…", + "@loadMore": { + "type": "String", + "placeholders": {} + }, + "locationPermissionDeniedNotice": "دسترسی به مکان رد شد. برای هم‌رسانی مکان، لطفاً دسترسی بدهید.", + "@locationPermissionDeniedNotice": { + "type": "String", + "placeholders": {} + }, + "logInTo": "ورود به {homeserver}", + "@logInTo": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "memberChanges": "تغییرات اعضا", + "@memberChanges": { + "type": "String", + "placeholders": {} + }, + "moderator": "ناظر", + "@moderator": { + "type": "String", + "placeholders": {} + }, + "newVerificationRequest": "درخواست بازبینی جدید!", + "@newVerificationRequest": { + "type": "String", + "placeholders": {} + }, + "noPermission": "بدون دسترسی", + "@noPermission": { + "type": "String", + "placeholders": {} + }, + "noRoomsFound": "اتاقی پیدا نشد…", + "@noRoomsFound": { + "type": "String", + "placeholders": {} + }, + "offline": "آفلاین", + "@offline": { + "type": "String", + "placeholders": {} + }, + "online": "آنلاین", + "@online": { + "type": "String", + "placeholders": {} + }, + "oopsPushError": "اوه! خطایی در تنظیم آگاه‌سازها رخ داد.", + "@oopsPushError": { + "type": "String", + "placeholders": {} + }, + "openCamera": "باز کردن دوربین", + "@openCamera": { + "type": "String", + "placeholders": {} + }, + "addAccount": "افزودن حساب", + "@addAccount": {}, + "people": "افراد", + "@people": { + "type": "String", + "placeholders": {} + }, + "pickImage": "انتخاب تصویر", + "@pickImage": { + "type": "String", + "placeholders": {} + }, + "pleaseChoose": "لطفاً انتخاب کنید", + "@pleaseChoose": { + "type": "String", + "placeholders": {} + }, + "pleaseChooseAPasscode": "لطفاً یک رمز کوتاه انتخاب کنید", + "@pleaseChooseAPasscode": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourUsername": "لطفاً نام کاربری خود را وارد کنید", + "@pleaseEnterYourUsername": { + "type": "String", + "placeholders": {} + }, + "privacy": "حریم خصوصی", + "@privacy": { + "type": "String", + "placeholders": {} + }, + "license": "گواهینامه", + "@license": { + "type": "String", + "placeholders": {} + }, + "numUsersTyping": "{count} کاربر در حال نوشتن…", + "@numUsersTyping": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "invited": "دعوت‌شده", + "@invited": { + "type": "String", + "placeholders": {} + }, + "invitedUser": "📩 {username} از {targetName} دعوت کرد", + "@invitedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "joinedTheChat": "👋 {username} به گپ پیوست", + "@joinedTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "kickedAndBanned": "🙅 {username} کاربر {targetName} را بیرون و محروم کرد", + "@kickedAndBanned": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "dehydrateWarning": "این کنش برگشت‌ناپذیر است. مطمئن شوید پرونده پشتیبان را به‌صورت امن ذخیره می‌کنید.", + "@dehydrateWarning": {}, + "locationDisabledNotice": "مکان‌یاب غیرفعال است. لطفاً آن را فعال کنید تا بتوانید مکان خود را هم‌رسانی کنید.", + "@locationDisabledNotice": { + "type": "String", + "placeholders": {} + }, + "dehydrateTorLong": "برای کاربران تور، پیشنهاد می‌شود پیش از بستن پنجره، نشست را صادر کنند.", + "@dehydrateTorLong": {}, + "needPantalaimonWarning": "لطفاً توجه کنید که برای رمزنگاری سرتاسر به Pantalaimon نیاز دارید.", + "@needPantalaimonWarning": { + "type": "String", + "placeholders": {} + }, + "next": "بعدی", + "@next": { + "type": "String", + "placeholders": {} + }, + "noEmotesFound": "شکلکی پیدا نشد. 😕", + "@noEmotesFound": { + "type": "String", + "placeholders": {} + }, + "noGoogleServicesWarning": "به نظر می‌رسد دستگاه شما سرویس‌های گوگل ندارد. این انتخاب خوبی برای حریم خصوصی است! برای دریافت آگاه‌سازها در فلافی‌چت، پیشنهاد می‌کنیم از https://ntfy.sh استفاده کنید. با ntfy یا یک فراهم‌کننده UnifiedPush می‌توانید آگاه‌سازهای امن دریافت کنید. می‌توانید ntfy را از Play Store یا F-Droid بارگیری کنید.", + "@noGoogleServicesWarning": { + "type": "String", + "placeholders": {} + }, + "noEncryptionForPublicRooms": "رمزنگاری را تنها زمانی می‌توانید فعال کنید که اتاق عمومی نباشد.", + "@noEncryptionForPublicRooms": { + "type": "String", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "پشتیبان‌گیری آنلاین کلید فعال است", + "@onlineKeyBackupEnabled": { + "type": "String", + "placeholders": {} + }, + "enableMultiAccounts": "(آزمایشی) فعال کردن چند حساب در این دستگاه", + "@enableMultiAccounts": {}, + "pleaseClickOnLink": "لطفاً روی پیوند در رایانامه کلیک کنید و ادامه دهید.", + "@pleaseClickOnLink": { + "type": "String", + "placeholders": {} + }, + "hydrateTor": "کاربران تور: وارد کردن نشست صادر شده", + "@hydrateTor": {}, + "hydrate": "بازیابی از پرونده پشتیبان", + "@hydrate": {}, + "inviteContact": "دعوت از مخاطب", + "@inviteContact": { + "type": "String", + "placeholders": {} + }, + "noMatrixServer": "{server1} سرور ماتریکس نیست، از {server2} استفاده شود؟", + "@noMatrixServer": { + "type": "String", + "placeholders": { + "server1": { + "type": "String" + }, + "server2": { + "type": "String" + } + } + }, + "openVideoCamera": "باز کردن دوربین برای فیلم‌برداری", + "@openVideoCamera": { + "type": "String", + "placeholders": {} + }, + "oneClientLoggedOut": "یکی از برنامه‌های شما از سیستم خارج شد", + "@oneClientLoggedOut": {}, + "removeFromBundle": "برداشتن از بسته", + "@removeFromBundle": {}, + "bundleName": "نام بسته", + "@bundleName": {}, + "openInMaps": "باز کردن در نقشه", + "@openInMaps": { + "type": "String", + "placeholders": {} + }, + "serverRequiresEmail": "برای ثبت‌نام، این سرور باید نشانی رایانامه شما را تأیید کند.", + "@serverRequiresEmail": {}, + "inviteText": "{username} شما را به فلافی‌چت دعوت کرد.\n۱. به fluffychat.im بروید و برنامه را نصب کنید\n۲. ثبت‌نام کنید یا وارد شوید\n۳. پیوند دعوت را باز کنید:\n {link}", + "@inviteText": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "link": { + "type": "String" + } + } + }, + "leave": "ترک کردن", + "@leave": { + "type": "String", + "placeholders": {} + }, + "none": "هیچ", + "@none": { + "type": "String", + "placeholders": {} + }, + "offensive": "توهین‌آمیز", + "@offensive": { + "type": "String", + "placeholders": {} + }, + "scanQrCode": "پویش کد QR", + "@scanQrCode": {}, + "lastActiveAgo": "آخرین فعالیت: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "String", + "placeholders": { + "localizedTimeShort": { + "type": "String" + } + } + }, + "lightTheme": "روشن", + "@lightTheme": { + "type": "String", + "placeholders": {} + }, + "dehydrateTor": "کاربران تور: صدور نشست", + "@dehydrateTor": {}, + "login": "ورود", + "@login": { + "type": "String", + "placeholders": {} + }, + "notifications": "آگاه‌سازها", + "@notifications": { + "type": "String", + "placeholders": {} + }, + "ok": "خوب", + "@ok": { + "type": "String", + "placeholders": {} + }, + "roomHasBeenUpgraded": "اتاق ارتقا یافت", + "@roomHasBeenUpgraded": { + "type": "String", + "placeholders": {} + }, + "register": "ثبت‌نام", + "@register": { + "type": "String", + "placeholders": {} + }, + "reject": "رد کردن", + "@reject": { + "type": "String", + "placeholders": {} + }, + "rejectedTheInvitation": "{username} دعوت را رد کرد", + "@rejectedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "rejoin": "پیوستن دوباره", + "@rejoin": { + "type": "String", + "placeholders": {} + }, + "unbanFromChat": "لغو محرومیت از گپ", + "@unbanFromChat": { + "type": "String", + "placeholders": {} + }, + "reply": "پاسخ", + "@reply": { + "type": "String", + "placeholders": {} + }, + "requestPermission": "درخواست دسترسی", + "@requestPermission": { + "type": "String", + "placeholders": {} + }, + "roomVersion": "نگارش اتاق", + "@roomVersion": { + "type": "String", + "placeholders": {} + }, + "search": "جستجو", + "@search": { + "type": "String", + "placeholders": {} + }, + "security": "امنیت", + "@security": { + "type": "String", + "placeholders": {} + }, + "seenByUser": "دیده‌شده توسط {username}", + "@seenByUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "setAsCanonicalAlias": "تنظیم به‌عنوان نام مستعار اصلی", + "@setAsCanonicalAlias": { + "type": "String", + "placeholders": {} + }, + "removeYourAvatar": "برداشتن نماد نمایه", + "@removeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "recording": "در حال ضبط", + "@recording": { + "type": "String", + "placeholders": {} + }, + "redactedAnEvent": "{username} یک رویداد را ویرایش کرد", + "@redactedAnEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "remove": "برداشتن", + "@remove": { + "type": "String", + "placeholders": {} + }, + "removeAllOtherDevices": "پاک کردن همه دستگاه‌های دیگر", + "@removeAllOtherDevices": { + "type": "String", + "placeholders": {} + }, + "removedBy": "پاک‌شده توسط {username}", + "@removedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "removeDevice": "پاک کردن دستگاه", + "@removeDevice": { + "type": "String", + "placeholders": {} + }, + "reportMessage": "گزارش پیام", + "@reportMessage": { + "type": "String", + "placeholders": {} + }, + "saveFile": "ذخیره پرونده", + "@saveFile": { + "type": "String", + "placeholders": {} + }, + "recoveryKey": "کلید بازیابی", + "@recoveryKey": {}, + "setInvitationLink": "تنظیم پیوند دعوت", + "@setInvitationLink": { + "type": "String", + "placeholders": {} + }, + "pushRules": "قوانین آگاه‌ساز", + "@pushRules": { + "type": "String", + "placeholders": {} + }, + "reason": "دلیل", + "@reason": { + "type": "String", + "placeholders": {} + }, + "setCustomEmotes": "تنظیم شکلک‌های سفارشی", + "@setCustomEmotes": { + "type": "String", + "placeholders": {} + }, + "redactMessage": "ویرایش پیام", + "@redactMessage": { + "type": "String", + "placeholders": {} + }, + "replaceRoomWithNewerVersion": "جایگزینی اتاق با نگارش جدیدتر", + "@replaceRoomWithNewerVersion": { + "type": "String", + "placeholders": {} + }, + "recoveryKeyLost": "کلید بازیابی گم شد؟", + "@recoveryKeyLost": {}, + "fileHasBeenSavedAt": "پرونده در {path} ذخیره شد", + "@fileHasBeenSavedAt": { + "type": "String", + "placeholders": { + "path": { + "type": "String" + } + } + }, + "enterSpace": "ورود به فضا", + "@enterSpace": {}, + "wasDirectChatDisplayName": "گپ خالی (پیش‌تر {oldDisplayName} بود)", + "@wasDirectChatDisplayName": { + "type": "String", + "placeholders": { + "oldDisplayName": { + "type": "String" + } + } + }, + "newSpaceDescription": "فضاها امکان یکپارچه‌سازی گپ‌ها و ساخت جوامع خصوصی یا عمومی را فراهم می‌کنند.", + "@newSpaceDescription": {}, + "encryptThisChat": "رمزنگاری این گپ", + "@encryptThisChat": {}, + "sorryThatsNotPossible": "متأسفیم... این ممکن نیست", + "@sorryThatsNotPossible": {}, + "deviceKeys": "کلیدهای دستگاه:", + "@deviceKeys": {}, + "fileIsTooBigForServer": "نمیتوان فرستاد! سرور تنها از پیوست های تا {max} پشتیبانی میکند.", + "@fileIsTooBigForServer": {}, + "jumpToLastReadMessage": "پرش به آخرین پیام خوانده‌شده", + "@jumpToLastReadMessage": {}, + "hideUnimportantStateEvents": "پنهان کردن رویدادهای غیرمهم وضعیت", + "@hideUnimportantStateEvents": {}, + "doNotShowAgain": "دوباره نمایش نده", + "@doNotShowAgain": {}, + "readUpToHere": "خوانده‌شده تا اینجا", + "@readUpToHere": {}, + "noBackupWarning": "هشدار! بدون فعال کردن پشتیبان گپ، دسترسی به پیام‌های رمزنگاری‌شده خود را از دست خواهید داد. پیشنهاد می‌شود پیش از خروج، پشتیبان گپ را فعال کنید.", + "@noBackupWarning": {}, + "noOtherDevicesFound": "دستگاه دیگری پیدا نشد", + "@noOtherDevicesFound": {}, + "countFiles": "{count} پرونده", + "@countFiles": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "callingAccountDetails": "اجازه به فلافی‌چت برای استفاده از شماره‌گیر بومی اندروید.", + "@callingAccountDetails": {}, + "noKeyForThisMessage": "اگر پیام پیش از ورود به حساب در این دستگاه فرستاده شده باشد، این مشکل ممکن است رخ دهد.\n\nهمچنین ممکن است فرستنده دستگاه شما را مسدود کرده باشد یا مشکلی در اتصال اینترنت وجود داشته باشد.\n\nآیا می‌توانید پیام را در نشست دیگری بخوانید؟ در این صورت، می‌توانید آن را منتقل کنید! به تنظیمات > دستگاه‌ها بروید و مطمئن شوید دستگاه‌هایتان یکدیگر را بازبینی کرده‌اند. هنگام باز کردن دوباره اتاق و فعال بودن هر دو نشست، کلیدها به‌صورت خودکار منتقل می‌شوند.\n\nآیا نمی‌خواهید هنگام خروج یا تغییر دستگاه کلیدها را گم کنید؟ مطمئن شوید پشتیبان گپ را در تنظیمات فعال کرده‌اید.", + "@noKeyForThisMessage": {}, + "numChats": "{number} گپ", + "@numChats": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "disableEncryptionWarning": "به دلایل امنیتی نمی‌توانید رمزنگاری را در گپی که فعال شده غیرفعال کنید.", + "@disableEncryptionWarning": {}, + "enterRoom": "ورود به اتاق", + "@enterRoom": {}, + "newGroup": "گروه جدید", + "@newGroup": {}, + "foregroundServiceRunning": "این آگاه‌ساز زمانی ظاهر می‌شود که خدمت پیش‌زمینه فعال است.", + "@foregroundServiceRunning": {}, + "appearOnTopDetails": "اجازه به برنامه برای نمایش در بالا (اگر فلافی‌چت را به‌عنوان حساب تماس تنظیم کرده‌اید، لازم نیست)", + "@appearOnTopDetails": {}, + "storeSecurlyOnThisDevice": "ذخیره امن در این دستگاه", + "@storeSecurlyOnThisDevice": {}, + "screenSharingDetail": "شما در حال هم‌رسانی صفحه‌نمایش خود در فلافی‌چت هستید", + "@screenSharingDetail": {}, + "newSpace": "فضای جدید", + "@newSpace": {}, + "saveKeyManuallyDescription": "این کلید را با استفاده از هم‌رسانی یا بریده‌دان به‌طور دستی ذخیره کنید.", + "@saveKeyManuallyDescription": {}, + "storeInAndroidKeystore": "ذخیره در Android KeyStore", + "@storeInAndroidKeystore": {}, + "storeInAppleKeyChain": "ذخیره در Apple KeyChain", + "@storeInAppleKeyChain": {}, + "user": "کاربر", + "@user": {}, + "custom": "سفارشی", + "@custom": {}, + "screenSharingTitle": "هم‌رسانی صفحه‌نمایش", + "@screenSharingTitle": {}, + "callingPermissions": "دسترسی‌های تماس", + "@callingPermissions": {}, + "callingAccount": "حساب تماس", + "@callingAccount": {}, + "appearOnTop": "نمایش در بالا", + "@appearOnTop": {}, + "otherCallingPermissions": "میکروفون، دوربین و دیگر دسترسی‌های فلافی‌چت", + "@otherCallingPermissions": {}, + "whyIsThisMessageEncrypted": "چرا این پیام خوانا نیست؟", + "@whyIsThisMessageEncrypted": {}, + "reopenChat": "باز کردن دوباره گپ", + "@reopenChat": {}, + "unmuteChat": "فعال کردن صدای گپ", + "@unmuteChat": { + "type": "String", + "placeholders": {} + }, + "nextAccount": "حساب بعدی", + "@nextAccount": {}, + "unlockOldMessages": "گشودن پیام‌های قدیمی", + "@unlockOldMessages": {}, + "share": "هم‌رسانی", + "@share": { + "type": "String", + "placeholders": {} + }, + "skip": "رد کردن", + "@skip": { + "type": "String", + "placeholders": {} + }, + "systemTheme": "سامانه", + "@systemTheme": { + "type": "String", + "placeholders": {} + }, + "theyDontMatch": "هم‌خوانی ندارند", + "@theyDontMatch": { + "type": "String", + "placeholders": {} + }, + "toggleFavorite": "تغییر وضعیت برگزیده", + "@toggleFavorite": { + "type": "String", + "placeholders": {} + }, + "toggleMuted": "تغییر وضعیت بی‌صدا", + "@toggleMuted": { + "type": "String", + "placeholders": {} + }, + "toggleUnread": "تغییر وضعیت خوانده‌شده/خوانده‌نشده", + "@toggleUnread": { + "type": "String", + "placeholders": {} + }, + "unavailable": "در دسترس نیست", + "@unavailable": { + "type": "String", + "placeholders": {} + }, + "unblockDevice": "باز کردن دستگاه", + "@unblockDevice": { + "type": "String", + "placeholders": {} + }, + "verifyStart": "آغاز بازبینی", + "@verifyStart": { + "type": "String", + "placeholders": {} + }, + "verifySuccess": "بازبینی با موفقیت انجام شد!", + "@verifySuccess": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerEmoji": "در انتظار پذیرش شکلک توسط دیگری…", + "@waitingPartnerEmoji": { + "type": "String", + "placeholders": {} + }, + "wallpaper": "کاغذدیواری:", + "@wallpaper": { + "type": "String", + "placeholders": {} + }, + "whoCanPerformWhichAction": "چه کسی می‌تواند چه کاری انجام دهد", + "@whoCanPerformWhichAction": { + "type": "String", + "placeholders": {} + }, + "writeAMessage": "نوشتن پیام…", + "@writeAMessage": { + "type": "String", + "placeholders": {} + }, + "widgetVideo": "ویدئو", + "@widgetVideo": {}, + "youHaveBeenBannedFromThisChat": "شما از این گپ محروم شده‌اید", + "@youHaveBeenBannedFromThisChat": { + "type": "String", + "placeholders": {} + }, + "setPermissionsLevel": "تنظیم سطح دسترسی", + "@setPermissionsLevel": { + "type": "String", + "placeholders": {} + }, + "setStatus": "تنظیم وضعیت", + "@setStatus": { + "type": "String", + "placeholders": {} + }, + "settings": "تنظیمات", + "@settings": { + "type": "String", + "placeholders": {} + }, + "showPassword": "نمایش گذرواژه", + "@showPassword": { + "type": "String", + "placeholders": {} + }, + "singlesignon": "ورود یکپارچه", + "@singlesignon": { + "type": "String", + "placeholders": {} + }, + "spaceName": "نام فضا", + "@spaceName": { + "type": "String", + "placeholders": {} + }, + "startFirstChat": "شروع اولین گپ", + "@startFirstChat": {}, + "theyMatch": "هم‌خوانی دارند", + "@theyMatch": { + "type": "String", + "placeholders": {} + }, + "title": "فلافی‌چت", + "@title": { + "description": "Title for the application", + "type": "String", + "placeholders": {} + }, + "tooManyRequestsWarning": "درخواست‌های بیش از حد. لطفاً بعداً دوباره تلاش کنید!", + "@tooManyRequestsWarning": { + "type": "String", + "placeholders": {} + }, + "unbannedUser": "{username} محرومیت {targetName} را برداشت", + "@unbannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "unknownEncryptionAlgorithm": "الگوریتم رمزنگاری ناشناخته", + "@unknownEncryptionAlgorithm": { + "type": "String", + "placeholders": {} + }, + "unpin": "برداشتن سنجاق", + "@unpin": { + "type": "String", + "placeholders": {} + }, + "userAndUserAreTyping": "{username} و {username2} در حال نوشتن…", + "@userAndUserAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "username2": { + "type": "String" + } + } + }, + "videoCall": "تماس تصویری", + "@videoCall": { + "type": "String", + "placeholders": {} + }, + "visibleForAllParticipants": "قابل‌دید برای همه شرکت‌کنندگان", + "@visibleForAllParticipants": { + "type": "String", + "placeholders": {} + }, + "visibleForEveryone": "قابل‌دید برای همه", + "@visibleForEveryone": { + "type": "String", + "placeholders": {} + }, + "voiceMessage": "پیام صوتی", + "@voiceMessage": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "در انتظار پذیرش درخواست توسط دیگری…", + "@waitingPartnerAcceptRequest": { + "type": "String", + "placeholders": {} + }, + "warning": "هشدار!", + "@warning": { + "type": "String", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "شما دیگر در این گپ شرکت نمی‌کنید", + "@youAreNoLongerParticipatingInThisChat": { + "type": "String", + "placeholders": {} + }, + "messageInfo": "اطلاعات پیام", + "@messageInfo": {}, + "time": "زمان", + "@time": {}, + "messageType": "نوع پیام", + "@messageType": {}, + "addToSpaceDescription": "فضایی را برای افزودن این گپ انتخاب کنید.", + "@addToSpaceDescription": {}, + "start": "آغاز", + "@start": {}, + "videoWithSize": "ویدئو ({size})", + "@videoWithSize": { + "type": "String", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "userIsTyping": "{username} در حال نوشتن…", + "@userIsTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "username": "نام کاربری", + "@username": { + "type": "String", + "placeholders": {} + }, + "yes": "بله", + "@yes": { + "type": "String", + "placeholders": {} + }, + "yourPublicKey": "کلید عمومی شما", + "@yourPublicKey": { + "type": "String", + "placeholders": {} + }, + "publish": "انتشار", + "@publish": {}, + "shareLocation": "هم‌رسانی مکان", + "@shareLocation": { + "type": "String", + "placeholders": {} + }, + "youInvitedUser": "📩 شما {user} را دعوت کردید", + "@youInvitedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "unverified": "تأییدنشده", + "@unverified": {}, + "verify": "بازبینی", + "@verify": { + "type": "String", + "placeholders": {} + }, + "openChat": "باز کردن گپ", + "@openChat": {}, + "dismiss": "رد کردن", + "@dismiss": {}, + "unsupportedAndroidVersion": "نسخه اندروید پشتیبانی‌نشده", + "@unsupportedAndroidVersion": {}, + "youUnbannedUser": "شما محرومیت {user} را برداشتید", + "@youUnbannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "verified": "تاییدشده", + "@verified": { + "type": "String", + "placeholders": {} + }, + "whyDoYouWantToReportThis": "چرا می‌خواهید گزارش دهید؟", + "@whyDoYouWantToReportThis": { + "type": "String", + "placeholders": {} + }, + "you": "شما", + "@you": { + "type": "String", + "placeholders": {} + }, + "widgetJitsi": "جیتسی‌میت(Jitsi Meet)", + "@widgetJitsi": {}, + "sourceCode": "کد منبع", + "@sourceCode": { + "type": "String", + "placeholders": {} + }, + "spaceIsPublic": "فضا عمومی است", + "@spaceIsPublic": { + "type": "String", + "placeholders": {} + }, + "synchronizingPleaseWait": "در حال همگام‌سازی... لطفا صبر کنید.", + "@synchronizingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "unknownEvent": "رویداد ناشناخته '{type}'", + "@unknownEvent": { + "type": "String", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "userAndOthersAreTyping": "{username} و {count} نفر دیگر در حال تایپ کردن…", + "@userAndOthersAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "userLeftTheChat": "👋 {username} گپ را ترک کرد", + "@userLeftTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "verifyTitle": "در حال تایید حساب دیگر", + "@verifyTitle": { + "type": "String", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "قابلیت دیدن تاریخچه گپ", + "@visibilityOfTheChatHistory": { + "type": "String", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "چه کسی اجازه پیوستن به این گروه را دارد", + "@whoIsAllowedToJoinThisGroup": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerNumbers": "در انتظار پذیرش اعداد توسط دیگری…", + "@waitingPartnerNumbers": { + "type": "String", + "placeholders": {} + }, + "wipeChatBackup": "برای ایجاد کلید بازیابی جدید، پشتیبان گپ خود را پاک می‌کنید؟", + "@wipeChatBackup": { + "type": "String", + "placeholders": {} + }, + "withTheseAddressesRecoveryDescription": "با این آدرس‌ها می‌توانید رمز خود را بازیابی کنید.", + "@withTheseAddressesRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "openGallery": "بازکردن گالری", + "@openGallery": {}, + "removeFromSpace": "حذف از فضا", + "@removeFromSpace": {}, + "pleaseEnterRecoveryKeyDescription": "برای گشودن قفل پیام‌های قدیمیتان، لطفا کلید بازیابی‌ای که در یک نشست پیشین تولید شده را وارد کنید. کلید بازیابی شما، رمز عبور شما نیست.", + "@pleaseEnterRecoveryKeyDescription": {}, + "confirmEventUnpin": "آیا از برداشتن سنجاق رویداد به صورت دائمی مطمئن هستید؟", + "@confirmEventUnpin": {}, + "indexedDbErrorLong": "متاسفانه فضای ذخیره‌سازی پیام‌ها، به صورت پیش‌فرض در حالت خصوصی فعال نیست.\nلطفا آدرس زیر را باز کنید:\nabout:config\nمقدار «dom.indexedDB.privateBrowsing.enabled» را به «true» تغییر دهید\nدر غیر این صورت، امکان اجرای فلافی‌چت وجود ندارد.", + "@indexedDbErrorLong": {}, + "widgetEtherpad": "یادداشت متنی", + "@widgetEtherpad": {}, + "youKickedAndBanned": "🙅 شما {user} را بیرون و محروم کردید", + "@youKickedAndBanned": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "statusExampleMessage": "امروز حالتان چطور است؟", + "@statusExampleMessage": { + "type": "String", + "placeholders": {} + }, + "submit": "ارسال", + "@submit": { + "type": "String", + "placeholders": {} + }, + "youRejectedTheInvitation": "شما دعوت را رد کردید", + "@youRejectedTheInvitation": {}, + "youAcceptedTheInvitation": "👍 شما دعوت را پذیرفتید", + "@youAcceptedTheInvitation": {}, + "emailOrUsername": "رایانامه(ایمیل) یا نام کاربری", + "@emailOrUsername": {}, + "transferFromAnotherDevice": "انتقال از دستگاهی دیگر", + "@transferFromAnotherDevice": { + "type": "String", + "placeholders": {} + }, + "videoCallsBetaWarning": "لطفا توجه داشته باشید که تماس‌های تصویری در حال حاضر آزمایشی هستند. ممکن است طبق انتظار کار نکنند یا روی همه پلتفرم‌ها اصلا کار نکنند.", + "@videoCallsBetaWarning": {}, + "experimentalVideoCalls": "تماس‌های تصویری آزمایشی", + "@experimentalVideoCalls": {}, + "placeCall": "برقراری تماس", + "@placeCall": {}, + "unsupportedAndroidVersionLong": "این ویژگی به نسخه تازه‌تری از اندروید نیاز دارد. لطفا به‌روزرسانی یا پشتیبانی لینیج‌اواس(LineageOS) را بررسی کنید.", + "@unsupportedAndroidVersionLong": {}, + "sharedTheLocation": "{username} وضعیت مکانی خود را به اشتراک گذاشت", + "@sharedTheLocation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "unreadChats": "{unreadCount, plural, other{{unreadCount} گپ خوانده نشده}}", + "@unreadChats": { + "type": "String", + "placeholders": { + "unreadCount": { + "type": "int" + } + } + }, + "status": "وضعیت", + "@status": { + "type": "String", + "placeholders": {} + }, + "unknownDevice": "دستگاه ناشناس", + "@unknownDevice": { + "type": "String", + "placeholders": {} + }, + "markAsRead": "علامت‌گذاشتن به عنوان خوانده شده", + "@markAsRead": {}, + "reportUser": "گزارش دادن کاربر", + "@reportUser": {}, + "pinMessage": "سنجاق کردن به اتاق", + "@pinMessage": {}, + "emojis": "شکلک‌ها", + "@emojis": {}, + "voiceCall": "تماس صوتی", + "@voiceCall": {}, + "indexedDbErrorTitle": "اشکالات حالت خصوصی", + "@indexedDbErrorTitle": {}, + "switchToAccount": "تغییر به حساب {number}", + "@switchToAccount": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "previousAccount": "حساب قبلی", + "@previousAccount": {}, + "addWidget": "افزودن ویجت", + "@addWidget": {}, + "widgetCustom": "سفارشی", + "@widgetCustom": {}, + "widgetName": "نام", + "@widgetName": {}, + "widgetUrlError": "این آدرس وب معتبر نیست.", + "@widgetUrlError": {}, + "widgetNameError": "لطفا یک نام نمایشی مشخص کنید.", + "@widgetNameError": {}, + "errorAddingWidget": "بروز خطا هنگام افزودن ویجت.", + "@errorAddingWidget": {}, + "youJoinedTheChat": "شما به گپ پیوستید", + "@youJoinedTheChat": {}, + "youBannedUser": "شما {user} را محروم کردید", + "@youBannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youHaveWithdrawnTheInvitationFor": "شما دعوت {user} را پس‌گرفتید", + "@youHaveWithdrawnTheInvitationFor": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youInvitedBy": "📩 شما توسط {user} دعوت شده‌اید", + "@youInvitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youKicked": "👞 شما {user} را بیرون کردید", + "@youKicked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "users": "کاربرها", + "@users": {}, + "storeInSecureStorageDescription": "کلید بازیابی را در محل ذخیره‌سازی امن این دستگاه ذخیره کنید.", + "@storeInSecureStorageDescription": {}, + "jump": "پرش", + "@jump": {}, + "allRooms": "تمام چت‌های گروهی", + "@allRooms": { + "type": "String", + "placeholders": {} + }, + "report": "گزارش", + "@report": {}, + "openLinkInBrowser": "بازکردن پیوند در مرورگر", + "@openLinkInBrowser": {}, + "reportErrorDescription": "اوه نه. اشتباهی رخ داد. اگر تمایل دارید، می‌توانید این اشکال را با توسعه‌دهندگان گزارش دهید.", + "@reportErrorDescription": {}, + "signInWithPassword": "ورود با رمزعبور", + "@signInWithPassword": {}, + "pleaseTryAgainLaterOrChooseDifferentServer": "لطفا بعدا تلاش کنید یا سرور دیگری انتخاب کنید.", + "@pleaseTryAgainLaterOrChooseDifferentServer": {}, + "notAnImage": "یک فایل تصویری نیست.", + "@notAnImage": {}, + "alwaysUse24HourFormat": "false", + "@alwaysUse24HourFormat": { + "description": "Set to true to always display time of day in 24 hour format." + }, + "setCustomPermissionLevel": "تنظیم سطح دسترسی سفارشی", + "@setCustomPermissionLevel": {}, + "setPermissionsLevelDescription": "لطفاً نقش از پیش تعریف‌شده‌ای را انتخاب کنید یا سطح دسترسی سفارشی بین ۰ تا ۱۰۰ وارد کنید.", + "@setPermissionsLevelDescription": {}, + "ignoreUser": "چشم‌پوشی از کاربر", + "@ignoreUser": {}, + "normalUser": "کاربر عادی", + "@normalUser": {}, + "importNow": "اکنون وارد کنید", + "@importNow": {}, + "importEmojis": "وارد کردن شکلک‌ها", + "@importEmojis": {}, + "importFromZipFile": "وارد کردن از پرونده زیپ", + "@importFromZipFile": {}, + "exportEmotePack": "صادر کردن بسته شکلک به‌صورت زیپ", + "@exportEmotePack": {}, + "replace": "جایگزین کردن", + "@replace": {}, + "aboutHomeserver": "درباره {homeserver}", + "@aboutHomeserver": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "addChatDescription": "افزودن توضیح گپ...", + "@addChatDescription": {}, + "commandHint_roomupgrade": "ارتقای این اتاق به نگارش مشخص‌شده", + "@commandHint_roomupgrade": {}, + "appLockDescription": "قفل کردن برنامه با رمز کوتاه هنگام عدم استفاده", + "@appLockDescription": {}, + "sendTypingNotifications": "فرستادن آگاه‌سازهای نوشتن", + "@sendTypingNotifications": {}, + "swipeRightToLeftToReply": "کشیدن از راست به چپ برای پاسخ", + "@swipeRightToLeftToReply": {}, + "countChatsAndCountParticipants": "{chats} گپ و {participants} شرکت‌کننده", + "@countChatsAndCountParticipants": { + "type": "String", + "placeholders": { + "chats": { + "type": "int" + }, + "participants": { + "type": "int" + } + } + }, + "noMoreChatsFound": "گپ دیگری پیدا نشد...", + "@noMoreChatsFound": {}, + "noChatsFoundHere": "اینجا هنوز گپی پیدا نشد. با استفاده از دکمه زیر گپ جدیدی با کسی شروع کنید. ⤵️", + "@noChatsFoundHere": {}, + "joinedChats": "گپ‌های پیوسته", + "@joinedChats": {}, + "unread": "خوانده‌نشده", + "@unread": {}, + "space": "فضا", + "@space": {}, + "spaces": "فضاها", + "@spaces": {}, + "checkList": "فهرست بررسی", + "@checkList": {}, + "countInvited": "{count} دعوت‌شده", + "@countInvited": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "createGroup": "ساختن گروه", + "@createGroup": {}, + "chatPermissions": "دسترسی‌های گپ", + "@chatPermissions": {}, + "emoteKeyboardNoRecents": "شکلک‌هایی که به تازگی استفاده‌شده اینجا نمایش داده میشوند...", + "@emoteKeyboardNoRecents": { + "type": "String", + "placeholders": {} + }, + "globalChatId": "شناسه گپ سراسری", + "@globalChatId": {}, + "accessAndVisibility": "دسترسی و قابلیت دید", + "@accessAndVisibility": {}, + "accessAndVisibilityDescription": "چه کسی اجازه پیوستن به این گپ را دارد و گپ چگونه قابل کشف است.", + "@accessAndVisibilityDescription": {}, + "calls": "تماس‌ها", + "@calls": {}, + "customEmojisAndStickers": "شکلک‌ها و برچسب‌های سفارشی", + "@customEmojisAndStickers": {}, + "customEmojisAndStickersBody": "افزودن یا هم‌رسانی شکلک‌ها یا برچسب‌های سفارشی که در هر گپ قابل استفاده‌اند.", + "@customEmojisAndStickersBody": {}, + "chatDescription": "توضیح گپ", + "@chatDescription": {}, + "chatDescriptionHasBeenChanged": "توضیح گپ تغییر کرد", + "@chatDescriptionHasBeenChanged": {}, + "hideRedactedMessages": "پنهان کردن پیام‌های ویرایش‌شده", + "@hideRedactedMessages": {}, + "hideRedactedMessagesBody": "اگر کسی پیامی را ویرایش کند، دیگر نمیتوان آن پیام را در گپ دید.", + "@hideRedactedMessagesBody": {}, + "hideInvalidOrUnknownMessageFormats": "پنهان کردن قالب‌های پیام نامعتبر یا ناشناخته", + "@hideInvalidOrUnknownMessageFormats": {}, + "block": "مسدود کردن", + "@block": {}, + "blockedUsers": "کاربران مسدود‌شده", + "@blockedUsers": {}, + "blockListDescription": "میتوانید کاربرانی که مزاحم شما هستند را مسدود کنید. از کاربران موجود در فهرست مسدود شخصی، پیام یا دعوت به اتاق دریافت نخواهید کرد.", + "@blockListDescription": {}, + "blockUsername": "چشم‌پوشی از نام کاربری", + "@blockUsername": {}, + "inviteContactToGroupQuestion": "آیا میخواهید {contact} را به گپ «{groupName}» دعوت کنید؟", + "@inviteContactToGroupQuestion": {}, + "noChatDescriptionYet": "هنوز توضیح گپی ساخته نشده است.", + "@noChatDescriptionYet": {}, + "tryAgain": "تلاش دوباره", + "@tryAgain": {}, + "invalidServerName": "نام سرور نامعتبر", + "@invalidServerName": {}, + "redactMessageDescription": "پیام برای همه شرکت‌کنندگان در این گفتگو ویرایش خواهد شد. این کار برگشت‌ناپذیر است.", + "@redactMessageDescription": {}, + "optionalRedactReason": "(اختیاری) دلیل ویرایش این پیام...", + "@optionalRedactReason": {}, + "messagesStyle": "پیام‌ها:", + "@messagesStyle": {}, + "shareInviteLink": "هم‌رسانی پیوند دعوت", + "@shareInviteLink": {}, + "hideMemberChangesInPublicChats": "پنهان کردن تغییرات اعضا در گپ‌های عمومی", + "@hideMemberChangesInPublicChats": {}, + "hideMemberChangesInPublicChatsBody": "برای بهبود خوانایی، اینکه کسی به گپ عمومی پیوست یا آن را ترک کرد در خط زمانی گپ نمایش داده نشود.", + "@hideMemberChangesInPublicChatsBody": {}, + "overview": "دید کلی", + "@overview": {}, + "notifyMeFor": "برایم آگاه‌ساز بفرست برای", + "@notifyMeFor": {}, + "passwordRecoverySettings": "تنظیمات بازیابی گذرواژه", + "@passwordRecoverySettings": {}, + "redactedBy": "ویرایش‌شده به‌دست {username}", + "@redactedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "directChat": "گپ مستقیم", + "@directChat": {}, + "redactedByBecause": "ویرایش‌شده به‌دست {username} زیرا: «{reason}»", + "@redactedByBecause": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "reason": { + "type": "String" + } + } + }, + "sendImages": "فرستادن {count} تصویر", + "@sendImages": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "setChatDescription": "تنظیم توضیح گپ", + "@setChatDescription": {}, + "presenceStyle": "حضور:", + "@presenceStyle": { + "type": "String", + "placeholders": {} + }, + "presencesToggle": "نمایش پیام‌های وضعیت از دیگر کاربران", + "@presencesToggle": { + "type": "String", + "placeholders": {} + }, + "synchronizingPleaseWaitCounter": " در حال همگام‌سازی... ({percentage}%)", + "@synchronizingPleaseWaitCounter": { + "type": "String", + "placeholders": { + "percentage": { + "type": "String" + } + } + }, + "youInvitedToBy": "📩 شما با پیوند دعوت شده‌اید به:\n{alias}", + "@youInvitedToBy": { + "placeholders": { + "alias": { + "type": "String" + } + } + }, + "invitedBy": "📩 دعوت‌شده توسط {user}", + "@invitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "hasKnocked": "🚪 {user} در زده است", + "@hasKnocked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "usersMustKnock": "کاربران باید در بزنند", + "@usersMustKnock": {}, + "noOneCanJoin": "هیچ‌کس نمیتواند بپیوندد", + "@noOneCanJoin": {}, + "userWouldLikeToChangeTheChat": "{user} مایل به پیوستن به گپ است.", + "@userWouldLikeToChangeTheChat": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "noPublicLinkHasBeenCreatedYet": "هنوز پیوند عمومی ساخته نشده است", + "@noPublicLinkHasBeenCreatedYet": {}, + "knock": "در زدن", + "@knock": {}, + "hidePresences": "پنهان کردن فهرست وضعیت؟", + "@hidePresences": {}, + "signInWith": "ورود با {provider}", + "@signInWith": { + "type": "String", + "placeholders": { + "provider": { + "type": "String" + } + } + }, + "profileNotFound": "کاربر در سرور پیدا نشد. شاید مشکل اتصال وجود دارد یا کاربر وجود ندارد.", + "@profileNotFound": {}, + "setTheme": "تنظیم پوسته:", + "@setTheme": {}, + "setColorTheme": "تنظیم پوسته رنگی:", + "@setColorTheme": {}, + "invite": "دعوت", + "@invite": {}, + "inviteGroupChat": "📨 دعوت به گپ گروهی", + "@inviteGroupChat": {}, + "invitePrivateChat": "📨 دعوت به گپ خصوصی", + "@invitePrivateChat": {}, + "invalidInput": "ورودی نامعتبر!", + "@invalidInput": {}, + "wrongPinEntered": "رمز کوتاه نادرست وارد شد! {seconds} ثانیه دیگر دوباره تلاش کنید...", + "@wrongPinEntered": { + "type": "String", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "pleaseEnterANumber": "لطفاً عددی بزرگ‌تر از ۰ وارد کنید", + "@pleaseEnterANumber": {}, + "archiveRoomDescription": "گپ به بایگانی خواهد رفت. کاربران دیگر میتوانند ببینند که شما گپ را ترک کرده‌اید.", + "@archiveRoomDescription": {}, + "roomUpgradeDescription": "گپ با نگارش جدید اتاق بازسازی خواهد شد. به همه شرکت‌کنندگان آگاهی‌رسانی میشود که باید به گپ جدید بروند. داده‌های بیشتر درباره نگارش‌های اتاق در https://spec.matrix.org/latest/rooms/", + "@roomUpgradeDescription": {}, + "removeDevicesDescription": "از این دستگاه خارج خواهید شد و دیگر نمیتوانید پیام دریافت کنید.", + "@removeDevicesDescription": {}, + "banUserDescription": "کاربر از گپ محروم خواهد شد و تا زمانی که محرومیت برداشته نشود، نمیتواند دوباره وارد گپ شود.", + "@banUserDescription": {}, + "unbanUserDescription": "کاربر در صورت تلاش دوباره میتواند وارد گپ شود.", + "@unbanUserDescription": {}, + "kickUserDescription": "کاربر از گپ بیرون میشود اما محروم نمیشود. در گپ‌های عمومی، کاربر میتواند هر زمان دوباره بپیوندد.", + "@kickUserDescription": {}, + "makeAdminDescription": "پس از مدیر کردن این کاربر، ممکن است نتوانید این کار را لغو کنید، زیرا آن‌ها همان دسترسی‌های شما را خواهند داشت.", + "@makeAdminDescription": {}, + "pushNotificationsNotAvailable": "آگاه‌سازهای فشاری در دسترس نیستند", + "@pushNotificationsNotAvailable": {}, + "learnMore": "بیشتر بدانید", + "@learnMore": {}, + "yourGlobalUserIdIs": "شناسه کاربری سراسری شما: ", + "@yourGlobalUserIdIs": {}, + "noUsersFoundWithQuery": "متأسفانه کاربری با «{query}» پیدا نشد. لطفاً بررسی کنید که آیا اشتباه نوشتاری دارید.", + "@noUsersFoundWithQuery": { + "type": "String", + "placeholders": { + "query": { + "type": "String" + } + } + }, + "knocking": "در زدن", + "@knocking": {}, + "chatCanBeDiscoveredViaSearchOnServer": "گپ با جستجو در {server} قابل کشف است", + "@chatCanBeDiscoveredViaSearchOnServer": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "searchChatsRooms": "جستجو برای #گپ‌ها، @کاربران...", + "@searchChatsRooms": {}, + "nothingFound": "چیزی پیدا نشد...", + "@nothingFound": {}, + "groupName": "نام گروه", + "@groupName": {}, + "createGroupAndInviteUsers": "ساختن گروه و دعوت کاربران", + "@createGroupAndInviteUsers": {}, + "groupCanBeFoundViaSearch": "گروه با جستجو قابل یافتن است", + "@groupCanBeFoundViaSearch": {}, + "wrongRecoveryKey": "متأسفیم... به نظر میرسد این کلید بازیابی درست نباشد.", + "@wrongRecoveryKey": {}, + "startConversation": "آغاز گفتگو", + "@startConversation": {}, + "commandHint_sendraw": "فرستادن JSON خام", + "@commandHint_sendraw": {}, + "databaseMigrationTitle": "پایگاه داده بهینه‌سازی شد", + "@databaseMigrationTitle": {}, + "databaseMigrationBody": "لطفاً صبر کنید. این ممکن است لحظه‌ای طول بکشد.", + "@databaseMigrationBody": {}, + "leaveEmptyToClearStatus": "برای پاک کردن وضعیت، خالی بگذارید.", + "@leaveEmptyToClearStatus": {}, + "select": "انتخاب", + "@select": {}, + "searchForUsers": "جستجو برای @کاربران...", + "@searchForUsers": {}, + "pleaseEnterYourCurrentPassword": "لطفاً گذرواژه کنونی خود را وارد کنید", + "@pleaseEnterYourCurrentPassword": {}, + "newPassword": "گذرواژه جدید", + "@newPassword": {}, + "pleaseChooseAStrongPassword": "لطفاً یک گذرواژه قوی انتخاب کنید", + "@pleaseChooseAStrongPassword": {}, + "passwordsDoNotMatch": "گذرواژه‌ها هم‌خوانی ندارند", + "@passwordsDoNotMatch": {}, + "passwordIsWrong": "گذرواژه واردشده نادرست است", + "@passwordIsWrong": {}, + "publicLink": "پیوند عمومی", + "@publicLink": {}, + "publicChatAddresses": "نشانی‌های گپ عمومی", + "@publicChatAddresses": {}, + "createNewAddress": "ساختن نشانی جدید", + "@createNewAddress": {}, + "joinSpace": "پیوستن به فضا", + "@joinSpace": {}, + "publicSpaces": "فضاهای عمومی", + "@publicSpaces": {}, + "addChatOrSubSpace": "افزودن گپ یا زیرفضا", + "@addChatOrSubSpace": {}, + "subspace": "زیرفضا", + "@subspace": {}, + "decline": "نپذیرفتن", + "@decline": {}, + "thisDevice": "این دستگاه:", + "@thisDevice": {}, + "userRole": "نقش کاربر", + "@userRole": {}, + "minimumPowerLevel": "{level} کمینه سطح دسترسی است.", + "@minimumPowerLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "String" + } + } + }, + "searchIn": "جستجو در گپ «{chat}»...", + "@searchIn": { + "type": "String", + "placeholders": { + "chat": { + "type": "String" + } + } + }, + "searchMore": "جستجوی بیشتر...", + "@searchMore": {}, + "gallery": "نگارخانه", + "@gallery": {}, + "files": "پرونده‌ها", + "@files": {}, + "databaseBuildErrorBody": "ناتوانی در ساخت پایگاه داده SQLite. برنامه اکنون سعی میکند از پایگاه داده قدیمی استفاده کند. لطفاً این خطا را به توسعه‌دهندگان در {url} گزارش دهید. پیام خطا: {error}", + "@databaseBuildErrorBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "sessionLostBody": "نشست شما گم شده است. لطفاً این خطا را به توسعه‌دهندگان در {url} گزارش دهید. پیام خطا: {error}", + "@sessionLostBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "restoreSessionBody": "برنامه اکنون سعی میکند نشست شما را از پشتیبان بازیابی کند. لطفاً این خطا را به توسعه‌دهندگان در {url} گزارش دهید. پیام خطا: {error}", + "@restoreSessionBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "forwardMessageTo": "هدایت پیام به {roomName}؟", + "@forwardMessageTo": { + "type": "String", + "placeholders": { + "roomName": { + "type": "String" + } + } + }, + "sendReadReceipts": "فرستادن رسیدهای خواندن", + "@sendReadReceipts": {}, + "sendTypingNotificationsDescription": "دیگر شرکت‌کنندگان در گپ میتوانند ببینند که شما در حال تایپ پیام جدید هستید.", + "@sendTypingNotificationsDescription": {}, + "sendReadReceiptsDescription": "دیگر شرکت‌کنندگان در گپ میتوانند ببینند که شما پیام را خوانده‌اید.", + "@sendReadReceiptsDescription": {}, + "formattedMessages": "پیام‌های قالب‌بندی‌شده", + "@formattedMessages": {}, + "formattedMessagesDescription": "نمایش محتوای پیام غنی مانند متن پررنگ با استفاده از مارک‌داون.", + "@formattedMessagesDescription": {}, + "verifyOtherUser": "🔐 بازبینی کاربر دیگر", + "@verifyOtherUser": {}, + "verifyOtherUserDescription": "اگر کاربر دیگری را بازبینی کنید، میتوانید مطمئن شوید که واقعاً با چه کسی در حال نوشتن هستید. 💪\n\nهنگام شروع بازبینی، شما و کاربر دیگر پنجره‌ای در برنامه خواهید دید. در آنجا مجموعه‌ای از شکلک‌ها یا اعداد را مشاهده میکنید که باید با یکدیگر مقایسه کنید.\n\nبهترین راه برای این کار دیدار حضوری یا شروع تماس تصویری است. 👭", + "@verifyOtherUserDescription": {}, + "verifyOtherDevice": "🔐 بازبینی دستگاه دیگر", + "@verifyOtherDevice": {}, + "verifyOtherDeviceDescription": "هنگام بازبینی دستگاه دیگر، آن دستگاه‌ها میتوانند کلیدها را تبادل کنند و امنیت کلی شما را افزایش دهند. 💪 هنگام شروع بازبینی، پنجره‌ای در برنامه روی هر دو دستگاه ظاهر میشود. در آنجا مجموعه‌ای از شکلک‌ها یا اعداد را مشاهده میکنید که باید با یکدیگر مقایسه کنید. بهتر است پیش از شروع بازبینی، هر دو دستگاه در دسترس باشند. 🤳", + "@verifyOtherDeviceDescription": {}, + "acceptedKeyVerification": "{sender} بازبینی کلید را پذیرفت", + "@acceptedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "canceledKeyVerification": "{sender} بازبینی کلید را رد کرد", + "@canceledKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "completedKeyVerification": "{sender} بازبینی کلید را کامل کرد", + "@completedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "isReadyForKeyVerification": "{sender} برای بازبینی کلید آماده است", + "@isReadyForKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "requestedKeyVerification": "{sender} درخواست بازبینی کلید کرد", + "@requestedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "startedKeyVerification": "{sender} بازبینی کلید را آغاز کرد", + "@startedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "transparent": "شفاف", + "@transparent": {}, + "incomingMessages": "پیام‌های دریافتی", + "@incomingMessages": {}, + "stickers": "برچسب‌ها", + "@stickers": {}, + "discover": "کشف", + "@discover": {}, + "commandHint_ignore": "چشم‌پوشی از شناسه ماتریکس داده‌شده", + "@commandHint_ignore": {}, + "commandHint_unignore": "لغو چشم‌پوشی از شناسه ماتریکس داده‌شده", + "@commandHint_unignore": {}, + "unreadChatsInApp": "{appname}: {unread} گپ خوانده‌نشده", + "@unreadChatsInApp": { + "type": "String", + "placeholders": { + "appname": { + "type": "String" + }, + "unread": { + "type": "String" + } + } + }, + "noDatabaseEncryption": "رمزنگاری پایگاه داده در این سکو پشتیبانی نمیشود", + "@noDatabaseEncryption": {}, + "thereAreCountUsersBlocked": "اکنون {count} کاربر مسدود شده‌اند.", + "@thereAreCountUsersBlocked": { + "type": "String", + "count": {} + }, + "restricted": "محدودشده", + "@restricted": {}, + "knockRestricted": "در زدن محدود", + "@knockRestricted": {}, + "goToSpace": "رفتن به فضا: {space}", + "@goToSpace": { + "type": "String", + "space": {} + }, + "markAsUnread": "علامت‌گذاری به‌عنوان خوانده‌نشده", + "@markAsUnread": {}, + "userLevel": "{level} - کاربر", + "@userLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "moderatorLevel": "{level} - ناظر", + "@moderatorLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "adminLevel": "{level} - مدیر", + "@adminLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "changeGeneralChatSettings": "تغییر تنظیمات عمومی گپ", + "@changeGeneralChatSettings": {}, + "inviteOtherUsers": "دعوت کاربران دیگر به این گپ", + "@inviteOtherUsers": {}, + "changeTheChatPermissions": "تغییر دسترسی‌های گپ", + "@changeTheChatPermissions": {}, + "changeTheVisibilityOfChatHistory": "تغییر قابلیت دید تاریخچه گپ", + "@changeTheVisibilityOfChatHistory": {}, + "changeTheCanonicalRoomAlias": "تغییر نشانی اصلی گپ عمومی", + "@changeTheCanonicalRoomAlias": {}, + "sendRoomNotifications": "فرستادن آگاه‌سازهای @room", + "@sendRoomNotifications": {}, + "changeTheDescriptionOfTheGroup": "تغییر توضیح گپ", + "@changeTheDescriptionOfTheGroup": {}, + "chatPermissionsDescription": "مشخص کنید کدام سطح دسترسی برای اقدامات خاصی در این گپ لازم است. سطح‌های دسترسی ۰، ۵۰ و ۱۰۰ معمولاً نشان‌دهنده کاربران، ناظران و مدیران هستند، اما هر درجه‌بندی ممکن است.", + "@chatPermissionsDescription": {}, + "updateInstalled": "🎉 به‌روزرسانی {version} نصب شد!", + "@updateInstalled": { + "type": "String", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "changelog": "فهرست تغییرات", + "@changelog": {}, + "sendCanceled": "فرستادن رد شد", + "@sendCanceled": {}, + "loginWithMatrixId": "ورود با شناسه ماتریکس", + "@loginWithMatrixId": {}, + "discoverHomeservers": "کشف سرورهای خانگی", + "@discoverHomeservers": {}, + "whatIsAHomeserver": "سرور خانگی چیست؟", + "@whatIsAHomeserver": {}, + "homeserverDescription": "همه داده‌های شما روی سرور خانگی نگه‌داری میشوند، مانند یک فراهم‌کننده رایانامه. میتوانید سرور خانگی مورد نظر خود را انتخاب کنید، در حالی که همچنان میتوانید با هر کسی گفتگو کنید. اطلاعات بیشتر در https://matrix.org.", + "@homeserverDescription": {}, + "doesNotSeemToBeAValidHomeserver": "به نظر نمیرسد سرور خانگی سازگاری داشته باشد. نشانی اشتباه است؟", + "@doesNotSeemToBeAValidHomeserver": {}, + "calculatingFileSize": "در حال محاسبه اندازه پرونده...", + "@calculatingFileSize": {}, + "prepareSendingAttachment": "آماده‌سازی برای فرستادن پیوست...", + "@prepareSendingAttachment": {}, + "sendingAttachment": "در حال فرستادن پیوست...", + "@sendingAttachment": {}, + "generatingVideoThumbnail": "در حال تولید تصویر کوچک ویدئو...", + "@generatingVideoThumbnail": {}, + "compressVideo": "در حال فشرده‌سازی ویدئو...", + "@compressVideo": {}, + "sendingAttachmentCountOfCount": "در حال فرستادن پیوست {index} از {length}...", + "@sendingAttachmentCountOfCount": { + "type": "integer", + "placeholders": { + "index": { + "type": "int" + }, + "length": { + "type": "int" + } + } + }, + "serverLimitReached": "محدودیت سرور رسیده است! {seconds} ثانیه صبر کنید...", + "@serverLimitReached": { + "type": "integer", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "oneOfYourDevicesIsNotVerified": "یکی از دستگاه‌های شما بازبینی نشده است", + "@oneOfYourDevicesIsNotVerified": {}, + "noticeChatBackupDeviceVerification": "توجه: وقتی همه دستگاه‌های خود را به پشتیبان گپ متصل کنید، به‌صورت خودکار بازبینی میشوند.", + "@noticeChatBackupDeviceVerification": {}, + "continueText": "ادامه", + "@continueText": {}, + "welcomeText": "درود درود 👋 این فلافی‌چت است. میتوانید به هر سرور خانگی سازگار با https://matrix.org وارد شوید و با هر کسی گپ بزنید. این یک شبکه پیام‌رسانی غیرمتمرکز بزرگ است!", + "@welcomeText": {}, + "blur": "محو کردن:", + "@blur": {}, + "opacity": "شفافیت:", + "@opacity": {}, + "setWallpaper": "تنظیم کاغذدیواری", + "@setWallpaper": {}, + "manageAccount": "مدیریت حساب", + "@manageAccount": {}, + "noContactInformationProvided": "سرور هیچ اطلاعات تماس معتبری نمیدهد", + "@noContactInformationProvided": {}, + "contactServerAdmin": "تماس با مدیر سرور", + "@contactServerAdmin": {}, + "contactServerSecurity": "تماس با امنیت سرور", + "@contactServerSecurity": {}, + "supportPage": "صفحه پشتیبانی", + "@supportPage": {}, + "serverInformation": "درباره سرور:", + "@serverInformation": {}, + "name": "نام", + "@name": {}, + "version": "نگارش", + "@version": {}, + "website": "وبگاه", + "@website": {}, + "compress": "فشرده‌سازی", + "@compress": {}, + "boldText": "متن درشت", + "@boldText": {}, + "italicText": "متن کج", + "@italicText": {}, + "strikeThrough": "خط‌خورده", + "@strikeThrough": {}, + "pleaseFillOut": "لطفاً پر کنید", + "@pleaseFillOut": {}, + "invalidUrl": "نشانی نامعتبر", + "@invalidUrl": {}, + "addLink": "افزودن پیوند", + "@addLink": {}, + "unableToJoinChat": "ناتوانی در پیوستن به گپ. شاید طرف مقابل گفتگو را بسته است.", + "@unableToJoinChat": {}, + "previous": "پیشین", + "@previous": {}, + "otherPartyNotLoggedIn": "طرف مقابل اکنون وارد نشده است و بنابراین نمیتواند پیام دریافت کند!", + "@otherPartyNotLoggedIn": {}, + "appWantsToUseForLogin": "برای ورود از '{server}' استفاده کنید", + "@appWantsToUseForLogin": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "appWantsToUseForLoginDescription": "شما بدین‌وسیله به برنامه و وبگاه اجازه میدهید اطلاعات شما را هم‌رسانی کنند.", + "@appWantsToUseForLoginDescription": {}, + "open": "باز کردن", + "@open": {}, + "waitingForServer": "در انتظار سرور...", + "@waitingForServer": {}, + "appIntroduction": "فلافی‌چت به شما امکان گپ با دوستانتان در پیام‌رسان‌های مختلف را میدهد. اطلاعات بیشتر در https://matrix.org یا فقط روی *ادامه* بزنید.", + "@appIntroduction": {}, + "newChatRequest": "📩 درخواست گپ جدید", + "@newChatRequest": {}, + "contentNotificationSettings": "تنظیمات آگاه‌ساز محتوا", + "@contentNotificationSettings": {}, + "generalNotificationSettings": "تنظیمات آگاه‌ساز عمومی", + "@generalNotificationSettings": {}, + "roomNotificationSettings": "تنظیمات آگاه‌ساز اتاق", + "@roomNotificationSettings": {}, + "userSpecificNotificationSettings": "تنظیمات آگاه‌ساز خاص کاربر", + "@userSpecificNotificationSettings": {}, + "otherNotificationSettings": "سایر تنظیمات آگاه‌ساز", + "@otherNotificationSettings": {}, + "notificationRuleContainsUserName": "دارای نام کاربری", + "@notificationRuleContainsUserName": {}, + "notificationRuleContainsUserNameDescription": "وقتی پیامی حاوی نام کاربری باشد، کاربر را آگاه میکند.", + "@notificationRuleContainsUserNameDescription": {}, + "notificationRuleMaster": "بی‌صدا کردن همه آگاه‌سازها", + "@notificationRuleMaster": {}, + "notificationRuleMasterDescription": "از قوانین دیگر چشم‌پوشی میکند و همه آگاه‌سازها را غیرفعال میکند.", + "@notificationRuleMasterDescription": {}, + "notificationRuleSuppressNotices": "سرکوب پیام‌های خودکار", + "@notificationRuleSuppressNotices": {}, + "notificationRuleSuppressNoticesDescription": "آگاه‌سازهای کارخواه‌های خودکار مانند ربات‌ها را سرکوب میکند.", + "@notificationRuleSuppressNoticesDescription": {}, + "notificationRuleInviteForMe": "دعوت برای من", + "@notificationRuleInviteForMe": {}, + "notificationRuleInviteForMeDescription": "وقتی کاربر به اتاقی دعوت میشود، او را آگاه میکند.", + "@notificationRuleInviteForMeDescription": {}, + "notificationRuleMemberEvent": "رویداد عضویت", + "@notificationRuleMemberEvent": {}, + "notificationRuleMemberEventDescription": "آگاه‌سازهای رویدادهای عضویت را سرکوب میکند.", + "@notificationRuleMemberEventDescription": {}, + "notificationRuleIsUserMention": "نام‌بردن از کاربر", + "@notificationRuleIsUserMention": {}, + "notificationRuleIsUserMentionDescription": "وقتی در پیامی مستقیماً از کاربر نام برده میشود، او را آگاه میکند.", + "@notificationRuleIsUserMentionDescription": {}, + "notificationRuleContainsDisplayName": "دارای نام نمایشی", + "@notificationRuleContainsDisplayName": {}, + "notificationRuleContainsDisplayNameDescription": "وقتی پیامی حاوی نام نمایشی کاربر باشد، کاربر را آگاه میکند.", + "@notificationRuleContainsDisplayNameDescription": {}, + "notificationRuleIsRoomMention": "نام‌بردن از اتاق", + "@notificationRuleIsRoomMention": {}, + "notificationRuleIsRoomMentionDescription": "وقتی نام اتاق ذکر میشود، کاربر را آگاه میکند.", + "@notificationRuleIsRoomMentionDescription": {}, + "notificationRuleRoomnotif": "آگاه‌ساز اتاق", + "@notificationRuleRoomnotif": {}, + "notificationRuleRoomnotifDescription": "وقتی پیامی حاوی '@room' باشد، کاربر را آگاه میکند.", + "@notificationRuleRoomnotifDescription": {}, + "notificationRuleTombstone": "سنگ قبر", + "@notificationRuleTombstone": {}, + "notificationRuleTombstoneDescription": "کاربر را از پیام‌های غیرفعال‌سازی اتاق آگاه میکند.", + "@notificationRuleTombstoneDescription": {}, + "notificationRuleReaction": "واکنش", + "@notificationRuleReaction": {}, + "notificationRuleReactionDescription": "آگاه‌سازهای واکنش‌ها را سرکوب میکند.", + "@notificationRuleReactionDescription": {}, + "notificationRuleRoomServerAcl": "ACL سرور اتاق", + "@notificationRuleRoomServerAcl": {}, + "notificationRuleRoomServerAclDescription": "آگاه‌سازهای فهرست‌های کنترل دسترسی سرور اتاق (ACL) را سرکوب میکند.", + "@notificationRuleRoomServerAclDescription": {}, + "notificationRuleSuppressEdits": "سرکوب ویرایش‌ها", + "@notificationRuleSuppressEdits": {}, + "notificationRuleSuppressEditsDescription": "آگاه‌سازهای پیام‌های ویرایش‌شده را سرکوب میکند.", + "@notificationRuleSuppressEditsDescription": {}, + "notificationRuleCall": "تماس", + "@notificationRuleCall": {}, + "notificationRuleCallDescription": "درباره تماس‌ها کاربر را آگاه میکند.", + "@notificationRuleCallDescription": {}, + "notificationRuleEncryptedRoomOneToOne": "اتاق رمزنگاری‌شده یک‌به‌یک", + "@notificationRuleEncryptedRoomOneToOne": {}, + "notificationRuleEncryptedRoomOneToOneDescription": "کاربر را از پیام‌ها در اتاق‌های رمزنگاری‌شده یک‌به‌یک آگاه میکند.", + "@notificationRuleEncryptedRoomOneToOneDescription": {}, + "notificationRuleRoomOneToOne": "اتاق یک‌به‌یک", + "@notificationRuleRoomOneToOne": {}, + "notificationRuleRoomOneToOneDescription": "کاربر را از پیام‌ها در اتاق‌های یک‌به‌یک آگاه میکند.", + "@notificationRuleRoomOneToOneDescription": {}, + "notificationRuleMessage": "پیام", + "@notificationRuleMessage": {}, + "notificationRuleMessageDescription": "کاربر را از پیام‌های عمومی آگاه میکند.", + "@notificationRuleMessageDescription": {}, + "notificationRuleEncrypted": "رمزنگاری‌شده", + "@notificationRuleEncrypted": {}, + "notificationRuleEncryptedDescription": "کاربر را از پیام‌ها در اتاق‌های رمزنگاری‌شده آگاه میکند.", + "@notificationRuleEncryptedDescription": {}, + "notificationRuleJitsi": "جیتسی", + "@notificationRuleJitsi": {}, + "notificationRuleJitsiDescription": "کاربر را از رویدادهای ابزارک جیتسی آگاه میکند.", + "@notificationRuleJitsiDescription": {}, + "notificationRuleServerAcl": "سرکوب رویدادهای ACL سرور", + "@notificationRuleServerAcl": {}, + "notificationRuleServerAclDescription": "آگاه‌سازهای رویدادهای ACL سرور را سرکوب میکند.", + "@notificationRuleServerAclDescription": {}, + "unknownPushRule": "قانون ناشناخته آگاه‌ساز '{rule}'", + "@unknownPushRule": { + "type": "String", + "placeholders": { + "rule": { + "type": "String" + } + } + }, + "sentVoiceMessage": "🎙️ {duration} - پیام صوتی از {sender}", + "@sentVoiceMessage": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "duration": { + "type": "String" + } + } + }, + "deletePushRuleCanNotBeUndone": "اگر این تنظیم آگاه‌ساز را پاک کنید، این کار برگشت‌ناپذیر است.", + "@deletePushRuleCanNotBeUndone": {}, + "more": "بیشتر", + "@more": {}, + "shareKeysWith": "هم‌رسانی کلیدها با...", + "@shareKeysWith": {}, + "shareKeysWithDescription": "کدام دستگاه‌ها باید مورد اعتماد باشند تا بتوانند پیام‌های شما را در گپ‌های رمزنگاری‌شده بخوانند؟", + "@shareKeysWithDescription": {}, + "allDevices": "همه دستگاه‌ها", + "@allDevices": {}, + "crossVerifiedDevicesIfEnabled": "دستگاه‌های بازبینی‌شده متقابل اگر فعال باشد", + "@crossVerifiedDevicesIfEnabled": {}, + "crossVerifiedDevices": "دستگاه‌های بازبینی‌شده متقابل", + "@crossVerifiedDevices": {}, + "verifiedDevicesOnly": "فقط دستگاه‌های بازبینی‌شده", + "@verifiedDevicesOnly": {}, + "takeAPhoto": "گرفتن عکس", + "@takeAPhoto": {}, + "recordAVideo": "ضبط ویدئو", + "@recordAVideo": {}, + "optionalMessage": "(اختیاری) پیام...", + "@optionalMessage": {}, + "notSupportedOnThisDevice": "در این دستگاه پشتیبانی نمیشود", + "@notSupportedOnThisDevice": {}, + "enterNewChat": "ورود به گپ جدید", + "@enterNewChat": {}, + "approve": "پذیرفتن", + "@approve": {}, + "youHaveKnocked": "شما در زده‌اید", + "@youHaveKnocked": {}, + "pleaseWaitUntilInvited": "لطفاً اکنون صبر کنید تا کسی از اتاق شما را دعوت کند.", + "@pleaseWaitUntilInvited": {}, + "commandHint_logout": "خروج از دستگاه کنونی", + "@commandHint_logout": {}, + "commandHint_logoutall": "خروج از همه دستگاه‌های فعال", + "@commandHint_logoutall": {}, + "displayNavigationRail": "نمایش نوار ناوبری در تلفن همراه", + "@displayNavigationRail": {}, + "customReaction": "واکنش سفارشی", + "@customReaction": {}, + "moreEvents": "رویدادهای بیشتر", + "@moreEvents": {}, + "initAppError": "خطایی هنگام آغاز برنامه رخ داد", + "@initAppError": {} +} diff --git a/lib/l10n/intl_fi.arb b/lib/l10n/intl_fi.arb new file mode 100644 index 0000000..22b31b1 --- /dev/null +++ b/lib/l10n/intl_fi.arb @@ -0,0 +1,3373 @@ +{ + "repeatPassword": "Salasana uudelleen", + "@repeatPassword": {}, + "about": "Tietoa FluffyChatista", + "@about": { + "type": "String", + "placeholders": {} + }, + "accept": "Hyväksy", + "@accept": { + "type": "String", + "placeholders": {} + }, + "account": "Tili", + "@account": { + "type": "String", + "placeholders": {} + }, + "acceptedTheInvitation": "{username} hyväksyi kutsun", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "activatedEndToEndEncryption": "🔐 {username} otti käyttöön päästä-päähän salauksen", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "archive": "Arkisto", + "@archive": { + "type": "String", + "placeholders": {} + }, + "askSSSSSign": "Voidaksesi allekirjoittaa toisen henkilön, syötä turvavaraston salalause tai palautusavain.", + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "addEmail": "Lisää sähköpostiosoite", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "addToSpace": "Lisää tilaan", + "@addToSpace": {}, + "admin": "Ylläpitäjä", + "@admin": { + "type": "String", + "placeholders": {} + }, + "alias": "alias", + "@alias": { + "type": "String", + "placeholders": {} + }, + "all": "Kaikki", + "@all": { + "type": "String", + "placeholders": {} + }, + "allChats": "Kaikki keskustelut", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "answeredTheCall": "{senderName} vastasi puheluun", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "anyoneCanJoin": "Kuka tahansa voi liittyä", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "appLock": "Sovelluksen lukitus", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "Sallitaanko vieraiden liittyminen", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "areYouSureYouWantToLogout": "Haluatko varmasti kirjautua ulos?", + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "Oletko varma?", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "autoplayImages": "Toista animoidut tarrat ja emojit automaattisesti", + "@autoplayImages": { + "type": "String", + "placeholder": {} + }, + "askVerificationRequest": "Hyväksytäänkö tämä varmennuspyyntö käyttäjältä {username}?", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sendOnEnter": "Lähetä painamalla rivinvaihtonäppäintä", + "@sendOnEnter": {}, + "badServerVersionsException": "Kotipalvelin tukee Matrix Spec versio(it)a:\n{serverVersions}, mutta tämä sovellus tukee vain versio(it)a {supportedVersions}", + "@badServerVersionsException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "badServerLoginTypesException": "Tämä kotipalvelin tukee sisäänkirjautumistapoja: \n{serverVersions},\nmutta tämä sovellus tukee vain -tapoja: \n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "banFromChat": "Anna porttikielto keskusteluun", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "banned": "Porttikiellossa", + "@banned": { + "type": "String", + "placeholders": {} + }, + "bannedUser": "{username} antoi porttikiellon käyttäjälle {targetName}", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "blockDevice": "Estä laite", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "blocked": "Estetty", + "@blocked": { + "type": "String", + "placeholders": {} + }, + "botMessages": "Bottien lähettämät viestit", + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "cancel": "Peruuta", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "changeDeviceName": "Vaihda laitteen nimeä", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "changedTheChatAvatar": "{username} muutti keskustelun kuvaa", + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheChatNameTo": "{username} asetti keskustelun nimeksi: '{chatname}'", + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "changedTheDisplaynameTo": "{username} asetti näyttönimekseen: '{displayname}'", + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "changedTheGuestAccessRules": "{username} muutti vieraspääsyn sääntöjä", + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheGuestAccessRulesTo": "{username} asetti vieraspääsyn säännö(i)ksi: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheHistoryVisibility": "{username} muutti historian näkyvyyttä", + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheHistoryVisibilityTo": "{username} asetti historian näkymissäännöksi: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheJoinRules": "{username} muutti liittymissääntöjä", + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheJoinRulesTo": "{username} asetti liittymissäännöiksi: {joinRules}", + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "changedTheProfileAvatar": "{username} vaihtoi profiilikuvaansa", + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomInvitationLink": "{username} muutti kutsulinkkiä", + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changePassword": "Vaihda salasana", + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "changedTheRoomAliases": "{username} muutti huoneen aliaksia", + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "cantOpenUri": "URI-osoitetta {uri} ei voida avata", + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "changedTheChatDescriptionTo": "{username} asetti keskustelun kuvaukseksi: '{description}'", + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "changedTheChatPermissions": "{username} muutti keskustelun oikeuksia", + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changeTheme": "Vaihda tyyliäsi", + "@changeTheme": { + "type": "String", + "placeholders": {} + }, + "yourChatBackupHasBeenSetUp": "Keskustelujesi varmuuskopiointi on asetettu.", + "@yourChatBackupHasBeenSetUp": {}, + "chatBackup": "Keskustelun varmuuskopiointi", + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "chatBackupDescription": "Vanhat viestisi on suojattu palautusavaimella. Varmistathan ettet hävitä sitä.", + "@chatBackupDescription": { + "type": "String", + "placeholders": {} + }, + "chatDetails": "Keskustelun tiedot", + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "chatHasBeenAddedToThisSpace": "Keskustelu on lisätty tähän tilaan", + "@chatHasBeenAddedToThisSpace": {}, + "chats": "Keskustelut", + "@chats": { + "type": "String", + "placeholders": {} + }, + "chooseAStrongPassword": "Valitse vahva salasana", + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "close": "Sulje", + "@close": { + "type": "String", + "placeholders": {} + }, + "commandHint_html": "Lähetä HTML-muotoiltua tekstiä", + "@commandHint_html": { + "type": "String", + "description": "Usage hint for the command /html" + }, + "commandHint_ban": "Anna syötetylle käyttäjälle porttikielto tähän huoneeseen", + "@commandHint_ban": { + "type": "String", + "description": "Usage hint for the command /ban" + }, + "commandHint_invite": "Kutsu syötetty käyttäjä tähän huoneeseen", + "@commandHint_invite": { + "type": "String", + "description": "Usage hint for the command /invite" + }, + "commandHint_leave": "Poistu tästä huoneesta", + "@commandHint_leave": { + "type": "String", + "description": "Usage hint for the command /leave" + }, + "commandHint_myroomavatar": "Aseta profiilikuvasi tähän huoneeseen (syöttämällä mxc-uri)", + "@commandHint_myroomavatar": { + "type": "String", + "description": "Usage hint for the command /myroomavatar" + }, + "commandHint_myroomnick": "Aseta näyttönimesi vain tässä huoneessa", + "@commandHint_myroomnick": { + "type": "String", + "description": "Usage hint for the command /myroomnick" + }, + "commandHint_op": "Aseta käyttäjän voimataso (oletus: 50)", + "@commandHint_op": { + "type": "String", + "description": "Usage hint for the command /op" + }, + "commandHint_plain": "Lähetä muotoilematonta tekstiä", + "@commandHint_plain": { + "type": "String", + "description": "Usage hint for the command /plain" + }, + "commandHint_react": "Lähetä vastaus reaktiona", + "@commandHint_react": { + "type": "String", + "description": "Usage hint for the command /react" + }, + "create": "Luo", + "@create": { + "type": "String", + "placeholders": {} + }, + "createdTheChat": "{username} loi keskustelun", + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "createNewSpace": "Uusi tila", + "@createNewSpace": { + "type": "String", + "placeholders": {} + }, + "currentlyActive": "Aktiivinen nyt", + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "dateWithoutYear": "{day}.{month}", + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "dateWithYear": "{day}.{month}.{year}", + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "deactivateAccountWarning": "Tämä poistaa tunnuksesi käytöstä. Tätä ei voi kumota! Oletko varma?", + "@deactivateAccountWarning": { + "type": "String", + "placeholders": {} + }, + "defaultPermissionLevel": "Uusien käyttäjien oikeuksien oletustaso", + "@defaultPermissionLevel": { + "type": "String", + "placeholders": {} + }, + "delete": "Poista", + "@delete": { + "type": "String", + "placeholders": {} + }, + "deleteAccount": "Poista tunnus", + "@deleteAccount": { + "type": "String", + "placeholders": {} + }, + "deleteMessage": "Poista viesti", + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "device": "Laite", + "@device": { + "type": "String", + "placeholders": {} + }, + "deviceId": "Laite-ID", + "@deviceId": { + "type": "String", + "placeholders": {} + }, + "devices": "Laitteet", + "@devices": { + "type": "String", + "placeholders": {} + }, + "directChats": "Suorat keskustelut", + "@directChats": { + "type": "String", + "placeholders": {} + }, + "displaynameHasBeenChanged": "Näyttönimi on vaihdettu", + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "downloadFile": "Lataa tiedosto", + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "edit": "Muokkaa", + "@edit": { + "type": "String", + "placeholders": {} + }, + "editBlockedServers": "Muokkaa estettyjä palvelimia", + "@editBlockedServers": { + "type": "String", + "placeholders": {} + }, + "editDisplayname": "Muokkaa näyttönimeä", + "@editDisplayname": { + "type": "String", + "placeholders": {} + }, + "editRoomAliases": "Muokkaa huoneen aliaksia", + "@editRoomAliases": { + "type": "String", + "placeholders": {} + }, + "editRoomAvatar": "Muokkaa huoneen profiilikuvaa", + "@editRoomAvatar": { + "type": "String", + "placeholders": {} + }, + "emoteExists": "Emote on jo olemassa!", + "@emoteExists": { + "type": "String", + "placeholders": {} + }, + "emoteInvalid": "Epäkelpo emote-lyhytkoodi!", + "@emoteInvalid": { + "type": "String", + "placeholders": {} + }, + "emotePacks": "Huoneen emote-paketit", + "@emotePacks": { + "type": "String", + "placeholders": {} + }, + "emoteSettings": "Emote-asetukset", + "@emoteSettings": { + "type": "String", + "placeholders": {} + }, + "emoteShortcode": "Emote-lyhytkoodi", + "@emoteShortcode": { + "type": "String", + "placeholders": {} + }, + "emoteWarnNeedToPick": "Emote-lyhytkoodi ja kuva on valittava!", + "@emoteWarnNeedToPick": { + "type": "String", + "placeholders": {} + }, + "emptyChat": "Tyhjä keskustelu", + "@emptyChat": { + "type": "String", + "placeholders": {} + }, + "enableEncryptionWarning": "Et voi poistaa salausta myöhemmin. Oletko varma?", + "@enableEncryptionWarning": { + "type": "String", + "placeholders": {} + }, + "encryptionNotEnabled": "Salaus ei ole käytössä", + "@encryptionNotEnabled": { + "type": "String", + "placeholders": {} + }, + "endedTheCall": "{senderName} päätti puhelun", + "@endedTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "enterAnEmailAddress": "Syötä sähköposti-osoite", + "@enterAnEmailAddress": { + "type": "String", + "placeholders": {} + }, + "homeserver": "Kotipalvelin", + "@homeserver": {}, + "enterYourHomeserver": "Syötä kotipalvelimesi", + "@enterYourHomeserver": { + "type": "String", + "placeholders": {} + }, + "errorObtainingLocation": "Virhe paikannuksessa: {error}", + "@errorObtainingLocation": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "everythingReady": "Kaikki on valmista!", + "@everythingReady": { + "type": "String", + "placeholders": {} + }, + "extremeOffensive": "Erittäin loukkaavaa", + "@extremeOffensive": { + "type": "String", + "placeholders": {} + }, + "fileName": "Tiedostonimi", + "@fileName": { + "type": "String", + "placeholders": {} + }, + "fromJoining": "Alkaen liittymisestä", + "@fromJoining": { + "type": "String", + "placeholders": {} + }, + "fromTheInvitation": "Alkaen kutsumisesta", + "@fromTheInvitation": { + "type": "String", + "placeholders": {} + }, + "goToTheNewRoom": "Mene uuteen huoneeseen", + "@goToTheNewRoom": { + "type": "String", + "placeholders": {} + }, + "group": "Ryhmä", + "@group": { + "type": "String", + "placeholders": {} + }, + "groupIsPublic": "Ryhmä on julkinen", + "@groupIsPublic": { + "type": "String", + "placeholders": {} + }, + "groups": "Ryhmät", + "@groups": { + "type": "String", + "placeholders": {} + }, + "groupWith": "Ryhmä seuralaisina {displayname}", + "@groupWith": { + "type": "String", + "placeholders": { + "displayname": { + "type": "String" + } + } + }, + "guestsAreForbidden": "Vieraat on kielletty", + "@guestsAreForbidden": { + "type": "String", + "placeholders": {} + }, + "guestsCanJoin": "Vieraat voivat liittyä", + "@guestsCanJoin": { + "type": "String", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "{username} on perunnut käyttäjän {targetName} kutsun", + "@hasWithdrawnTheInvitationFor": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "help": "Apua", + "@help": { + "type": "String", + "placeholders": {} + }, + "hideRedactedEvents": "Piilota poistetut tapahtumat", + "@hideRedactedEvents": { + "type": "String", + "placeholders": {} + }, + "hideUnknownEvents": "Piilota tuntemattomat tapahtumat", + "@hideUnknownEvents": { + "type": "String", + "placeholders": {} + }, + "howOffensiveIsThisContent": "Kuinka loukkaavaa tämä sisältö on?", + "@howOffensiveIsThisContent": { + "type": "String", + "placeholders": {} + }, + "id": "ID", + "@id": { + "type": "String", + "placeholders": {} + }, + "identity": "Identiteetti", + "@identity": { + "type": "String", + "placeholders": {} + }, + "ignore": "Jätä huomioitta", + "@ignore": { + "type": "String", + "placeholders": {} + }, + "ignoredUsers": "Huomiotta jätetyt käyttäjät", + "@ignoredUsers": { + "type": "String", + "placeholders": {} + }, + "inviteContact": "Kutsu yhteystieto", + "@inviteContact": { + "type": "String", + "placeholders": {} + }, + "invited": "Kutsuttu", + "@invited": { + "type": "String", + "placeholders": {} + }, + "invitedUser": "📩 {username} kutsui käyttäjän {targetName}", + "@invitedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "invitedUsersOnly": "Vain kutsutut käyttäjät", + "@invitedUsersOnly": { + "type": "String", + "placeholders": {} + }, + "inviteForMe": "Kutsu minua varten", + "@inviteForMe": { + "type": "String", + "placeholders": {} + }, + "inviteText": "{username} kutsui sinut FluffyChattiin.\n1. Viereaile sivulla: https://fluffychat.im ja asenna sovellus\n2. Rekisteröidy tai kirjaudu sisään\n3. Avaa kutsulinkki:\n{link}", + "@inviteText": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "link": { + "type": "String" + } + } + }, + "kicked": "👞 {username} potki käyttäjän {targetName}", + "@kicked": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickedAndBanned": "🙅 {username} potki ja antoi porttikiellon käyttäjälle {targetName}", + "@kickedAndBanned": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickFromChat": "Potki keskustelusta", + "@kickFromChat": { + "type": "String", + "placeholders": {} + }, + "lastActiveAgo": "Aktiivinen viimeksi: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "String", + "placeholders": { + "localizedTimeShort": { + "type": "String" + } + } + }, + "leave": "Poistu", + "@leave": { + "type": "String", + "placeholders": {} + }, + "leftTheChat": "Poistui keskustelusta", + "@leftTheChat": { + "type": "String", + "placeholders": {} + }, + "license": "Lisenssi", + "@license": { + "type": "String", + "placeholders": {} + }, + "lightTheme": "Vaalea", + "@lightTheme": { + "type": "String", + "placeholders": {} + }, + "loadingPleaseWait": "Ladataan... Hetkinen.", + "@loadingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "loadCountMoreParticipants": "Lataa vielä {count} osallistujaa", + "@loadCountMoreParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "loadMore": "Lataa lisää…", + "@loadMore": { + "type": "String", + "placeholders": {} + }, + "locationDisabledNotice": "Sijaintipalvelut ovat poissa käytöstä. Otathan ne käyttöön jakaaksesi sijaintisi.", + "@locationDisabledNotice": { + "type": "String", + "placeholders": {} + }, + "locationPermissionDeniedNotice": "SIjaintioikeus on estetty. Myönnäthän sen jakaaksesi sijaintisi.", + "@locationPermissionDeniedNotice": { + "type": "String", + "placeholders": {} + }, + "login": "Kirjaudu sisään", + "@login": { + "type": "String", + "placeholders": {} + }, + "logInTo": "Kirjaudu sisään palvelimelle {homeserver}", + "@logInTo": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "logout": "Kirjaudu ulos", + "@logout": { + "type": "String", + "placeholders": {} + }, + "mention": "Mainitse", + "@mention": { + "type": "String", + "placeholders": {} + }, + "messages": "Viestit", + "@messages": { + "type": "String", + "placeholders": {} + }, + "moderator": "Valvoja", + "@moderator": { + "type": "String", + "placeholders": {} + }, + "muteChat": "Vaienna keskustelu", + "@muteChat": { + "type": "String", + "placeholders": {} + }, + "newChat": "Uusi keskustelu", + "@newChat": { + "type": "String", + "placeholders": {} + }, + "newMessageInFluffyChat": "💬 Uusi viesti FluffyChätissä", + "@newMessageInFluffyChat": { + "type": "String", + "placeholders": {} + }, + "newVerificationRequest": "Uusi varmennuspyyntö!", + "@newVerificationRequest": { + "type": "String", + "placeholders": {} + }, + "next": "Seuraava", + "@next": { + "type": "String", + "placeholders": {} + }, + "no": "Ei", + "@no": { + "type": "String", + "placeholders": {} + }, + "noConnectionToTheServer": "Ei yhteyttä palvelimeen", + "@noConnectionToTheServer": { + "type": "String", + "placeholders": {} + }, + "noEncryptionForPublicRooms": "Voit ottaa salauksen käyttöön vasta kun huone ei ole julkisesti liityttävissä.", + "@noEncryptionForPublicRooms": { + "type": "String", + "placeholders": {} + }, + "noMatrixServer": "{server1} ei ole Matrix-palvelin, käytetäänkö {server2} sen sijaan?", + "@noMatrixServer": { + "type": "String", + "placeholders": { + "server1": { + "type": "String" + }, + "server2": { + "type": "String" + } + } + }, + "scanQrCode": "Skannaa QR-koodi", + "@scanQrCode": {}, + "none": "Ei yhtään", + "@none": { + "type": "String", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "Et ole vielä lisännyt tapaa salasanasi palauttamiseksi.", + "@noPasswordRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "noRoomsFound": "Huoneita ei löytynyt…", + "@noRoomsFound": { + "type": "String", + "placeholders": {} + }, + "notifications": "Ilmoitukset", + "@notifications": { + "type": "String", + "placeholders": {} + }, + "numUsersTyping": "{count} käyttäjää kirjoittavat…", + "@numUsersTyping": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "obtainingLocation": "Paikannetaan sijantia…", + "@obtainingLocation": { + "type": "String", + "placeholders": {} + }, + "offensive": "Loukkaava", + "@offensive": { + "type": "String", + "placeholders": {} + }, + "offline": "Poissa verkosta", + "@offline": { + "type": "String", + "placeholders": {} + }, + "ok": "ok", + "@ok": { + "type": "String", + "placeholders": {} + }, + "online": "Linjoilla", + "@online": { + "type": "String", + "placeholders": {} + }, + "copiedToClipboard": "Kopioitu leikepöydälle", + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "copy": "Kopioi", + "@copy": { + "type": "String", + "placeholders": {} + }, + "changeYourAvatar": "Vaihda profiilikuvasi", + "@changeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "chat": "Keskustelu", + "@chat": { + "type": "String", + "placeholders": {} + }, + "clearArchive": "Tyhjennä arkisto", + "@clearArchive": {}, + "forward": "Edelleenlähetä", + "@forward": { + "type": "String", + "placeholders": {} + }, + "commandHint_join": "Liity syötettyyn huoneeseen", + "@commandHint_join": { + "type": "String", + "description": "Usage hint for the command /join" + }, + "commandHint_me": "Kuvaile itseäsi", + "@commandHint_me": { + "type": "String", + "description": "Usage hint for the command /me" + }, + "compareEmojiMatch": "Vertaa hymiöitä", + "@compareEmojiMatch": { + "type": "String", + "placeholders": {} + }, + "confirm": "Vahvista", + "@confirm": { + "type": "String", + "placeholders": {} + }, + "containsUserName": "Sisältää käyttäjätunnuksen", + "@containsUserName": { + "type": "String", + "placeholders": {} + }, + "countParticipants": "{count} osallistujaa", + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "changeTheHomeserver": "Vaihda kotipalvelinta", + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "Vaihda ryhmän nimeä", + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "channelCorruptedDecryptError": "Salaus on korruptoitunut", + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "commandHint_kick": "Poista syötetty käyttäjä huoneesta", + "@commandHint_kick": { + "type": "String", + "description": "Usage hint for the command /kick" + }, + "commandHint_unban": "Poista syötetyn käyttäjän porttikielto tästä huoneesta", + "@commandHint_unban": { + "type": "String", + "description": "Usage hint for the command /unban" + }, + "commandMissing": "{command} ei ole komento.", + "@commandMissing": { + "type": "String", + "placeholders": { + "command": { + "type": "String" + } + }, + "description": "State that {command} is not a valid /command." + }, + "commandHint_send": "Lähetä tekstiä", + "@commandHint_send": { + "type": "String", + "description": "Usage hint for the command /send" + }, + "commandInvalid": "Epäkelvollinen komento", + "@commandInvalid": { + "type": "String" + }, + "compareNumbersMatch": "Vertaa numeroita", + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "configureChat": "Määritä keskustelu", + "@configureChat": { + "type": "String", + "placeholders": {} + }, + "connect": "Yhdistä", + "@connect": { + "type": "String", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "Yhteystieto on kutsuttu ryhmään", + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "containsDisplayName": "Sisältää näyttönimen", + "@containsDisplayName": { + "type": "String", + "placeholders": {} + }, + "contentHasBeenReported": "Sisältö on ilmoitettu palvelimen ylläpitäjille", + "@contentHasBeenReported": { + "type": "String", + "placeholders": {} + }, + "copyToClipboard": "Kopioi leikepöydälle", + "@copyToClipboard": { + "type": "String", + "placeholders": {} + }, + "couldNotDecryptMessage": "Viestin salausta ei voitu purkaa: {error}", + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "encrypted": "Salattu", + "@encrypted": { + "type": "String", + "placeholders": {} + }, + "encryption": "Salaus", + "@encryption": { + "type": "String", + "placeholders": {} + }, + "inoffensive": "Loukkaamatonta", + "@inoffensive": { + "type": "String", + "placeholders": {} + }, + "inviteContactToGroup": "Kutsu yhteystieto ryhmään {groupName}", + "@inviteContactToGroup": { + "type": "String", + "placeholders": { + "groupName": { + "type": "String" + } + } + }, + "isTyping": "kirjoittaa…", + "@isTyping": { + "type": "String", + "placeholders": {} + }, + "enableEmotesGlobally": "Ota emote-paketti käyttöön kaikkialla", + "@enableEmotesGlobally": { + "type": "String", + "placeholders": {} + }, + "darkTheme": "Tumma", + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "enableEncryption": "Ota salaus käyttöön", + "@enableEncryption": { + "type": "String", + "placeholders": {} + }, + "fontSize": "Fonttikoko", + "@fontSize": { + "type": "String", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "String", + "placeholders": {} + }, + "iHaveClickedOnLink": "Olen klikannut linkkiä", + "@iHaveClickedOnLink": { + "type": "String", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "Virheellinen salasana tai palautusavain", + "@incorrectPassphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "joinedTheChat": "👋 {username} liittyi keskusteluun", + "@joinedTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "notificationsEnabledForThisAccount": "Tämän tunnuksen ilmoitukset ovat käytössä", + "@notificationsEnabledForThisAccount": { + "type": "String", + "placeholders": {} + }, + "joinRoom": "Liity huoneeseen", + "@joinRoom": { + "type": "String", + "placeholders": {} + }, + "memberChanges": "Jäsenmuutoksia", + "@memberChanges": { + "type": "String", + "placeholders": {} + }, + "needPantalaimonWarning": "Tiedäthän tarvitsevasi toistaiseksi Pantalaimonin käyttääksesi päästä-päähän-salausta.", + "@needPantalaimonWarning": { + "type": "String", + "placeholders": {} + }, + "noEmotesFound": "Emoteja ei löytynyt. 😕", + "@noEmotesFound": { + "type": "String", + "placeholders": {} + }, + "noGoogleServicesWarning": "Firebase Cloud Messaging -palvelu ei vaikuta olevan saatavilla laitteellasi. Saadaksesi push-ilmoituksia silti, suosittelemme Ntfy-sovelluksen asentamista. Käyttämällä Ntfy-sovellusta tai muuta Unified Push -tarjoajaa, saat push-ilmoitukset tietoturvallisella tavalla. Voit ladata Ntfy-sovelluksen Play Kaupasta tai F-Droidista.", + "@noGoogleServicesWarning": { + "type": "String", + "placeholders": {} + }, + "noPermission": "Ei lupaa", + "@noPermission": { + "type": "String", + "placeholders": {} + }, + "enableMultiAccounts": "(BETA) Ota käyttöön tuki usealle tilille tällä laitteella", + "@enableMultiAccounts": {}, + "onlineKeyBackupEnabled": "Verkkkoavainvarmuuskopio on käytössä", + "@onlineKeyBackupEnabled": { + "type": "String", + "placeholders": {} + }, + "oopsPushError": "Hups! Valitettavasti push-ilmoituksia käyttöönotettaessa tapahtui virhe.", + "@oopsPushError": { + "type": "String", + "placeholders": {} + }, + "oopsSomethingWentWrong": "Hups, jotakin meni pieleen…", + "@oopsSomethingWentWrong": { + "type": "String", + "placeholders": {} + }, + "openAppToReadMessages": "Avaa sovellus lukeaksesi viestit", + "@openAppToReadMessages": { + "type": "String", + "placeholders": {} + }, + "openCamera": "Avaa kamera", + "@openCamera": { + "type": "String", + "placeholders": {} + }, + "oneClientLoggedOut": "Yksi tunnuksistasi on kirjattu ulos", + "@oneClientLoggedOut": {}, + "addAccount": "Lisää tili", + "@addAccount": {}, + "editBundlesForAccount": "Muokkaa tämän tilin kääröjä", + "@editBundlesForAccount": {}, + "addToBundle": "Lisää kääreeseen", + "@addToBundle": {}, + "removeFromBundle": "Poista tästä kääreestä", + "@removeFromBundle": {}, + "bundleName": "Kääreen nimi", + "@bundleName": {}, + "openInMaps": "Avaa kartoissa", + "@openInMaps": { + "type": "String", + "placeholders": {} + }, + "or": "Tai", + "@or": { + "type": "String", + "placeholders": {} + }, + "participant": "Osallistuja", + "@participant": { + "type": "String", + "placeholders": {} + }, + "password": "Salasana", + "@password": { + "type": "String", + "placeholders": {} + }, + "passwordHasBeenChanged": "Salasana on vaihdettu", + "@passwordHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "passwordRecovery": "Salasanan palautus", + "@passwordRecovery": { + "type": "String", + "placeholders": {} + }, + "people": "Ihmiset", + "@people": { + "type": "String", + "placeholders": {} + }, + "pickImage": "Valitse kuva", + "@pickImage": { + "type": "String", + "placeholders": {} + }, + "pin": "Kiinnitä", + "@pin": { + "type": "String", + "placeholders": {} + }, + "play": "Toista {fileName}", + "@play": { + "type": "String", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "pleaseChoose": "Valitse", + "@pleaseChoose": { + "type": "String", + "placeholders": {} + }, + "pleaseChooseAPasscode": "Valitse pääsykoodi", + "@pleaseChooseAPasscode": { + "type": "String", + "placeholders": {} + }, + "pleaseClickOnLink": "Klikkaa linkkiä sähköpostissa ja sitten jatka.", + "@pleaseClickOnLink": { + "type": "String", + "placeholders": {} + }, + "pleaseEnter4Digits": "Syötä 4 numeroa tai jätä tyhjäksi poistaaksesi sovelluksen lukituksen.", + "@pleaseEnter4Digits": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPin": "Syötä PIN-koodisi", + "@pleaseEnterYourPin": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourUsername": "Syötä käyttäjätunnuksesi", + "@pleaseEnterYourUsername": { + "type": "String", + "placeholders": {} + }, + "pleaseFollowInstructionsOnWeb": "Seuraa ohjeita verkkosivulla ja paina seuraava.", + "@pleaseFollowInstructionsOnWeb": { + "type": "String", + "placeholders": {} + }, + "privacy": "Yksityisyys", + "@privacy": { + "type": "String", + "placeholders": {} + }, + "recording": "Tallenne", + "@recording": { + "type": "String", + "placeholders": {} + }, + "redactedAnEvent": "{username} poisti tapahtuman", + "@redactedAnEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "redactMessage": "Poista viesti", + "@redactMessage": { + "type": "String", + "placeholders": {} + }, + "register": "Rekisteröidy", + "@register": { + "type": "String", + "placeholders": {} + }, + "reject": "Hylkää", + "@reject": { + "type": "String", + "placeholders": {} + }, + "rejectedTheInvitation": "{username} hylkäsi kutsun", + "@rejectedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "rejoin": "Liity uudelleen", + "@rejoin": { + "type": "String", + "placeholders": {} + }, + "remove": "Poista", + "@remove": { + "type": "String", + "placeholders": {} + }, + "removeAllOtherDevices": "Poista kaikki muut laitteet", + "@removeAllOtherDevices": { + "type": "String", + "placeholders": {} + }, + "removedBy": "Poistanut {username}", + "@removedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "removeDevice": "Poista laite", + "@removeDevice": { + "type": "String", + "placeholders": {} + }, + "unbanFromChat": "Poista porttikielto keskusteluun", + "@unbanFromChat": { + "type": "String", + "placeholders": {} + }, + "seenByUser": "Nähnyt {username}", + "@seenByUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sendAMessage": "Lähetä viesti", + "@sendAMessage": { + "type": "String", + "placeholders": {} + }, + "send": "Lähetä", + "@send": { + "type": "String", + "placeholders": {} + }, + "sendAsText": "Lähetä tekstinä", + "@sendAsText": { + "type": "String" + }, + "sendAudio": "Lähetä ääniviesti", + "@sendAudio": { + "type": "String", + "placeholders": {} + }, + "sendFile": "Lähetä tiedosto", + "@sendFile": { + "type": "String", + "placeholders": {} + }, + "sendImage": "Lähetä kuva", + "@sendImage": { + "type": "String", + "placeholders": {} + }, + "sendMessages": "Lähetä viestejä", + "@sendMessages": { + "type": "String", + "placeholders": {} + }, + "sendOriginal": "Lähetä alkuperäinen", + "@sendOriginal": { + "type": "String", + "placeholders": {} + }, + "setAsCanonicalAlias": "Aseta pääalias", + "@setAsCanonicalAlias": { + "type": "String", + "placeholders": {} + }, + "setCustomEmotes": "Aseta mukautetut emotet", + "@setCustomEmotes": { + "type": "String", + "placeholders": {} + }, + "setInvitationLink": "Aseta kutsulinkki", + "@setInvitationLink": { + "type": "String", + "placeholders": {} + }, + "setPermissionsLevel": "Aseta oikeustasot", + "@setPermissionsLevel": { + "type": "String", + "placeholders": {} + }, + "setStatus": "Aseta tila", + "@setStatus": { + "type": "String", + "placeholders": {} + }, + "settings": "Asetukset", + "@settings": { + "type": "String", + "placeholders": {} + }, + "share": "Jaa", + "@share": { + "type": "String", + "placeholders": {} + }, + "sharedTheLocation": "{username} jakoi sijaintinsa", + "@sharedTheLocation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "singlesignon": "Kertakirjautuminen", + "@singlesignon": { + "type": "String", + "placeholders": {} + }, + "skip": "Ohita", + "@skip": { + "type": "String", + "placeholders": {} + }, + "sourceCode": "Lähdekoodi", + "@sourceCode": { + "type": "String", + "placeholders": {} + }, + "spaceIsPublic": "Tila on julkinen", + "@spaceIsPublic": { + "type": "String", + "placeholders": {} + }, + "spaceName": "Tilan nimi", + "@spaceName": { + "type": "String", + "placeholders": {} + }, + "status": "Tila", + "@status": { + "type": "String", + "placeholders": {} + }, + "synchronizingPleaseWait": "Synkronoidaan... Hetkinen.", + "@synchronizingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "systemTheme": "Järjestelmä", + "@systemTheme": { + "type": "String", + "placeholders": {} + }, + "theyDontMatch": "Ne eivät täsmää", + "@theyDontMatch": { + "type": "String", + "placeholders": {} + }, + "theyMatch": "Ne täsmäävät", + "@theyMatch": { + "type": "String", + "placeholders": {} + }, + "title": "FluffyChat", + "@title": { + "description": "Title for the application", + "type": "String", + "placeholders": {} + }, + "toggleMuted": "Mykistetty-kytkin", + "@toggleMuted": { + "type": "String", + "placeholders": {} + }, + "tooManyRequestsWarning": "Liikaa pyyntöjä. Yritä myöhemmin uudelleen!", + "@tooManyRequestsWarning": { + "type": "String", + "placeholders": {} + }, + "toggleUnread": "Merkitse lukemattomaksi/luetuksi", + "@toggleUnread": { + "type": "String", + "placeholders": {} + }, + "transferFromAnotherDevice": "Siirrä toiselta laitteelta", + "@transferFromAnotherDevice": { + "type": "String", + "placeholders": {} + }, + "tryToSendAgain": "Yritä uudelleenlähettämistä", + "@tryToSendAgain": { + "type": "String", + "placeholders": {} + }, + "unbannedUser": "{username} poisti käyttäjän {targetName} porttikiellon", + "@unbannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "unblockDevice": "Poista laitteen esto", + "@unblockDevice": { + "type": "String", + "placeholders": {} + }, + "unknownDevice": "Tuntematon laite", + "@unknownDevice": { + "type": "String", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "Tuntematon salausalgoritmi", + "@unknownEncryptionAlgorithm": { + "type": "String", + "placeholders": {} + }, + "unknownEvent": "Tuntematon tapahtuma '{type}'", + "@unknownEvent": { + "type": "String", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "userAndOthersAreTyping": "{username} ja {count} muuta kirjoittavat…", + "@userAndOthersAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "userAndUserAreTyping": "{username} ja {username2} kirjoittavat…", + "@userAndUserAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "username2": { + "type": "String" + } + } + }, + "userIsTyping": "{username} kirjoittaa…", + "@userIsTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "userLeftTheChat": "🚪 {username} poistui keskustelusta", + "@userLeftTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "userSentUnknownEvent": "{username} lähetti {type}-tapahtuman", + "@userSentUnknownEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "type": { + "type": "String" + } + } + }, + "unverified": "Varmistamaton", + "@unverified": {}, + "verified": "Varmistettu", + "@verified": { + "type": "String", + "placeholders": {} + }, + "verifyStart": "Aloita varmennus", + "@verifyStart": { + "type": "String", + "placeholders": {} + }, + "verifySuccess": "Varmensit onnistuneesti!", + "@verifySuccess": { + "type": "String", + "placeholders": {} + }, + "verifyTitle": "Varmistetaan toista tunnusta", + "@verifyTitle": { + "type": "String", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "Keskusteluhistorian näkyvyys", + "@visibilityOfTheChatHistory": { + "type": "String", + "placeholders": {} + }, + "visibleForAllParticipants": "Näkyy kaikille osallistujille", + "@visibleForAllParticipants": { + "type": "String", + "placeholders": {} + }, + "visibleForEveryone": "Näkyy kaikille", + "@visibleForEveryone": { + "type": "String", + "placeholders": {} + }, + "voiceMessage": "Ääniviesti", + "@voiceMessage": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "Odotetaan kumppanin varmistavan pyynnön…", + "@waitingPartnerAcceptRequest": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerEmoji": "Odotetaan kumppanin hyväksyvän emojit…", + "@waitingPartnerEmoji": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerNumbers": "Odotetaan kumppanin hyväksyvän numerot…", + "@waitingPartnerNumbers": { + "type": "String", + "placeholders": {} + }, + "wallpaper": "Taustakuva:", + "@wallpaper": { + "type": "String", + "placeholders": {} + }, + "warning": "Varoitus!", + "@warning": { + "type": "String", + "placeholders": {} + }, + "weSentYouAnEmail": "Lähetimme sinulle sähköpostia", + "@weSentYouAnEmail": { + "type": "String", + "placeholders": {} + }, + "whoCanPerformWhichAction": "Kuka voi suorittaa minkä toimenpiteen", + "@whoCanPerformWhichAction": { + "type": "String", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "Kenen on sallittua liittyä ryhmään", + "@whoIsAllowedToJoinThisGroup": { + "type": "String", + "placeholders": {} + }, + "whyDoYouWantToReportThis": "Miksi haluat ilmoittaa tämän?", + "@whyDoYouWantToReportThis": { + "type": "String", + "placeholders": {} + }, + "wipeChatBackup": "Pyyhi keskusteluvarmuuskopio luodaksesi uuden palautusavaimen?", + "@wipeChatBackup": { + "type": "String", + "placeholders": {} + }, + "withTheseAddressesRecoveryDescription": "Näillä osoitteilla voit palauttaa salasanasi.", + "@withTheseAddressesRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "Et enää osallistu tähän keskusteluun", + "@youAreNoLongerParticipatingInThisChat": { + "type": "String", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "Sinulle on annettu porttikielto tähän keskusteluun", + "@youHaveBeenBannedFromThisChat": { + "type": "String", + "placeholders": {} + }, + "removeFromSpace": "Poista tilasta", + "@removeFromSpace": {}, + "addToSpaceDescription": "Valitse tila, johon tämä keskustelu lisätään.", + "@addToSpaceDescription": {}, + "start": "Aloita", + "@start": {}, + "serverRequiresEmail": "Tämän palvelimen täytyy tarkistaa sähköposti-osoitteesi rekisteröitymistä varten.", + "@serverRequiresEmail": {}, + "roomVersion": "Huoneen versio", + "@roomVersion": { + "type": "String", + "placeholders": {} + }, + "sentCallInformations": "{senderName} lähetti puhelutiedot", + "@sentCallInformations": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "unavailable": "Ei saatavilla", + "@unavailable": { + "type": "String", + "placeholders": {} + }, + "verify": "Varmista", + "@verify": { + "type": "String", + "placeholders": {} + }, + "passphraseOrKey": "salalause tai palautusavain", + "@passphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPassword": "Syötä salasanasi", + "@pleaseEnterYourPassword": { + "type": "String", + "placeholders": {} + }, + "roomHasBeenUpgraded": "Huone on päivitetty", + "@roomHasBeenUpgraded": { + "type": "String", + "placeholders": {} + }, + "search": "Hae", + "@search": { + "type": "String", + "placeholders": {} + }, + "sentAFile": "📁 {username} lähetti tiedoston", + "@sentAFile": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAnAudio": "🎤 {username} lähetti ääniviestin", + "@sentAnAudio": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "link": "Linkki", + "@link": {}, + "passwordForgotten": "Salasana unohtunut", + "@passwordForgotten": { + "type": "String", + "placeholders": {} + }, + "removeYourAvatar": "Poista profiilikuvasi", + "@removeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "reply": "Vastaa", + "@reply": { + "type": "String", + "placeholders": {} + }, + "reportMessage": "Ilmoita viesti", + "@reportMessage": { + "type": "String", + "placeholders": {} + }, + "requestPermission": "Pyydä lupaa", + "@requestPermission": { + "type": "String", + "placeholders": {} + }, + "saveFile": "Tallenna tiedosto", + "@saveFile": { + "type": "String", + "placeholders": {} + }, + "security": "Turvallisuus", + "@security": { + "type": "String", + "placeholders": {} + }, + "sendSticker": "Lähetä tarra", + "@sendSticker": { + "type": "String", + "placeholders": {} + }, + "publicRooms": "Julkiset huoneet", + "@publicRooms": { + "type": "String", + "placeholders": {} + }, + "pushRules": "Push-säännöt", + "@pushRules": { + "type": "String", + "placeholders": {} + }, + "reason": "Syy", + "@reason": { + "type": "String", + "placeholders": {} + }, + "replaceRoomWithNewerVersion": "Korvaa huone uudemmalla versiolla", + "@replaceRoomWithNewerVersion": { + "type": "String", + "placeholders": {} + }, + "sendVideo": "Lähetä video", + "@sendVideo": { + "type": "String", + "placeholders": {} + }, + "sentAPicture": "🖼️ {username} lähetti kuvan", + "@sentAPicture": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentASticker": "😊 {username} lähetti tarran", + "@sentASticker": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAVideo": "🎥 {username} lähetti videon", + "@sentAVideo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "shareLocation": "Jaa sijainti", + "@shareLocation": { + "type": "String", + "placeholders": {} + }, + "showPassword": "Näytä salasana", + "@showPassword": { + "type": "String", + "placeholders": {} + }, + "statusExampleMessage": "Millainen on vointisi?", + "@statusExampleMessage": { + "type": "String", + "placeholders": {} + }, + "unreadChats": "{unreadCount, plural, =1{1 lukematon keskustelu} other{{unreadCount} lukematonta keskustelua}}", + "@unreadChats": { + "type": "String", + "placeholders": { + "unreadCount": { + "type": "int" + } + } + }, + "videoCall": "Videopuhelu", + "@videoCall": { + "type": "String", + "placeholders": {} + }, + "sender": "Lähettäjä", + "@sender": {}, + "startedACall": "{senderName} aloitti puhelun", + "@startedACall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "submit": "Lähetä", + "@submit": { + "type": "String", + "placeholders": {} + }, + "toggleFavorite": "Suosikki-kytkin", + "@toggleFavorite": { + "type": "String", + "placeholders": {} + }, + "unmuteChat": "Poista keskustelun mykistys", + "@unmuteChat": { + "type": "String", + "placeholders": {} + }, + "unpin": "Poista kiinnitys", + "@unpin": { + "type": "String", + "placeholders": {} + }, + "time": "Aika", + "@time": {}, + "messageType": "Viestin tyyppi", + "@messageType": {}, + "username": "Käyttäjätunnus", + "@username": { + "type": "String", + "placeholders": {} + }, + "writeAMessage": "Kirjoita viesti…", + "@writeAMessage": { + "type": "String", + "placeholders": {} + }, + "yes": "Kyllä", + "@yes": { + "type": "String", + "placeholders": {} + }, + "you": "Sinä", + "@you": { + "type": "String", + "placeholders": {} + }, + "yourPublicKey": "Julkinen avaimesi", + "@yourPublicKey": { + "type": "String", + "placeholders": {} + }, + "messageInfo": "Viestin tiedot", + "@messageInfo": {}, + "openGallery": "Avaa galleria", + "@openGallery": {}, + "commandHint_clearcache": "Tyhjennä välimuisti", + "@commandHint_clearcache": { + "type": "String", + "description": "Usage hint for the command /clearcache" + }, + "commandHint_create": "Luo tyhjä ryhmäkeskustelu\nKäytä parametria --no-encryption poistaaksesi salauksen käytöstä", + "@commandHint_create": { + "type": "String", + "description": "Usage hint for the command /create" + }, + "commandHint_dm": "Aloita yksityiskeskustelu\nKäytä parametria --no-encryption poistaaksesi salauksen käytöstä", + "@commandHint_dm": { + "type": "String", + "description": "Usage hint for the command /dm" + }, + "commandHint_discardsession": "Hylkää istunto", + "@commandHint_discardsession": { + "type": "String", + "description": "Usage hint for the command /discardsession" + }, + "openVideoCamera": "Avaa kamera videokuvausta varten", + "@openVideoCamera": { + "type": "String", + "placeholders": {} + }, + "videoWithSize": "Video ({size})", + "@videoWithSize": { + "type": "String", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "publish": "Julkaise", + "@publish": {}, + "markAsRead": "Merkitse luetuksi", + "@markAsRead": {}, + "dismiss": "Hylkää", + "@dismiss": {}, + "emojis": "Hymiöt", + "@emojis": {}, + "unsupportedAndroidVersionLong": "Tämä ominaisuus vaatii uudemman Android-version. Tarkista päivitykset tai LineageOS-tuki.", + "@unsupportedAndroidVersionLong": {}, + "unsupportedAndroidVersion": "Ei tuettu Android-versio", + "@unsupportedAndroidVersion": {}, + "reportUser": "Ilmianna käyttäjä", + "@reportUser": {}, + "voiceCall": "Äänipuhelu", + "@voiceCall": {}, + "videoCallsBetaWarning": "Huomaathan videopuheluiden ovan beta-asteella. Ne eivät ehkä toimi odotetusti tai toimi ollenkaan kaikilla alustoilla.", + "@videoCallsBetaWarning": {}, + "placeCall": "Soita", + "@placeCall": {}, + "reactedWith": "{sender} reagoi {reaction}", + "@reactedWith": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "reaction": { + "type": "String" + } + } + }, + "openChat": "Avaa Keskustelu", + "@openChat": {}, + "pinMessage": "Kiinnitä huoneeseen", + "@pinMessage": {}, + "confirmEventUnpin": "Haluatko varmasti irrottaa tapahtuman pysyvästi?", + "@confirmEventUnpin": {}, + "widgetVideo": "Video", + "@widgetVideo": {}, + "widgetJitsi": "Jitsi Meet", + "@widgetJitsi": {}, + "widgetCustom": "Mukautettu", + "@widgetCustom": {}, + "widgetName": "Nimi", + "@widgetName": {}, + "widgetUrlError": "Epäkelvollinen URL.", + "@widgetUrlError": {}, + "errorAddingWidget": "Virhe lisättäessä pienoissovellusta.", + "@errorAddingWidget": {}, + "nextAccount": "Seuraava tili", + "@nextAccount": {}, + "switchToAccount": "Siirry tilille {number}", + "@switchToAccount": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "experimentalVideoCalls": "Kokeelliset videopuhelut", + "@experimentalVideoCalls": {}, + "emailOrUsername": "Sähköposti-osoite tai käyttäjätunnus", + "@emailOrUsername": {}, + "previousAccount": "Edellinen tili", + "@previousAccount": {}, + "widgetEtherpad": "Tekstimuotoinen muistiinpano", + "@widgetEtherpad": {}, + "widgetNameError": "Syötä näyttönimi.", + "@widgetNameError": {}, + "addWidget": "Lisää pienoissovellus", + "@addWidget": {}, + "youRejectedTheInvitation": "Kieltäydyit kutsusta", + "@youRejectedTheInvitation": {}, + "youJoinedTheChat": "Liityit keskusteluun", + "@youJoinedTheChat": {}, + "youAcceptedTheInvitation": "👍 Hyväksyit kutsun", + "@youAcceptedTheInvitation": {}, + "youBannedUser": "Annoit porttikiellon käyttäjälle {user}", + "@youBannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youHaveWithdrawnTheInvitationFor": "Olet perunut kutsun käyttäjälle {user}", + "@youHaveWithdrawnTheInvitationFor": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youInvitedBy": "📩 {user} kutsui sinut", + "@youInvitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youKicked": "👞 Potkit käyttäjän {user} keskustelusta", + "@youKicked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youInvitedUser": "📩 Kutsuit käyttäjän {user}", + "@youInvitedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youKickedAndBanned": "🙅 Potkit ja annoit porttikiellon käyttäjälle {user}", + "@youKickedAndBanned": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youUnbannedUser": "Poistit käyttäjän {user} porttikiellon", + "@youUnbannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "separateChatTypes": "Erota yksityiskeskustelut ryhmistä", + "@separateChatTypes": { + "type": "String", + "placeholders": {} + }, + "dehydrateTor": "TOR-käyttäjät: vie istunto", + "@dehydrateTor": {}, + "hydrateTor": "TOR-käyttäjät: tuo viety istunto", + "@hydrateTor": {}, + "hydrateTorLong": "Veitkö edellisen istuntosi käyttäessäsi TORia? Tuo se nopeasti ja jatka jutustelua.", + "@hydrateTorLong": {}, + "pleaseEnterRecoveryKey": "Syötä palautusavaimesi:", + "@pleaseEnterRecoveryKey": {}, + "recoveryKey": "Palautusavain", + "@recoveryKey": {}, + "recoveryKeyLost": "Kadonnut palautusavain?", + "@recoveryKeyLost": {}, + "dehydrateTorLong": "Tor-käyttäjille suositellaan istunnon vientiä ennen ikkunan sulkemista.", + "@dehydrateTorLong": {}, + "hydrate": "Palauta varmuuskopiotiedostosta", + "@hydrate": {}, + "dehydrate": "Vie istunto ja tyhjennä laite", + "@dehydrate": {}, + "dehydrateWarning": "Tätä toimenpidettä ei voi kumota. Varmista varmuuskopiotiedoston turvallinen tallennus.", + "@dehydrateWarning": {}, + "users": "Käyttäjät", + "@users": {}, + "storeSecurlyOnThisDevice": "Tallenna turvallisesti tälle laitteelle", + "@storeSecurlyOnThisDevice": {}, + "pleaseEnterRecoveryKeyDescription": "Avataksesi vanhojen viestiesi salauksen, syötä palautusavaimesi, joka luotiin edellisessä istunnossa. Palautusavaimesi EI OLE salasanasi.", + "@pleaseEnterRecoveryKeyDescription": {}, + "unlockOldMessages": "Pura vanhojen viestien salaus", + "@unlockOldMessages": {}, + "indexedDbErrorLong": "Viestivarasto ei ole käytössä yksityisselauksessa oletuksena.\nKäythän osoitteessa\n - about:config\n - Aseta dom.indexedDB.privateBrowsing.enabled arvoon true\nMuuten FluffyChatin käyttäminen ei ole mahdollista.", + "@indexedDbErrorLong": {}, + "saveKeyManuallyDescription": "Tallenna tämä avain manuaalisesti käyttäen järjestelmän jakodialogia tai leikepöytää.", + "@saveKeyManuallyDescription": {}, + "storeInAndroidKeystore": "Tallenna Android KeyStoreen", + "@storeInAndroidKeystore": {}, + "storeInAppleKeyChain": "Tallenna Applen avainnippuun", + "@storeInAppleKeyChain": {}, + "countFiles": "{count} tiedostoa", + "@countFiles": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "storeInSecureStorageDescription": "Tallenna palautusavain tämän laitteen turvavarastoon.", + "@storeInSecureStorageDescription": {}, + "indexedDbErrorTitle": "Yksityisen selauksen ongelmat", + "@indexedDbErrorTitle": {}, + "user": "Käyttäjä", + "@user": {}, + "custom": "Mukautettu", + "@custom": {}, + "confirmMatrixId": "Kirjoita Matrix IDsi uudelleen poistaaksesi tunnuksesi.", + "@confirmMatrixId": {}, + "supposedMxid": "Tämän pitäisi olla {mxid}", + "@supposedMxid": { + "type": "String", + "placeholders": { + "mxid": { + "type": "String" + } + } + }, + "commandHint_markasgroup": "Merkitse ryhmäksi", + "@commandHint_markasgroup": {}, + "whyIsThisMessageEncrypted": "Miksei tätä viestiä voida lukea?", + "@whyIsThisMessageEncrypted": {}, + "noKeyForThisMessage": "Tämä voi tapahtua mikäli viesti lähetettiin ennen sisäänkirjautumistasi tälle laitteelle.\n\nOn myös mahdollista, että lähettäjä on estänyt tämän laitteen tai jokin meni pieleen verkkoyhteyden kanssa.\n\nPystytkö lukemaan viestin toisella istunnolla? Siinä tapauksessa voit siirtää viestin siltä! Mene Asetukset > Laitteet ja varmista, että laitteesi ovat varmistaneet toisensa. Seuraavankerran avatessasi huoneen ja molempien istuntojen ollessa etualalla, avaimet siirretään automaattisesti.\n\nHaluatko varmistaa ettet menetä avaimia uloskirjautuessa tai laitteita vaihtaessa? Varmista avainvarmuuskopion käytössäolo asetuksista.", + "@noKeyForThisMessage": {}, + "commandHint_markasdm": "Merkitse yksityiskeskusteluksi syötetyn Matrix IDn kanssa", + "@commandHint_markasdm": {}, + "foregroundServiceRunning": "Tämä ilmoitus näkyy etualapalvelun ollessa käynnissä.", + "@foregroundServiceRunning": {}, + "callingPermissions": "Puheluoikeudet", + "@callingPermissions": {}, + "callingAccount": "Soittamistunnus", + "@callingAccount": {}, + "callingAccountDetails": "Sallii FluffyChatin käyttää Androidin omaa Puhelut-sovellusta.", + "@callingAccountDetails": {}, + "appearOnTop": "Näy päällä", + "@appearOnTop": {}, + "appearOnTopDetails": "Sallii sovelluksen näkyä muiden sovellusten päällä (tätä ei tarvita, mikäli olet jo määrittänyt FluffyChatin puhelin-tunnukseksi)", + "@appearOnTopDetails": {}, + "newSpace": "Uusi tila", + "@newSpace": {}, + "enterSpace": "Siirry tilaan", + "@enterSpace": {}, + "enterRoom": "Siirry huoneeseen", + "@enterRoom": {}, + "allSpaces": "Kaikki tilat", + "@allSpaces": {}, + "screenSharingTitle": "ruudunjako", + "@screenSharingTitle": {}, + "otherCallingPermissions": "Mikrofoni, kamera ja muut FluffyChatin oikeudet", + "@otherCallingPermissions": {}, + "newGroup": "Uusi ryhmä", + "@newGroup": {}, + "screenSharingDetail": "Jaat ruutuasi FluffyChatissä", + "@screenSharingDetail": {}, + "hugContent": "{senderName} halaa sinua", + "@hugContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "cuddleContent": "{senderName} kokovartalohalaa sinua", + "@cuddleContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "commandHint_hug": "Lähetä halaus", + "@commandHint_hug": {}, + "googlyEyesContent": "{senderName} lähettää askartelusilmiä", + "@googlyEyesContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "numChats": "{number} keskustelua", + "@numChats": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "commandHint_googly": "Lähetä askartelusilmiä", + "@commandHint_googly": {}, + "commandHint_cuddle": "Lähetä kokovartaluhalaus", + "@commandHint_cuddle": {}, + "hideUnimportantStateEvents": "Piilota ei-niin-tärkeät tilatapahtumat", + "@hideUnimportantStateEvents": {}, + "doNotShowAgain": "Älä näytä uudelleen", + "@doNotShowAgain": {}, + "fileHasBeenSavedAt": "Tiedosto on tallennettu sijaintiin {path}", + "@fileHasBeenSavedAt": { + "type": "String", + "placeholders": { + "path": { + "type": "String" + } + } + }, + "disableEncryptionWarning": "Turvallisuuden vuoksi et voi poistaa salausta käytöstä huoneista, joissa se on aiemmin otettu käyttöön.", + "@disableEncryptionWarning": {}, + "allRooms": "Kaikki ryhmäkeskustelut", + "@allRooms": { + "type": "String", + "placeholders": {} + }, + "startFirstChat": "Aloita ensimmäinen keskustelusi", + "@startFirstChat": {}, + "newSpaceDescription": "Tilat mahdollistavat keskusteluidesi keräämisen ja yksityisten tai julkisten yhteisöjen rakentamisen.", + "@newSpaceDescription": {}, + "deviceKeys": "Laite-avaimet:", + "@deviceKeys": {}, + "reopenChat": "Avaa keskustelu uudelleen", + "@reopenChat": {}, + "noOtherDevicesFound": "Muita laitteita ei löytynyt", + "@noOtherDevicesFound": {}, + "jumpToLastReadMessage": "Hyppää viimeiseen luettuun viestiin", + "@jumpToLastReadMessage": {}, + "readUpToHere": "Luettu tähän asti", + "@readUpToHere": {}, + "jump": "Hyppää", + "@jump": {}, + "openLinkInBrowser": "Avaa linkki selaimessa", + "@openLinkInBrowser": {}, + "report": "ilmoita", + "@report": {}, + "encryptThisChat": "Salaa tämä keskustelu", + "@encryptThisChat": {}, + "noBackupWarning": "Varoitus! Ilman avainvarmuuskopion käyttöönottoa menetät pääsyn salattuihin viesteihisi. Suosittelemme ehdottomasti avainvarmuuskopion käyttöönottoa ennen uloskirjautumista.", + "@noBackupWarning": {}, + "fileIsTooBigForServer": "Ei voi lähettää! Palvelin tukee liitetiedostoja vain enintään {max}.", + "@fileIsTooBigForServer": {}, + "reportErrorDescription": "😭 Voi ei. Jokin meni pieleen. Halutessasi voit ilmoittaa ongelman kehittäjille.", + "@reportErrorDescription": {}, + "wasDirectChatDisplayName": "Tyhjä keskustelu (oli {oldDisplayName})", + "@wasDirectChatDisplayName": { + "type": "String", + "placeholders": { + "oldDisplayName": { + "type": "String" + } + } + }, + "sorryThatsNotPossible": "Anteeksi... se ei ole mahdollista", + "@sorryThatsNotPossible": {}, + "signInWithPassword": "Kirjaudu sisään salasanalla", + "@signInWithPassword": {}, + "pleaseTryAgainLaterOrChooseDifferentServer": "Yritä myöhemmin uudelleen tai valitse toinen palvelin.", + "@pleaseTryAgainLaterOrChooseDifferentServer": {}, + "setColorTheme": "Aseta väriteema:", + "@setColorTheme": {}, + "tryAgain": "Yritä uudelleen", + "@tryAgain": {}, + "messagesStyle": "Viestit:", + "@messagesStyle": {}, + "chatDescription": "Keskustelun kuvaus", + "@chatDescription": {}, + "invalidServerName": "Virheellinen palvelimen nimi", + "@invalidServerName": {}, + "chatPermissions": "Keskustelun oikeudet", + "@chatPermissions": {}, + "setChatDescription": "Asetti keskustelun kuvauksen", + "@setChatDescription": {}, + "importFromZipFile": "Tuo .zip -tiedostosta", + "@importFromZipFile": {}, + "redactedBy": "Poistanut {username}", + "@redactedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "signInWith": "Kirjaudu sisään palvelulla {provider}", + "@signInWith": { + "type": "String", + "placeholders": { + "provider": { + "type": "String" + } + } + }, + "optionalRedactReason": "(Vapaaehtoinen) Syy tämän viestin poistamiselle...", + "@optionalRedactReason": {}, + "archiveRoomDescription": "Keskustelu siirretään arkistoon. Muut käyttäjät näkevät sinun poistuneen keskustelusta.", + "@archiveRoomDescription": {}, + "exportEmotePack": "Vie emotepaketti .zip-tiedostona", + "@exportEmotePack": {}, + "inviteContactToGroupQuestion": "Tahdotko kutsua yhteystiedon {contact} keskusteluun \"{groupName}\"?", + "@inviteContactToGroupQuestion": {}, + "redactedByBecause": "Poistanut {username} syystä: \"{reason}\"", + "@redactedByBecause": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "reason": { + "type": "String" + } + } + }, + "redactMessageDescription": "Viesti poistetaan kaikilta keskustelun osallistujilta. Tätä ei voida kumota.", + "@redactMessageDescription": {}, + "invalidInput": "Virheellinen syöte!", + "@invalidInput": {}, + "addChatDescription": "Lisää keskustelulle kuvaus...", + "@addChatDescription": {}, + "hasKnocked": "🚪 {user} on koputtanut", + "@hasKnocked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "directChat": "Yksityiskeskustelu", + "@directChat": {}, + "wrongPinEntered": "Väärä pin-koodi! Yritä uudelleen {seconds} sekuntin kuluttua...", + "@wrongPinEntered": { + "type": "String", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "sendTypingNotifications": "Lähetä kirjoitusilmoituksia", + "@sendTypingNotifications": {}, + "inviteGroupChat": "📨 Kutsu ryhmäkeskusteluun", + "@inviteGroupChat": {}, + "invitePrivateChat": "📨 Kutsu yksityiskeskusteluun", + "@invitePrivateChat": {}, + "importEmojis": "Tuo emojit", + "@importEmojis": {}, + "noChatDescriptionYet": "Keskustelun kuvausta ei ole vielä luotu.", + "@noChatDescriptionYet": {}, + "notAnImage": "Tämä ei ole kuvatiedosto.", + "@notAnImage": {}, + "chatDescriptionHasBeenChanged": "Keskustelun kuvaus muutettu", + "@chatDescriptionHasBeenChanged": {}, + "roomUpgradeDescription": "Keskustelu luodaan uudelleen uudella huoneversiolla. Kaikille osallistujille ilmoitetaan, että heidän tulee siirtyä uuteen keskusteluun. Voit lukea lisää huoneversioista osoitteesta https://spec.matrix.org/latest/rooms/", + "@roomUpgradeDescription": {}, + "pleaseEnterANumber": "Syötä suurempi luku kuin 0", + "@pleaseEnterANumber": {}, + "profileNotFound": "Käyttäjää ei löydy palvelimelta. Tämä voi olla yhteysongelma tai käyttäjä ei ole olemassa.", + "@profileNotFound": {}, + "shareInviteLink": "Jaa kutsulinkki", + "@shareInviteLink": {}, + "emoteKeyboardNoRecents": "Viimeaikoina käytetyt emotet tulevat näkymään täällä...", + "@emoteKeyboardNoRecents": { + "type": "String", + "placeholders": {} + }, + "setTheme": "Aseta teema:", + "@setTheme": {}, + "replace": "Korvaa", + "@replace": {}, + "createGroup": "Luo ryhmä", + "@createGroup": {}, + "importNow": "Tuo nyt", + "@importNow": {}, + "invite": "Kutsu", + "@invite": {}, + "swipeRightToLeftToReply": "Vastaa pyyhkäisemällä oikealta vasemmalle", + "@swipeRightToLeftToReply": {}, + "accessAndVisibility": "Pääsy ja näkyvyys", + "@accessAndVisibility": {}, + "unread": "Lukemattomat", + "@unread": {}, + "noMoreChatsFound": "Lisää keskusteluja ei löytynyt...", + "@noMoreChatsFound": {}, + "alwaysUse24HourFormat": "väärä", + "@alwaysUse24HourFormat": { + "description": "Set to true to always display time of day in 24 hour format." + }, + "select": "Valitse", + "@select": {}, + "searchForUsers": "Etsi @users...", + "@searchForUsers": {}, + "pleaseEnterYourCurrentPassword": "Anna nykyinen salasanasi", + "@pleaseEnterYourCurrentPassword": {}, + "newPassword": "Uusi salasana", + "@newPassword": {}, + "pleaseChooseAStrongPassword": "Valitse vahva salasana", + "@pleaseChooseAStrongPassword": {}, + "passwordsDoNotMatch": "Salasanat eivät täsmää", + "@passwordsDoNotMatch": {}, + "passwordIsWrong": "Salasanasi on väärä", + "@passwordIsWrong": {}, + "thisDevice": "Tämä laite:", + "@thisDevice": {}, + "gallery": "Galleria", + "@gallery": {}, + "files": "Tiedostot", + "@files": {}, + "changelog": "Muutosloki", + "@changelog": {}, + "continueText": "Jatka", + "@continueText": {}, + "welcomeText": "Hei 👋, Tämä on FluffyChat. Voit kirjautua sisään mihin tahansa kotipalvelimeen, joka on yhteensopiva https:/matrix.org:in kanssa. Sitten jutellaan kenen kanssa tahansa. Se on hajautettu viestiverkosto!", + "@welcomeText": {}, + "serverInformation": "Palvelimen tiedot:", + "@serverInformation": {}, + "name": "Nimi", + "@name": {}, + "version": "Versio", + "@version": {}, + "website": "Verkkosivu", + "@website": {}, + "previous": "Edellinen", + "@previous": {}, + "open": "Avaa", + "@open": {}, + "more": "Lisää", + "@more": {}, + "allDevices": "Kaikki laitteet", + "@allDevices": {}, + "recordAVideo": "Nauhoita video", + "@recordAVideo": {}, + "approve": "Hyväksy", + "@approve": {}, + "pause": "Keskeytä", + "@pause": {}, + "resume": "Jatka", + "@resume": {}, + "moveUp": "Siirrä ylös", + "@moveUp": {}, + "moveDown": "Siirrä alas", + "@moveDown": {}, + "poll": "Kysely", + "@poll": {}, + "setCustomPermissionLevel": "Aseta mukautettu lupataso", + "@setCustomPermissionLevel": {}, + "setPermissionsLevelDescription": "Valitse alla oleva ennalta määritetty rooli tai anna mukautettu lupataso väliltä 0–100.", + "@setPermissionsLevelDescription": {}, + "ignoreUser": "Jätä huomiotta", + "@ignoreUser": {}, + "normalUser": "Peruskäyttäjä", + "@normalUser": {}, + "aboutHomeserver": "Tietoja {homeserver}:sta", + "@aboutHomeserver": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "commandHint_roomupgrade": "Päivitä tämä huone annettuun huoneversioon", + "@commandHint_roomupgrade": {}, + "appLockDescription": "Lukitse sovellus kun sitä ei käytetä PIN-koodin kanssa", + "@appLockDescription": {}, + "countChatsAndCountParticipants": "{chats} pikakeskustelut ja {participants} osallistujat", + "@countChatsAndCountParticipants": { + "type": "String", + "placeholders": { + "chats": { + "type": "int" + }, + "participants": { + "type": "int" + } + } + }, + "noChatsFoundHere": "Täältä ei löytynyt vielä pikakeskusteluja. Aloita uusi pikakeskustelu jonkun kanssa alla olevalla painikkeella. ⤵️", + "@noChatsFoundHere": {}, + "joinedChats": "Liittyneet pikakeskustelut", + "@joinedChats": {}, + "space": "Tila", + "@space": {}, + "spaces": "Tilat", + "@spaces": {}, + "checkList": "Tarkistuslista", + "@checkList": {}, + "countInvited": "{count} kutsuttu", + "@countInvited": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "globalChatId": "Yleisesti pätevä keskustelutunnus", + "@globalChatId": {}, + "accessAndVisibilityDescription": "Kuka voi liittyä tähän pikakeskusteluun ja miten pikakeskustelun voi löytää.", + "@accessAndVisibilityDescription": {}, + "calls": "Puhelut", + "@calls": {}, + "customEmojisAndStickers": "Mukautetut emojit ja tarrat", + "@customEmojisAndStickers": {}, + "customEmojisAndStickersBody": "Lisää tai jaa mukautettuja emojeja tai tarroja, joita voidaan käyttää missä tahansa pikakeskustelussa.", + "@customEmojisAndStickersBody": {}, + "hideInvalidOrUnknownMessageFormats": "Piilota virheelliset tai tuntemattomat viestimuodot", + "@hideInvalidOrUnknownMessageFormats": {}, + "block": "Estä", + "@block": {}, + "blockedUsers": "Estetyt käyttäjät", + "@blockedUsers": {}, + "blockListDescription": "Voit estää sinua häiritsevät käyttäjät. Et voi vastaanottaa viestejä tai huonekutsuja henkilökohtaisella estolistallasi olevilta käyttäjiltä.", + "@blockListDescription": {}, + "hideMemberChangesInPublicChats": "Piilota jäsenten muutokset julkisissa pikakeskusteluissa", + "@hideMemberChangesInPublicChats": {}, + "hideMemberChangesInPublicChatsBody": "Älä näytä pikakeskustelun aikajanalla, jos joku liittyy julkiseen pikakeskusteluun tai poistuu siitä luettavuuden parantamiseksi.", + "@hideMemberChangesInPublicChatsBody": {}, + "blockUsername": "Jätä käyttäjänimi huomiotta", + "@blockUsername": {}, + "overview": "Yleiskatsaus", + "@overview": {}, + "notifyMeFor": "Ilmoita minulle", + "@notifyMeFor": {}, + "passwordRecoverySettings": "Salasanan palautusasetukset", + "@passwordRecoverySettings": {}, + "sendImages": "Lähetä {count} kuva", + "@sendImages": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "presenceStyle": "Läsnäolo:", + "@presenceStyle": { + "type": "String", + "placeholders": {} + }, + "presencesToggle": "Näytä muiden käyttäjien tilaviestit", + "@presencesToggle": { + "type": "String", + "placeholders": {} + }, + "synchronizingPleaseWaitCounter": " Synkronoidaan… ({percentage} %)", + "@synchronizingPleaseWaitCounter": { + "type": "String", + "placeholders": { + "percentage": { + "type": "String" + } + } + }, + "youInvitedToBy": "📩 Sinut on kutsuttu linkin kautta kohteeseen:\n{alias}", + "@youInvitedToBy": { + "placeholders": { + "alias": { + "type": "String" + } + } + }, + "invitedBy": "📩 Kutsujana {user}", + "@invitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "usersMustKnock": "Käyttäjien on koputettava", + "@usersMustKnock": {}, + "noOneCanJoin": "Kukaan ei voi liittyä", + "@noOneCanJoin": {}, + "userWouldLikeToChangeTheChat": "{user} haluaa liittyä pikakeskusteluun.", + "@userWouldLikeToChangeTheChat": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "noPublicLinkHasBeenCreatedYet": "Julkista linkkiä ei ole vielä luotu", + "@noPublicLinkHasBeenCreatedYet": {}, + "knock": "Koputa", + "@knock": {}, + "hidePresences": "Piilotetaanko tilaluettelo?", + "@hidePresences": {}, + "removeDevicesDescription": "Sinut kirjataan ulos tästä laitteesta, etkä voi enää vastaanottaa viestejä.", + "@removeDevicesDescription": {}, + "banUserDescription": "Käyttäjä kielletään pikakeskustelusta, eikä hän voi liittyä pikakeskusteluun uudelleen ennen kuin kielto kumotetaan.", + "@banUserDescription": {}, + "unbanUserDescription": "Käyttäjä voi liittyä pikakeskusteluun uudelleen, jos hän yrittää.", + "@unbanUserDescription": {}, + "kickUserDescription": "Käyttäjä potkitaan ulos pikakeskustelusta, mutta häntä ei porttikieltoa saada. Julkisissa pikakeskusteluissa käyttäjä voi liittyä takaisin milloin tahansa.", + "@kickUserDescription": {}, + "makeAdminDescription": "Kun olet tehnyt tästä käyttäjästä järjestelmänvalvojan, et ehkä voi perua tätä, koska hänellä on siitä hetkestä lähtien samat oikeudet kuin sinulla.", + "@makeAdminDescription": {}, + "pushNotificationsNotAvailable": "Työntöilmoitukset ei saatavilla", + "@pushNotificationsNotAvailable": {}, + "learnMore": "Opi lisää", + "@learnMore": {}, + "yourGlobalUserIdIs": "Yleisesti pätevä käyttäjätunnuksesi on: ", + "@yourGlobalUserIdIs": {}, + "noUsersFoundWithQuery": "Valitettavasti käyttäjää ei löytynyt haulla \"{query}\". Tarkistathan, onko kirjoitusvirhe.", + "@noUsersFoundWithQuery": { + "type": "String", + "placeholders": { + "query": { + "type": "String" + } + } + }, + "knocking": "Koputetaan", + "@knocking": {}, + "chatCanBeDiscoveredViaSearchOnServer": "Pikakeskustelu löytyy haulla {server}:lta", + "@chatCanBeDiscoveredViaSearchOnServer": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "searchChatsRooms": "Hae #pikakeskustelut, @käyttäjät...", + "@searchChatsRooms": {}, + "nothingFound": "Mitään ei löytynyt...", + "@nothingFound": {}, + "groupName": "Ryhmän nimi", + "@groupName": {}, + "createGroupAndInviteUsers": "Luo ryhmä ja kutsu käyttäjiä", + "@createGroupAndInviteUsers": {}, + "groupCanBeFoundViaSearch": "Ryhmä löytyy haun kautta", + "@groupCanBeFoundViaSearch": {}, + "wrongRecoveryKey": "Pahoittelut... tämä ei vaikuta olevan oikea palautusavain.", + "@wrongRecoveryKey": {}, + "startConversation": "Aloita keskustelu", + "@startConversation": {}, + "commandHint_sendraw": "Lähetä raaka JSON", + "@commandHint_sendraw": {}, + "databaseMigrationTitle": "Tietokanta on optimoitu", + "@databaseMigrationTitle": {}, + "databaseMigrationBody": "Odotathan hetki. Tämä voi kestää hetken.", + "@databaseMigrationBody": {}, + "leaveEmptyToClearStatus": "Jätä tyhjäksi tyhjentääksesi tilasi.", + "@leaveEmptyToClearStatus": {}, + "publicLink": "Julkinen linkki", + "@publicLink": {}, + "publicChatAddresses": "Julkiset keskusteluosoitteet", + "@publicChatAddresses": {}, + "createNewAddress": "Luo uusi osoite", + "@createNewAddress": {}, + "joinSpace": "Liity tilaan", + "@joinSpace": {}, + "publicSpaces": "Julkiset tilat", + "@publicSpaces": {}, + "addChatOrSubSpace": "Lisää pikakeskustelu tai alitila", + "@addChatOrSubSpace": {}, + "subspace": "Alitila", + "@subspace": {}, + "decline": "Hylkää", + "@decline": {}, + "initAppError": "Sovelluksen alustamisessa tapahtui virhe", + "@initAppError": {}, + "userRole": "Käyttäjärooli", + "@userRole": {}, + "minimumPowerLevel": "{level} on pienin tehotaso.", + "@minimumPowerLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "String" + } + } + }, + "searchIn": "Hae keskustelusta \"{chat}\"...", + "@searchIn": { + "type": "String", + "placeholders": { + "chat": { + "type": "String" + } + } + }, + "searchMore": "Hae lisää...", + "@searchMore": {}, + "databaseBuildErrorBody": "SQlite-tietokantaa ei voida rakentaa. Sovellus yrittää toistaiseksi käyttää vanhaa tietokantaa. Ilmoita tästä virheestä kehittäjille osoitteessa {url}. Virheviesti on: {error}", + "@databaseBuildErrorBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "sessionLostBody": "Istuntosi on menetetty. Ilmoita tästä virheestä kehittäjille osoitteessa {url}. Virheviesti on: {error}", + "@sessionLostBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "restoreSessionBody": "Sovellus yrittää nyt palauttaa istuntosi varmuuskopiosta. Ilmoita tästä virheestä kehittäjille osoitteessa {url}. Virheviesti on: {error}", + "@restoreSessionBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "forwardMessageTo": "Lähetätkö viestin edelleen kohteeseen {roomName}?", + "@forwardMessageTo": { + "type": "String", + "placeholders": { + "roomName": { + "type": "String" + } + } + }, + "sendReadReceipts": "Lähetä lukukuittaukset", + "@sendReadReceipts": {}, + "sendTypingNotificationsDescription": "Muut keskustelun osallistujat näkevät, milloin olet kirjoittamassa uutta viestiä.", + "@sendTypingNotificationsDescription": {}, + "sendReadReceiptsDescription": "Muut keskustelun osallistujat näkevät, milloin olet lukenut viestin.", + "@sendReadReceiptsDescription": {}, + "formattedMessages": "Muotoillut viestit", + "@formattedMessages": {}, + "formattedMessagesDescription": "Näytä rikasta viestisisältöä, kuten lihavoitua tekstiä, käyttämällä Markdownia.", + "@formattedMessagesDescription": {}, + "verifyOtherUser": "🔐 Vahvista toinen käyttäjä", + "@verifyOtherUser": {}, + "verifyOtherUserDescription": "Jos vahvistat toisen käyttäjän, voit olla varma, että tiedät kenelle todella kirjoitat. 💪\n\nKun aloitat vahvistuksen, sinä ja toinen käyttäjä näette sovelluksessa ponnahdusikkunan. Siellä näette sitten sarjan emojeja tai numeroita, joita teidän on verrattava toisiinsa.\n\nParas tapa tehdä tämä on tavata heidät tai aloittaa videopuhelu. 👭", + "@verifyOtherUserDescription": {}, + "verifyOtherDevice": "🔐 Vahvista toinen laite", + "@verifyOtherDevice": {}, + "verifyOtherDeviceDescription": "Kun vahvistat toisen laitteen, kyseiset laitteet voivat vaihtaa avaimia, mikä lisää yleistä turvallisuuttasi. 💪 Kun aloitat vahvistuksen, molempien laitteiden sovellukseen ilmestyy ponnahdusikkuna. Siellä näet sitten sarjan emojeja tai numeroita, joita sinun on verrattava toisiinsa. On parasta pitää molemmat laitteet käsillä ennen vahvistuksen aloittamista. 🤳", + "@verifyOtherDeviceDescription": {}, + "acceptedKeyVerification": "{sender} hyväksyi avaimen vahvistuksen", + "@acceptedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "canceledKeyVerification": "{sender} peruutti avaimen vahvistuksen", + "@canceledKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "completedKeyVerification": "{sender} suoritti avaimen vahvistuksen", + "@completedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "isReadyForKeyVerification": "{sender} on valmis avaimen vahvistukseen", + "@isReadyForKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "requestedKeyVerification": "{sender} pyysi avaimen vahvistusta", + "@requestedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "startedKeyVerification": "{sender} aloitti avaimen vahvistuksen", + "@startedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "transparent": "Läpinäkyvä", + "@transparent": {}, + "incomingMessages": "Saapuvat viestit", + "@incomingMessages": {}, + "stickers": "Tarrat", + "@stickers": {}, + "discover": "Tutustu", + "@discover": {}, + "commandHint_ignore": "Jätä huomiotta annettu matrix-tunnus", + "@commandHint_ignore": {}, + "commandHint_unignore": "Kumoa annetun matrix-tunnuksen huomiottajätäminen", + "@commandHint_unignore": {}, + "unreadChatsInApp": "{appname}: {unread} lukematonta keskustelua", + "@unreadChatsInApp": { + "type": "String", + "placeholders": { + "appname": { + "type": "String" + }, + "unread": { + "type": "String" + } + } + }, + "noDatabaseEncryption": "Tietokannan salausta ei tueta tällä alustalla", + "@noDatabaseEncryption": {}, + "thereAreCountUsersBlocked": "Tällä hetkellä {count} käyttäjää on estetty.", + "@thereAreCountUsersBlocked": { + "type": "String", + "count": {} + }, + "restricted": "Rajoitettu", + "@restricted": {}, + "knockRestricted": "Koputus rajoitettu", + "@knockRestricted": {}, + "goToSpace": "Siirry tilaan: {space}", + "@goToSpace": { + "type": "String", + "space": {} + }, + "markAsUnread": "Merkitse lukemattomaksi", + "@markAsUnread": {}, + "userLevel": "{level} - Käyttäjä", + "@userLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "moderatorLevel": "{level} - Valvoja", + "@moderatorLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "adminLevel": "{level} - Järjestelmänvalvoja", + "@adminLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "changeGeneralChatSettings": "Muuta yleisiä keskusteluasetuksia", + "@changeGeneralChatSettings": {}, + "inviteOtherUsers": "Kutsu muita käyttäjiä tähän pikakeskusteluun", + "@inviteOtherUsers": {}, + "changeTheChatPermissions": "Muuta keskustelulupia", + "@changeTheChatPermissions": {}, + "changeTheVisibilityOfChatHistory": "Muuta pikakeskusteluhistorian näkyvyyttä", + "@changeTheVisibilityOfChatHistory": {}, + "changeTheCanonicalRoomAlias": "Vaihda julkisen pikakeskustelun pääosoite", + "@changeTheCanonicalRoomAlias": {}, + "sendRoomNotifications": "Lähetä @room-ilmoituksia", + "@sendRoomNotifications": {}, + "changeTheDescriptionOfTheGroup": "Muuta keskustelun kuvausta", + "@changeTheDescriptionOfTheGroup": {}, + "chatPermissionsDescription": "Määritä tarvittava tehotaso tietyille toiminnoille tässä pikakeskustelussa. Tehotasot 0, 50 ja 100 edustavat yleensä käyttäjiä, valvoja ja ylläpitäjiä, mutta mikä tahansa porrastus on mahdollinen.", + "@chatPermissionsDescription": {}, + "updateInstalled": "🎉 Päivitys {version} asennettu!", + "@updateInstalled": { + "type": "String", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "sendCanceled": "Lähetys peruttu", + "@sendCanceled": {}, + "loginWithMatrixId": "Kirjaudu sisään Matrix-tunnuksella", + "@loginWithMatrixId": {}, + "discoverHomeservers": "Tutustu kotipalvelimiin", + "@discoverHomeservers": {}, + "whatIsAHomeserver": "Mikä on kotipalvelin?", + "@whatIsAHomeserver": {}, + "homeserverDescription": "Kaikki tietosi tallennetaan kotipalvelimelle, aivan kuten sähköpostipalveluntarjoaja. Voit valita, mitä kotipalvelinta haluat käyttää, ja silti kommunikoida kaikkien kanssa. Lisätietoja osoitteessa https://matrix.org.", + "@homeserverDescription": {}, + "doesNotSeemToBeAValidHomeserver": "Ei näytä olevan yhteensopiva kotipalvelin. Väärä URL-osoite?", + "@doesNotSeemToBeAValidHomeserver": {}, + "calculatingFileSize": "Lasketaan tiedoston kokoa...", + "@calculatingFileSize": {}, + "prepareSendingAttachment": "Valmistele lähetettävä liite...", + "@prepareSendingAttachment": {}, + "sendingAttachment": "Lähetetään liitettä...", + "@sendingAttachment": {}, + "generatingVideoThumbnail": "Videon pikkukuvan luominen...", + "@generatingVideoThumbnail": {}, + "compressVideo": "Pakataan videota...", + "@compressVideo": {}, + "sendingAttachmentCountOfCount": "Lähetetään {length} pituista liitettä {index}...", + "@sendingAttachmentCountOfCount": { + "type": "integer", + "placeholders": { + "index": { + "type": "int" + }, + "length": { + "type": "int" + } + } + }, + "serverLimitReached": "Palvelinraja saavutettu! Odotetaan {seconds} sekuntia...", + "@serverLimitReached": { + "type": "integer", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "oneOfYourDevicesIsNotVerified": "Yhtä laitteistasi ei ole vahvistettu", + "@oneOfYourDevicesIsNotVerified": {}, + "noticeChatBackupDeviceVerification": "Huomautus: Kun yhdistät kaikki laitteesi keskustelun varmuuskopiointiin, ne vahvistetaan automaattisesti.", + "@noticeChatBackupDeviceVerification": {}, + "blur": "Sumeus:", + "@blur": {}, + "opacity": "Läpinäkymättömyys:", + "@opacity": {}, + "setWallpaper": "Aseta taustakuva", + "@setWallpaper": {}, + "manageAccount": "Hallinnoi tiliä", + "@manageAccount": {}, + "noContactInformationProvided": "Palvelin ei ilmoittaa mitään kelvollisia yhteystietoja", + "@noContactInformationProvided": {}, + "contactServerAdmin": "Ota yhteyttä palvelimen ylläpitäjään", + "@contactServerAdmin": {}, + "contactServerSecurity": "Ota yhteyttä palvelimen tietoturvaosastoon", + "@contactServerSecurity": {}, + "supportPage": "Tukisivu", + "@supportPage": {}, + "compress": "Pakkaa", + "@compress": {}, + "boldText": "Lihavoitu teksti", + "@boldText": {}, + "italicText": "Kursivoitu teksti", + "@italicText": {}, + "strikeThrough": "Yliviivaus", + "@strikeThrough": {}, + "pleaseFillOut": "Ole hyvä ja täytä", + "@pleaseFillOut": {}, + "invalidUrl": "Virheellinen URL-osoite", + "@invalidUrl": {}, + "addLink": "Lisää linkki", + "@addLink": {}, + "unableToJoinChat": "Pikakeskusteluun liittyminen ei onnistu. Toinen osapuoli on ehkä jo sulkenut keskustelun.", + "@unableToJoinChat": {}, + "otherPartyNotLoggedIn": "Toinen osapuoli ei ole tällä hetkellä kirjautuneena sisään, joten ei voi vastaanottaa viestejä!", + "@otherPartyNotLoggedIn": {}, + "appWantsToUseForLogin": "Kirjaudu sisään käyttämällä '{server}':ta", + "@appWantsToUseForLogin": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "appWantsToUseForLoginDescription": "Annat täten sovellukselle ja verkkosivustolle luvan jakaa tietoja sinusta.", + "@appWantsToUseForLoginDescription": {}, + "waitingForServer": "Odotetaan palvelinta...", + "@waitingForServer": {}, + "appIntroduction": "FluffyChatin avulla voit keskustella ystäviesi kanssa eri pikaviestimien kautta. Lue lisää osoitteesta https://matrix.org tai napauta *Jatka*.", + "@appIntroduction": {}, + "newChatRequest": "📩 Uusi pikakeskustelupyyntö", + "@newChatRequest": {}, + "contentNotificationSettings": "Sisältöilmoitusten asetukset", + "@contentNotificationSettings": {}, + "generalNotificationSettings": "Yleiset ilmoitusasetukset", + "@generalNotificationSettings": {}, + "roomNotificationSettings": "Huoneen ilmoitusten asetukset", + "@roomNotificationSettings": {}, + "userSpecificNotificationSettings": "Käyttäjäkohtaiset ilmoitusten asetukset", + "@userSpecificNotificationSettings": {}, + "otherNotificationSettings": "Muut ilmoitusten asetukset", + "@otherNotificationSettings": {}, + "notificationRuleContainsUserName": "Sisältää käyttäjän nimen", + "@notificationRuleContainsUserName": {}, + "notificationRuleContainsUserNameDescription": "Ilmoittaa käyttäjälle, kun viesti sisältää hänen käyttäjän nimensä.", + "@notificationRuleContainsUserNameDescription": {}, + "notificationRuleMaster": "Mykistä kaikki ilmoitukset", + "@notificationRuleMaster": {}, + "notificationRuleMasterDescription": "Ohittaa kaikki muut säännöt ja poistaa kaikki ilmoitukset käytöstä.", + "@notificationRuleMasterDescription": {}, + "notificationRuleSuppressNotices": "Poista kaikki automatisoidut viestit", + "@notificationRuleSuppressNotices": {}, + "notificationRuleSuppressNoticesDescription": "Poistaa ilmoitukset automatisoiduilta asiakkailta, kuten boteilta.", + "@notificationRuleSuppressNoticesDescription": {}, + "notificationRuleInviteForMe": "Kutsu minulle", + "@notificationRuleInviteForMe": {}, + "notificationRuleInviteForMeDescription": "Ilmoittaa käyttäjälle, kun hänet on kutsuttu huoneeseen.", + "@notificationRuleInviteForMeDescription": {}, + "notificationRuleMemberEvent": "Jäsentapahtuma", + "@notificationRuleMemberEvent": {}, + "notificationRuleMemberEventDescription": "Poistaa jäsenyystapahtumien ilmoitukset.", + "@notificationRuleMemberEventDescription": {}, + "notificationRuleIsUserMention": "Käyttäjän maininta", + "@notificationRuleIsUserMention": {}, + "notificationRuleIsUserMentionDescription": "Ilmoittaa käyttäjälle, kun hänet mainitaan suoraan viestissä.", + "@notificationRuleIsUserMentionDescription": {}, + "notificationRuleContainsDisplayName": "Sisältää näyttönimen", + "@notificationRuleContainsDisplayName": {}, + "notificationRuleContainsDisplayNameDescription": "Ilmoittaa käyttäjälle, kun viesti sisältää hänen näyttönimensä.", + "@notificationRuleContainsDisplayNameDescription": {}, + "notificationRuleIsRoomMention": "Huoneen maininta", + "@notificationRuleIsRoomMention": {}, + "notificationRuleIsRoomMentionDescription": "Ilmoittaa käyttäjälle, kun huoneesta on maininta.", + "@notificationRuleIsRoomMentionDescription": {}, + "notificationRuleRoomnotif": "Huoneilmoitus", + "@notificationRuleRoomnotif": {}, + "notificationRuleRoomnotifDescription": "Ilmoittaa käyttäjälle, kun viesti sisältää '@room'.", + "@notificationRuleRoomnotifDescription": {}, + "notificationRuleTombstone": "Hautakivi", + "@notificationRuleTombstone": {}, + "notificationRuleTombstoneDescription": "Ilmoittaa käyttäjälle huoneen deaktivointiviesteistä.", + "@notificationRuleTombstoneDescription": {}, + "notificationRuleReaction": "Reagointi", + "@notificationRuleReaction": {}, + "notificationRuleReactionDescription": "Poistaa ilmoitukset reaktioista.", + "@notificationRuleReactionDescription": {}, + "notificationRuleRoomServerAcl": "Huonepalvelimen pääsyluettelo", + "@notificationRuleRoomServerAcl": {}, + "notificationRuleRoomServerAclDescription": "Poistaa huonepalvelimen pääsyluetteloiden (ACL) ilmoitukset.", + "@notificationRuleRoomServerAclDescription": {}, + "notificationRuleSuppressEdits": "Poista muokkaukset", + "@notificationRuleSuppressEdits": {}, + "notificationRuleSuppressEditsDescription": "Poistaa ilmoitukset muokatuista viesteistä.", + "@notificationRuleSuppressEditsDescription": {}, + "notificationRuleCall": "Soita", + "@notificationRuleCall": {}, + "notificationRuleCallDescription": "Ilmoittaa käyttäjälle soitoista.", + "@notificationRuleCallDescription": {}, + "notificationRuleEncryptedRoomOneToOne": "Kahdenkeskinen salattu huone", + "@notificationRuleEncryptedRoomOneToOne": {}, + "notificationRuleEncryptedRoomOneToOneDescription": "Ilmoittaa käyttäjälle kahdenkeskisissä salatuissa huoneissa olevista viesteistä.", + "@notificationRuleEncryptedRoomOneToOneDescription": {}, + "notificationRuleRoomOneToOne": "Kahdenkeskinen huone", + "@notificationRuleRoomOneToOne": {}, + "notificationRuleRoomOneToOneDescription": "Ilmoittaa käyttäjälle kahdenkeskisissä huoneissa olevista viesteistä.", + "@notificationRuleRoomOneToOneDescription": {}, + "notificationRuleMessage": "Viesti", + "@notificationRuleMessage": {}, + "notificationRuleMessageDescription": "Ilmoittaa käyttäjälle yleisistä viesteistä.", + "@notificationRuleMessageDescription": {}, + "notificationRuleEncrypted": "Salattu", + "@notificationRuleEncrypted": {}, + "notificationRuleEncryptedDescription": "Ilmoittaa käyttäjälle salatuissa huoneissa olevista viesteistä.", + "@notificationRuleEncryptedDescription": {}, + "notificationRuleJitsiDescription": "Ilmoittaa käyttäjälle tapahtumista Jitsi-vimpaimesta.", + "@notificationRuleJitsiDescription": {}, + "notificationRuleServerAcl": "Poista tapahtumat palvelimen pääsyluettelosta", + "@notificationRuleServerAcl": {}, + "notificationRuleServerAclDescription": "Poistaa ilmoitukset palvelimen pääsyluettelosta.", + "@notificationRuleServerAclDescription": {}, + "unknownPushRule": "Tuntematon työntösääntö '{rule}'", + "@unknownPushRule": { + "type": "String", + "placeholders": { + "rule": { + "type": "String" + } + } + }, + "sentVoiceMessage": "🎙️ {duration} - Ääniviesti {sender}:lta", + "@sentVoiceMessage": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "duration": { + "type": "String" + } + } + }, + "deletePushRuleCanNotBeUndone": "Jos poistat tämän ilmoitusasetuksen, sitä ei voi kumota.", + "@deletePushRuleCanNotBeUndone": {}, + "shareKeysWith": "Jaa avaimet...", + "@shareKeysWith": {}, + "shareKeysWithDescription": "Mihin laitteisiin tulisi luottaa, jotta ne voivat lukea viestejäsi salatuissa keskusteluissa?", + "@shareKeysWithDescription": {}, + "crossVerifiedDevicesIfEnabled": "Ristiinvahvistetut laitteet, jos otettu käyttöön", + "@crossVerifiedDevicesIfEnabled": {}, + "crossVerifiedDevices": "Ristiinvahvistetut laitteet", + "@crossVerifiedDevices": {}, + "verifiedDevicesOnly": "Vain vahvistetut laitteet", + "@verifiedDevicesOnly": {}, + "takeAPhoto": "Ota valokuva", + "@takeAPhoto": {}, + "optionalMessage": "(Valinnainen) viesti...", + "@optionalMessage": {}, + "notSupportedOnThisDevice": "Ei tuettu tällä laitteella", + "@notSupportedOnThisDevice": {} +} diff --git a/lib/l10n/intl_fil.arb b/lib/l10n/intl_fil.arb new file mode 100644 index 0000000..414c52d --- /dev/null +++ b/lib/l10n/intl_fil.arb @@ -0,0 +1,1063 @@ +{ + "remove": "Tanggalin", + "@remove": { + "type": "String", + "placeholders": {} + }, + "importNow": "I-import ngayon", + "@importNow": {}, + "importEmojis": "I-import ang mga Emoji", + "@importEmojis": {}, + "importFromZipFile": "Mag-import mula sa .zip file", + "@importFromZipFile": {}, + "exportEmotePack": "I-export ang Emote pack bilang .zip", + "@exportEmotePack": {}, + "accept": "Tanggapin", + "@accept": { + "type": "String", + "placeholders": {} + }, + "account": "Account", + "@account": { + "type": "String", + "placeholders": {} + }, + "addEmail": "Magdagdag ng email", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "confirmMatrixId": "Paki-kumpirma ang iyong Matrix ID para burahin ang iyong account.", + "@confirmMatrixId": {}, + "addChatDescription": "Magdagdag ng deskripsyon ng chat...", + "@addChatDescription": {}, + "admin": "Admin", + "@admin": { + "type": "String", + "placeholders": {} + }, + "alias": "alyas", + "@alias": { + "type": "String", + "placeholders": {} + }, + "all": "Lahat", + "@all": { + "type": "String", + "placeholders": {} + }, + "allChats": "Lahat ng mga chat", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "commandHint_googly": "Magpadala ng mga googly eye", + "@commandHint_googly": {}, + "commandHint_cuddle": "Magpadala ng yakap", + "@commandHint_cuddle": {}, + "cuddleContent": "Niyakap ka ni {senderName}", + "@cuddleContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "hugContent": "Niyakap ka ni {senderName}", + "@hugContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "anyoneCanJoin": "Pwede sumali ang anumang tao", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "appLock": "Lock ng app", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "archive": "Archive", + "@archive": { + "type": "String", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "Pwede ba sumali ang mga bisita", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "Sigurado ka?", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "askVerificationRequest": "Tanggapin ang hiling ng verification mula sa {username}?", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "autoplayImages": "Awtomatikong i-play ang mga gumagalaw na sticker at emote", + "@autoplayImages": { + "type": "String", + "placeholder": {} + }, + "sendTypingNotifications": "Ipadala ang mga typing notification", + "@sendTypingNotifications": {}, + "blockDevice": "I-block ang Device", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "blocked": "Na-block", + "@blocked": { + "type": "String", + "placeholders": {} + }, + "changeDeviceName": "Palitan ang pangalan ng device", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "changedTheChatAvatar": "Pinalitan ni {username} ang avatar ng chat", + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheGuestAccessRules": "Pinalitan ni {username} ang mga tuntunin sa pag-access ng bisita", + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheHistoryVisibility": "Pinalitan ni {username} ang kakayahan ng pagkikita ng history", + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheHistoryVisibilityTo": "Pinalitan ni {username} ang kakayahan ng pagkikita ng history sa: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheRoomAliases": "Pinalitan ni {username} ang mga alias ng room", + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changePassword": "Palitan ang password", + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "changeYourAvatar": "Palitan ang iyong avatar", + "@changeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "channelCorruptedDecryptError": "Nasira ang encryption", + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "chat": "Chat", + "@chat": { + "type": "String", + "placeholders": {} + }, + "chatBackup": "Pag-backup ng chat", + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "chatDetails": "Mga detalye ng chat", + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "chatHasBeenAddedToThisSpace": "Nadagdag ang chat sa space na ito", + "@chatHasBeenAddedToThisSpace": {}, + "chats": "Mga Chat", + "@chats": { + "type": "String", + "placeholders": {} + }, + "chooseAStrongPassword": "Pumili ng malakas na password", + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "clearArchive": "I-clear ang archive", + "@clearArchive": {}, + "close": "Isara", + "@close": { + "type": "String", + "placeholders": {} + }, + "commandHint_markasgroup": "Markahan bilang grupo", + "@commandHint_markasgroup": {}, + "commandHint_ban": "Pagbawalan ang ibinigay na user sa room na ito", + "@commandHint_ban": { + "type": "String", + "description": "Usage hint for the command /ban" + }, + "repeatPassword": "Ulitin ang password", + "@repeatPassword": {}, + "notAnImage": "Hindi isang file na larawan.", + "@notAnImage": {}, + "replace": "Palitan", + "@replace": {}, + "about": "Tungkol sa", + "@about": { + "type": "String", + "placeholders": {} + }, + "acceptedTheInvitation": "👍 Tinanggap ni {username} ang imbitasyon", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "activatedEndToEndEncryption": "🔐 Na-activate ni {username} ang end to end encryption", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "supposedMxid": "Dapat ito ay {mxid}", + "@supposedMxid": { + "type": "String", + "placeholders": { + "mxid": { + "type": "String" + } + } + }, + "addToSpace": "Idagdag sa space", + "@addToSpace": {}, + "commandHint_hug": "Magpadala ng yakap", + "@commandHint_hug": {}, + "googlyEyesContent": "Nagpadala si {senderName} ng googly eyes", + "@googlyEyesContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "answeredTheCall": "Sinagot ni {senderName} ang tawag", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "areYouSureYouWantToLogout": "Sigurado kang gusto mong mag-log out?", + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "askSSSSSign": "Para i-sign ang isa pang tao, pakilagay ang iyong secure store passphrase o recovery key.", + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "badServerLoginTypesException": "Ang homeserver ay sinusuportahan ang sumusunod na uri ng login:\n{serverVersions}\nNgunit sinusuportahan lang ng app ang:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "sendOnEnter": "Ipadala sa pagpindot ng enter", + "@sendOnEnter": {}, + "badServerVersionsException": "Ang homeserver ay sinusuportahan ang mga Spec bersyon:\n{serverVersions}\nNgunit sinusuportahan lang ng app ang {supportedVersions}", + "@badServerVersionsException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "banFromChat": "Pagbawalan sa chat", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "banned": "Pinagbawalan", + "@banned": { + "type": "String", + "placeholders": {} + }, + "botMessages": "Mga mensahe ng bot", + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "cancel": "Kanselahin", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "bannedUser": "Pinagbawalan ni {username} si {targetName}", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "cantOpenUri": "Hindi mabuksan ang URI na {uri}", + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "changedTheJoinRules": "Pinalitan ni {username} ang mga tuntunin sa pagsali", + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheJoinRulesTo": "Pinalitan ni {username} ang mga tuntunin sa pagsali sa: {joinRules}", + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "changedTheChatDescriptionTo": "Pinalitan ni {username} ang deskripsyon ng chat sa: '{description}'", + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "changedTheProfileAvatar": "Pinalitan ni {username} ang kanilang avatar", + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheChatNameTo": "Pinalitan ni {username} ang pangalan ng chat sa: '{chatname}'", + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "changedTheRoomInvitationLink": "Pinalitan ni {username} ang link ng imbitasyon", + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changeTheHomeserver": "Palitan ang homeserver", + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "changeTheme": "Palitan ang iyong istilio", + "@changeTheme": { + "type": "String", + "placeholders": {} + }, + "changedTheChatPermissions": "Pinalitan ni {username} ang mga pahintulot ng chat", + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changeTheNameOfTheGroup": "Palitan ng pangalan ng grupo", + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "changedTheDisplaynameTo": "Pinalitan ni {username} ang kanilang displayname sa: '{displayname}'", + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "yourChatBackupHasBeenSetUp": "Na-set up na ang iyong chat backup.", + "@yourChatBackupHasBeenSetUp": {}, + "chatBackupDescription": "Naka-secure ang iyong mga lumang mensahe gamit ng recovery key. Siguraduhing hindi mo ito mawalan.", + "@chatBackupDescription": { + "type": "String", + "placeholders": {} + }, + "commandHint_markasdm": "Markahan bilang direktang mensahe na room para sa ibinigay na Matrix ID", + "@commandHint_markasdm": {}, + "changedTheGuestAccessRulesTo": "Pinalitan ni {username} ang mga tuntunin sa pag-access ng bisita sa: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "commandHint_clearcache": "I-clear ang cache", + "@commandHint_clearcache": { + "type": "String", + "description": "Usage hint for the command /clearcache" + }, + "commandHint_discardsession": "Iwaksi ang sesyon", + "@commandHint_discardsession": { + "type": "String", + "description": "Usage hint for the command /discardsession" + }, + "commandHint_create": "Gumawa ng walang lamang group chat\nGumamit ng --no-encryption para i-disable ang encryption", + "@commandHint_create": { + "type": "String", + "description": "Usage hint for the command /create" + }, + "configureChat": "I-configure ang chat", + "@configureChat": { + "type": "String", + "placeholders": {} + }, + "confirm": "Kumpirmahin", + "@confirm": { + "type": "String", + "placeholders": {} + }, + "compareNumbersMatch": "Paki-kumpara ang mga numero", + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "copiedToClipboard": "Kinopya sa clipboard", + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "copy": "Kopyahin", + "@copy": { + "type": "String", + "placeholders": {} + }, + "copyToClipboard": "Kopyahin sa clipboard", + "@copyToClipboard": { + "type": "String", + "placeholders": {} + }, + "countParticipants": "{count} mga kasali", + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "createdTheChat": "💬 Ginawa ni {username} ang chat", + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "createGroup": "Gumawa ng grupo", + "@createGroup": {}, + "createNewSpace": "Bagong space", + "@createNewSpace": { + "type": "String", + "placeholders": {} + }, + "currentlyActive": "Kasalukuyang aktibo", + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "darkTheme": "Madilim", + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "displaynameHasBeenChanged": "Pinalitan na ang display name", + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "directChats": "Mga Direktang Chat", + "@directChats": { + "type": "String", + "placeholders": {} + }, + "allRooms": "Lahat ng Mga Group Chat", + "@allRooms": { + "type": "String", + "placeholders": {} + }, + "downloadFile": "I-download ang file", + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "editBlockedServers": "I-edit ang mga naka-block na server", + "@editBlockedServers": { + "type": "String", + "placeholders": {} + }, + "chatPermissions": "Mga pahintulot ng chat", + "@chatPermissions": {}, + "editDisplayname": "I-edit ang display name", + "@editDisplayname": { + "type": "String", + "placeholders": {} + }, + "editRoomAliases": "I-edit ang mga alyas ng room", + "@editRoomAliases": { + "type": "String", + "placeholders": {} + }, + "edit": "I-edit", + "@edit": { + "type": "String", + "placeholders": {} + }, + "editRoomAvatar": "I-edit ang avatar ng room", + "@editRoomAvatar": { + "type": "String", + "placeholders": {} + }, + "emoteExists": "Umiiral na ang emote!", + "@emoteExists": { + "type": "String", + "placeholders": {} + }, + "emptyChat": "Walang lamang chat", + "@emptyChat": { + "type": "String", + "placeholders": {} + }, + "enableEncryption": "I-enable ang encryption", + "@enableEncryption": { + "type": "String", + "placeholders": {} + }, + "encryption": "Pag-encrypt", + "@encryption": { + "type": "String", + "placeholders": {} + }, + "encrypted": "Naka-encrypt", + "@encrypted": { + "type": "String", + "placeholders": {} + }, + "encryptionNotEnabled": "Hindi naka-enable ang encryption", + "@encryptionNotEnabled": { + "type": "String", + "placeholders": {} + }, + "everythingReady": "Handa na ang lahat!", + "@everythingReady": { + "type": "String", + "placeholders": {} + }, + "appLockDescription": "I-lock ang app kapag hindi ginagamit sa pamamagitan ng pin code", + "@appLockDescription": {}, + "commandHint_dm": "Magsimula ng direktong chat\nGumamit ng --no-encryptiom para i-disable ang encryption", + "@commandHint_dm": { + "type": "String", + "description": "Usage hint for the command /dm" + }, + "commandHint_html": "Magpadala ng HTML-formatted na text", + "@commandHint_html": { + "type": "String", + "description": "Usage hint for the command /html" + }, + "commandHint_invite": "Imbitahan ang ibinigay na user sa room na ito", + "@commandHint_invite": { + "type": "String", + "description": "Usage hint for the command /invite" + }, + "commandHint_join": "Sumali sa ibinigay na room", + "@commandHint_join": { + "type": "String", + "description": "Usage hint for the command /join" + }, + "commandHint_kick": "Tanggalin ang ibinigay na user sa room na ito", + "@commandHint_kick": { + "type": "String", + "description": "Usage hint for the command /kick" + }, + "commandHint_leave": "Umalis sa room na ito", + "@commandHint_leave": { + "type": "String", + "description": "Usage hint for the command /leave" + }, + "commandHint_me": "Ilarawan ang iyong sarili", + "@commandHint_me": { + "type": "String", + "description": "Usage hint for the command /me" + }, + "commandHint_myroomavatar": "Ilapat ang iyong larawan para sa room na ito (bilang mxc-uri)", + "@commandHint_myroomavatar": { + "type": "String", + "description": "Usage hint for the command /myroomavatar" + }, + "commandHint_myroomnick": "Ilapat ang iyong display name para sa room na ito", + "@commandHint_myroomnick": { + "type": "String", + "description": "Usage hint for the command /myroomnick" + }, + "commandHint_op": "Ilapat ang level ng lakas sa ibinigay na user (default: 50)", + "@commandHint_op": { + "type": "String", + "description": "Usage hint for the command /op" + }, + "commandHint_react": "Magpadala ng reply bilang reaksyon", + "@commandHint_react": { + "type": "String", + "description": "Usage hint for the command /react" + }, + "commandHint_send": "Magpadala ng text", + "@commandHint_send": { + "type": "String", + "description": "Usage hint for the command /send" + }, + "commandHint_unban": "I-unban ang ibinigay na user sa room na ito", + "@commandHint_unban": { + "type": "String", + "description": "Usage hint for the command /unban" + }, + "commandInvalid": "Hindi wastong command", + "@commandInvalid": { + "type": "String" + }, + "compareEmojiMatch": "Paki-kumpara ang mga emoji", + "@compareEmojiMatch": { + "type": "String", + "placeholders": {} + }, + "connect": "Kumonekta", + "@connect": { + "type": "String", + "placeholders": {} + }, + "containsDisplayName": "Naglalaman ng display name", + "@containsDisplayName": { + "type": "String", + "placeholders": {} + }, + "create": "Gumawa", + "@create": { + "type": "String", + "placeholders": {} + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "dateWithoutYear": "{month}/{day}", + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "dateWithYear": "{month}/{day}/{year}", + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "deactivateAccountWarning": "Ide-deactivate nito ang iyong user account. Hindi na ito maaaring bawiin! Sigurado ka?", + "@deactivateAccountWarning": { + "type": "String", + "placeholders": {} + }, + "delete": "Burahin", + "@delete": { + "type": "String", + "placeholders": {} + }, + "deleteMessage": "Burahin ang mensahe", + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "device": "Device", + "@device": { + "type": "String", + "placeholders": {} + }, + "deviceId": "ID ng Device", + "@deviceId": { + "type": "String", + "placeholders": {} + }, + "devices": "Mga Device", + "@devices": { + "type": "String", + "placeholders": {} + }, + "emoteInvalid": "Hindi wastong shortcode ng emote!", + "@emoteInvalid": { + "type": "String", + "placeholders": {} + }, + "emoteKeyboardNoRecents": "Ang mga kamakailang ginamit na emote ay lalabas dito...", + "@emoteKeyboardNoRecents": { + "type": "String", + "placeholders": {} + }, + "calls": "Mga Tawag", + "@calls": {}, + "customEmojisAndStickers": "Mga custom emoji at sticker", + "@customEmojisAndStickers": {}, + "customEmojisAndStickersBody": "Magdagdag o magbahagi ng mga custom emoji o sticker na maaring gamitin sa anumang chat.", + "@customEmojisAndStickersBody": {}, + "emoteShortcode": "Shortcode ng emoji", + "@emoteShortcode": { + "type": "String", + "placeholders": {} + }, + "emoteWarnNeedToPick": "Kailangan mong pumili ng emote shortcode at isang larawan!", + "@emoteWarnNeedToPick": { + "type": "String", + "placeholders": {} + }, + "enableEmotesGlobally": "I-enable ang emote pack globally", + "@enableEmotesGlobally": { + "type": "String", + "placeholders": {} + }, + "endedTheCall": "Tinapos ni {senderName} ang tawag", + "@endedTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "enterAnEmailAddress": "Maglagay ng email address", + "@enterAnEmailAddress": { + "type": "String", + "placeholders": {} + }, + "homeserver": "Homeserver", + "@homeserver": {}, + "enterYourHomeserver": "Ilagay ang iyong homeserver", + "@enterYourHomeserver": { + "type": "String", + "placeholders": {} + }, + "extremeOffensive": "Lubhang nakakasakit", + "@extremeOffensive": { + "type": "String", + "placeholders": {} + }, + "commandHint_plain": "Magpadala ng hindi na-format na text", + "@commandHint_plain": { + "type": "String", + "description": "Usage hint for the command /plain" + }, + "commandMissing": "Hindi isang command ang {command}.", + "@commandMissing": { + "type": "String", + "placeholders": { + "command": { + "type": "String" + } + }, + "description": "State that {command} is not a valid /command." + }, + "contactHasBeenInvitedToTheGroup": "Inimbita ang contact sa group", + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "containsUserName": "Naglalaman ng username", + "@containsUserName": { + "type": "String", + "placeholders": {} + }, + "contentHasBeenReported": "Inulat ang nilalaman sa mga pangangasiwa ng server", + "@contentHasBeenReported": { + "type": "String", + "placeholders": {} + }, + "couldNotDecryptMessage": "Hindi ma-decrypt ang mensahe: {error}", + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "defaultPermissionLevel": "Default na antas ng pahintulot para sa mga bagong user", + "@defaultPermissionLevel": { + "type": "String", + "placeholders": {} + }, + "deleteAccount": "Burahin ang account", + "@deleteAccount": { + "type": "String", + "placeholders": {} + }, + "emotePacks": "Mga emote pack para sa room", + "@emotePacks": { + "type": "String", + "placeholders": {} + }, + "emoteSettings": "Mga Setting ng Emote", + "@emoteSettings": { + "type": "String", + "placeholders": {} + }, + "globalChatId": "Global chat ID", + "@globalChatId": {}, + "accessAndVisibility": "Pag-access at visibility", + "@accessAndVisibility": {}, + "accessAndVisibilityDescription": "Sino ang pinapayagang sumali sa chat at paano matutuklas ang chat.", + "@accessAndVisibilityDescription": {}, + "enableEncryptionWarning": "Hindi mo madi-disable ang encryption. Sigurado ka ba?", + "@enableEncryptionWarning": { + "type": "String", + "placeholders": {} + }, + "errorObtainingLocation": "Hindi makuha ang lokasyon: {error}", + "@errorObtainingLocation": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "fileName": "Pangalan ng file", + "@fileName": { + "type": "String", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "String", + "placeholders": {} + }, + "fontSize": "Laki ng font", + "@fontSize": { + "type": "String", + "placeholders": {} + }, + "noChatsFoundHere": "Walang pang mga chat na nahanap dito. Magsimula ng bagong chat kasama ang isang tao sa pamamagitan ng paggamit ng button sa ibaba. ⤵️", + "@noChatsFoundHere": {}, + "aboutHomeserver": "Tungkol sa {homeserver}", + "@aboutHomeserver": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "space": "Espasyo", + "@space": {}, + "countChatsAndCountParticipants": "{chats} mga chat at {participants} mga kasali", + "@countChatsAndCountParticipants": { + "type": "String", + "placeholders": { + "chats": { + "type": "int" + }, + "participants": { + "type": "int" + } + } + }, + "guestsAreForbidden": "Pinagbabawal ang mga bisita", + "@guestsAreForbidden": { + "type": "String", + "placeholders": {} + }, + "guestsCanJoin": "Maaring sumali ang mga bisita", + "@guestsCanJoin": { + "type": "String", + "placeholders": {} + }, + "forward": "I-forward", + "@forward": { + "type": "String", + "placeholders": {} + }, + "fromJoining": "Mula sa pagsali", + "@fromJoining": { + "type": "String", + "placeholders": {} + }, + "fromTheInvitation": "Mula sa imbitasyon", + "@fromTheInvitation": { + "type": "String", + "placeholders": {} + }, + "goToTheNewRoom": "Pumunta sa bagong room", + "@goToTheNewRoom": { + "type": "String", + "placeholders": {} + }, + "group": "Grupo", + "@group": { + "type": "String", + "placeholders": {} + }, + "swipeRightToLeftToReply": "Mag-swipe pakaliwa o kanan para tumugon", + "@swipeRightToLeftToReply": {}, + "noMoreChatsFound": "Wala nang mga chat na nahanap…", + "@noMoreChatsFound": {}, + "joinedChats": "Mga nasaling chat", + "@joinedChats": {}, + "unread": "Hindi nabasa", + "@unread": {}, + "spaces": "Mga Espasyo", + "@spaces": {}, + "groupIsPublic": "Pampubliko ang grupo", + "@groupIsPublic": { + "type": "String", + "placeholders": {} + }, + "groups": "Mga grupo", + "@groups": { + "type": "String", + "placeholders": {} + }, + "alwaysUse24HourFormat": "false", + "@alwaysUse24HourFormat": { + "description": "Set to true to always display time of day in 24 hour format." + }, + "chatDescription": "Paglalarawan ng chat", + "@chatDescription": {}, + "chatDescriptionHasBeenChanged": "Nabago ang paglalarawan ng chat", + "@chatDescriptionHasBeenChanged": {}, + "groupWith": "Grupo kasama kay/sa {displayname}", + "@groupWith": { + "type": "String", + "placeholders": { + "displayname": { + "type": "String" + } + } + } +} diff --git a/lib/l10n/intl_fr.arb b/lib/l10n/intl_fr.arb new file mode 100644 index 0000000..b246073 --- /dev/null +++ b/lib/l10n/intl_fr.arb @@ -0,0 +1,3167 @@ +{ + "@@locale": "fr", + "@@last_modified": "2021-08-14 12:41:10.051787", + "about": "À propos", + "@about": { + "type": "String", + "placeholders": {} + }, + "accept": "Accepter", + "@accept": { + "type": "String", + "placeholders": {} + }, + "acceptedTheInvitation": "👍 {username} a accepté l'invitation", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "account": "Compte", + "@account": { + "type": "String", + "placeholders": {} + }, + "activatedEndToEndEncryption": "🔐 {username} a activé le chiffrement de bout en bout", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "addEmail": "Ajouter un courriel", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "addToSpace": "Ajouter à l'espace", + "@addToSpace": {}, + "admin": "Administrateur", + "@admin": { + "type": "String", + "placeholders": {} + }, + "alias": "adresse", + "@alias": { + "type": "String", + "placeholders": {} + }, + "all": "Tout", + "@all": { + "type": "String", + "placeholders": {} + }, + "allChats": "Toutes les discussions", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "answeredTheCall": "{senderName} a répondu à l'appel", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "anyoneCanJoin": "Tout le monde peut rejoindre", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "appLock": "Verrouillage de l’application", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "archive": "Archiver", + "@archive": { + "type": "String", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "Les invités peuvent-i·e·ls rejoindre", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "Êtes-vous sûr·e ?", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "areYouSureYouWantToLogout": "Voulez-vous vraiment vous déconnecter ?", + "@areYouSureYouWantToLogout": { + "type": "String", + "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": "String", + "placeholders": {} + }, + "askVerificationRequest": "Accepter cette demande de vérification de la part de {username} ?", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "autoplayImages": "Lire automatiquement les autocollants et les émojis animés", + "@autoplayImages": { + "type": "String", + "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": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "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": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "banFromChat": "Bannir de la discussion", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "banned": "Banni", + "@banned": { + "type": "String", + "placeholders": {} + }, + "bannedUser": "{username} a banni {targetName}", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "blockDevice": "Bloquer l'appareil", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "blocked": "Bloqué", + "@blocked": { + "type": "String", + "placeholders": {} + }, + "botMessages": "Messages de bot", + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "cancel": "Annuler", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "cantOpenUri": "Impossible d'ouvrir l'URI {uri}", + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "changeDeviceName": "Modifier le nom de l'appareil", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "changedTheChatAvatar": "{username} a changé l'image de la discussion", + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheChatDescriptionTo": "{username} a changé la description de la discussion en : '{description}'", + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "changedTheChatNameTo": "{username} a renommé la discussion en : '{chatname}'", + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "changedTheChatPermissions": "{username} a changé les permissions de la discussion", + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheDisplaynameTo": "{username} a changé son nom en : '{displayname}'", + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "changedTheGuestAccessRules": "{username} a changé les règles d'accès à la discussion pour les invités", + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheGuestAccessRulesTo": "{username} a changé les règles d'accès à la discussion pour les invités en : {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheHistoryVisibility": "{username} a changé la visibilité de l'historique de la discussion", + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheHistoryVisibilityTo": "{username} a changé la visibilité de l'historique de la discussion en : {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheJoinRules": "{username} a changé les règles d'accès à la discussion", + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheJoinRulesTo": "{username} a changé les règles d'accès à la discussion en : {joinRules}", + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "changedTheProfileAvatar": "{username} a changé son avatar", + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomAliases": "{username} a changé les adresses du salon", + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomInvitationLink": "{username} a changé le lien d'invitation", + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changePassword": "Changer de mot de passe", + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "changeTheHomeserver": "Changer le serveur d'accueil", + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "changeTheme": "Changez votre style", + "@changeTheme": { + "type": "String", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "Changer le nom du groupe", + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "changeYourAvatar": "Changer votre avatar", + "@changeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "channelCorruptedDecryptError": "Le chiffrement a été corrompu", + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "chat": "Discussion", + "@chat": { + "type": "String", + "placeholders": {} + }, + "chatBackup": "Sauvegarde des discussions", + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "chatBackupDescription": "Vos anciens messages sont sécurisés par une clé de récupération. Veillez à ne pas la perdre.", + "@chatBackupDescription": { + "type": "String", + "placeholders": {} + }, + "chatDetails": "Détails de la discussion", + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "chatHasBeenAddedToThisSpace": "La discussion a été ajoutée à cet espace", + "@chatHasBeenAddedToThisSpace": {}, + "chats": "Discussions", + "@chats": { + "type": "String", + "placeholders": {} + }, + "chooseAStrongPassword": "Choisissez un mot de passe fort", + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "clearArchive": "Effacer les archives", + "@clearArchive": {}, + "close": "Fermer", + "@close": { + "type": "String", + "placeholders": {} + }, + "commandHint_ban": "Bannir l'utilisateur/trice donné(e) de ce salon", + "@commandHint_ban": { + "type": "String", + "description": "Usage hint for the command /ban" + }, + "commandHint_html": "Envoyer du texte au format HTML", + "@commandHint_html": { + "type": "String", + "description": "Usage hint for the command /html" + }, + "commandHint_invite": "Inviter l'utilisateur/trice donné(e) dans ce salon", + "@commandHint_invite": { + "type": "String", + "description": "Usage hint for the command /invite" + }, + "commandHint_join": "Rejoindre le salon donné", + "@commandHint_join": { + "type": "String", + "description": "Usage hint for the command /join" + }, + "commandHint_kick": "Supprime l'utilisateur/trice donné(e) de ce salon", + "@commandHint_kick": { + "type": "String", + "description": "Usage hint for the command /kick" + }, + "commandHint_leave": "Quitter ce salon", + "@commandHint_leave": { + "type": "String", + "description": "Usage hint for the command /leave" + }, + "commandHint_me": "Décrivez-vous", + "@commandHint_me": { + "type": "String", + "description": "Usage hint for the command /me" + }, + "commandHint_myroomavatar": "Définir votre image pour ce salon (par mxc-uri)", + "@commandHint_myroomavatar": { + "type": "String", + "description": "Usage hint for the command /myroomavatar" + }, + "commandHint_myroomnick": "Définir votre nom d'affichage pour ce salon", + "@commandHint_myroomnick": { + "type": "String", + "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": "String", + "description": "Usage hint for the command /op" + }, + "commandHint_plain": "Envoyer du texte non formaté", + "@commandHint_plain": { + "type": "String", + "description": "Usage hint for the command /plain" + }, + "commandHint_react": "Envoyer une réponse en tant que réaction", + "@commandHint_react": { + "type": "String", + "description": "Usage hint for the command /react" + }, + "commandHint_send": "Envoyer du texte", + "@commandHint_send": { + "type": "String", + "description": "Usage hint for the command /send" + }, + "commandHint_unban": "Débannir l'utilisateur/trice donné(e) de ce salon", + "@commandHint_unban": { + "type": "String", + "description": "Usage hint for the command /unban" + }, + "commandInvalid": "Commande invalide", + "@commandInvalid": { + "type": "String" + }, + "commandMissing": "{command} n'est pas une commande.", + "@commandMissing": { + "type": "String", + "placeholders": { + "command": { + "type": "String" + } + }, + "description": "State that {command} is not a valid /command." + }, + "compareEmojiMatch": "Veuillez comparer les émojis", + "@compareEmojiMatch": { + "type": "String", + "placeholders": {} + }, + "compareNumbersMatch": "Veuillez comparer les chiffres", + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "configureChat": "Configurer la discussion", + "@configureChat": { + "type": "String", + "placeholders": {} + }, + "confirm": "Confirmer", + "@confirm": { + "type": "String", + "placeholders": {} + }, + "connect": "Se connecter", + "@connect": { + "type": "String", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "Le contact a été invité au groupe", + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "containsDisplayName": "Contient un nom d'affichage", + "@containsDisplayName": { + "type": "String", + "placeholders": {} + }, + "containsUserName": "Contient un nom d'utilisateur·ice", + "@containsUserName": { + "type": "String", + "placeholders": {} + }, + "contentHasBeenReported": "Le contenu a été signalé aux administrateurs du serveur", + "@contentHasBeenReported": { + "type": "String", + "placeholders": {} + }, + "copiedToClipboard": "Copié dans le presse-papier", + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "copy": "Copier", + "@copy": { + "type": "String", + "placeholders": {} + }, + "copyToClipboard": "Copier dans le presse-papiers", + "@copyToClipboard": { + "type": "String", + "placeholders": {} + }, + "couldNotDecryptMessage": "Impossible de déchiffrer le message : {error}", + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "countParticipants": "{count} participant(s)", + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "create": "Créer", + "@create": { + "type": "String", + "placeholders": {} + }, + "createdTheChat": "💬 {username} a créé la discussion", + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "createNewSpace": "Nouvel espace", + "@createNewSpace": { + "type": "String", + "placeholders": {} + }, + "currentlyActive": "Actif en ce moment", + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "darkTheme": "Sombre", + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "dateWithoutYear": "{day}/{month}", + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "dateWithYear": "{day}/{month}/{year}", + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "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": "String", + "placeholders": {} + }, + "defaultPermissionLevel": "Niveau d'autorisation par défaut pour les arrivants", + "@defaultPermissionLevel": { + "type": "String", + "placeholders": {} + }, + "delete": "Supprimer", + "@delete": { + "type": "String", + "placeholders": {} + }, + "deleteAccount": "Supprimer le compte", + "@deleteAccount": { + "type": "String", + "placeholders": {} + }, + "deleteMessage": "Supprimer le message", + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "device": "Appareil", + "@device": { + "type": "String", + "placeholders": {} + }, + "deviceId": "Identifiant de l'appareil", + "@deviceId": { + "type": "String", + "placeholders": {} + }, + "devices": "Appareils", + "@devices": { + "type": "String", + "placeholders": {} + }, + "directChats": "Discussions directes", + "@directChats": { + "type": "String", + "placeholders": {} + }, + "displaynameHasBeenChanged": "Renommage effectué", + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "downloadFile": "Télécharger le fichier", + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "edit": "Modifier", + "@edit": { + "type": "String", + "placeholders": {} + }, + "editBlockedServers": "Modifier les serveurs bloqués", + "@editBlockedServers": { + "type": "String", + "placeholders": {} + }, + "editDisplayname": "Changer de nom d'affichage", + "@editDisplayname": { + "type": "String", + "placeholders": {} + }, + "editRoomAliases": "Modifier les adresses du salon", + "@editRoomAliases": { + "type": "String", + "placeholders": {} + }, + "editRoomAvatar": "Modifier l'avatar du salon", + "@editRoomAvatar": { + "type": "String", + "placeholders": {} + }, + "emoteExists": "Cette émoticône existe déjà !", + "@emoteExists": { + "type": "String", + "placeholders": {} + }, + "emoteInvalid": "Raccourci d'émoticône invalide !", + "@emoteInvalid": { + "type": "String", + "placeholders": {} + }, + "emotePacks": "Packs d'émoticônes pour le salon", + "@emotePacks": { + "type": "String", + "placeholders": {} + }, + "emoteSettings": "Paramètre des émoticônes", + "@emoteSettings": { + "type": "String", + "placeholders": {} + }, + "emoteShortcode": "Raccourci de l'émoticône", + "@emoteShortcode": { + "type": "String", + "placeholders": {} + }, + "emoteWarnNeedToPick": "Vous devez sélectionner un raccourci d'émoticône et une image !", + "@emoteWarnNeedToPick": { + "type": "String", + "placeholders": {} + }, + "emptyChat": "Discussion vide", + "@emptyChat": { + "type": "String", + "placeholders": {} + }, + "enableEmotesGlobally": "Activer globalement le pack d'émoticônes", + "@enableEmotesGlobally": { + "type": "String", + "placeholders": {} + }, + "enableEncryption": "Activer le chiffrement", + "@enableEncryption": { + "type": "String", + "placeholders": {} + }, + "enableEncryptionWarning": "Vous ne pourrez plus désactiver le chiffrement. Êtes-vous sûr(e) ?", + "@enableEncryptionWarning": { + "type": "String", + "placeholders": {} + }, + "encrypted": "Chiffré", + "@encrypted": { + "type": "String", + "placeholders": {} + }, + "encryption": "Chiffrement", + "@encryption": { + "type": "String", + "placeholders": {} + }, + "encryptionNotEnabled": "Le chiffrement n'est pas activé", + "@encryptionNotEnabled": { + "type": "String", + "placeholders": {} + }, + "endedTheCall": "{senderName} a mis fin à l'appel", + "@endedTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "enterAnEmailAddress": "Saisissez une adresse de courriel", + "@enterAnEmailAddress": { + "type": "String", + "placeholders": {} + }, + "enterYourHomeserver": "Renseignez votre serveur d'accueil", + "@enterYourHomeserver": { + "type": "String", + "placeholders": {} + }, + "errorObtainingLocation": "Erreur lors de l'obtention de la localisation : {error}", + "@errorObtainingLocation": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "everythingReady": "Tout est prêt !", + "@everythingReady": { + "type": "String", + "placeholders": {} + }, + "extremeOffensive": "Extrêmement offensant", + "@extremeOffensive": { + "type": "String", + "placeholders": {} + }, + "fileName": "Nom du ficher", + "@fileName": { + "type": "String", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "String", + "placeholders": {} + }, + "fontSize": "Taille de la police", + "@fontSize": { + "type": "String", + "placeholders": {} + }, + "forward": "Transférer", + "@forward": { + "type": "String", + "placeholders": {} + }, + "fromJoining": "À partir de l'entrée dans le salon", + "@fromJoining": { + "type": "String", + "placeholders": {} + }, + "fromTheInvitation": "À partir de l'invitation", + "@fromTheInvitation": { + "type": "String", + "placeholders": {} + }, + "goToTheNewRoom": "Aller dans le nouveau salon", + "@goToTheNewRoom": { + "type": "String", + "placeholders": {} + }, + "group": "Groupe", + "@group": { + "type": "String", + "placeholders": {} + }, + "groupIsPublic": "Le groupe est public", + "@groupIsPublic": { + "type": "String", + "placeholders": {} + }, + "groups": "Groupes", + "@groups": { + "type": "String", + "placeholders": {} + }, + "groupWith": "Groupe avec {displayname}", + "@groupWith": { + "type": "String", + "placeholders": { + "displayname": { + "type": "String" + } + } + }, + "guestsAreForbidden": "Les invités ne peuvent pas rejoindre", + "@guestsAreForbidden": { + "type": "String", + "placeholders": {} + }, + "guestsCanJoin": "Les invités peuvent rejoindre", + "@guestsCanJoin": { + "type": "String", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "{username} a annulé l'invitation de {targetName}", + "@hasWithdrawnTheInvitationFor": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "help": "Aide", + "@help": { + "type": "String", + "placeholders": {} + }, + "hideRedactedEvents": "Cacher les évènements supprimés", + "@hideRedactedEvents": { + "type": "String", + "placeholders": {} + }, + "hideUnknownEvents": "Cacher les évènements inconnus", + "@hideUnknownEvents": { + "type": "String", + "placeholders": {} + }, + "howOffensiveIsThisContent": "À quel point ce contenu est-il offensant ?", + "@howOffensiveIsThisContent": { + "type": "String", + "placeholders": {} + }, + "id": "Identifiant", + "@id": { + "type": "String", + "placeholders": {} + }, + "identity": "Identité", + "@identity": { + "type": "String", + "placeholders": {} + }, + "ignore": "Ignorer", + "@ignore": { + "type": "String", + "placeholders": {} + }, + "ignoredUsers": "Utilisateur·ices ignoré·es", + "@ignoredUsers": { + "type": "String", + "placeholders": {} + }, + "iHaveClickedOnLink": "J'ai cliqué sur le lien", + "@iHaveClickedOnLink": { + "type": "String", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "Phrase de passe ou clé de récupération incorrecte", + "@incorrectPassphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "inoffensive": "Non offensant", + "@inoffensive": { + "type": "String", + "placeholders": {} + }, + "inviteContact": "Inviter un contact", + "@inviteContact": { + "type": "String", + "placeholders": {} + }, + "inviteContactToGroup": "Inviter un contact dans {groupName}", + "@inviteContactToGroup": { + "type": "String", + "placeholders": { + "groupName": { + "type": "String" + } + } + }, + "invited": "Invité·e", + "@invited": { + "type": "String", + "placeholders": {} + }, + "invitedUser": "📩 {username} a invité {targetName}", + "@invitedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "invitedUsersOnly": "Uniquement les utilisateur·ices invité·es", + "@invitedUsersOnly": { + "type": "String", + "placeholders": {} + }, + "inviteForMe": "Inviter pour moi", + "@inviteForMe": { + "type": "String", + "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": "String", + "placeholders": { + "username": { + "type": "String" + }, + "link": { + "type": "String" + } + } + }, + "isTyping": "est en train d'écrire…", + "@isTyping": { + "type": "String", + "placeholders": {} + }, + "joinedTheChat": "👋 {username} a rejoint la discussion", + "@joinedTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "joinRoom": "Rejoindre le salon", + "@joinRoom": { + "type": "String", + "placeholders": {} + }, + "kicked": "👞 {username} a expulsé {targetName}", + "@kicked": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickedAndBanned": "🙅 {username} a expulsé et banni {targetName}", + "@kickedAndBanned": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickFromChat": "Expulser de la discussion", + "@kickFromChat": { + "type": "String", + "placeholders": {} + }, + "lastActiveAgo": "Vu·e pour la dernière fois : {localizedTimeShort}", + "@lastActiveAgo": { + "type": "String", + "placeholders": { + "localizedTimeShort": { + "type": "String" + } + } + }, + "leave": "Partir", + "@leave": { + "type": "String", + "placeholders": {} + }, + "leftTheChat": "A quitté la discussion", + "@leftTheChat": { + "type": "String", + "placeholders": {} + }, + "license": "Licence", + "@license": { + "type": "String", + "placeholders": {} + }, + "lightTheme": "Clair", + "@lightTheme": { + "type": "String", + "placeholders": {} + }, + "loadCountMoreParticipants": "Charger {count} participant·es de plus", + "@loadCountMoreParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "loadingPleaseWait": "Chargement… Veuillez patienter.", + "@loadingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "loadMore": "Charger plus…", + "@loadMore": { + "type": "String", + "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": "String", + "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": "String", + "placeholders": {} + }, + "login": "Se connecter", + "@login": { + "type": "String", + "placeholders": {} + }, + "logInTo": "Se connecter à {homeserver}", + "@logInTo": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "logout": "Se déconnecter", + "@logout": { + "type": "String", + "placeholders": {} + }, + "memberChanges": "Changements de membres", + "@memberChanges": { + "type": "String", + "placeholders": {} + }, + "mention": "Mentionner", + "@mention": { + "type": "String", + "placeholders": {} + }, + "messages": "Messages", + "@messages": { + "type": "String", + "placeholders": {} + }, + "moderator": "Modérateur·rice", + "@moderator": { + "type": "String", + "placeholders": {} + }, + "muteChat": "Mettre la discussion en sourdine", + "@muteChat": { + "type": "String", + "placeholders": {} + }, + "needPantalaimonWarning": "Pour l'instant, vous avez besoin de Pantalaimon pour utiliser le chiffrement de bout en bout.", + "@needPantalaimonWarning": { + "type": "String", + "placeholders": {} + }, + "newChat": "Nouvelle discussion", + "@newChat": { + "type": "String", + "placeholders": {} + }, + "newMessageInFluffyChat": "💬 Nouveau message dans FluffyChat", + "@newMessageInFluffyChat": { + "type": "String", + "placeholders": {} + }, + "newVerificationRequest": "Nouvelle demande de vérification !", + "@newVerificationRequest": { + "type": "String", + "placeholders": {} + }, + "next": "Suivant", + "@next": { + "type": "String", + "placeholders": {} + }, + "no": "Non", + "@no": { + "type": "String", + "placeholders": {} + }, + "noConnectionToTheServer": "Aucune connexion au serveur", + "@noConnectionToTheServer": { + "type": "String", + "placeholders": {} + }, + "noEmotesFound": "Aucune émoticône trouvée. 😕", + "@noEmotesFound": { + "type": "String", + "placeholders": {} + }, + "noEncryptionForPublicRooms": "Vous pouvez activer le chiffrement seulement quand le salon n'est plus accessible au public.", + "@noEncryptionForPublicRooms": { + "type": "String", + "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": "String", + "placeholders": {} + }, + "noMatrixServer": "{server1} n'est pas un serveur Matrix, souhaitez-vous utiliser {server2} à la place ?", + "@noMatrixServer": { + "type": "String", + "placeholders": { + "server1": { + "type": "String" + }, + "server2": { + "type": "String" + } + } + }, + "none": "Aucun", + "@none": { + "type": "String", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "Vous n'avez pas encore ajouté de moyen pour récupérer votre mot de passe.", + "@noPasswordRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "noPermission": "Aucune permission", + "@noPermission": { + "type": "String", + "placeholders": {} + }, + "noRoomsFound": "Aucun salon trouvé…", + "@noRoomsFound": { + "type": "String", + "placeholders": {} + }, + "notifications": "Notifications", + "@notifications": { + "type": "String", + "placeholders": {} + }, + "notificationsEnabledForThisAccount": "Notifications activées pour ce compte", + "@notificationsEnabledForThisAccount": { + "type": "String", + "placeholders": {} + }, + "numUsersTyping": "{count} utilisateur·ices écrivent…", + "@numUsersTyping": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "obtainingLocation": "Obtention de la localisation…", + "@obtainingLocation": { + "type": "String", + "placeholders": {} + }, + "offensive": "Offensant", + "@offensive": { + "type": "String", + "placeholders": {} + }, + "offline": "Hors ligne", + "@offline": { + "type": "String", + "placeholders": {} + }, + "ok": "Valider", + "@ok": { + "type": "String", + "placeholders": {} + }, + "online": "En ligne", + "@online": { + "type": "String", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "La sauvegarde en ligne des clés est activée", + "@onlineKeyBackupEnabled": { + "type": "String", + "placeholders": {} + }, + "oopsPushError": "Oups ! Une erreur s'est malheureusement produite lors du réglage des notifications.", + "@oopsPushError": { + "type": "String", + "placeholders": {} + }, + "oopsSomethingWentWrong": "Oups, un problème est survenu…", + "@oopsSomethingWentWrong": { + "type": "String", + "placeholders": {} + }, + "openAppToReadMessages": "Ouvrez l'application pour lire le message", + "@openAppToReadMessages": { + "type": "String", + "placeholders": {} + }, + "openCamera": "Ouvrir l'appareil photo", + "@openCamera": { + "type": "String", + "placeholders": {} + }, + "openInMaps": "Ouvrir dans maps", + "@openInMaps": { + "type": "String", + "placeholders": {} + }, + "or": "Ou", + "@or": { + "type": "String", + "placeholders": {} + }, + "participant": "Participant(e)", + "@participant": { + "type": "String", + "placeholders": {} + }, + "passphraseOrKey": "Phrase de passe ou clé de récupération", + "@passphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "password": "Mot de passe", + "@password": { + "type": "String", + "placeholders": {} + }, + "passwordForgotten": "Mot de passe oublié", + "@passwordForgotten": { + "type": "String", + "placeholders": {} + }, + "passwordHasBeenChanged": "Le mot de passe a été modifié", + "@passwordHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "passwordRecovery": "Récupération du mot de passe", + "@passwordRecovery": { + "type": "String", + "placeholders": {} + }, + "people": "Personnes", + "@people": { + "type": "String", + "placeholders": {} + }, + "pickImage": "Choisir une image", + "@pickImage": { + "type": "String", + "placeholders": {} + }, + "pin": "Épingler", + "@pin": { + "type": "String", + "placeholders": {} + }, + "play": "Lire {fileName}", + "@play": { + "type": "String", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "pleaseChoose": "Veuillez choisir", + "@pleaseChoose": { + "type": "String", + "placeholders": {} + }, + "pleaseChooseAPasscode": "Veuillez choisir un code d’accès", + "@pleaseChooseAPasscode": { + "type": "String", + "placeholders": {} + }, + "pleaseClickOnLink": "Veuillez cliquer sur le lien contenu dans le courriel puis continuez.", + "@pleaseClickOnLink": { + "type": "String", + "placeholders": {} + }, + "pleaseEnter4Digits": "Veuillez saisir 4 chiffres ou laisser vide pour désactiver le verrouillage de l’application.", + "@pleaseEnter4Digits": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPassword": "Renseignez votre mot de passe", + "@pleaseEnterYourPassword": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPin": "Veuillez saisir votre code PIN", + "@pleaseEnterYourPin": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourUsername": "Renseignez votre nom d'utilisateur·ice", + "@pleaseEnterYourUsername": { + "type": "String", + "placeholders": {} + }, + "pleaseFollowInstructionsOnWeb": "Veuillez suivre les instructions sur le site et appuyer sur Suivant.", + "@pleaseFollowInstructionsOnWeb": { + "type": "String", + "placeholders": {} + }, + "privacy": "Vie privée", + "@privacy": { + "type": "String", + "placeholders": {} + }, + "publicRooms": "Salons publics", + "@publicRooms": { + "type": "String", + "placeholders": {} + }, + "pushRules": "Règles de notifications", + "@pushRules": { + "type": "String", + "placeholders": {} + }, + "reason": "Motif", + "@reason": { + "type": "String", + "placeholders": {} + }, + "recording": "Enregistrement", + "@recording": { + "type": "String", + "placeholders": {} + }, + "redactedAnEvent": "{username} a supprimé un évènement", + "@redactedAnEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "redactMessage": "Supprimer un message", + "@redactMessage": { + "type": "String", + "placeholders": {} + }, + "register": "S'inscrire", + "@register": { + "type": "String", + "placeholders": {} + }, + "reject": "Refuser", + "@reject": { + "type": "String", + "placeholders": {} + }, + "rejectedTheInvitation": "{username} a refusé l'invitation", + "@rejectedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "rejoin": "Rejoindre de nouveau", + "@rejoin": { + "type": "String", + "placeholders": {} + }, + "remove": "Supprimer", + "@remove": { + "type": "String", + "placeholders": {} + }, + "removeAllOtherDevices": "Supprimer tous les autres appareils", + "@removeAllOtherDevices": { + "type": "String", + "placeholders": {} + }, + "removedBy": "Supprimé par {username}", + "@removedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "removeDevice": "Supprimer l'appareil", + "@removeDevice": { + "type": "String", + "placeholders": {} + }, + "unbanFromChat": "Débannissement de la discussion", + "@unbanFromChat": { + "type": "String", + "placeholders": {} + }, + "removeYourAvatar": "Supprimer votre avatar", + "@removeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "replaceRoomWithNewerVersion": "Remplacer le salon par une nouvelle version", + "@replaceRoomWithNewerVersion": { + "type": "String", + "placeholders": {} + }, + "reply": "Répondre", + "@reply": { + "type": "String", + "placeholders": {} + }, + "reportMessage": "Signaler un message", + "@reportMessage": { + "type": "String", + "placeholders": {} + }, + "requestPermission": "Demander la permission", + "@requestPermission": { + "type": "String", + "placeholders": {} + }, + "roomHasBeenUpgraded": "Le salon a été mis à niveau", + "@roomHasBeenUpgraded": { + "type": "String", + "placeholders": {} + }, + "roomVersion": "Version du salon", + "@roomVersion": { + "type": "String", + "placeholders": {} + }, + "saveFile": "Enregistrer le fichier", + "@saveFile": { + "type": "String", + "placeholders": {} + }, + "search": "Rechercher", + "@search": { + "type": "String", + "placeholders": {} + }, + "security": "Sécurité", + "@security": { + "type": "String", + "placeholders": {} + }, + "seenByUser": "Vu par {username}", + "@seenByUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "send": "Envoyer", + "@send": { + "type": "String", + "placeholders": {} + }, + "sendAMessage": "Envoyer un message", + "@sendAMessage": { + "type": "String", + "placeholders": {} + }, + "sendAsText": "Envoyer un texte", + "@sendAsText": { + "type": "String" + }, + "sendAudio": "Envoyer un fichier audio", + "@sendAudio": { + "type": "String", + "placeholders": {} + }, + "sendFile": "Envoyer un fichier", + "@sendFile": { + "type": "String", + "placeholders": {} + }, + "sendImage": "Envoyer une image", + "@sendImage": { + "type": "String", + "placeholders": {} + }, + "sendMessages": "Envoyer des messages", + "@sendMessages": { + "type": "String", + "placeholders": {} + }, + "sendOriginal": "Envoyer le fichier original", + "@sendOriginal": { + "type": "String", + "placeholders": {} + }, + "sendSticker": "Envoyer un autocollant", + "@sendSticker": { + "type": "String", + "placeholders": {} + }, + "sendVideo": "Envoyer une vidéo", + "@sendVideo": { + "type": "String", + "placeholders": {} + }, + "sentAFile": "📁 {username} a envoyé un fichier", + "@sentAFile": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAnAudio": "🎤 {username} a envoyé un fichier audio", + "@sentAnAudio": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAPicture": "🖼️ {username} a envoyé une image", + "@sentAPicture": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentASticker": "😊 {username} a envoyé un autocollant", + "@sentASticker": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAVideo": "🎥 {username} a envoyé une vidéo", + "@sentAVideo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentCallInformations": "{senderName} a envoyé des informations sur l'appel", + "@sentCallInformations": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "setAsCanonicalAlias": "Définir comme adresse principale", + "@setAsCanonicalAlias": { + "type": "String", + "placeholders": {} + }, + "setCustomEmotes": "Définir des émoticônes personnalisées", + "@setCustomEmotes": { + "type": "String", + "placeholders": {} + }, + "setInvitationLink": "Créer un lien d'invitation", + "@setInvitationLink": { + "type": "String", + "placeholders": {} + }, + "setPermissionsLevel": "Définir le niveau de permissions", + "@setPermissionsLevel": { + "type": "String", + "placeholders": {} + }, + "setStatus": "Définir le statut", + "@setStatus": { + "type": "String", + "placeholders": {} + }, + "settings": "Paramètres", + "@settings": { + "type": "String", + "placeholders": {} + }, + "share": "Partager", + "@share": { + "type": "String", + "placeholders": {} + }, + "sharedTheLocation": "{username} a partagé sa position", + "@sharedTheLocation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "shareLocation": "Partager la localisation", + "@shareLocation": { + "type": "String", + "placeholders": {} + }, + "showPassword": "Afficher le mot de passe", + "@showPassword": { + "type": "String", + "placeholders": {} + }, + "singlesignon": "Authentification unique", + "@singlesignon": { + "type": "String", + "placeholders": {} + }, + "skip": "Ignorer", + "@skip": { + "type": "String", + "placeholders": {} + }, + "sourceCode": "Code source", + "@sourceCode": { + "type": "String", + "placeholders": {} + }, + "spaceIsPublic": "L'espace est public", + "@spaceIsPublic": { + "type": "String", + "placeholders": {} + }, + "spaceName": "Nom de l'espace", + "@spaceName": { + "type": "String", + "placeholders": {} + }, + "startedACall": "{senderName} a démarré un appel", + "@startedACall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "status": "Statut", + "@status": { + "type": "String", + "placeholders": {} + }, + "statusExampleMessage": "Comment allez-vous aujourd'hui ?", + "@statusExampleMessage": { + "type": "String", + "placeholders": {} + }, + "submit": "Soumettre", + "@submit": { + "type": "String", + "placeholders": {} + }, + "synchronizingPleaseWait": "Synchronisation... Veuillez patienter.", + "@synchronizingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "systemTheme": "Système", + "@systemTheme": { + "type": "String", + "placeholders": {} + }, + "theyDontMatch": "Elles ne correspondent pas", + "@theyDontMatch": { + "type": "String", + "placeholders": {} + }, + "theyMatch": "Elles correspondent", + "@theyMatch": { + "type": "String", + "placeholders": {} + }, + "title": "FluffyChat", + "@title": { + "description": "Title for the application", + "type": "String", + "placeholders": {} + }, + "toggleFavorite": "Activer/désactiver en favori", + "@toggleFavorite": { + "type": "String", + "placeholders": {} + }, + "toggleMuted": "Activer/désactiver la sourdine", + "@toggleMuted": { + "type": "String", + "placeholders": {} + }, + "toggleUnread": "Marquer comme lu / non lu", + "@toggleUnread": { + "type": "String", + "placeholders": {} + }, + "tooManyRequestsWarning": "Trop de requêtes. Veuillez réessayer plus tard !", + "@tooManyRequestsWarning": { + "type": "String", + "placeholders": {} + }, + "transferFromAnotherDevice": "Transfert à partir d'un autre appareil", + "@transferFromAnotherDevice": { + "type": "String", + "placeholders": {} + }, + "tryToSendAgain": "Retenter l'envoi", + "@tryToSendAgain": { + "type": "String", + "placeholders": {} + }, + "unavailable": "Indisponible", + "@unavailable": { + "type": "String", + "placeholders": {} + }, + "unbannedUser": "{username} a annulé le bannissement de {targetName}", + "@unbannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "unblockDevice": "Retirer le blocage sur l'appareil", + "@unblockDevice": { + "type": "String", + "placeholders": {} + }, + "unknownDevice": "Appareil inconnu", + "@unknownDevice": { + "type": "String", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "Algorithme de chiffrement inconnu", + "@unknownEncryptionAlgorithm": { + "type": "String", + "placeholders": {} + }, + "unknownEvent": "Événement de type inconnu : '{type}'", + "@unknownEvent": { + "type": "String", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "unmuteChat": "Retirer la sourdine de la discussion", + "@unmuteChat": { + "type": "String", + "placeholders": {} + }, + "unpin": "Désépingler", + "@unpin": { + "type": "String", + "placeholders": {} + }, + "unreadChats": "{unreadCount, plural, =1{1 discussion non lue} other{{unreadCount} discussions non lues}}", + "@unreadChats": { + "type": "String", + "placeholders": { + "unreadCount": { + "type": "int" + } + } + }, + "userAndOthersAreTyping": "{username} et {count} autres sont en train d'écrire…", + "@userAndOthersAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "userAndUserAreTyping": "{username} et {username2} sont en train d'écrire…", + "@userAndUserAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "username2": { + "type": "String" + } + } + }, + "userIsTyping": "{username} est en train d'écrire…", + "@userIsTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "userLeftTheChat": "🚪 {username} a quitté la discussion", + "@userLeftTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "username": "Nom d'utilisateur·ice", + "@username": { + "type": "String", + "placeholders": {} + }, + "userSentUnknownEvent": "{username} a envoyé un évènement de type {type}", + "@userSentUnknownEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "type": { + "type": "String" + } + } + }, + "verified": "Vérifié", + "@verified": { + "type": "String", + "placeholders": {} + }, + "verify": "Vérifier", + "@verify": { + "type": "String", + "placeholders": {} + }, + "verifyStart": "Commencer la vérification", + "@verifyStart": { + "type": "String", + "placeholders": {} + }, + "verifySuccess": "La vérification a été effectuée avec succès !", + "@verifySuccess": { + "type": "String", + "placeholders": {} + }, + "verifyTitle": "Vérification de l'autre compte", + "@verifyTitle": { + "type": "String", + "placeholders": {} + }, + "videoCall": "Appel vidéo", + "@videoCall": { + "type": "String", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "Visibilité de l'historique de la discussion", + "@visibilityOfTheChatHistory": { + "type": "String", + "placeholders": {} + }, + "visibleForAllParticipants": "Visible pour tous les participant·es", + "@visibleForAllParticipants": { + "type": "String", + "placeholders": {} + }, + "visibleForEveryone": "Visible pour tout le monde", + "@visibleForEveryone": { + "type": "String", + "placeholders": {} + }, + "voiceMessage": "Message vocal", + "@voiceMessage": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "En attente de l'acceptation de la demande par le partenaire…", + "@waitingPartnerAcceptRequest": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerEmoji": "En attente de l'acceptation de l'émoji par le partenaire…", + "@waitingPartnerEmoji": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerNumbers": "En attente de l'acceptation des nombres par le partenaire…", + "@waitingPartnerNumbers": { + "type": "String", + "placeholders": {} + }, + "wallpaper": "Image de fond :", + "@wallpaper": { + "type": "String", + "placeholders": {} + }, + "warning": "Attention !", + "@warning": { + "type": "String", + "placeholders": {} + }, + "weSentYouAnEmail": "Nous vous avons envoyé un courriel", + "@weSentYouAnEmail": { + "type": "String", + "placeholders": {} + }, + "whoCanPerformWhichAction": "Qui peut faire quelle action", + "@whoCanPerformWhichAction": { + "type": "String", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "Qui est autorisé·e à rejoindre ce groupe", + "@whoIsAllowedToJoinThisGroup": { + "type": "String", + "placeholders": {} + }, + "whyDoYouWantToReportThis": "Pourquoi voulez-vous le signaler ?", + "@whyDoYouWantToReportThis": { + "type": "String", + "placeholders": {} + }, + "wipeChatBackup": "Effacer la sauvegarde de votre discussion pour créer une nouvelle clé de récupération ?", + "@wipeChatBackup": { + "type": "String", + "placeholders": {} + }, + "withTheseAddressesRecoveryDescription": "Grâce à ces adresses, vous pouvez récupérer votre mot de passe si vous en avez besoin.", + "@withTheseAddressesRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "writeAMessage": "Écrivez un message…", + "@writeAMessage": { + "type": "String", + "placeholders": {} + }, + "yes": "Oui", + "@yes": { + "type": "String", + "placeholders": {} + }, + "you": "Vous", + "@you": { + "type": "String", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "Vous ne participez plus à cette discussion", + "@youAreNoLongerParticipatingInThisChat": { + "type": "String", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "Vous avez été banni·e de cette discussion", + "@youHaveBeenBannedFromThisChat": { + "type": "String", + "placeholders": {} + }, + "yourPublicKey": "Votre clé publique", + "@yourPublicKey": { + "type": "String", + "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": "String", + "description": "Usage hint for the command /create" + }, + "commandHint_discardsession": "Abandonner la session", + "@commandHint_discardsession": { + "type": "String", + "description": "Usage hint for the command /discardsession" + }, + "commandHint_clearcache": "Vider le cache", + "@commandHint_clearcache": { + "type": "String", + "description": "Usage hint for the command /clearcache" + }, + "commandHint_dm": "Commencer une discussion directe\nUtilisez --no-encryption pour désactiver le chiffrement", + "@commandHint_dm": { + "type": "String", + "description": "Usage hint for the command /dm" + }, + "openVideoCamera": "Ouvrir la caméra pour une vidéo", + "@openVideoCamera": { + "type": "String", + "placeholders": {} + }, + "publish": "Publier", + "@publish": {}, + "videoWithSize": "Vidéo ({size})", + "@videoWithSize": { + "type": "String", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "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": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "reaction": { + "type": "String" + } + } + }, + "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": { + "type": "String" + } + } + }, + "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": { + "type": "String" + } + } + }, + "youAcceptedTheInvitation": "👍 Vous avez accepté l'invitation", + "@youAcceptedTheInvitation": {}, + "youBannedUser": "Vous avez banni {user}", + "@youBannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youInvitedBy": "📩 Vous avez été invité par {user}", + "@youInvitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youInvitedUser": "📩 Vous avez invité {user}", + "@youInvitedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youKicked": "👞 Vous avez dégagé {user}", + "@youKicked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youKickedAndBanned": "🙅 Vous avez dégagé et banni {user}", + "@youKickedAndBanned": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youUnbannedUser": "Vous avez débanni {user}", + "@youUnbannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "separateChatTypes": "Séparer les discussions directes et les groupes", + "@separateChatTypes": { + "type": "String", + "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": { + "type": "int" + } + } + }, + "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": "String", + "placeholders": { + "mxid": { + "type": "String" + } + } + }, + "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": { + "type": "String" + } + } + }, + "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": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "cuddleContent": "{senderName} vous fait un câlin", + "@cuddleContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "hugContent": "{senderName} vous fait une accolade", + "@hugContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "wasDirectChatDisplayName": "Discussion vide (était {oldDisplayName})", + "@wasDirectChatDisplayName": { + "type": "String", + "placeholders": { + "oldDisplayName": { + "type": "String" + } + } + }, + "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": "String", + "placeholders": { + "path": { + "type": "String" + } + } + }, + "fileIsTooBigForServer": "Impossible d'envoyer ! Le serveur accepte uniquement les pièces jointes jusqu'à {max}.", + "@fileIsTooBigForServer": {}, + "jumpToLastReadMessage": "Aller au dernier message lu", + "@jumpToLastReadMessage": {}, + "readUpToHere": "Lisez jusqu’ici", + "@readUpToHere": {}, + "allRooms": "Tous les groupes de discussion", + "@allRooms": { + "type": "String", + "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": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "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": "String", + "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": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "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": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "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": { + "type": "String" + } + } + }, + "canceledKeyVerification": "{sender} a annulé la vérification de clé", + "@canceledKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "unreadChatsInApp": "{appname} : {unread} discussions non lus", + "@unreadChatsInApp": { + "type": "String", + "placeholders": { + "appname": { + "type": "String" + }, + "unread": { + "type": "String" + } + } + }, + "requestedKeyVerification": "{sender} a demandé une vérification de clé", + "@requestedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "startedKeyVerification": "{sender} a lancé la vérification de clé", + "@startedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "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": "String", + "placeholders": { + "username": { + "type": "String" + }, + "reason": { + "type": "String" + } + } + }, + "setChatDescription": "Définir la description de la discussion", + "@setChatDescription": {}, + "presenceStyle": "Statut :", + "@presenceStyle": { + "type": "String", + "placeholders": {} + }, + "presencesToggle": "Afficher les messages de statut des autres utilisateurs/trices", + "@presencesToggle": { + "type": "String", + "placeholders": {} + }, + "youInvitedToBy": "📩 Vous avez été invité par lien à :\n{alias}", + "@youInvitedToBy": { + "placeholders": { + "alias": { + "type": "String" + } + } + }, + "userWouldLikeToChangeTheChat": "{user} souhaite rejoindre la discussion.", + "@userWouldLikeToChangeTheChat": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "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": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "searchIn": "Rechercher dans la discussion \"{chat}\"...", + "@searchIn": { + "type": "String", + "placeholders": { + "chat": { + "type": "String" + } + } + }, + "forwardMessageTo": "Transférer le message à {roomName} ?", + "@forwardMessageTo": { + "type": "String", + "placeholders": { + "roomName": { + "type": "String" + } + } + }, + "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": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "isReadyForKeyVerification": "{sender} est prêt pour la vérification de clé", + "@isReadyForKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "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": "String", + "count": {} + }, + "restricted": "Limité", + "@restricted": {}, + "knockRestricted": "Frapper à la porte limité", + "@knockRestricted": {}, + "signInWith": "Se connecter avec {provider}", + "@signInWith": { + "type": "String", + "placeholders": { + "provider": { + "type": "String" + } + } + }, + "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": "String", + "placeholders": { + "chats": { + "type": "int" + }, + "participants": { + "type": "int" + } + } + }, + "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": "String", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "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": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "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": "String", + "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": "String", + "placeholders": { + "level": { + "type": "String" + } + } + }, + "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": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "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": "String", + "placeholders": { + "query": { + "type": "String" + } + } + }, + "noChatsFoundHere": "Aucune discussion trouvée. Utilisez le bouton ci-dessous pour commencer une nouvelle discussion. ⤵️", + "@noChatsFoundHere": {}, + "aboutHomeserver": "À propos de {homeserver}", + "@aboutHomeserver": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "changeTheDescriptionOfTheGroup": "Modifier la description de la discussion", + "@changeTheDescriptionOfTheGroup": {}, + "userLevel": "{level} — Membre", + "@userLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "chatPermissionsDescription": "Définir quel niveau de pouvoir est nécessaires pour certaines actions dans cette discussion. Les niveaux de pouvoir 0, 50 et 100 représentent généralement les membres, la modération et l'administration, mais toute gradation est possible.", + "@chatPermissionsDescription": {}, + "changeGeneralChatSettings": "Modifier les paramètres généraux de la discussion", + "@changeGeneralChatSettings": {}, + "invitedBy": "📩 Invitation par {user}", + "@invitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "moderatorLevel": "{level} — Modération", + "@moderatorLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "sendCanceled": "Envoi annulé", + "@sendCanceled": {}, + "adminLevel": "{level} — Administration", + "@adminLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "inviteOtherUsers": "Inviter d'autres membres dans cette discussion", + "@inviteOtherUsers": {}, + "changeTheChatPermissions": "Modifier les autorisations de cette discussion", + "@changeTheChatPermissions": {}, + "changeTheVisibilityOfChatHistory": "Modifier la visibilité de l'historique de la discussion", + "@changeTheVisibilityOfChatHistory": {}, + "changeTheCanonicalRoomAlias": "Modifier l'adresse publique principale de la discussion", + "@changeTheCanonicalRoomAlias": {}, + "changelog": "Journal des modifications", + "@changelog": {}, + "synchronizingPleaseWaitCounter": " Synchronisation… ({percentage} %)", + "@synchronizingPleaseWaitCounter": { + "type": "String", + "placeholders": { + "percentage": { + "type": "String" + } + } + }, + "updateInstalled": "🎉 La mise à niveau {version} est installée !", + "@updateInstalled": { + "type": "String", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "loginWithMatrixId": "Connexion avec l'identifiant Matrix", + "@loginWithMatrixId": {}, + "setCustomPermissionLevel": "Définir un niveau d’autorisation", + "@setCustomPermissionLevel": {}, + "setPermissionsLevelDescription": "Veuillez choisir un rôle prédéfini ci-dessous ou saisir un niveau d’autorisation entre 0 et 100.", + "@setPermissionsLevelDescription": {}, + "ignoreUser": "Ignorer l'utilisateur", + "@ignoreUser": {}, + "normalUser": "Utilisateur standard", + "@normalUser": {}, + "checkList": "Check-list", + "@checkList": {}, + "countInvited": "{count} invité(e/s)", + "@countInvited": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "sendImages": "Envoyer {count} image(s)", + "@sendImages": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "homeserverDescription": "Toutes vos données sont stockées sur le serveur de votre fournisseur matrix, comme chez un fournisseur d'e-mails. Vous pouvez choisir le serveur que vous souhaitez utiliser, tout en pouvant communiquer avec tout le monde. Pour en savoir plus, rendez-vous sur https://matrix.org.", + "@homeserverDescription": {}, + "calculatingFileSize": "Calcul en cours...", + "@calculatingFileSize": {}, + "prepareSendingAttachment": "Préparation à l'envoi...", + "@prepareSendingAttachment": {}, + "sendingAttachment": "Envoi en cours...", + "@sendingAttachment": {}, + "generatingVideoThumbnail": "Génération de la vignette...", + "@generatingVideoThumbnail": {}, + "compressVideo": "Compression de la vidéo...", + "@compressVideo": {}, + "sendingAttachmentCountOfCount": "Envoi {index} sur {length}...", + "@sendingAttachmentCountOfCount": { + "type": "integer", + "placeholders": { + "index": { + "type": "int" + }, + "length": { + "type": "int" + } + } + }, + "serverLimitReached": "Nombre de tentatives dépassé! Patientez {seconds} secondes...", + "@serverLimitReached": { + "type": "integer", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "oneOfYourDevicesIsNotVerified": "Un de vos appareils n'est pas vérifié", + "@oneOfYourDevicesIsNotVerified": {}, + "customReaction": "Réaction", + "@customReaction": {}, + "declineInvitation": "Refuser l'invitation", + "@declineInvitation": {}, + "invalidUrl": "Adresse incorrecte", + "@invalidUrl": {}, + "addAnswerOption": "Ajouter une réponse", + "@addAnswerOption": {}, + "addLink": "Ajouter un lien", + "@addLink": {}, + "allowMultipleAnswers": "Autoriser plusieurs réponses", + "@allowMultipleAnswers": {} +} diff --git a/lib/l10n/intl_ga.arb b/lib/l10n/intl_ga.arb new file mode 100644 index 0000000..90a6f5c --- /dev/null +++ b/lib/l10n/intl_ga.arb @@ -0,0 +1,3496 @@ +{ + "you": "Tú", + "@you": { + "type": "String", + "placeholders": {} + }, + "yes": "Tá", + "@yes": { + "type": "String", + "placeholders": {} + }, + "warning": "Rabhadh!", + "@warning": { + "type": "String", + "placeholders": {} + }, + "wallpaper": "Cúlbhrat:", + "@wallpaper": { + "type": "String", + "placeholders": {} + }, + "verify": "Deimhnigh", + "@verify": { + "type": "String", + "placeholders": {} + }, + "verified": "Deimhnithe", + "@verified": { + "type": "String", + "placeholders": {} + }, + "username": "Ainm úsáideora", + "@username": { + "type": "String", + "placeholders": {} + }, + "unpin": "Bain biorán", + "@unpin": { + "type": "String", + "placeholders": {} + }, + "unavailable": "Níl ar fáil", + "@unavailable": { + "type": "String", + "placeholders": {} + }, + "title": "FluffyChat", + "@title": { + "description": "Title for the application", + "type": "String", + "placeholders": {} + }, + "systemTheme": "Córas", + "@systemTheme": { + "type": "String", + "placeholders": {} + }, + "submit": "Cuir isteach", + "@submit": { + "type": "String", + "placeholders": {} + }, + "statusExampleMessage": "Conas atá tú inniu?", + "@statusExampleMessage": { + "type": "String", + "placeholders": {} + }, + "status": "Staid", + "@status": { + "type": "String", + "placeholders": {} + }, + "skip": "Léim", + "@skip": { + "type": "String", + "placeholders": {} + }, + "share": "Roinn", + "@share": { + "type": "String", + "placeholders": {} + }, + "settings": "Socruithe", + "@settings": { + "type": "String", + "placeholders": {} + }, + "send": "Seol", + "@send": { + "type": "String", + "placeholders": {} + }, + "security": "Slándáil", + "@security": { + "type": "String", + "placeholders": {} + }, + "search": "Cuardaigh", + "@search": { + "type": "String", + "placeholders": {} + }, + "reply": "Freagair", + "@reply": { + "type": "String", + "placeholders": {} + }, + "remove": "Bain", + "@remove": { + "type": "String", + "placeholders": {} + }, + "rejoin": "Téigh ar ais isteach", + "@rejoin": { + "type": "String", + "placeholders": {} + }, + "reject": "Diúltaigh", + "@reject": { + "type": "String", + "placeholders": {} + }, + "register": "Cláraigh", + "@register": { + "type": "String", + "placeholders": {} + }, + "recording": "Ag Taifeadadh", + "@recording": { + "type": "String", + "placeholders": {} + }, + "reason": "Fáth", + "@reason": { + "type": "String", + "placeholders": {} + }, + "privacy": "Príobháideacht", + "@privacy": { + "type": "String", + "placeholders": {} + }, + "pin": "Biorán", + "@pin": { + "type": "String", + "placeholders": {} + }, + "people": "Daoine", + "@people": { + "type": "String", + "placeholders": {} + }, + "password": "Pasfhocal", + "@password": { + "type": "String", + "placeholders": {} + }, + "participant": "Rannpháirtí", + "@participant": { + "type": "String", + "placeholders": {} + }, + "directChats": "Comhráite Díreacha", + "@directChats": { + "type": "String", + "placeholders": {} + }, + "deviceId": "ID gléis", + "@deviceId": { + "type": "String", + "placeholders": {} + }, + "deleteMessage": "Scrios an teachtaireacht", + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "deleteAccount": "Scrios an cuntas", + "@deleteAccount": { + "type": "String", + "placeholders": {} + }, + "createNewSpace": "Spás nua", + "@createNewSpace": { + "type": "String", + "placeholders": {} + }, + "countParticipants": "{count} rannpháirtithe", + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "or": "Nó", + "@or": { + "type": "String", + "placeholders": {} + }, + "online": "Ar líne", + "@online": { + "type": "String", + "placeholders": {} + }, + "ok": "Ceart go leor", + "@ok": { + "type": "String", + "placeholders": {} + }, + "offline": "As líne", + "@offline": { + "type": "String", + "placeholders": {} + }, + "offensive": "Maslach", + "@offensive": { + "type": "String", + "placeholders": {} + }, + "notifications": "Fógraí", + "@notifications": { + "type": "String", + "placeholders": {} + }, + "none": "Aon cheann", + "@none": { + "type": "String", + "placeholders": {} + }, + "no": "Níl", + "@no": { + "type": "String", + "placeholders": {} + }, + "next": "Ar Aghaidh", + "@next": { + "type": "String", + "placeholders": {} + }, + "moderator": "Modhnóir", + "@moderator": { + "type": "String", + "placeholders": {} + }, + "messages": "Teachtaireachtaí", + "@messages": { + "type": "String", + "placeholders": {} + }, + "mention": "Luaigh", + "@mention": { + "type": "String", + "placeholders": {} + }, + "logout": "Logáil amach", + "@logout": { + "type": "String", + "placeholders": {} + }, + "login": "Logáil isteach", + "@login": { + "type": "String", + "placeholders": {} + }, + "lightTheme": "Solas", + "@lightTheme": { + "type": "String", + "placeholders": {} + }, + "license": "Ceadúnas", + "@license": { + "type": "String", + "placeholders": {} + }, + "leave": "Fág", + "@leave": { + "type": "String", + "placeholders": {} + }, + "invited": "Le cuireadh", + "@invited": { + "type": "String", + "placeholders": {} + }, + "inoffensive": "Neamhurchóideach", + "@inoffensive": { + "type": "String", + "placeholders": {} + }, + "ignore": "Tabhair neamhaird ar", + "@ignore": { + "type": "String", + "placeholders": {} + }, + "identity": "Aitheantas", + "@identity": { + "type": "String", + "placeholders": {} + }, + "id": "ID", + "@id": { + "type": "String", + "placeholders": {} + }, + "help": "Cabhair", + "@help": { + "type": "String", + "placeholders": {} + }, + "groups": "Grúpaí", + "@groups": { + "type": "String", + "placeholders": {} + }, + "group": "Grúpa", + "@group": { + "type": "String", + "placeholders": {} + }, + "forward": "Seol ar aghaidh", + "@forward": { + "type": "String", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "String", + "placeholders": {} + }, + "homeserver": "Freastalaí baile", + "@homeserver": {}, + "encryption": "Criptiúchán", + "@encryption": { + "type": "String", + "placeholders": {} + }, + "encrypted": "Criptithe", + "@encrypted": { + "type": "String", + "placeholders": {} + }, + "edit": "Cuir in eagar", + "@edit": { + "type": "String", + "placeholders": {} + }, + "devices": "Gléasanna", + "@devices": { + "type": "String", + "placeholders": {} + }, + "device": "Gléas", + "@device": { + "type": "String", + "placeholders": {} + }, + "delete": "Scrios", + "@delete": { + "type": "String", + "placeholders": {} + }, + "dateWithYear": "{day}/{month}/{year}", + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "dateWithoutYear": "{day}/{month}", + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "containsUserName": "Coinníonn sé ainm úsáideora", + "@containsUserName": { + "type": "String", + "placeholders": {} + }, + "configureChat": "Cumraigh comhrá", + "@configureChat": { + "type": "String", + "placeholders": {} + }, + "commandInvalid": "Ordú neamhbhailí", + "@commandInvalid": { + "type": "String" + }, + "commandHint_send": "Seol téacs", + "@commandHint_send": { + "type": "String", + "description": "Usage hint for the command /send" + }, + "commandHint_me": "Déan cur síos ort féin", + "@commandHint_me": { + "type": "String", + "description": "Usage hint for the command /me" + }, + "clearArchive": "Glan an cartlann", + "@clearArchive": {}, + "chatDetails": "Sonraí comhrá", + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "chatBackup": "Cúltaca comhrá", + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "changedTheChatAvatar": "D'athraigh {username} abhatár an chomhrá", + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changeDeviceName": "Athraigh ainm an ghléis", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "cantOpenUri": "Ní féidir an URI {uri} a oscailt", + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "cancel": "Cealaigh", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "botMessages": "Teachtaireachtaí bota", + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "blocked": "Bactha", + "@blocked": { + "type": "String", + "placeholders": {} + }, + "blockDevice": "Bac Gléas", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "bannedUser": "Chuir {username} cosc ar {targetName}", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "banned": "Coiscthe", + "@banned": { + "type": "String", + "placeholders": {} + }, + "banFromChat": "Toirmisc ón gcomhrá", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "sendOnEnter": "Seol ar iontráil", + "@sendOnEnter": {}, + "archive": "Cartlann", + "@archive": { + "type": "String", + "placeholders": {} + }, + "appLock": "Bac aip", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "anyoneCanJoin": "Is féidir le aon duine dul isteach", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "answeredTheCall": "D'fhreagair {senderName} an glao", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "allChats": "Gach comhrá", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "all": "Gach", + "@all": { + "type": "String", + "placeholders": {} + }, + "alias": "ailias", + "@alias": { + "type": "String", + "placeholders": {} + }, + "admin": "Riarthóir", + "@admin": { + "type": "String", + "placeholders": {} + }, + "addToSpace": "Cuir go spás", + "@addToSpace": {}, + "addEmail": "Cuir ríomhphoist", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "activatedEndToEndEncryption": "🔐 {username} criptithe deireadh go deireadh gníomhachtaithe", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "account": "Cuntas", + "@account": { + "type": "String", + "placeholders": {} + }, + "acceptedTheInvitation": "👍 Ghlac {username} leis an gcuireadh", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "accept": "Glac", + "@accept": { + "type": "String", + "placeholders": {} + }, + "about": "Faoi", + "@about": { + "type": "String", + "placeholders": {} + }, + "askVerificationRequest": "Glac leis an iarratas fíoraithe seo ó {username}?", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "areYouSureYouWantToLogout": "An bhfuil tú cinnte gur mhaith leat logáil amach?", + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "An bhfuil tú cinnte?", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "An bhfuil cead ag aoi-úsáideoirí a bheith páirteach", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "invitedUser": "📩 thug {username} cuireadh do {targetName}", + "@invitedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "hideRedactedEvents": "Folaigh imeachtaí athdhéanta", + "@hideRedactedEvents": { + "type": "String", + "placeholders": {} + }, + "guestsCanJoin": "Is féidir le haíonna páirt a ghlacadh", + "@guestsCanJoin": { + "type": "String", + "placeholders": {} + }, + "guestsAreForbidden": "Tá cosc ar aíonna", + "@guestsAreForbidden": { + "type": "String", + "placeholders": {} + }, + "groupWith": "Grúpa le {displayname}", + "@groupWith": { + "type": "String", + "placeholders": { + "displayname": { + "type": "String" + } + } + }, + "groupIsPublic": "Tá an grúpa poiblí", + "@groupIsPublic": { + "type": "String", + "placeholders": {} + }, + "fromTheInvitation": "Ón gcuireadh", + "@fromTheInvitation": { + "type": "String", + "placeholders": {} + }, + "enterYourHomeserver": "Cuir isteach do fhreastalaí baile", + "@enterYourHomeserver": { + "type": "String", + "placeholders": {} + }, + "emoteInvalid": "Gearrchód emote neamhbhailí!", + "@emoteInvalid": { + "type": "String", + "placeholders": {} + }, + "emoteExists": "Tá iomaite ann cheana féin!", + "@emoteExists": { + "type": "String", + "placeholders": {} + }, + "editRoomAvatar": "Cuir in eagar abhatár an tseomra", + "@editRoomAvatar": { + "type": "String", + "placeholders": {} + }, + "editRoomAliases": "Cuir ailiasanna an tseomra in eagar", + "@editRoomAliases": { + "type": "String", + "placeholders": {} + }, + "editBlockedServers": "Cuir freastalaí blocáilte in eagar", + "@editBlockedServers": { + "type": "String", + "placeholders": {} + }, + "defaultPermissionLevel": "Leibhéal ceada réamhshocraithe d'úsáideoirí nua", + "@defaultPermissionLevel": { + "type": "String", + "placeholders": {} + }, + "unblockDevice": "Díbhlocáil Gléas", + "@unblockDevice": { + "type": "String", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "Tugadh cuireadh don theagmháil a thar isteach sa grúpa", + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "compareNumbersMatch": "Cuir na huimhreacha i gcomparáid le do thoil", + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "compareEmojiMatch": "Cuir na emojis i gcomparáid le do thoil", + "@compareEmojiMatch": { + "type": "String", + "placeholders": {} + }, + "commandMissing": "Ní ordú é {command}.", + "@commandMissing": { + "type": "String", + "placeholders": { + "command": { + "type": "String" + } + }, + "description": "State that {command} is not a valid /command." + }, + "commandHint_react": "Seol freagra mar fhreagairt", + "@commandHint_react": { + "type": "String", + "description": "Usage hint for the command /react" + }, + "commandHint_op": "Socraigh leibhéal cumhachta an úsáideora áirithe (réamhshocrú: 50)", + "@commandHint_op": { + "type": "String", + "description": "Usage hint for the command /op" + }, + "commandHint_myroomnick": "Socraigh d'ainm taispeána don seomra seo", + "@commandHint_myroomnick": { + "type": "String", + "description": "Usage hint for the command /myroomnick" + }, + "commandHint_myroomavatar": "Cuir do phictiúr don seomra seo (le mxc-uri)", + "@commandHint_myroomavatar": { + "type": "String", + "description": "Usage hint for the command /myroomavatar" + }, + "commandHint_kick": "Bain an t-úsáideoir áirithe den seomra seo", + "@commandHint_kick": { + "type": "String", + "description": "Usage hint for the command /kick" + }, + "commandHint_join": "Téigh isteach sa seomra áirithe", + "@commandHint_join": { + "type": "String", + "description": "Usage hint for the command /join" + }, + "commandHint_ban": "Cuir cosc ar an úsáideoir áirithe ón seomra seo", + "@commandHint_ban": { + "type": "String", + "description": "Usage hint for the command /ban" + }, + "commandHint_invite": "Cuir cosc ar an úsáideoir áirithe ón seomra seo", + "@commandHint_invite": { + "type": "String", + "description": "Usage hint for the command /invite" + }, + "chooseAStrongPassword": "Roghnaigh pasfhocal láidir", + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "chatHasBeenAddedToThisSpace": "Cuireadh comhrá leis an spás seo", + "@chatHasBeenAddedToThisSpace": {}, + "chatBackupDescription": "Tá do sheanteachtaireachtaí slán le eochair athshlánaithe. Le do thoil déan cinnte nach gcaillfidh tú é.", + "@chatBackupDescription": { + "type": "String", + "placeholders": {} + }, + "channelCorruptedDecryptError": "Truaillíodh an criptiú", + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "Athraigh ainm an ghrúpa", + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "changedTheRoomInvitationLink": "D'athraigh {username} nasc an chuiridh", + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomAliases": "D'athraigh {username} ailiasanna an tseomra", + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheProfileAvatar": "D'athraigh {username} a n-abhatár", + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheJoinRulesTo": "D'athraigh {username} na rialacha ceangail go: {joinRules}", + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "changedTheJoinRules": "D'athraigh {username} na rialacha ceangail", + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheHistoryVisibilityTo": "D'athraigh {username} infheictheacht na staire go: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheHistoryVisibility": "D'athraigh {username} infheictheacht na staire", + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheDisplaynameTo": "D'athraigh {username} a n-ainm taispeána go: '{displayname}'", + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "changedTheChatPermissions": "D'athraigh {username} na ceadanna comhrá", + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheChatNameTo": "D'athraigh {username} an t-ainm comhrá go: '{chatname}'", + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "changedTheChatDescriptionTo": "D'athraigh {username} an cur síos comhrá go: '{description}'", + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "autoplayImages": "Seinn greamáin agus straoiseog beoite go huathoibríoch", + "@autoplayImages": { + "type": "String", + "placeholder": {} + }, + "createdTheChat": "💬 chruthaigh {username} an comhrá", + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "copyToClipboard": "Cóipeáil ar an ghearrthaisce", + "@copyToClipboard": { + "type": "String", + "placeholders": {} + }, + "copiedToClipboard": "Cóipeáilte ar an ghearrthaisce", + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "containsDisplayName": "Coinníonn sé ainm taispeána", + "@containsDisplayName": { + "type": "String", + "placeholders": {} + }, + "commandHint_plain": "Seol téacs neamhfhoirmithe", + "@commandHint_plain": { + "type": "String", + "description": "Usage hint for the command /plain" + }, + "commandHint_leave": "Fág an seomra seo", + "@commandHint_leave": { + "type": "String", + "description": "Usage hint for the command /leave" + }, + "commandHint_html": "Seol téacs HTML-formáidithe", + "@commandHint_html": { + "type": "String", + "description": "Usage hint for the command /html" + }, + "changeYourAvatar": "Athraigh do abhatár", + "@changeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "changeTheme": "Athraigh do stíl", + "@changeTheme": { + "type": "String", + "placeholders": {} + }, + "changeTheHomeserver": "Athraigh an freastalaí baile", + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "voiceMessage": "Glórphost", + "@voiceMessage": { + "type": "String", + "placeholders": {} + }, + "videoCall": "Físghlao", + "@videoCall": { + "type": "String", + "placeholders": {} + }, + "verifyStart": "Tosaigh Fíorú", + "@verifyStart": { + "type": "String", + "placeholders": {} + }, + "unmuteChat": "Neamhciúnaigh comhrá", + "@unmuteChat": { + "type": "String", + "placeholders": {} + }, + "hideUnknownEvents": "Folaigh imeachtaí anaithnide", + "@hideUnknownEvents": { + "type": "String", + "placeholders": {} + }, + "unknownDevice": "Gléas anaithnid", + "@unknownDevice": { + "type": "String", + "placeholders": {} + }, + "toggleUnread": "Marcáil Léite/Neamhléite", + "@toggleUnread": { + "type": "String", + "placeholders": {} + }, + "toggleMuted": "Scoránaigh mar ciúnaithe", + "@toggleMuted": { + "type": "String", + "placeholders": {} + }, + "toggleFavorite": "Scoránaigh mar ceann is fearr leat", + "@toggleFavorite": { + "type": "String", + "placeholders": {} + }, + "theyMatch": "Tá siad céanna", + "@theyMatch": { + "type": "String", + "placeholders": {} + }, + "spaceName": "Ainm an spáis", + "@spaceName": { + "type": "String", + "placeholders": {} + }, + "sourceCode": "Cód foinseach", + "@sourceCode": { + "type": "String", + "placeholders": {} + }, + "showPassword": "Taispeáin pasfhocal", + "@showPassword": { + "type": "String", + "placeholders": {} + }, + "shareLocation": "Roinn suíomh", + "@shareLocation": { + "type": "String", + "placeholders": {} + }, + "setStatus": "Cuir stádas", + "@setStatus": { + "type": "String", + "placeholders": {} + }, + "sendVideo": "Seol físeán", + "@sendVideo": { + "type": "String", + "placeholders": {} + }, + "sendSticker": "Seol greamán", + "@sendSticker": { + "type": "String", + "placeholders": {} + }, + "sendOriginal": "Seol an bunchóip", + "@sendOriginal": { + "type": "String", + "placeholders": {} + }, + "sendMessages": "Seol teachtaireachtaí", + "@sendMessages": { + "type": "String", + "placeholders": {} + }, + "sendImage": "Seol íomhá", + "@sendImage": { + "type": "String", + "placeholders": {} + }, + "sendFile": "Seol comhad", + "@sendFile": { + "type": "String", + "placeholders": {} + }, + "sendAudio": "Seol fuaim", + "@sendAudio": { + "type": "String", + "placeholders": {} + }, + "saveFile": "Sábháil comhad", + "@saveFile": { + "type": "String", + "placeholders": {} + }, + "roomVersion": "Leagan seomra", + "@roomVersion": { + "type": "String", + "placeholders": {} + }, + "requestPermission": "Iarr cead", + "@requestPermission": { + "type": "String", + "placeholders": {} + }, + "reportMessage": "Tuairiscigh teachtaireacht", + "@reportMessage": { + "type": "String", + "placeholders": {} + }, + "removeDevice": "Bain gléas", + "@removeDevice": { + "type": "String", + "placeholders": {} + }, + "redactMessage": "Bain teachtaireacht amach", + "@redactMessage": { + "type": "String", + "placeholders": {} + }, + "pushRules": "Rialacha na bhfógraí", + "@pushRules": { + "type": "String", + "placeholders": {} + }, + "publicRooms": "Seomraí Poiblí", + "@publicRooms": { + "type": "String", + "placeholders": {} + }, + "pleaseChoose": "Roghnaigh le do thoil", + "@pleaseChoose": { + "type": "String", + "placeholders": {} + }, + "play": "Seinn {fileName}", + "@play": { + "type": "String", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "passwordRecovery": "Aisfháil pasfhocail", + "@passwordRecovery": { + "type": "String", + "placeholders": {} + }, + "passwordForgotten": "Pasfhocal dearmadta", + "@passwordForgotten": { + "type": "String", + "placeholders": {} + }, + "openCamera": "Oscail ceamara", + "@openCamera": { + "type": "String", + "placeholders": {} + }, + "obtainingLocation": "ag Aimsiú an suíomh…", + "@obtainingLocation": { + "type": "String", + "placeholders": {} + }, + "noPermission": "Gan cead", + "@noPermission": { + "type": "String", + "placeholders": {} + }, + "newChat": "Comhrá nua", + "@newChat": { + "type": "String", + "placeholders": {} + }, + "muteChat": "Ciúnaigh comhrá", + "@muteChat": { + "type": "String", + "placeholders": {} + }, + "memberChanges": "Athruithe ball", + "@memberChanges": { + "type": "String", + "placeholders": {} + }, + "loadMore": "Lódáil níos mó…", + "@loadMore": { + "type": "String", + "placeholders": {} + }, + "joinRoom": "Téigh isteach sa seomra", + "@joinRoom": { + "type": "String", + "placeholders": {} + }, + "isTyping": "ag clóscríobh…", + "@isTyping": { + "type": "String", + "placeholders": {} + }, + "inviteContact": "Tabhair cuireadh do theagmháil", + "@inviteContact": { + "type": "String", + "placeholders": {} + }, + "ignoredUsers": "Úsáideoirí a dtugann tú neamhaird orthu", + "@ignoredUsers": { + "type": "String", + "placeholders": {} + }, + "fromJoining": "Ó tar isteach", + "@fromJoining": { + "type": "String", + "placeholders": {} + }, + "fontSize": "Méid cló", + "@fontSize": { + "type": "String", + "placeholders": {} + }, + "enableEncryption": "Tosaigh criptiú", + "@enableEncryption": { + "type": "String", + "placeholders": {} + }, + "editDisplayname": "Cuir ainm taispeána in eagar", + "@editDisplayname": { + "type": "String", + "placeholders": {} + }, + "currentlyActive": "Gníomhach faoi láthair", + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "fileName": "Ainm an chomhaid", + "@fileName": { + "type": "String", + "placeholders": {} + }, + "everythingReady": "Gach rud réidh!", + "@everythingReady": { + "type": "String", + "placeholders": {} + }, + "emptyChat": "Comhrá folamh", + "@emptyChat": { + "type": "String", + "placeholders": {} + }, + "emoteShortcode": "Gearrchód straoiseoige", + "@emoteShortcode": { + "type": "String", + "placeholders": {} + }, + "emoteSettings": "Socruithe straoiseoige", + "@emoteSettings": { + "type": "String", + "placeholders": {} + }, + "downloadFile": "Íoslódáil comhad", + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "changePassword": "Athraigh an pasfhocal", + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "darkTheme": "Dorcha", + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "create": "Cruthaigh", + "@create": { + "type": "String", + "placeholders": {} + }, + "copy": "Cóipeáil", + "@copy": { + "type": "String", + "placeholders": {} + }, + "connect": "Ceangail", + "@connect": { + "type": "String", + "placeholders": {} + }, + "confirm": "Dearbhaigh", + "@confirm": { + "type": "String", + "placeholders": {} + }, + "close": "Dún", + "@close": { + "type": "String", + "placeholders": {} + }, + "chats": "Comhráite", + "@chats": { + "type": "String", + "placeholders": {} + }, + "chat": "Comhrá", + "@chat": { + "type": "String", + "placeholders": {} + }, + "scanQrCode": "Scan cód QR", + "@scanQrCode": {}, + "inviteText": "Thug {username} cuireadh duit chuig FluffyChat.\n1. Tabhair cuairt ar fluffychat.im agus a shuiteáil an app\n2. Cláraigh nó sínigh isteach\n3. Oscail an nasc cuirí:\n {link}", + "@inviteText": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "link": { + "type": "String" + } + } + }, + "noMatrixServer": "Níl {server1} freastalaí Matrix. Úsáid {server2} ina áit sin?", + "@noMatrixServer": { + "type": "String", + "placeholders": { + "server1": { + "type": "String" + }, + "server2": { + "type": "String" + } + } + }, + "noGoogleServicesWarning": "Is cosúil nach bhfuil Firebase Cloud Messaging ar fáil ar do ghléas. Chun fógraí brú a fháil fós, molaimid ntfy a shuiteáil. Le ntfy nó soláthraí Unified Push eile is féidir leat fógraí brú a fháil ar bhealach atá slán ó thaobh sonraí. Is féidir leat ntfy a íoslódáil ón PlayStore nó ó F-Droid.", + "@noGoogleServicesWarning": { + "type": "String", + "placeholders": {} + }, + "noEncryptionForPublicRooms": "Ní féidir leat criptiú a ghníomhachtú ach a luaithe nach bhfuil an seomra inrochtana go poiblí a thuilleadh.", + "@noEncryptionForPublicRooms": { + "type": "String", + "placeholders": {} + }, + "noEmotesFound": "Níor aimsíodh aon straoiseoga. 😕", + "@noEmotesFound": { + "type": "String", + "placeholders": {} + }, + "noConnectionToTheServer": "Gan aon nasc leis an bhfreastalaí", + "@noConnectionToTheServer": { + "type": "String", + "placeholders": {} + }, + "newVerificationRequest": "Iarratas fíoraithe nua!", + "@newVerificationRequest": { + "type": "String", + "placeholders": {} + }, + "newMessageInFluffyChat": "💬 Teachtaireacht nua in FluffyChat", + "@newMessageInFluffyChat": { + "type": "String", + "placeholders": {} + }, + "needPantalaimonWarning": "Bí ar an eolas go dteastaíonn Pantalaimon uait chun criptiú ó cheann go ceann a úsáid anois.", + "@needPantalaimonWarning": { + "type": "String", + "placeholders": {} + }, + "logInTo": "Logáil isteach chuig {homeserver}", + "@logInTo": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "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": "String", + "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": "String", + "placeholders": {} + }, + "loadingPleaseWait": "Ag lódáil… Fan, le do thoil.", + "@loadingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "loadCountMoreParticipants": "Lódáil {count} níos mó rannpháirtithe", + "@loadCountMoreParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "leftTheChat": "Fágadh an comhrá", + "@leftTheChat": { + "type": "String", + "placeholders": {} + }, + "lastActiveAgo": "Gníomhach deireanach: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "String", + "placeholders": { + "localizedTimeShort": { + "type": "String" + } + } + }, + "kickFromChat": "Caith é amach as an comhrá", + "@kickFromChat": { + "type": "String", + "placeholders": {} + }, + "kicked": "👞 chiceáil {username} {targetName}", + "@kicked": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickedAndBanned": "🙅 chiceáil {username} agus chuir sé cosc ar {targetName}", + "@kickedAndBanned": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "joinedTheChat": "Tháinig 👋 {username} isteach sa chomhrá", + "@joinedTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "invitedUsersOnly": "Úsáideoirí le cuireadh amháin", + "@invitedUsersOnly": { + "type": "String", + "placeholders": {} + }, + "inviteContactToGroup": "Tabhair cuireadh do theagmháil chuig {groupName}", + "@inviteContactToGroup": { + "type": "String", + "placeholders": { + "groupName": { + "type": "String" + } + } + }, + "incorrectPassphraseOrKey": "Pasfhrása nó eochair téarnaimh mícheart", + "@incorrectPassphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "iHaveClickedOnLink": "Chliceáil mé ar an nasc", + "@iHaveClickedOnLink": { + "type": "String", + "placeholders": {} + }, + "howOffensiveIsThisContent": "Cé chomh maslach atá an t-ábhar seo?", + "@howOffensiveIsThisContent": { + "type": "String", + "placeholders": {} + }, + "extremeOffensive": "Fíor-maslach", + "@extremeOffensive": { + "type": "String", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "Tharraing {username} an cuireadh do {targetName} siar", + "@hasWithdrawnTheInvitationFor": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "goToTheNewRoom": "Téigh go dtí an seomra nua", + "@goToTheNewRoom": { + "type": "String", + "placeholders": {} + }, + "errorObtainingLocation": "Earráid maidir le suíomh a fháil: {error}", + "@errorObtainingLocation": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "enterAnEmailAddress": "Cuir isteach seoladh ríomhphoist", + "@enterAnEmailAddress": { + "type": "String", + "placeholders": {} + }, + "endedTheCall": "Chuir {senderName} deireadh leis an nglao", + "@endedTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "encryptionNotEnabled": "Ní chumasaítear criptiú", + "@encryptionNotEnabled": { + "type": "String", + "placeholders": {} + }, + "enableEncryptionWarning": "Ní bheidh in ann an criptiú a dhíchumasú níos mó. An bhfuil tú cinnte?", + "@enableEncryptionWarning": { + "type": "String", + "placeholders": {} + }, + "enableEmotesGlobally": "Cumasaigh pacáiste straoiseoige go huilíoch", + "@enableEmotesGlobally": { + "type": "String", + "placeholders": {} + }, + "emoteWarnNeedToPick": "Caithfidh tú gearrchód straoiseoige agus íomhá a roghnú!", + "@emoteWarnNeedToPick": { + "type": "String", + "placeholders": {} + }, + "emotePacks": "Pacáistí straoiseoige don seomra", + "@emotePacks": { + "type": "String", + "placeholders": {} + }, + "displaynameHasBeenChanged": "Athraíodh an t-ainm taispeána", + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "deactivateAccountWarning": "Díghníomhachtaeoidh sé seo do chuntas úsáideora. Ní féidir é seo a chealú! An bhfuil tú cinnte?", + "@deactivateAccountWarning": { + "type": "String", + "placeholders": {} + }, + "couldNotDecryptMessage": "Níorbh fhéidir teachtaireacht a dhíchriptiú: {error}", + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "contentHasBeenReported": "Tuairiscíodh an t-ábhar do lucht riaracháin an fhreastalaí", + "@contentHasBeenReported": { + "type": "String", + "placeholders": {} + }, + "commandHint_unban": "Cuir deireadh an cosc den úsáideoir áirithe ón seomra seo", + "@commandHint_unban": { + "type": "String", + "description": "Usage hint for the command /unban" + }, + "changedTheGuestAccessRulesTo": "D'athraigh {username} na rialacha maidir le rochtain aoi chuig: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheGuestAccessRules": "D'athraigh {username} na rialacha rochtana aoi", + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "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": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "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": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "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": "String", + "placeholders": {} + }, + "yourPublicKey": "D'eochair phoiblí", + "@yourPublicKey": { + "type": "String", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "Cuireadh cosc ort ón gcomhrá seo", + "@youHaveBeenBannedFromThisChat": { + "type": "String", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "Níl tú ag glacadh páirte sa chomhrá seo a thuilleadh", + "@youAreNoLongerParticipatingInThisChat": { + "type": "String", + "placeholders": {} + }, + "writeAMessage": "Scríobh teachtaireacht…", + "@writeAMessage": { + "type": "String", + "placeholders": {} + }, + "withTheseAddressesRecoveryDescription": "Leis na seoltaí seo is féidir leat do phasfhocal a athshlánú.", + "@withTheseAddressesRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "wipeChatBackup": "An bhfuil fonn ort cúltaca do chomhrá a scriosadh chun eochair athshlánaithe nua a chruthú?", + "@wipeChatBackup": { + "type": "String", + "placeholders": {} + }, + "whyDoYouWantToReportThis": "Cén fáth ar mhaith leat é seo a thuairisciú?", + "@whyDoYouWantToReportThis": { + "type": "String", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "Cé a bhfuil cead aige/aici dul isteach sa ghrúpa seo", + "@whoIsAllowedToJoinThisGroup": { + "type": "String", + "placeholders": {} + }, + "whoCanPerformWhichAction": "Cé atá in ann an gníomh a dhéanamh", + "@whoCanPerformWhichAction": { + "type": "String", + "placeholders": {} + }, + "verifySuccess": "D'fhíoraigh tú go rathúil!", + "@verifySuccess": { + "type": "String", + "placeholders": {} + }, + "userLeftTheChat": "🚪 D'fhág {username} an comhrá", + "@userLeftTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "userAndUserAreTyping": "Tá {username} agus {username2} ag clóscríobh…", + "@userAndUserAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "username2": { + "type": "String" + } + } + }, + "userAndOthersAreTyping": "tá {username} agus {count} daoine eile ag clóscríobh…", + "@userAndOthersAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "unreadChats": "{unreadCount, plural, =1{1 comhrá neamhléite} other{{unreadCount} comhráite neamhléite}}", + "@unreadChats": { + "type": "String", + "placeholders": { + "unreadCount": { + "type": "int" + } + } + }, + "unknownEncryptionAlgorithm": "Algartam criptithe anaithnid", + "@unknownEncryptionAlgorithm": { + "type": "String", + "placeholders": {} + }, + "unbannedUser": "Chuir {username} deireadh an cosc {targetName}", + "@unbannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "tryToSendAgain": "Déan iarracht a sheoladh arís", + "@tryToSendAgain": { + "type": "String", + "placeholders": {} + }, + "transferFromAnotherDevice": "Aistriú ó ghléas eile", + "@transferFromAnotherDevice": { + "type": "String", + "placeholders": {} + }, + "tooManyRequestsWarning": "An iomarca iarratas. Bain triail eile as níos déanaí!", + "@tooManyRequestsWarning": { + "type": "String", + "placeholders": {} + }, + "theyDontMatch": "Níl siad céanna", + "@theyDontMatch": { + "type": "String", + "placeholders": {} + }, + "sharedTheLocation": "Roinn {username} a suíomh", + "@sharedTheLocation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "setPermissionsLevel": "Socraigh leibhéal ceadanna", + "@setPermissionsLevel": { + "type": "String", + "placeholders": {} + }, + "setInvitationLink": "Socraigh nasc cuiridh", + "@setInvitationLink": { + "type": "String", + "placeholders": {} + }, + "setCustomEmotes": "Socraigh straoiseoga saincheaptha", + "@setCustomEmotes": { + "type": "String", + "placeholders": {} + }, + "setAsCanonicalAlias": "Socraigh mar phríomh-ailias", + "@setAsCanonicalAlias": { + "type": "String", + "placeholders": {} + }, + "sentCallInformations": "Sheol {senderName} faisnéis maidir le glaonna", + "@sentCallInformations": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "sentAVideo": "🎥 sheol {username} físeán", + "@sentAVideo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentASticker": "😊 sheol {username} greamán", + "@sentASticker": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAPicture": "🖼️ sheol {username} pictiúr", + "@sentAPicture": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "replaceRoomWithNewerVersion": "Cuir leagan seomra níos nuaí in ionad an tseomra", + "@replaceRoomWithNewerVersion": { + "type": "String", + "placeholders": {} + }, + "removeYourAvatar": "Bain d'abhatár", + "@removeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "unbanFromChat": "Cuir deireadh an cosc ón gcomhrá", + "@unbanFromChat": { + "type": "String", + "placeholders": {} + }, + "removedBy": "Bainte de ag {username}", + "@removedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "removeAllOtherDevices": "Bain gach gléas eile", + "@removeAllOtherDevices": { + "type": "String", + "placeholders": {} + }, + "rejectedTheInvitation": "Dhiúltaigh {username} don chuireadh", + "@rejectedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "redactedAnEvent": "Rinne {username} cinsire imeacht", + "@redactedAnEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "pleaseFollowInstructionsOnWeb": "Lean na treoracha ar an suíomh gréasáin agus tapáil \"ar aghaidh\".", + "@pleaseFollowInstructionsOnWeb": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourUsername": "Cuir isteach d'ainm úsáideora le do thoil", + "@pleaseEnterYourUsername": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPin": "Cuir isteach d'uimhir PIN le do thoil", + "@pleaseEnterYourPin": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPassword": "Iontráil do phasfhocal le do thoil", + "@pleaseEnterYourPassword": { + "type": "String", + "placeholders": {} + }, + "pleaseEnter4Digits": "Iontráil 4 dhigit le do thoil nó fág folamh chun glas aipe a dhíchumasú.", + "@pleaseEnter4Digits": { + "type": "String", + "placeholders": {} + }, + "pleaseClickOnLink": "Cliceáil ar an nasc sa ríomhphost agus ansin lean ar aghaidh.", + "@pleaseClickOnLink": { + "type": "String", + "placeholders": {} + }, + "pleaseChooseAPasscode": "Roghnaigh paschód le do thoil", + "@pleaseChooseAPasscode": { + "type": "String", + "placeholders": {} + }, + "pickImage": "Roghnaigh íomhá", + "@pickImage": { + "type": "String", + "placeholders": {} + }, + "passwordHasBeenChanged": "Athraíodh an pasfhocal", + "@passwordHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "passphraseOrKey": "pasfhrása nó eochair téarnaimh", + "@passphraseOrKey": { + "type": "String", + "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": "String", + "placeholders": {} + }, + "openAppToReadMessages": "Oscail an aip chun teachtaireachtaí a léamh", + "@openAppToReadMessages": { + "type": "String", + "placeholders": {} + }, + "oopsSomethingWentWrong": "Úps, chuaigh rud éigin mícheart …", + "@oopsSomethingWentWrong": { + "type": "String", + "placeholders": {} + }, + "oopsPushError": "Hoips! Ar an drochuair, tharla earráid nuair a bhí na fógraí brú á mbunú.", + "@oopsPushError": { + "type": "String", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "Tá Cúltaca Eochair Ar Líne cumasaithe", + "@onlineKeyBackupEnabled": { + "type": "String", + "placeholders": {} + }, + "numUsersTyping": "Tá {count} úsáideoirí ag clóscríobh…", + "@numUsersTyping": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notificationsEnabledForThisAccount": "Fógraí cumasaithe don chuntas seo", + "@notificationsEnabledForThisAccount": { + "type": "String", + "placeholders": {} + }, + "noRoomsFound": "Níor aimsíodh aon seomraí…", + "@noRoomsFound": { + "type": "String", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "Níor chuir tú bealach leis do phasfhocal a aisghabháil fós.", + "@noPasswordRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "inviteForMe": "Tabhair cuireadh dom", + "@inviteForMe": { + "type": "String", + "placeholders": {} + }, + "weSentYouAnEmail": "Sheolamar ríomhphost chugat", + "@weSentYouAnEmail": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerNumbers": "Ag fanacht le comhpháirtí glacadh leis na huimhreacha …", + "@waitingPartnerNumbers": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerEmoji": "Ag fanacht le comhpháirtí glacadh leis na straoiseoga…", + "@waitingPartnerEmoji": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "Ag fanacht le comhpháirtí glacadh leis an iarratas…", + "@waitingPartnerAcceptRequest": { + "type": "String", + "placeholders": {} + }, + "visibleForEveryone": "Infheicthe do gach duine", + "@visibleForEveryone": { + "type": "String", + "placeholders": {} + }, + "visibleForAllParticipants": "Infheicthe do na rannpháirtithe go léir", + "@visibleForAllParticipants": { + "type": "String", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "Infheictheacht stair na comhrá", + "@visibilityOfTheChatHistory": { + "type": "String", + "placeholders": {} + }, + "verifyTitle": "Ag fíorú cuntas eile", + "@verifyTitle": { + "type": "String", + "placeholders": {} + }, + "userSentUnknownEvent": "Sheol {username} imeacht {type}", + "@userSentUnknownEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "type": { + "type": "String" + } + } + }, + "userIsTyping": "Tá {username} ag clóscríobh…", + "@userIsTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "unknownEvent": "Imeacht anaithnid '{type}'", + "@unknownEvent": { + "type": "String", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "synchronizingPleaseWait": "Ag sioncrónú... Fan, le do thoil.", + "@synchronizingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "startedACall": "Thosaigh {senderName} glao", + "@startedACall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "spaceIsPublic": "Tá an spás poiblí", + "@spaceIsPublic": { + "type": "String", + "placeholders": {} + }, + "singlesignon": "Sínigh Aonair ar", + "@singlesignon": { + "type": "String", + "placeholders": {} + }, + "sentAnAudio": "🎤 sheol {username} fuaim", + "@sentAnAudio": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAFile": "📁 sheol {username} comhad", + "@sentAFile": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sendAsText": "Seol mar théacs", + "@sendAsText": { + "type": "String" + }, + "sendAMessage": "Seol teachtaireacht", + "@sendAMessage": { + "type": "String", + "placeholders": {} + }, + "seenByUser": "Le feiceáil ag {username}", + "@seenByUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "roomHasBeenUpgraded": "Uasghrádaíodh an seomra", + "@roomHasBeenUpgraded": { + "type": "String", + "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": "String", + "description": "Usage hint for the command /create" + }, + "link": "Nasc", + "@link": {}, + "commandHint_clearcache": "Glan an taisce", + "@commandHint_clearcache": { + "type": "String", + "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": "String", + "placeholders": {} + }, + "fileHasBeenSavedAt": "Sábháladh an comhad ag {path}", + "@fileHasBeenSavedAt": { + "type": "String", + "placeholders": { + "path": { + "type": "String" + } + } + }, + "editBundlesForAccount": "Cuir cuachta in eagar don chuntas seo", + "@editBundlesForAccount": {}, + "globalChatId": "Aitheantas comhrá domhanda", + "@globalChatId": {}, + "hideMemberChangesInPublicChatsBody": "Ná taispeáin san amlíne comhrá má théann duine isteach i gcomhrá poiblí nó má fhágann sé nó sí é chun inléiteacht a fheabhsú.", + "@hideMemberChangesInPublicChatsBody": {}, + "pleaseEnterRecoveryKey": "Cuir isteach d'eochair athshlánaithe le do thoil:", + "@pleaseEnterRecoveryKey": {}, + "sender": "Seoltóir", + "@sender": {}, + "noOneCanJoin": "Ní féidir le duine ar bith páirt a ghlacadh", + "@noOneCanJoin": {}, + "noOtherDevicesFound": "Níor aimsíodh aon ghléas eile", + "@noOtherDevicesFound": {}, + "profileNotFound": "Níorbh fhéidir an t-úsáideoir a aimsiú ar an bhfreastalaí. B'fhéidir go bhfuil fadhb nasctha ann nó nach bhfuil an t-úsáideoir ann.", + "@profileNotFound": {}, + "inviteGroupChat": "📨 Cuireadh chuig comhrá grúpa", + "@inviteGroupChat": {}, + "knocking": "Cnagadh", + "@knocking": {}, + "addChatOrSubSpace": "Cuir comhrá nó fo-spás leis", + "@addChatOrSubSpace": {}, + "thisDevice": "An gléas seo:", + "@thisDevice": {}, + "formattedMessages": "Teachtaireachtaí formáidithe", + "@formattedMessages": {}, + "verifyOtherDevice": "🔐 Fíoraigh gléas eile", + "@verifyOtherDevice": {}, + "commandHint_ignore": "Déan neamhaird d'aitheantas na maitríse sonraithe", + "@commandHint_ignore": {}, + "completedKeyVerification": "{sender} fíorú eochair críochnaithe", + "@completedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "changeTheCanonicalRoomAlias": "Athraigh an príomhsheoladh comhrá poiblí", + "@changeTheCanonicalRoomAlias": {}, + "importEmojis": "Iompórtáil Emoji", + "@importEmojis": {}, + "start": "Tosaigh", + "@start": {}, + "commandHint_dm": "Cuir tús le comhrá díreach\nÚsáid --no-cription chun criptiúchán a dhíchumasú", + "@commandHint_dm": { + "type": "String", + "description": "Usage hint for the command /dm" + }, + "invalidServerName": "Ainm freastalaí neamhbhailí", + "@invalidServerName": {}, + "addToBundle": "Cuir le bundle", + "@addToBundle": {}, + "redactedBy": "Arna chur in eagar ag {username}", + "@redactedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "addToSpaceDescription": "Roghnaigh spás chun an comhrá seo a chur leis.", + "@addToSpaceDescription": {}, + "markAsRead": "Marcáil mar léite", + "@markAsRead": {}, + "enterRoom": "Iontráil seomra", + "@enterRoom": {}, + "deviceKeys": "Eochracha gléis:", + "@deviceKeys": {}, + "allSpaces": "Gach spás", + "@allSpaces": {}, + "searchForUsers": "Cuardaigh @users...", + "@searchForUsers": {}, + "removeFromBundle": "Bain as an mbeart seo", + "@removeFromBundle": {}, + "recoveryKeyLost": "Eochair athshlánaithe caillte?", + "@recoveryKeyLost": {}, + "reactedWith": "D'fhreagair {sender} le {reaction}", + "@reactedWith": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "reaction": { + "type": "String" + } + } + }, + "youInvitedBy": "📩 Thug {user} cuireadh duit", + "@youInvitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "doNotShowAgain": "Ná taispeáin arís", + "@doNotShowAgain": {}, + "pleaseEnterANumber": "Iontráil uimhir níos mó ná 0", + "@pleaseEnterANumber": {}, + "unbanUserDescription": "Beidh an t-úsáideoir in ann dul isteach sa chomhrá arís má dhéanann siad iarracht.", + "@unbanUserDescription": {}, + "pleaseEnterYourCurrentPassword": "Iontráil do phasfhocal reatha le do thoil", + "@pleaseEnterYourCurrentPassword": {}, + "newPassword": "Pasfhocal nua", + "@newPassword": {}, + "subspace": "Fospás", + "@subspace": {}, + "decline": "Meath", + "@decline": {}, + "forwardMessageTo": "Seol teachtaireacht ar aghaidh chuig {roomName}?", + "@forwardMessageTo": { + "type": "String", + "placeholders": { + "roomName": { + "type": "String" + } + } + }, + "sendReadReceipts": "Seol admhálacha léite", + "@sendReadReceipts": {}, + "formattedMessagesDescription": "Taispeáin ábhar saibhir teachtaireachta cosúil le téacs trom ag baint úsáide as marcáil síos.", + "@formattedMessagesDescription": {}, + "verifyOtherUser": "🔐 Fíoraigh úsáideoir eile", + "@verifyOtherUser": {}, + "dehydrateTorLong": "Maidir le húsáideoirí TOR, moltar an seisiún a onnmhairiú roimh dhúnadh an fhuinneog.", + "@dehydrateTorLong": {}, + "numChats": "Comhráite {number}", + "@numChats": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "hidePresences": "Folaigh Liosta Stádais?", + "@hidePresences": {}, + "jump": "Léim", + "@jump": {}, + "reportErrorDescription": "😭 Ó, a mhac go deo. Chuaigh rud éigin mícheart. Más mian leat, is féidir leat an fabht seo a thuairisciú do na forbróirí.", + "@reportErrorDescription": {}, + "setTheme": "Socraigh téama:", + "@setTheme": {}, + "invalidInput": "Ionchur neamhbhailí!", + "@invalidInput": {}, + "kickUserDescription": "Ciceáiltear an t-úsáideoir as an gcomhrá ach níl cosc air. I gcomhráite poiblí, is féidir leis an úsáideoir teacht ar ais ag am ar bith.", + "@kickUserDescription": {}, + "startConversation": "Tosaigh comhrá", + "@startConversation": {}, + "commandHint_sendraw": "Seol json amh", + "@commandHint_sendraw": {}, + "leaveEmptyToClearStatus": "Fág folamh chun do stádas a ghlanadh.", + "@leaveEmptyToClearStatus": {}, + "pleaseChooseAStrongPassword": "Roghnaigh pasfhocal láidir", + "@pleaseChooseAStrongPassword": {}, + "publicLink": "Nasc poiblí", + "@publicLink": {}, + "joinSpace": "Glac páirt sa spás", + "@joinSpace": {}, + "initAppError": "Tharla earráid agus an feidhmchlár á thosú", + "@initAppError": {}, + "requestedKeyVerification": "D'iarr {sender} fíorú eochrach", + "@requestedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "incomingMessages": "Teachtaireachtaí isteach", + "@incomingMessages": {}, + "transparent": "Trédhearcach", + "@transparent": {}, + "voiceCall": "Glao gutha", + "@voiceCall": {}, + "widgetVideo": "Físeán", + "@widgetVideo": {}, + "errorAddingWidget": "Earráid agus an ghiuirléid á cur leis.", + "@errorAddingWidget": {}, + "emojis": "Emojis", + "@emojis": {}, + "reportUser": "Déan tuairisc ar úsáideoir", + "@reportUser": {}, + "custom": "Saincheaptha", + "@custom": {}, + "supposedMxid": "Ba cheart go mbeadh sé seo {mxid}", + "@supposedMxid": { + "type": "String", + "placeholders": { + "mxid": { + "type": "String" + } + } + }, + "commandHint_markasgroup": "Marcáil mar ghrúpa", + "@commandHint_markasgroup": {}, + "dismiss": "Díbhe", + "@dismiss": {}, + "newGroup": "Grúpa nua", + "@newGroup": {}, + "newSpace": "Spás nua", + "@newSpace": {}, + "confirmMatrixId": "Deimhnigh d’ID Maitrís chun do chuntas a scriosadh.", + "@confirmMatrixId": {}, + "hideMemberChangesInPublicChats": "Cuir athruithe ball i gcomhráite poiblí i bhfolach", + "@hideMemberChangesInPublicChats": {}, + "confirmEventUnpin": "An bhfuil tú cinnte an t-imeacht a dhíphionnáil go buan?", + "@confirmEventUnpin": {}, + "hugContent": "Tugann {senderName} barróg duit", + "@hugContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "unread": "Neamhléite", + "@unread": {}, + "noChatsFoundHere": "Níor aimsíodh aon chomhrá anseo fós. Cuir tús le comhrá nua le duine éigin tríd an gcnaipe thíos a úsáid. ⤵️", + "@noChatsFoundHere": {}, + "separateChatTypes": "Comhráite Díreacha agus Grúpaí ar Leith", + "@separateChatTypes": { + "type": "String", + "placeholders": {} + }, + "videoWithSize": "Físeán ({size})", + "@videoWithSize": { + "type": "String", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "messageInfo": "Eolas teachtaireachta", + "@messageInfo": {}, + "messageType": "Cineál Teachtaireachta", + "@messageType": {}, + "pleaseEnterRecoveryKeyDescription": "Chun do sheanteachtaireachtaí a dhíghlasáil, cuir isteach d'eochair athshlánaithe a gineadh i seisiún eile. NÍ do phasfhocal í d'eochair athshlánaithe.", + "@pleaseEnterRecoveryKeyDescription": {}, + "openChat": "Oscail Comhrá", + "@openChat": {}, + "unsupportedAndroidVersionLong": "Éilíonn an ghné seo leagan Android níos nuaí. Seiceáil le haghaidh nuashonruithe nó tacaíocht Lineage OS.", + "@unsupportedAndroidVersionLong": {}, + "experimentalVideoCalls": "Glaonna físe turgnamhacha", + "@experimentalVideoCalls": {}, + "switchToAccount": "Athraigh go cuntas {number}", + "@switchToAccount": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "addWidget": "Cuir giuirléid leis", + "@addWidget": {}, + "widgetUrlError": "Ní URL bailí é seo.", + "@widgetUrlError": {}, + "invitedBy": "📩 Cuireadh ó {user}", + "@invitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youKicked": "👞 Chiceáil tú {user}", + "@youKicked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youUnbannedUser": "Unbanned tú {user}", + "@youUnbannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "userWouldLikeToChangeTheChat": "Ba mhaith le {user} páirt a ghlacadh sa chomhrá.", + "@userWouldLikeToChangeTheChat": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "knock": "Cnoc Mhuire", + "@knock": {}, + "storeInSecureStorageDescription": "Stóráil an eochair aisghabhála i stóráil slán an ghléis seo.", + "@storeInSecureStorageDescription": {}, + "countFiles": "Comhaid {count}", + "@countFiles": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "foregroundServiceRunning": "Tá an fógra seo le feiceáil nuair atá an tseirbhís tulra ag rith.", + "@foregroundServiceRunning": {}, + "screenSharingDetail": "Tá do scáileán á roinnt agat i FuffyChat", + "@screenSharingDetail": {}, + "callingPermissions": "Ceadanna a ghlaoch", + "@callingPermissions": {}, + "callingAccount": "Cuntas ag glaoch", + "@callingAccount": {}, + "callingAccountDetails": "Ceadaíonn FluffyChat an aip dhiailiú android dúchais a úsáid.", + "@callingAccountDetails": {}, + "appearOnTopDetails": "Ceadaíonn sé don aip a bheith ar bharr (ní gá má tá socrú Fluffychat agat cheana féin mar chuntas glao)", + "@appearOnTopDetails": {}, + "otherCallingPermissions": "Micreafón, ceamara agus ceadanna FluffyChat eile", + "@otherCallingPermissions": {}, + "hideUnimportantStateEvents": "Folaigh imeachtaí stáit gan tábhacht", + "@hideUnimportantStateEvents": {}, + "disableEncryptionWarning": "Ar chúiseanna slándála ní féidir leat criptiú a dhíchumasú i gcomhrá, áit ar cumasaíodh é roimhe seo.", + "@disableEncryptionWarning": {}, + "sorryThatsNotPossible": "Tá brón orm... nach féidir a dhéanamh", + "@sorryThatsNotPossible": {}, + "reopenChat": "Comhrá a athoscailt", + "@reopenChat": {}, + "noBackupWarning": "Rabhadh! Gan cúltaca comhrá a chumasú, caillfidh tú rochtain ar do theachtaireachtaí criptithe. Moltar go mór an cúltaca comhrá a chumasú ar dtús sula logálann tú amach.", + "@noBackupWarning": {}, + "fileIsTooBigForServer": "Ní féidir seol! Ní thacaíonn an freastalaí ach le ceangaltáin suas le {max}.", + "@fileIsTooBigForServer": { + "type": "String", + "placeholders": { + "max": { + "type": "String" + } + } + }, + "jumpToLastReadMessage": "Léim go dtí an teachtaireacht léite is déanaí", + "@jumpToLastReadMessage": {}, + "readUpToHere": "Léigh suas go dtí seo", + "@readUpToHere": {}, + "openLinkInBrowser": "Oscail nasc sa bhrabhsálaí", + "@openLinkInBrowser": {}, + "signInWithPassword": "Sínigh isteach le pasfhocal", + "@signInWithPassword": {}, + "pleaseTryAgainLaterOrChooseDifferentServer": "Bain triail eile as níos déanaí nó roghnaigh freastalaí eile.", + "@pleaseTryAgainLaterOrChooseDifferentServer": {}, + "signInWith": "Sínigh isteach le {provider}", + "@signInWith": { + "type": "String", + "placeholders": { + "provider": { + "type": "String" + } + } + }, + "invitePrivateChat": "📨 Cuireadh chuig comhrá príobháideach", + "@invitePrivateChat": {}, + "wrongPinEntered": "Tháinig biorán mícheart isteach! Bain triail eile as i {seconds} soicind...", + "@wrongPinEntered": { + "type": "String", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "archiveRoomDescription": "Bogfar an comhrá go dtí an chartlann. Beidh úsáideoirí eile in ann a fheiceáil gur fhág tú an comhrá.", + "@archiveRoomDescription": {}, + "removeDevicesDescription": "Beidh tú logáilte amach as an ngléas seo agus ní bheidh tú in ann teachtaireachtaí a fháil a thuilleadh.", + "@removeDevicesDescription": {}, + "roomUpgradeDescription": "Déanfar an comhrá a athchruthú ansin leis an leagan seomra nua. Cuirfear in iúl do gach rannpháirtí go gcaithfidh siad aistriú chuig an gcomhrá nua. Is féidir leat tuilleadh eolais a fháil faoi leaganacha seomra ag https://spec.matrix.org/latest/rooms/", + "@roomUpgradeDescription": {}, + "banUserDescription": "Beidh cosc ar an úsáideoir ón gcomhrá agus ní bheidh sé in ann dul isteach sa chomhrá arís go dtí go mbeidh siad gan chosc.", + "@banUserDescription": {}, + "makeAdminDescription": "Nuair a dhéanann tú an riarachán úsáideora seo, b'fhéidir nach mbeidh tú in ann é seo a chealú mar go mbeidh na ceadanna céanna acu agus atá agat.", + "@makeAdminDescription": {}, + "learnMore": "Faigh tuilleadh eolais", + "@learnMore": {}, + "yourGlobalUserIdIs": "Is é d'aitheantas úsáideora domhanda: ", + "@yourGlobalUserIdIs": {}, + "noUsersFoundWithQuery": "Ar an drochuair ní fhéadfaí aon úsáideoir a aimsiú le \"{query}\". Seiceáil le do thoil an ndearna tú typo.", + "@noUsersFoundWithQuery": { + "type": "String", + "placeholders": { + "query": { + "type": "String" + } + } + }, + "searchChatsRooms": "Cuardaigh #chats, @users...", + "@searchChatsRooms": {}, + "createGroupAndInviteUsers": "Cruthaigh grúpa agus tabhair cuireadh d'úsáideoirí", + "@createGroupAndInviteUsers": {}, + "groupCanBeFoundViaSearch": "Is féidir teacht ar ghrúpa trí chuardach", + "@groupCanBeFoundViaSearch": {}, + "wrongRecoveryKey": "Tá brón orm... Ní cosúil gurb é seo an eochair aisghabhála ceart.", + "@wrongRecoveryKey": {}, + "databaseMigrationBody": "Fan, le do thoil. B'fhéidir go dtógfaidh sé seo nóiméad.", + "@databaseMigrationBody": {}, + "select": "Roghnaigh", + "@select": {}, + "passwordsDoNotMatch": "Ní mheaitseálann pasfhocail", + "@passwordsDoNotMatch": {}, + "searchIn": "Cuardaigh i gcomhrá \"{chat}\"...", + "@searchIn": { + "type": "String", + "placeholders": { + "chat": { + "type": "String" + } + } + }, + "passwordIsWrong": "Tá do phasfhocal iontrála mícheart", + "@passwordIsWrong": {}, + "files": "Comhaid", + "@files": {}, + "databaseBuildErrorBody": "Ní féidir bunachar sonraí SQlite a thógáil. Déanann an aip iarracht an bunachar sonraí oidhreachta a úsáid anois. Tuairiscigh an earráid seo do na forbróirí ag {url}. Is í an teachtaireacht earráide: {error}", + "@databaseBuildErrorBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "sessionLostBody": "Cailltear do sheisiún. Tuairiscigh an earráid seo do na forbróirí ag {url}. Is í an teachtaireacht earráide: {error}", + "@sessionLostBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "restoreSessionBody": "Déanann an aip iarracht anois do sheisiún a chur ar ais ón gcúltaca. Tuairiscigh an earráid seo do na forbróirí ag {url}. Is í an teachtaireacht earráide: {error}", + "@restoreSessionBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "verifyOtherUserDescription": "Má fhíoraíonn tú úsáideoir eile, is féidir leat a bheith cinnte go bhfuil a fhios agat cé leis a bhfuil tú ag scríobh i ndáiríre. 💪\n\nNuair a thosaíonn tú fíorú, feicfidh tú féin agus an t-úsáideoir eile aníos san aip. Ansin feicfidh tú sraith emojis nó uimhreacha a chaithfidh tú a chur i gcomparáid lena chéile.\n\nIs é an bealach is fearr chun é seo a dhéanamh ná bualadh le chéile nó glao físe a thosú. 👭", + "@verifyOtherUserDescription": {}, + "sendTypingNotificationsDescription": "Is féidir le rannpháirtithe eile i gcomhrá a fheiceáil nuair atá teachtaireacht nua á clóscríobh agat.", + "@sendTypingNotificationsDescription": {}, + "verifyOtherDeviceDescription": "Nuair a fhíoraíonn tú gléas eile, is féidir leis na gléasanna sin eochracha a mhalartú, do shlándáil fhoriomlán a mhéadú. 💪 Nuair a thosaíonn tú fíorú, beidh preabfhuinneog le feiceáil san aip ar an dá ghléas. Ansin feicfidh tú sraith emojis nó uimhreacha a chaithfidh tú a chur i gcomparáid lena chéile. Is fearr an dá ghléas a bheith áisiúil sula dtosaíonn tú ar an bhfíorú. 🤳", + "@verifyOtherDeviceDescription": {}, + "acceptedKeyVerification": "{sender} glacadh le fíorú eochair", + "@acceptedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "canceledKeyVerification": "{sender} cealaithe fíorú eochrach", + "@canceledKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "commandHint_unignore": "Unignore an ID maitrís tugtha", + "@commandHint_unignore": {}, + "restricted": "Srianta", + "@restricted": {}, + "goToSpace": "Téigh go dtí an spás: {space}", + "@goToSpace": { + "type": "String", + "space": {} + }, + "markAsUnread": "Marcáil mar gan léamh", + "@markAsUnread": {}, + "moderatorLevel": "{level} - Modhnóir", + "@moderatorLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "adminLevel": "{level} - Riarachán", + "@adminLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "inviteOtherUsers": "Tabhair cuireadh d'úsáideoirí eile chuig an gcomhrá seo", + "@inviteOtherUsers": {}, + "changeTheChatPermissions": "Athraigh na ceadanna comhrá", + "@changeTheChatPermissions": {}, + "changeTheVisibilityOfChatHistory": "Athraigh infheictheacht stair an chomhrá", + "@changeTheVisibilityOfChatHistory": {}, + "chatPermissionsDescription": "Sainmhínigh cén leibhéal cumhachta is gá le haghaidh gníomhartha áirithe sa chomhrá seo. De ghnáth bíonn na leibhéil chumhachta 0, 50 agus 100 ag déanamh ionadaíochta d'úsáideoirí, do mhodhnóirí agus do riarthóirí, ach is féidir aon ghrádú a dhéanamh.", + "@chatPermissionsDescription": {}, + "changelog": "ChangelogName", + "@changelog": {}, + "sendCanceled": "Cealaíodh seoladh", + "@sendCanceled": {}, + "loginWithMatrixId": "Logáil isteach le Matrix-ID", + "@loginWithMatrixId": {}, + "discoverHomeservers": "Faigh amach faoi fhreastalaithe baile", + "@discoverHomeservers": {}, + "whatIsAHomeserver": "Cad is freastalaí baile ann?", + "@whatIsAHomeserver": {}, + "homeserverDescription": "Stóráiltear do chuid sonraí go léir ar an bhfreastalaí baile, díreach cosúil le soláthraí ríomhphoist. Is féidir leat an freastalaí baile is mian leat a úsáid a roghnú, agus is féidir leat cumarsáid a dhéanamh le gach duine fós. Foghlaim níos mó ag https://matrix.org.", + "@homeserverDescription": {}, + "calculatingFileSize": "Méid an chomhaid á ríomh...", + "@calculatingFileSize": {}, + "sendingAttachment": "Iatán á sheoladh...", + "@sendingAttachment": {}, + "generatingVideoThumbnail": "Mionsamhail físe á cruthú...", + "@generatingVideoThumbnail": {}, + "compressVideo": "Físeán á chomhbhrú...", + "@compressVideo": {}, + "sendingAttachmentCountOfCount": "Ceangaltán {index} de {length} á sheoladh...", + "@sendingAttachmentCountOfCount": { + "type": "integer", + "placeholders": { + "index": { + "type": "int" + }, + "length": { + "type": "int" + } + } + }, + "prepareSendingAttachment": "Ullmhaigh an t- iatán á sheoladh...", + "@prepareSendingAttachment": {}, + "serverLimitReached": "Sroicheadh teorainn an fhreastalaí! Ag fanacht {seconds} soicind...", + "@serverLimitReached": { + "type": "integer", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "oneOfYourDevicesIsNotVerified": "Ní fhíoraítear ceann de do ghléasanna", + "@oneOfYourDevicesIsNotVerified": {}, + "noticeChatBackupDeviceVerification": "Nóta: Nuair a nascann tú do ghléasanna go léir leis an gcúltaca comhrá, déantar iad a fhíorú go huathoibríoch.", + "@noticeChatBackupDeviceVerification": {}, + "continueText": "Lean ar aghaidh", + "@continueText": {}, + "welcomeText": "Hey Hey 👋 Is é seo FluffyChat. Is féidir leat síniú isteach in aon fhreastalaí baile, atá comhoiriúnach leis https://matrix.org. Agus ansin comhrá a dhéanamh le duine ar bith. Is líonra teachtaireachtaí díláraithe ollmhór é!", + "@welcomeText": {}, + "blur": "Doiléirigh:", + "@blur": {}, + "opacity": "Teimhneacht:", + "@opacity": {}, + "setWallpaper": "Socraigh cúlbhrat", + "@setWallpaper": {}, + "manageAccount": "Bainistigh cuntas", + "@manageAccount": {}, + "noContactInformationProvided": "Ní sholáthraíonn an freastalaí aon fhaisnéis teagmhála bhailí", + "@noContactInformationProvided": {}, + "contactServerAdmin": "Déan teagmháil le admin an fhreastalaí", + "@contactServerAdmin": {}, + "contactServerSecurity": "Déan teagmháil le slándáil an fhreastalaí", + "@contactServerSecurity": {}, + "supportPage": "Leathanach tacaíochta", + "@supportPage": {}, + "name": "Ainm", + "@name": {}, + "version": "Leagan", + "@version": {}, + "website": "Suíomh Gréasáin", + "@website": {}, + "messagesStyle": "Teachtaireachtaí:", + "@messagesStyle": {}, + "setColorTheme": "Socraigh téama datha:", + "@setColorTheme": {}, + "openGallery": "Oscail gailearaí", + "@openGallery": {}, + "users": "Úsáideoirí", + "@users": {}, + "youBannedUser": "Chuir tú cosc ar {user}", + "@youBannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "user": "Úsáideoir", + "@user": {}, + "databaseMigrationTitle": "Tá an bunachar sonraí optamaithe", + "@databaseMigrationTitle": {}, + "hasKnocked": "🚪 Tá {user} tar éis cnagadh", + "@hasKnocked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "report": "tuairisc", + "@report": {}, + "invite": "Tabhair cuireadh", + "@invite": {}, + "publicSpaces": "Spásanna poiblí", + "@publicSpaces": {}, + "whyIsThisMessageEncrypted": "Cén fáth nach féidir an teachtaireacht seo a léamh?", + "@whyIsThisMessageEncrypted": {}, + "pinMessage": "PIN go seomra", + "@pinMessage": {}, + "dehydrate": "Easpórtáil seisiún agus gléas wipe", + "@dehydrate": {}, + "dehydrateTor": "Úsáideoirí TOR: Seisiún easpórtála", + "@dehydrateTor": {}, + "commandHint_markasdm": "Marcáil mar sheomra teachtaireachta dírí don ID Maitrís tugtha", + "@commandHint_markasdm": {}, + "googlyEyesContent": "Seolann {senderName} súile googly chugat", + "@googlyEyesContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "commandHint_cuddle": "Seol cuddle", + "@commandHint_cuddle": {}, + "commandHint_hug": "Seol barróg", + "@commandHint_hug": {}, + "startFirstChat": "Cuir tús le do chéad chomhrá", + "@startFirstChat": {}, + "encryptThisChat": "Criptigh an comhrá seo", + "@encryptThisChat": {}, + "importNow": "Iompórtáil anois", + "@importNow": {}, + "sendTypingNotifications": "Seol fógraí clóscríofa", + "@sendTypingNotifications": {}, + "addChatDescription": "Cuir cur síos ar an gcomhrá leis...", + "@addChatDescription": {}, + "chatPermissions": "Ceadanna comhrá", + "@chatPermissions": {}, + "emoteKeyboardNoRecents": "Beidh mothúcháin a úsáideadh le déanaí le feiceáil anseo ...", + "@emoteKeyboardNoRecents": { + "type": "String", + "placeholders": {} + }, + "chatDescriptionHasBeenChanged": "Athraíodh cur síos ar an gcomhrá", + "@chatDescriptionHasBeenChanged": {}, + "pushNotificationsNotAvailable": "Níl fógraí brú ar fáil", + "@pushNotificationsNotAvailable": {}, + "publish": "Foilsigh", + "@publish": {}, + "changeGeneralChatSettings": "Athraigh socruithe ginearálta comhrá", + "@changeGeneralChatSettings": {}, + "sendRoomNotifications": "Seol fógraí @room", + "@sendRoomNotifications": {}, + "changeTheDescriptionOfTheGroup": "Athraigh an cur síos ar an gcomhrá", + "@changeTheDescriptionOfTheGroup": {}, + "aboutHomeserver": "Maidir le {homeserver}", + "@aboutHomeserver": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "cuddleContent": "Cuireann {senderName} do chudacht", + "@cuddleContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "countChatsAndCountParticipants": "{chats} comhrá agus {participants} rannpháirtí", + "@countChatsAndCountParticipants": { + "type": "String", + "placeholders": { + "chats": { + "type": "int" + }, + "participants": { + "type": "int" + } + } + }, + "noMoreChatsFound": "Níor aimsíodh a thuilleadh comhráite...", + "@noMoreChatsFound": {}, + "joinedChats": "Glacadh páirt i gcomhráite", + "@joinedChats": {}, + "space": "Spás", + "@space": {}, + "spaces": "Spásanna", + "@spaces": {}, + "directChat": "Comhrá díreach", + "@directChat": {}, + "redactedByBecause": "Athbhreithnithe ag {username} mar: \"{reason}\"", + "@redactedByBecause": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "reason": { + "type": "String" + } + } + }, + "recoveryKey": "Eochair athshlánaithe", + "@recoveryKey": {}, + "setChatDescription": "Socraigh cur síos ar an gcomhrá", + "@setChatDescription": {}, + "presenceStyle": "Láithreacht:", + "@presenceStyle": { + "type": "String", + "placeholders": {} + }, + "presencesToggle": "Taispeáin teachtaireachtaí stádais ó úsáideoirí eile", + "@presencesToggle": { + "type": "String", + "placeholders": {} + }, + "time": "Am", + "@time": {}, + "removeFromSpace": "Bain as spás", + "@removeFromSpace": {}, + "placeCall": "Cuir glaoch", + "@placeCall": {}, + "unsupportedAndroidVersion": "Leagan Android gan tacaíocht", + "@unsupportedAndroidVersion": {}, + "previousAccount": "Cuntas roimhe seo", + "@previousAccount": {}, + "widgetJitsi": "Jitsi le chéile", + "@widgetJitsi": {}, + "widgetCustom": "Saincheaptha", + "@widgetCustom": {}, + "widgetName": "Ainm", + "@widgetName": {}, + "usersMustKnock": "Ní mór d'úsáideoirí cnag a chur ar", + "@usersMustKnock": {}, + "noPublicLinkHasBeenCreatedYet": "Níor cruthaíodh aon nasc poiblí go fóill", + "@noPublicLinkHasBeenCreatedYet": {}, + "storeSecurlyOnThisDevice": "Stóráil go daingean ar an ngléas seo", + "@storeSecurlyOnThisDevice": {}, + "userLevel": "{level} - Úsáideoir", + "@userLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "updateInstalled": "🎉 Nuashonraigh {version} suiteáilte!", + "@updateInstalled": { + "type": "String", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "serverInformation": "Eolas freastalaí:", + "@serverInformation": {}, + "knockRestricted": "Cnoc Mhuire srianta", + "@knockRestricted": {}, + "createGroup": "Cruthaigh grúpa", + "@createGroup": {}, + "noChatDescriptionYet": "Níl aon chur síos ar an gcomhrá cruthaithe fós.", + "@noChatDescriptionYet": {}, + "shareInviteLink": "Roinn an nasc cuireadh", + "@shareInviteLink": {}, + "notifyMeFor": "Cuir in iúl dom le haghaidh", + "@notifyMeFor": {}, + "passwordRecoverySettings": "Socruithe athshlánaithe pasfhocal", + "@passwordRecoverySettings": {}, + "widgetEtherpad": "Nóta téacs", + "@widgetEtherpad": {}, + "youKickedAndBanned": "🙅 Chiceáil tú agus chuir tú cosc ar {user}", + "@youKickedAndBanned": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "publicChatAddresses": "Seoltaí comhrá poiblí", + "@publicChatAddresses": {}, + "createNewAddress": "Cruthaigh seoladh nua", + "@createNewAddress": {}, + "groupName": "Ainm an ghrúpa", + "@groupName": {}, + "bundleName": "Ainm an bheartáin", + "@bundleName": {}, + "enterSpace": "Iontráil spás", + "@enterSpace": {}, + "wasDirectChatDisplayName": "Comhrá folamh (bhí {oldDisplayName})", + "@wasDirectChatDisplayName": { + "type": "String", + "placeholders": { + "oldDisplayName": { + "type": "String" + } + } + }, + "oneClientLoggedOut": "Tá duine de do chliaint logáilte amach", + "@oneClientLoggedOut": {}, + "overview": "Forbhreathnú", + "@overview": {}, + "unverified": "Neamhfhíoraithe", + "@unverified": {}, + "widgetNameError": "Tabhair ainm taispeána, le do thoil.", + "@widgetNameError": {}, + "youRejectedTheInvitation": "Dhiúltaigh tú don chuireadh", + "@youRejectedTheInvitation": {}, + "youHaveWithdrawnTheInvitationFor": "Tharraing tú siar an cuireadh do {user}", + "@youHaveWithdrawnTheInvitationFor": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youInvitedToBy": "📩 Tugadh cuireadh duit trí nasc chuig:\n{alias}", + "@youInvitedToBy": { + "placeholders": { + "alias": { + "type": "String" + } + } + }, + "youInvitedUser": "📩 Thug tú cuireadh do {user}", + "@youInvitedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "unlockOldMessages": "Díghlasáil seanteachtaireachtaí", + "@unlockOldMessages": {}, + "saveKeyManuallyDescription": "Sábháil an eochair seo de láimh trí dialóg nó gearrthaisce comhroinnte an chórais a spreagadh.", + "@saveKeyManuallyDescription": {}, + "storeInAndroidKeystore": "Stóráil i Android KeyStore", + "@storeInAndroidKeystore": {}, + "storeInAppleKeyChain": "Stóráil i Apple KeyChain", + "@storeInAppleKeyChain": {}, + "appearOnTop": "Le feiceáil ar an mbarr", + "@appearOnTop": {}, + "newSpaceDescription": "Ligeann spásanna duit do chomhráite a chomhdhlúthú agus pobail phríobháideacha nó phoiblí a thógáil.", + "@newSpaceDescription": {}, + "chatCanBeDiscoveredViaSearchOnServer": "Is féidir comhrá a aimsiú tríd an gcuardach ar {server}", + "@chatCanBeDiscoveredViaSearchOnServer": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "nothingFound": "Níor aimsíodh aon rud...", + "@nothingFound": {}, + "searchMore": "Cuardaigh tuilleadh...", + "@searchMore": {}, + "gallery": "Gailearaí", + "@gallery": {}, + "alwaysUse24HourFormat": "bréagach", + "@alwaysUse24HourFormat": { + "description": "Set to true to always display time of day in 24 hour format." + }, + "importFromZipFile": "Iompórtáil ó chomhad .zip", + "@importFromZipFile": {}, + "exportEmotePack": "Easpórtáil Emote pacáiste mar .zip", + "@exportEmotePack": {}, + "replace": "Ionadaigh", + "@replace": {}, + "appLockDescription": "Cuir glas ar an aip nuair nach bhfuil sé in úsáid le cód bioráin", + "@appLockDescription": {}, + "swipeRightToLeftToReply": "Svaidhpeáil ar dheis ar chlé chun freagra a thabhairt", + "@swipeRightToLeftToReply": {}, + "commandHint_discardsession": "Scrios an seisiún", + "@commandHint_discardsession": { + "type": "String", + "description": "Usage hint for the command /discardsession" + }, + "allRooms": "Gach Comhrá Grúpa", + "@allRooms": { + "type": "String", + "placeholders": {} + }, + "block": "Bloc", + "@block": {}, + "blockListDescription": "Is féidir leat bac a chur ar úsáideoirí atá ag cur isteach ort. Ní bheidh tú in ann teachtaireachtaí nó cuireadh seomra ar bith a fháil ó na húsáideoirí ar do liosta bloc pearsanta.", + "@blockListDescription": {}, + "blockUsername": "Déan neamhaird de ainm úsáideora", + "@blockUsername": {}, + "inviteContactToGroupQuestion": "Ar mhaith leat cuireadh a thabhairt do {contact} chuig an gcomhrá \"{groupName}\"?", + "@inviteContactToGroupQuestion": {}, + "tryAgain": "Bain triail eile as", + "@tryAgain": {}, + "optionalRedactReason": "(Roghnach) An chúis leis an teachtaireacht seo a chur in eagar...", + "@optionalRedactReason": {}, + "dehydrateWarning": "Ní féidir an gníomh seo a chealú. Cinntigh go stórálann tú an comhad cúltaca go sábháilte.", + "@dehydrateWarning": {}, + "hydrateTor": "Úsáideoirí TOR: Iompórtáil easpórtáil seisiún", + "@hydrateTor": {}, + "hydrateTorLong": "An ndearna tú do sheisiún a easpórtáil an uair dheireanach ar TOR? Iompórtáil go tapa é agus leanúint ar aghaidh ag comhrá.", + "@hydrateTorLong": {}, + "hydrate": "Athchóirigh ó chomhad cúltaca", + "@hydrate": {}, + "commandHint_googly": "Seol roinnt súile googly", + "@commandHint_googly": {}, + "notAnImage": "Ní comhad íomhá é.", + "@notAnImage": {}, + "userRole": "Ról an úsáideora", + "@userRole": {}, + "minimumPowerLevel": "Is é {level} an t-íosleibhéal cumhachta.", + "@minimumPowerLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "String" + } + } + }, + "isReadyForKeyVerification": "Tá {sender} réidh le haghaidh fíorú eochair", + "@isReadyForKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "startedKeyVerification": "Thosaigh {sender} fíorú eochrach", + "@startedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "stickers": "Greamáin", + "@stickers": {}, + "discover": "Faigh amach", + "@discover": {}, + "unreadChatsInApp": "{appname}: {unread} comhráite gan léamh", + "@unreadChatsInApp": { + "type": "String", + "placeholders": { + "appname": { + "type": "String" + }, + "unread": { + "type": "String" + } + } + }, + "noDatabaseEncryption": "Ní thacaítear le criptiú bunachar sonraí ar an ardán seo", + "@noDatabaseEncryption": {}, + "thereAreCountUsersBlocked": "Faoi láthair tá bac curtha ar úsáideoirí {count}.", + "@thereAreCountUsersBlocked": { + "type": "String", + "count": {} + }, + "sendReadReceiptsDescription": "Is féidir le rannpháirtithe eile i gcomhrá a fheiceáil nuair a bhíonn teachtaireacht léite agat.", + "@sendReadReceiptsDescription": {}, + "doesNotSeemToBeAValidHomeserver": "Ní cosúil gur freastalaí baile comhoiriúnach é. URL mícheart?", + "@doesNotSeemToBeAValidHomeserver": {}, + "indexedDbErrorTitle": "Saincheisteanna mód príobháideach", + "@indexedDbErrorTitle": {}, + "indexedDbErrorLong": "Ar an drochuair níl an stóráil teachtaireachta cumasaithe sa mhód príobháideach de réir réamhshocraithe.\nTabhair cuairt le do thoil\n - faoi: config\n - socraithe dom.indexedDB.privateBrowsing.enabled go fíor\nSeachas sin, ní féidir FluffyChat a rith.", + "@indexedDbErrorLong": {}, + "nextAccount": "An chéad chuntas eile", + "@nextAccount": {}, + "youJoinedTheChat": "Chuaigh tú isteach sa chomhrá", + "@youJoinedTheChat": {}, + "youAcceptedTheInvitation": "👍 Ghlac tú leis an gcuireadh", + "@youAcceptedTheInvitation": {}, + "screenSharingTitle": "comhroinnt scáileáin", + "@screenSharingTitle": {}, + "accessAndVisibility": "Rochtain agus infheictheacht", + "@accessAndVisibility": {}, + "accessAndVisibilityDescription": "Cé a bhfuil cead aige páirt a ghlacadh sa chomhrá seo agus conas is féidir an comhrá a aimsiú.", + "@accessAndVisibilityDescription": {}, + "calls": "Glaonna", + "@calls": {}, + "customEmojisAndStickers": "Emojis agus greamáin saincheaptha", + "@customEmojisAndStickers": {}, + "customEmojisAndStickersBody": "Cuir leis nó roinn emojis nó greamáin saincheaptha is féidir a úsáid in aon chomhrá.", + "@customEmojisAndStickersBody": {}, + "chatDescription": "Cur síos ar an gcomhrá", + "@chatDescription": {}, + "hideRedactedMessages": "Folaigh teachtaireachtaí curtha in eagar", + "@hideRedactedMessages": {}, + "hideRedactedMessagesBody": "Má athghníomhaíonn duine éigin teachtaireacht, ní bheidh an teachtaireacht seo le feiceáil sa chomhrá a thuilleadh.", + "@hideRedactedMessagesBody": {}, + "hideInvalidOrUnknownMessageFormats": "Folaigh formáidí teachtaireachta neamhbhailí nó anaithnid", + "@hideInvalidOrUnknownMessageFormats": {}, + "blockedUsers": "Úsáideoirí bactha", + "@blockedUsers": {}, + "redactMessageDescription": "Athrófar an teachtaireacht do gach rannpháirtí sa chomhrá seo. Ní féidir é seo a chealú.", + "@redactMessageDescription": {}, + "noKeyForThisMessage": "Féadfaidh sé seo tarlú má seoladh an teachtaireacht sular shínigh tú isteach ar do chuntas ag an ngléas seo.\n\nIs féidir freisin gur chuir an seoltóir bac ar do ghléas nó go ndeachaigh rud éigin mícheart leis an nasc idirlín.\n\nAn bhfuil tú in ann an teachtaireacht a léamh ar sheisiún eile? Ansin is féidir leat an teachtaireacht a aistriú uaidh! Téigh go Socruithe > Gléasanna agus cinntigh go bhfuil do ghléasanna fíoraithe a chéile. Nuair a osclaíonn tú an seomra an chéad uair eile agus an dá sheisiún sa tulra, déanfar na heochracha a tharchur go huathoibríoch.\n\nNár mhaith leat na heochracha a chailleadh agus tú ag logáil amach nó ag aistriú gléasanna? Déan cinnte go bhfuil an cúltaca comhrá cumasaithe agat sna socruithe.", + "@noKeyForThisMessage": {}, + "boldText": "Téacs trom", + "@boldText": {}, + "italicText": "Téacs iodálach", + "@italicText": {}, + "strikeThrough": "Stailc tríd", + "@strikeThrough": {}, + "addLink": "Cuir nasc leis", + "@addLink": {}, + "pleaseFillOut": "Líon amach le do thoil", + "@pleaseFillOut": {}, + "invalidUrl": "URL neamhbhailí", + "@invalidUrl": {}, + "unableToJoinChat": "Ní féidir páirt a ghlacadh sa chomhrá. B’fhéidir go bhfuil an comhrá dúnta cheana féin ag an bpáirtí eile.", + "@unableToJoinChat": {}, + "compress": "Comhbhrúigh", + "@compress": {}, + "sendImages": "Seol {count} íomhá", + "@sendImages": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "appIntroduction": "Ligeann FluffyChat duit comhrá a dhéanamh le do chairde thar theachtairí éagsúla. Foghlaim tuilleadh ag https://matrix.org nó tapáil *Ar aghaidh*.", + "@appIntroduction": {}, + "appWantsToUseForLoginDescription": "Ligeann tú leis seo don aip agus don suíomh Gréasáin faisnéis a roinnt fút.", + "@appWantsToUseForLoginDescription": {}, + "synchronizingPleaseWaitCounter": " Ag sioncronú… ({percentage}%)", + "@synchronizingPleaseWaitCounter": { + "type": "String", + "placeholders": { + "percentage": { + "type": "String" + } + } + }, + "appWantsToUseForLogin": "Úsáid '{server}' chun logáil isteach", + "@appWantsToUseForLogin": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "open": "Oscail", + "@open": {}, + "waitingForServer": "Ag fanacht leis an bhfreastalaí...", + "@waitingForServer": {}, + "previous": "Roimhe Seo", + "@previous": {}, + "otherPartyNotLoggedIn": "Níl an páirtí eile logáilte isteach faoi láthair agus mar sin ní féidir leo teachtaireachtaí a fháil!", + "@otherPartyNotLoggedIn": {}, + "contentNotificationSettings": "Socruithe fógra inneachair", + "@contentNotificationSettings": {}, + "generalNotificationSettings": "Socruithe ginearálta fógra", + "@generalNotificationSettings": {}, + "roomNotificationSettings": "Socruithe fógra seomra", + "@roomNotificationSettings": {}, + "userSpecificNotificationSettings": "Socruithe fógra sainiúla don úsáideoir", + "@userSpecificNotificationSettings": {}, + "otherNotificationSettings": "Socruithe fógra eile", + "@otherNotificationSettings": {}, + "notificationRuleContainsUserName": "Tá Ainm Úsáideora ann", + "@notificationRuleContainsUserName": {}, + "notificationRuleMaster": "Balbhaigh gach fógra", + "@notificationRuleMaster": {}, + "notificationRuleMasterDescription": "Sáraíonn sé gach riail eile agus díchumasaítear gach fógra.", + "@notificationRuleMasterDescription": {}, + "notificationRuleSuppressNotices": "Bain Teachtaireachtaí Uathoibrithe", + "@notificationRuleSuppressNotices": {}, + "notificationRuleSuppressNoticesDescription": "Sochtann sé fógraí ó chliaint uathoibrithe amhail róbónna.", + "@notificationRuleSuppressNoticesDescription": {}, + "notificationRuleInviteForMe": "Tabhair cuireadh Do Mhise", + "@notificationRuleInviteForMe": {}, + "notificationRuleMemberEvent": "Imeacht Ball", + "@notificationRuleMemberEvent": {}, + "notificationRuleMemberEventDescription": "Sochtann fógraí le haghaidh imeachtaí ballraíochta.", + "@notificationRuleMemberEventDescription": {}, + "notificationRuleIsUserMention": "Luaigh Úsáideoir", + "@notificationRuleIsUserMention": {}, + "notificationRuleIsUserMentionDescription": "Cuireann sé sin in iúl don úsáideoir nuair a luaitear go díreach iad i dteachtaireacht.", + "@notificationRuleIsUserMentionDescription": {}, + "notificationRuleContainsDisplayName": "Tá Ainm Taispeána ann", + "@notificationRuleContainsDisplayName": {}, + "notificationRuleIsRoomMention": "Luaigh Seomra", + "@notificationRuleIsRoomMention": {}, + "notificationRuleIsRoomMentionDescription": "Cuireann sé sin in iúl don úsáideoir nuair a luaitear seomra.", + "@notificationRuleIsRoomMentionDescription": {}, + "notificationRuleRoomnotif": "Fógra Seomra", + "@notificationRuleRoomnotif": {}, + "notificationRuleRoomnotifDescription": "Cuireann sé seo in iúl don úsáideoir nuair a bhíonn '@room' i dteachtaireacht.", + "@notificationRuleRoomnotifDescription": {}, + "notificationRuleTombstone": "Leac uaighe", + "@notificationRuleTombstone": {}, + "notificationRuleTombstoneDescription": "Cuireann sé seo in iúl don úsáideoir faoi theachtaireachtaí díghníomhaithe seomra.", + "@notificationRuleTombstoneDescription": {}, + "notificationRuleReactionDescription": "Sochtann fógraí le haghaidh frithghníomhartha.", + "@notificationRuleReactionDescription": {}, + "notificationRuleRoomServerAcl": "Freastalaí Seomra ACL", + "@notificationRuleRoomServerAcl": {}, + "notificationRuleRoomServerAclDescription": "Sochtann sé fógraí do liostaí rialaithe rochtana freastalaí seomra (ACL).", + "@notificationRuleRoomServerAclDescription": {}, + "notificationRuleSuppressEdits": "Cuir na hEagarthóirí ar ceal", + "@notificationRuleSuppressEdits": {}, + "notificationRuleSuppressEditsDescription": "Sochtann fógraí le haghaidh teachtaireachtaí curtha in eagar.", + "@notificationRuleSuppressEditsDescription": {}, + "notificationRuleCall": "Glaoigh", + "@notificationRuleCall": {}, + "notificationRuleCallDescription": "Cuireann sé an t-úsáideoir ar an eolas faoi ghlaonna.", + "@notificationRuleCallDescription": {}, + "notificationRuleEncryptedRoomOneToOne": "Seomra Duine le Duine Criptithe", + "@notificationRuleEncryptedRoomOneToOne": {}, + "notificationRuleRoomOneToOne": "Seomra duine le duine", + "@notificationRuleRoomOneToOne": {}, + "notificationRuleRoomOneToOneDescription": "Cuireann sé seo in iúl don úsáideoir faoi theachtaireachtaí i seomraí duine le duine.", + "@notificationRuleRoomOneToOneDescription": {}, + "notificationRuleMessage": "Teachtaireacht", + "@notificationRuleMessage": {}, + "notificationRuleMessageDescription": "Cuireann sé seo in iúl don úsáideoir faoi theachtaireachtaí ginearálta.", + "@notificationRuleMessageDescription": {}, + "notificationRuleEncrypted": "Criptithe", + "@notificationRuleEncrypted": {}, + "notificationRuleJitsi": "Jitsi", + "@notificationRuleJitsi": {}, + "notificationRuleJitsiDescription": "Cuireann sé seo in iúl don úsáideoir faoi imeachtaí giuirléidí Jitsi.", + "@notificationRuleJitsiDescription": {}, + "notificationRuleServerAcl": "Seachtaigh Freastalaí ACL Imeachtaí", + "@notificationRuleServerAcl": {}, + "more": "Tuilleadh", + "@more": {}, + "newChatRequest": "📩 Iarratas comhrá nua", + "@newChatRequest": {}, + "shareKeysWith": "Roinn na heochracha le...", + "@shareKeysWith": {}, + "allDevices": "Gach gléasanna", + "@allDevices": {}, + "crossVerifiedDevicesIfEnabled": "Gléasanna trasfhíoraithe má tá siad cumasaithe", + "@crossVerifiedDevicesIfEnabled": {}, + "crossVerifiedDevices": "Feistí trasfhíoraithe", + "@crossVerifiedDevices": {}, + "unknownPushRule": "Riail bhrú anaithnid '{rule}'", + "@unknownPushRule": { + "type": "String", + "placeholders": { + "rule": { + "type": "String" + } + } + }, + "notificationRuleReaction": "Imoibriú", + "@notificationRuleReaction": {}, + "notificationRuleEncryptedDescription": "Cuireann sé seo in iúl don úsáideoir faoi theachtaireachtaí i seomraí criptithe.", + "@notificationRuleEncryptedDescription": {}, + "notificationRuleContainsUserNameDescription": "Cuireann sé sin in iúl don úsáideoir nuair a bhíonn a ainm úsáideora i dteachtaireacht.", + "@notificationRuleContainsUserNameDescription": {}, + "notificationRuleInviteForMeDescription": "Cuireann sé seo ar an eolas don úsáideoir nuair a thugtar cuireadh dó/di go seomra.", + "@notificationRuleInviteForMeDescription": {}, + "deletePushRuleCanNotBeUndone": "Má scriosann tú an socrú fógra seo, ní féidir é seo a chealú.", + "@deletePushRuleCanNotBeUndone": {}, + "notificationRuleContainsDisplayNameDescription": "Cuireann sé sin in iúl don úsáideoir nuair a bhíonn a ainm taispeána i dteachtaireacht.", + "@notificationRuleContainsDisplayNameDescription": {}, + "notificationRuleEncryptedRoomOneToOneDescription": "Cuireann sé seo in iúl don úsáideoir faoi theachtaireachtaí i seomraí duine le duine criptithe.", + "@notificationRuleEncryptedRoomOneToOneDescription": {}, + "notificationRuleServerAclDescription": "Sochtann fógraí le haghaidh imeachtaí Freastalaí ACL.", + "@notificationRuleServerAclDescription": {}, + "shareKeysWithDescription": "Cad iad na gléasanna ar cheart muinín a chur iontu ionas gur féidir leo do chuid teachtaireachtaí a léamh i gcomhráite criptithe?", + "@shareKeysWithDescription": {}, + "verifiedDevicesOnly": "Gléasanna fíoraithe amháin", + "@verifiedDevicesOnly": {}, + "takeAPhoto": "Glac grianghraf", + "@takeAPhoto": {}, + "recordAVideo": "Taifead físeán", + "@recordAVideo": {}, + "notSupportedOnThisDevice": "Ní thacaítear leis ar an ngléas seo", + "@notSupportedOnThisDevice": {}, + "optionalMessage": "Teachtaireacht (Roghnach)…", + "@optionalMessage": {}, + "enterNewChat": "Cuir isteach comhrá nua", + "@enterNewChat": {}, + "commandHint_roomupgrade": "Uasghrádaigh an seomra seo go dtí an leagan seomra a thugtar", + "@commandHint_roomupgrade": {}, + "setCustomPermissionLevel": "Socraigh leibhéal ceadanna saincheaptha", + "@setCustomPermissionLevel": {}, + "setPermissionsLevelDescription": "Roghnaigh ról réamhshainithe thíos nó cuir isteach leibhéal ceadanna saincheaptha idir 0 agus 100.", + "@setPermissionsLevelDescription": {}, + "ignoreUser": "Déan neamhaird den úsáideoir", + "@ignoreUser": {}, + "normalUser": "Gnáthúsáideoir", + "@normalUser": {}, + "approve": "Ceadaigh", + "@approve": {}, + "youHaveKnocked": "Bhuail tú", + "@youHaveKnocked": {}, + "pleaseWaitUntilInvited": "Fan anois, le do thoil, go dtí go dtabharfaidh duine éigin ón seomra cuireadh duit.", + "@pleaseWaitUntilInvited": {}, + "checkList": "Liosta seiceála", + "@checkList": {}, + "countInvited": "cuireadh chuig {count}", + "@countInvited": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "sentVoiceMessage": "🎙️ {duration} - Teachtaireacht ghutha ó {sender}", + "@sentVoiceMessage": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "duration": { + "type": "String" + } + } + }, + "displayNavigationRail": "Taispeáin ráille nascleanúna ar fhóin phóca", + "@displayNavigationRail": {}, + "commandHint_logout": "Logáil amach as do ghléas reatha", + "@commandHint_logout": {}, + "commandHint_logoutall": "Logáil amach gach gléas gníomhach", + "@commandHint_logoutall": {}, + "customReaction": "Imoibriú saincheaptha", + "@customReaction": {}, + "moreEvents": "Tuilleadh imeachtaí", + "@moreEvents": {}, + "declineInvitation": "Diúltaigh don chuireadh", + "@declineInvitation": {}, + "noMessagesYet": "Gan aon teachtaireachtaí fós", + "@noMessagesYet": {}, + "longPressToRecordVoiceMessage": "Brúigh go fada chun teachtaireacht gutha a thaifeadadh.", + "@longPressToRecordVoiceMessage": {}, + "pause": "Sos", + "@pause": {}, + "resume": "Atosú", + "@resume": {}, + "newSubSpace": "Fo-spás nua", + "@newSubSpace": {}, + "moveToDifferentSpace": "Bog go spás difriúil", + "@moveToDifferentSpace": {}, + "moveUp": "Bog suas", + "@moveUp": {}, + "moveDown": "Bog síos", + "@moveDown": {}, + "removeFromSpaceDescription": "Bainfear an comhrá as an spás ach beidh sé fós le feiceáil i do liosta comhrá.", + "@removeFromSpaceDescription": {}, + "countChats": "comhráite {chats}", + "@countChats": { + "type": "String", + "placeholders": { + "chats": { + "type": "int" + } + } + }, + "spaceMemberOf": "Ball spáis de {spaces}", + "@spaceMemberOf": { + "type": "String", + "placeholders": { + "spaces": { + "type": "String" + } + } + }, + "spaceMemberOfCanKnock": "Is féidir le ball spáis de {spaces} cnagadh", + "@spaceMemberOfCanKnock": { + "type": "String", + "placeholders": { + "spaces": { + "type": "String" + } + } + }, + "donate": "Tabhair Síntiús", + "@donate": {}, + "startedAPoll": "Chuir {username} tús le pobalbhreith.", + "@startedAPoll": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "poll": "Polaitíocht", + "@poll": {}, + "startPoll": "Tosaigh pobalbhreith", + "@startPoll": {}, + "endPoll": "Deireadh leis an pobalbhreith", + "@endPoll": {}, + "answersVisible": "Freagraí le feiceáil", + "@answersVisible": {}, + "answersHidden": "Freagraí i bhfolach", + "@answersHidden": {}, + "pollQuestion": "Ceist pobalbhreithe", + "@pollQuestion": {}, + "answerOption": "Rogha freagartha", + "@answerOption": {}, + "addAnswerOption": "Cuir rogha freagra leis", + "@addAnswerOption": {}, + "allowMultipleAnswers": "Ceadaigh freagraí iolracha", + "@allowMultipleAnswers": {}, + "pollHasBeenEnded": "Tá deireadh leis an pobalbhreith", + "@pollHasBeenEnded": {}, + "countVotes": "{count, plural, =1{Vóta amháin} other{{count} vótaí}}", + "@countVotes": { + "type": "int", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "answersWillBeVisibleWhenPollHasEnded": "Beidh freagraí le feiceáil nuair a bheidh an pobalbhreith thart", + "@answersWillBeVisibleWhenPollHasEnded": {}, + "replyInThread": "Freagra sa snáithe", + "@replyInThread": {}, + "countReplies": "{count, plural, =1{Freagra amháin} other{{count} freagraí}}", + "@countReplies": { + "type": "int", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "thread": "Snáithe", + "@thread": {}, + "backToMainChat": "Ar ais chuig an bpríomhchomhrá", + "@backToMainChat": {} +} diff --git a/lib/l10n/intl_gl.arb b/lib/l10n/intl_gl.arb new file mode 100644 index 0000000..1fe0d7d --- /dev/null +++ b/lib/l10n/intl_gl.arb @@ -0,0 +1,3491 @@ +{ + "@@locale": "gl", + "@@last_modified": "2021-08-14 12:41:10.040321", + "about": "Acerca de", + "@about": { + "type": "String", + "placeholders": {} + }, + "accept": "Aceptar", + "@accept": { + "type": "String", + "placeholders": {} + }, + "acceptedTheInvitation": "👍 {username} aceptou o convite", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "account": "Conta", + "@account": { + "type": "String", + "placeholders": {} + }, + "activatedEndToEndEncryption": "🔐 {username} activou a cifraxe extremo-a-extremo", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "addEmail": "Engadir email", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "admin": "Admin", + "@admin": { + "type": "String", + "placeholders": {} + }, + "alias": "alias", + "@alias": { + "type": "String", + "placeholders": {} + }, + "all": "Todos", + "@all": { + "type": "String", + "placeholders": {} + }, + "allChats": "Todas as conversas", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "answeredTheCall": "{senderName} respondeu á chamada", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "anyoneCanJoin": "Calquera pode unirse", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "appLock": "Bloqueo da app", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "archive": "Arquivo", + "@archive": { + "type": "String", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "Permitir o acceso de convidadas", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "Tes a certeza?", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "areYouSureYouWantToLogout": "Tes a certeza de querer saír?", + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "askSSSSSign": "Para poder asinar a outra persoa, escribe a túa frase de paso ou chave de recuperación.", + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "askVerificationRequest": "Aceptar a solicitude de verificación de {username}?", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "autoplayImages": "Reproducir automáticamente adhesivos e emotes", + "@autoplayImages": { + "type": "String", + "placeholder": {} + }, + "badServerLoginTypesException": "O servidor soporta as seguintes formas de conexión:\n{serverVersions}\nPero esta app só soporta:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "badServerVersionsException": "O servidor soporta as seguintes características:\n{serverVersions}\nPero esta app só soporta {supportedVersions}", + "@badServerVersionsException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "banFromChat": "Vetar na conversa", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "banned": "Vetada", + "@banned": { + "type": "String", + "placeholders": {} + }, + "bannedUser": "{username} vetou a {targetName}", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "blockDevice": "Bloquear dispositivo", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "blocked": "Bloqueado", + "@blocked": { + "type": "String", + "placeholders": {} + }, + "botMessages": "Mensaxes de Bot", + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "cancel": "Cancelar", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "cantOpenUri": "Non se pode abrir o URI {uri}", + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "changeDeviceName": "Cambiar nome do dispositivo", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "changedTheChatAvatar": "{username} cambiou o avatar da conversa", + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheChatDescriptionTo": "{username} mudou a descrición da conversa a: '{description}'", + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "changedTheChatNameTo": "{username} mudou o nome da charla a: '{chatname}'", + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "changedTheChatPermissions": "{username} mudou os permisos da conversa", + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheDisplaynameTo": "{username} cambiou o nome público a: '{displayname}'", + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "changedTheGuestAccessRules": "{username} mudou as regras de acceso para convidadas", + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheGuestAccessRulesTo": "{username} mudou as regras de acceso para convidadas a: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheHistoryVisibility": "{username} mudou a visibilidade do historial", + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheHistoryVisibilityTo": "{username} mudou a visibilidade do historial a: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheJoinRules": "{username} mudou as regras de acceso", + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheJoinRulesTo": "{username} mudou as regras de acceso a: {joinRules}", + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "changedTheProfileAvatar": "{username} mudou o avatar", + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomAliases": "{username} mudou os alias da sala", + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomInvitationLink": "{username} mudou a ligazón de convite", + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changePassword": "Mudar contrasinal", + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "changeTheHomeserver": "Mudar de servidor de inicio", + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "changeTheme": "Cambiar o estilo", + "@changeTheme": { + "type": "String", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "Mudar o nome do grupo", + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "changeYourAvatar": "Cambia o avatar", + "@changeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "channelCorruptedDecryptError": "A cifraxe está estragada", + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "chat": "Conversa", + "@chat": { + "type": "String", + "placeholders": {} + }, + "chatBackup": "Copia de apoio", + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "chatBackupDescription": "As mensaxes antigas están protexidas cunha chave de recuperación. Pon coidado e non a perdas.", + "@chatBackupDescription": { + "type": "String", + "placeholders": {} + }, + "chatDetails": "Detalles da conversa", + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "chats": "Conversas", + "@chats": { + "type": "String", + "placeholders": {} + }, + "chooseAStrongPassword": "Escolle un contrasinal forte", + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "clearArchive": "Baleirar arquivo", + "@clearArchive": {}, + "close": "Pechar", + "@close": { + "type": "String", + "placeholders": {} + }, + "commandHint_ban": "Vetar a usuaria indicada desta sala", + "@commandHint_ban": { + "type": "String", + "description": "Usage hint for the command /ban" + }, + "commandHint_html": "Enviar texto con formato HTML", + "@commandHint_html": { + "type": "String", + "description": "Usage hint for the command /html" + }, + "commandHint_invite": "Convidar á usuaria a esta sala", + "@commandHint_invite": { + "type": "String", + "description": "Usage hint for the command /invite" + }, + "commandHint_join": "Unirte á sala indicada", + "@commandHint_join": { + "type": "String", + "description": "Usage hint for the command /join" + }, + "commandHint_kick": "Eliminar a usuaria indicada desta sala", + "@commandHint_kick": { + "type": "String", + "description": "Usage hint for the command /kick" + }, + "commandHint_leave": "Saír desta sala", + "@commandHint_leave": { + "type": "String", + "description": "Usage hint for the command /leave" + }, + "commandHint_me": "Conta algo sobre ti", + "@commandHint_me": { + "type": "String", + "description": "Usage hint for the command /me" + }, + "commandHint_myroomavatar": "Establece a túa imaxe para esta sala (por mxc-uri)", + "@commandHint_myroomavatar": { + "type": "String", + "description": "Usage hint for the command /myroomavatar" + }, + "commandHint_myroomnick": "Establece o teu nome público para esta sala", + "@commandHint_myroomnick": { + "type": "String", + "description": "Usage hint for the command /myroomnick" + }, + "commandHint_op": "Establecer o nivel de responsabilidade da usuaria (por defecto: 50)", + "@commandHint_op": { + "type": "String", + "description": "Usage hint for the command /op" + }, + "commandHint_plain": "Enviar texto sen formato", + "@commandHint_plain": { + "type": "String", + "description": "Usage hint for the command /plain" + }, + "commandHint_react": "Enviar resposta como reacción", + "@commandHint_react": { + "type": "String", + "description": "Usage hint for the command /react" + }, + "commandHint_send": "Enviar texto", + "@commandHint_send": { + "type": "String", + "description": "Usage hint for the command /send" + }, + "commandHint_unban": "Retirar veto á usuaria para esta sala", + "@commandHint_unban": { + "type": "String", + "description": "Usage hint for the command /unban" + }, + "commandInvalid": "Comando non válido", + "@commandInvalid": { + "type": "String" + }, + "commandMissing": "{command} non é un comando.", + "@commandMissing": { + "type": "String", + "placeholders": { + "command": { + "type": "String" + } + }, + "description": "State that {command} is not a valid /command." + }, + "compareEmojiMatch": "Compara estes emojis", + "@compareEmojiMatch": { + "type": "String", + "placeholders": {} + }, + "compareNumbersMatch": "Compara estes números", + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "configureChat": "Configurar conversa", + "@configureChat": { + "type": "String", + "placeholders": {} + }, + "confirm": "Confirmar", + "@confirm": { + "type": "String", + "placeholders": {} + }, + "connect": "Conectar", + "@connect": { + "type": "String", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "O contacto foi convidado ao grupo", + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "containsDisplayName": "Contén nome público", + "@containsDisplayName": { + "type": "String", + "placeholders": {} + }, + "containsUserName": "Contén nome de usuaria", + "@containsUserName": { + "type": "String", + "placeholders": {} + }, + "contentHasBeenReported": "O contido foi denunciado á administración do servidor", + "@contentHasBeenReported": { + "type": "String", + "placeholders": {} + }, + "copiedToClipboard": "Copiado ao portapapeis", + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "copy": "Copiar", + "@copy": { + "type": "String", + "placeholders": {} + }, + "copyToClipboard": "Copiar ao portapapeis", + "@copyToClipboard": { + "type": "String", + "placeholders": {} + }, + "couldNotDecryptMessage": "Non se descifrou a mensaxe: {error}", + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "countParticipants": "{count} participantes", + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "create": "Crear", + "@create": { + "type": "String", + "placeholders": {} + }, + "createdTheChat": "💬 {username} creou a conversa", + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "createNewSpace": "Novo espazo", + "@createNewSpace": { + "type": "String", + "placeholders": {} + }, + "currentlyActive": "Actualmente activo", + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "darkTheme": "Escuro", + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "dateWithoutYear": "{day}-{month}", + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "dateWithYear": "{day}-{month}-{year}", + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "deactivateAccountWarning": "Esto desactivará a conta. Esto non ten volta atrás. Estás segura?", + "@deactivateAccountWarning": { + "type": "String", + "placeholders": {} + }, + "defaultPermissionLevel": "Nivel de permisos por defecto para novas usuarias", + "@defaultPermissionLevel": { + "type": "String", + "placeholders": {} + }, + "delete": "Eliminar", + "@delete": { + "type": "String", + "placeholders": {} + }, + "deleteAccount": "Eliminar conta", + "@deleteAccount": { + "type": "String", + "placeholders": {} + }, + "deleteMessage": "Eliminar mensaxe", + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "device": "Dispositivo", + "@device": { + "type": "String", + "placeholders": {} + }, + "deviceId": "ID do dispositivo", + "@deviceId": { + "type": "String", + "placeholders": {} + }, + "devices": "Dispositivos", + "@devices": { + "type": "String", + "placeholders": {} + }, + "directChats": "Conversas Directas", + "@directChats": { + "type": "String", + "placeholders": {} + }, + "displaynameHasBeenChanged": "O nome público mudou", + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "downloadFile": "Descargar ficheiro", + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "edit": "Editar", + "@edit": { + "type": "String", + "placeholders": {} + }, + "editBlockedServers": "Editar servidores bloqueados", + "@editBlockedServers": { + "type": "String", + "placeholders": {} + }, + "editDisplayname": "Editar nome público", + "@editDisplayname": { + "type": "String", + "placeholders": {} + }, + "editRoomAliases": "Editar alias da sala", + "@editRoomAliases": { + "type": "String", + "placeholders": {} + }, + "editRoomAvatar": "Editar avatar da sala", + "@editRoomAvatar": { + "type": "String", + "placeholders": {} + }, + "emoteExists": "Xa existe ese emote!", + "@emoteExists": { + "type": "String", + "placeholders": {} + }, + "emoteInvalid": "Atallo do emote non é válido!", + "@emoteInvalid": { + "type": "String", + "placeholders": {} + }, + "emotePacks": "Paquetes de Emotes para a sala", + "@emotePacks": { + "type": "String", + "placeholders": {} + }, + "emoteSettings": "Axustes de Emote", + "@emoteSettings": { + "type": "String", + "placeholders": {} + }, + "emoteShortcode": "Atallo de Emote", + "@emoteShortcode": { + "type": "String", + "placeholders": {} + }, + "emoteWarnNeedToPick": "Escribe un atallo e asocialle unha imaxe!", + "@emoteWarnNeedToPick": { + "type": "String", + "placeholders": {} + }, + "emptyChat": "Conversa baleira", + "@emptyChat": { + "type": "String", + "placeholders": {} + }, + "enableEmotesGlobally": "Activar paquete emote globalmente", + "@enableEmotesGlobally": { + "type": "String", + "placeholders": {} + }, + "enableEncryption": "Activar cifraxe", + "@enableEncryption": { + "type": "String", + "placeholders": {} + }, + "enableEncryptionWarning": "Non poderás desactivar a cifraxe posteriormente, tes certeza?", + "@enableEncryptionWarning": { + "type": "String", + "placeholders": {} + }, + "encrypted": "Cifrado", + "@encrypted": { + "type": "String", + "placeholders": {} + }, + "encryption": "Cifraxe", + "@encryption": { + "type": "String", + "placeholders": {} + }, + "encryptionNotEnabled": "A cifraxe non está activada", + "@encryptionNotEnabled": { + "type": "String", + "placeholders": {} + }, + "endedTheCall": "{senderName} rematou a chamada", + "@endedTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "enterAnEmailAddress": "Escribe un enderezo de email", + "@enterAnEmailAddress": { + "type": "String", + "placeholders": {} + }, + "enterYourHomeserver": "Escribe o teu servidor de inicio", + "@enterYourHomeserver": { + "type": "String", + "placeholders": {} + }, + "errorObtainingLocation": "Erro ao obter a localización: {error}", + "@errorObtainingLocation": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "everythingReady": "Todo preparado!", + "@everythingReady": { + "type": "String", + "placeholders": {} + }, + "extremeOffensive": "Extremadamente ofensivo", + "@extremeOffensive": { + "type": "String", + "placeholders": {} + }, + "fileName": "Nome do ficheiro", + "@fileName": { + "type": "String", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "String", + "placeholders": {} + }, + "fontSize": "Tamaño da letra", + "@fontSize": { + "type": "String", + "placeholders": {} + }, + "forward": "Reenviar", + "@forward": { + "type": "String", + "placeholders": {} + }, + "fromJoining": "Desde que se una", + "@fromJoining": { + "type": "String", + "placeholders": {} + }, + "fromTheInvitation": "Desde o convite", + "@fromTheInvitation": { + "type": "String", + "placeholders": {} + }, + "goToTheNewRoom": "Ir á nova sala", + "@goToTheNewRoom": { + "type": "String", + "placeholders": {} + }, + "group": "Grupo", + "@group": { + "type": "String", + "placeholders": {} + }, + "groupIsPublic": "O grupo é público", + "@groupIsPublic": { + "type": "String", + "placeholders": {} + }, + "groups": "Grupos", + "@groups": { + "type": "String", + "placeholders": {} + }, + "groupWith": "Grupo con {displayname}", + "@groupWith": { + "type": "String", + "placeholders": { + "displayname": { + "type": "String" + } + } + }, + "guestsAreForbidden": "Non se permiten convidadas", + "@guestsAreForbidden": { + "type": "String", + "placeholders": {} + }, + "guestsCanJoin": "Permítense convidadas", + "@guestsCanJoin": { + "type": "String", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "{username} retirou o convite para {targetName}", + "@hasWithdrawnTheInvitationFor": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "help": "Axuda", + "@help": { + "type": "String", + "placeholders": {} + }, + "hideRedactedEvents": "Agochar eventos editados", + "@hideRedactedEvents": { + "type": "String", + "placeholders": {} + }, + "hideUnknownEvents": "Agochar eventos descoñecidos", + "@hideUnknownEvents": { + "type": "String", + "placeholders": {} + }, + "howOffensiveIsThisContent": "É moi ofensivo este contido?", + "@howOffensiveIsThisContent": { + "type": "String", + "placeholders": {} + }, + "id": "ID", + "@id": { + "type": "String", + "placeholders": {} + }, + "identity": "Identidade", + "@identity": { + "type": "String", + "placeholders": {} + }, + "ignore": "Ignorar", + "@ignore": { + "type": "String", + "placeholders": {} + }, + "ignoredUsers": "Usuarias ignoradas", + "@ignoredUsers": { + "type": "String", + "placeholders": {} + }, + "iHaveClickedOnLink": "Premín na ligazón", + "@iHaveClickedOnLink": { + "type": "String", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "Frase de paso ou chave de recuperación incorrecta", + "@incorrectPassphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "inoffensive": "Inofensivo", + "@inoffensive": { + "type": "String", + "placeholders": {} + }, + "inviteContact": "Convidar contacto", + "@inviteContact": { + "type": "String", + "placeholders": {} + }, + "inviteContactToGroup": "Convidar contacto a {groupName}", + "@inviteContactToGroup": { + "type": "String", + "placeholders": { + "groupName": { + "type": "String" + } + } + }, + "invited": "Convidado", + "@invited": { + "type": "String", + "placeholders": {} + }, + "invitedUser": "📩 {username} convidou a {targetName}", + "@invitedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "invitedUsersOnly": "Só usuarias convidadas", + "@invitedUsersOnly": { + "type": "String", + "placeholders": {} + }, + "inviteForMe": "Convite para min", + "@inviteForMe": { + "type": "String", + "placeholders": {} + }, + "inviteText": "{username} convidoute a FluffyChat.\n1. Visita fluffychat.im e instala a app\n2. Crea unha conta ou Accede\n3. Abre a ligazón do convite: \n {link}", + "@inviteText": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "link": { + "type": "String" + } + } + }, + "isTyping": "está escribindo…", + "@isTyping": { + "type": "String", + "placeholders": {} + }, + "joinedTheChat": "👋 {username} uníuse á conversa", + "@joinedTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "joinRoom": "Unirse á sala", + "@joinRoom": { + "type": "String", + "placeholders": {} + }, + "kicked": "👞 {username} expulsou a {targetName}", + "@kicked": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickedAndBanned": "🙅 {username} expulsou e vetou a {targetName}", + "@kickedAndBanned": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickFromChat": "Expulsar da conversa", + "@kickFromChat": { + "type": "String", + "placeholders": {} + }, + "lastActiveAgo": "Última actividade: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "String", + "placeholders": { + "localizedTimeShort": { + "type": "String" + } + } + }, + "leave": "Saír", + "@leave": { + "type": "String", + "placeholders": {} + }, + "leftTheChat": "Deixar a conversa", + "@leftTheChat": { + "type": "String", + "placeholders": {} + }, + "license": "Licenza", + "@license": { + "type": "String", + "placeholders": {} + }, + "lightTheme": "Claro", + "@lightTheme": { + "type": "String", + "placeholders": {} + }, + "loadCountMoreParticipants": "Cargar {count} participantes máis", + "@loadCountMoreParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "loadingPleaseWait": "Cargando... Agarda.", + "@loadingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "loadMore": "Cargar máis…", + "@loadMore": { + "type": "String", + "placeholders": {} + }, + "locationDisabledNotice": "Os servizos de localización están desactivados. Actívaos para poder compartir a localización.", + "@locationDisabledNotice": { + "type": "String", + "placeholders": {} + }, + "locationPermissionDeniedNotice": "Permiso de localización denegado. Concede este permiso para poder compartir a localización.", + "@locationPermissionDeniedNotice": { + "type": "String", + "placeholders": {} + }, + "login": "Acceder", + "@login": { + "type": "String", + "placeholders": {} + }, + "logInTo": "Entrar en {homeserver}", + "@logInTo": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "logout": "Pechar sesión", + "@logout": { + "type": "String", + "placeholders": {} + }, + "memberChanges": "Cambios de participantes", + "@memberChanges": { + "type": "String", + "placeholders": {} + }, + "mention": "Mención", + "@mention": { + "type": "String", + "placeholders": {} + }, + "messages": "Mensaxes", + "@messages": { + "type": "String", + "placeholders": {} + }, + "moderator": "Moderadora", + "@moderator": { + "type": "String", + "placeholders": {} + }, + "muteChat": "Acalar conversa", + "@muteChat": { + "type": "String", + "placeholders": {} + }, + "needPantalaimonWarning": "Ten en conta que polo de agora precisas Pantalaimon para a cifraxe extremo-a-extremo.", + "@needPantalaimonWarning": { + "type": "String", + "placeholders": {} + }, + "newChat": "Nova conversa", + "@newChat": { + "type": "String", + "placeholders": {} + }, + "newMessageInFluffyChat": "💬 Nova mensaxe en FluffyChat", + "@newMessageInFluffyChat": { + "type": "String", + "placeholders": {} + }, + "newVerificationRequest": "Nova solicitude de verificación!", + "@newVerificationRequest": { + "type": "String", + "placeholders": {} + }, + "next": "Seguinte", + "@next": { + "type": "String", + "placeholders": {} + }, + "no": "Non", + "@no": { + "type": "String", + "placeholders": {} + }, + "noConnectionToTheServer": "Sen conexión co servidor", + "@noConnectionToTheServer": { + "type": "String", + "placeholders": {} + }, + "noEmotesFound": "Non hai emotes. 😕", + "@noEmotesFound": { + "type": "String", + "placeholders": {} + }, + "noEncryptionForPublicRooms": "Só podes activar a cifraxe tan pronto como a sala non sexa públicamente accesible.", + "@noEncryptionForPublicRooms": { + "type": "String", + "placeholders": {} + }, + "noGoogleServicesWarning": "Semella que non tes Firebase Cloud Messaging dispoñible no teu dispositivo. Para recibir notificacións push recomendamos que instales ntfy. Con ntfy ou outro provedor Unified Push podes recibir notificacións push de xeito seguro. Podes descargar ntfy desde a PlayStore ou F-Droid.", + "@noGoogleServicesWarning": { + "type": "String", + "placeholders": {} + }, + "noMatrixServer": "{server1} non é un servidor matrix, usar {server2} no seu lugar?", + "@noMatrixServer": { + "type": "String", + "placeholders": { + "server1": { + "type": "String" + }, + "server2": { + "type": "String" + } + } + }, + "none": "Ningún", + "@none": { + "type": "String", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "Aínda non engaiches ningún xeito de recuperar o contrasinal.", + "@noPasswordRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "noPermission": "Sen permiso", + "@noPermission": { + "type": "String", + "placeholders": {} + }, + "noRoomsFound": "Non se atoparon salas…", + "@noRoomsFound": { + "type": "String", + "placeholders": {} + }, + "notifications": "Notificacións", + "@notifications": { + "type": "String", + "placeholders": {} + }, + "notificationsEnabledForThisAccount": "Notificacións activadas para a conta", + "@notificationsEnabledForThisAccount": { + "type": "String", + "placeholders": {} + }, + "numUsersTyping": "{count} usuarias están escribindo…", + "@numUsersTyping": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "obtainingLocation": "Obtendo a localización…", + "@obtainingLocation": { + "type": "String", + "placeholders": {} + }, + "offensive": "Ofensivo", + "@offensive": { + "type": "String", + "placeholders": {} + }, + "offline": "Desconectada", + "@offline": { + "type": "String", + "placeholders": {} + }, + "ok": "Ok", + "@ok": { + "type": "String", + "placeholders": {} + }, + "online": "En liña", + "@online": { + "type": "String", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "Copia de Apoio en liña das Chaves activada", + "@onlineKeyBackupEnabled": { + "type": "String", + "placeholders": {} + }, + "oopsPushError": "Vaites! Desgraciadamente algo fallou ao configurar as notificacións push.", + "@oopsPushError": { + "type": "String", + "placeholders": {} + }, + "oopsSomethingWentWrong": "Ooooi, algo fallou…", + "@oopsSomethingWentWrong": { + "type": "String", + "placeholders": {} + }, + "openAppToReadMessages": "Abrir a app e ler mensaxes", + "@openAppToReadMessages": { + "type": "String", + "placeholders": {} + }, + "openCamera": "Abrir cámara", + "@openCamera": { + "type": "String", + "placeholders": {} + }, + "openInMaps": "Abrir en mapas", + "@openInMaps": { + "type": "String", + "placeholders": {} + }, + "or": "Ou", + "@or": { + "type": "String", + "placeholders": {} + }, + "participant": "Participante", + "@participant": { + "type": "String", + "placeholders": {} + }, + "passphraseOrKey": "frase de paso ou chave de recuperación", + "@passphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "password": "Contrasinal", + "@password": { + "type": "String", + "placeholders": {} + }, + "passwordForgotten": "Contrasinal esquecido", + "@passwordForgotten": { + "type": "String", + "placeholders": {} + }, + "passwordHasBeenChanged": "Cambiouse o contrasinal", + "@passwordHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "passwordRecovery": "Recuperación do contrasinal", + "@passwordRecovery": { + "type": "String", + "placeholders": {} + }, + "people": "Persoas", + "@people": { + "type": "String", + "placeholders": {} + }, + "pickImage": "Elixe unha imaxe", + "@pickImage": { + "type": "String", + "placeholders": {} + }, + "pin": "Fixar", + "@pin": { + "type": "String", + "placeholders": {} + }, + "play": "Reproducir {fileName}", + "@play": { + "type": "String", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "pleaseChoose": "Por favor elixe", + "@pleaseChoose": { + "type": "String", + "placeholders": {} + }, + "pleaseChooseAPasscode": "Escolle un código de acceso", + "@pleaseChooseAPasscode": { + "type": "String", + "placeholders": {} + }, + "pleaseClickOnLink": "Preme na ligazón do email e segue as instrucións.", + "@pleaseClickOnLink": { + "type": "String", + "placeholders": {} + }, + "pleaseEnter4Digits": "Escribe 4 díxitos ou deíxao baleiro para non activar o bloqueo.", + "@pleaseEnter4Digits": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPassword": "Escribe o teu contrasinal", + "@pleaseEnterYourPassword": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPin": "Escribe o teu pin", + "@pleaseEnterYourPin": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourUsername": "Escribe o teu nome de usuaria", + "@pleaseEnterYourUsername": { + "type": "String", + "placeholders": {} + }, + "pleaseFollowInstructionsOnWeb": "Segue as instruccións do sitio web e toca en seguinte.", + "@pleaseFollowInstructionsOnWeb": { + "type": "String", + "placeholders": {} + }, + "privacy": "Privacidade", + "@privacy": { + "type": "String", + "placeholders": {} + }, + "publicRooms": "Salas públicas", + "@publicRooms": { + "type": "String", + "placeholders": {} + }, + "pushRules": "Regras de envío", + "@pushRules": { + "type": "String", + "placeholders": {} + }, + "reason": "Razón", + "@reason": { + "type": "String", + "placeholders": {} + }, + "recording": "Gravando", + "@recording": { + "type": "String", + "placeholders": {} + }, + "redactedAnEvent": "{username} editou un evento", + "@redactedAnEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "redactMessage": "Eliminar mensaxe", + "@redactMessage": { + "type": "String", + "placeholders": {} + }, + "register": "Crear conta", + "@register": { + "type": "String", + "placeholders": {} + }, + "reject": "Rexeitar", + "@reject": { + "type": "String", + "placeholders": {} + }, + "rejectedTheInvitation": "{username} rexeitou o convite", + "@rejectedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "rejoin": "Volta a unirte", + "@rejoin": { + "type": "String", + "placeholders": {} + }, + "remove": "Quitar", + "@remove": { + "type": "String", + "placeholders": {} + }, + "removeAllOtherDevices": "Quitar todos os outros dispositivos", + "@removeAllOtherDevices": { + "type": "String", + "placeholders": {} + }, + "removedBy": "Eliminado por {username}", + "@removedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "removeDevice": "Quitar dispositivo", + "@removeDevice": { + "type": "String", + "placeholders": {} + }, + "unbanFromChat": "Retirar veto na conversa", + "@unbanFromChat": { + "type": "String", + "placeholders": {} + }, + "removeYourAvatar": "Elimina o avatar", + "@removeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "replaceRoomWithNewerVersion": "Substituír sala pola nova versión", + "@replaceRoomWithNewerVersion": { + "type": "String", + "placeholders": {} + }, + "reply": "Responder", + "@reply": { + "type": "String", + "placeholders": {} + }, + "reportMessage": "Denunciar mensaxe", + "@reportMessage": { + "type": "String", + "placeholders": {} + }, + "requestPermission": "Solicitar permiso", + "@requestPermission": { + "type": "String", + "placeholders": {} + }, + "roomHasBeenUpgraded": "A sala foi actualizada", + "@roomHasBeenUpgraded": { + "type": "String", + "placeholders": {} + }, + "roomVersion": "Versión da sala", + "@roomVersion": { + "type": "String", + "placeholders": {} + }, + "saveFile": "Gardar ficheiro", + "@saveFile": { + "type": "String", + "placeholders": {} + }, + "search": "Buscar", + "@search": { + "type": "String", + "placeholders": {} + }, + "security": "Seguridade", + "@security": { + "type": "String", + "placeholders": {} + }, + "seenByUser": "Visto por {username}", + "@seenByUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "send": "Enviar", + "@send": { + "type": "String", + "placeholders": {} + }, + "sendAMessage": "Enviar unha mensaxe", + "@sendAMessage": { + "type": "String", + "placeholders": {} + }, + "sendAsText": "Enviar como texto", + "@sendAsText": { + "type": "String" + }, + "sendAudio": "Enviar audio", + "@sendAudio": { + "type": "String", + "placeholders": {} + }, + "sendFile": "Enviar ficheiro", + "@sendFile": { + "type": "String", + "placeholders": {} + }, + "sendImage": "Enviar imaxe", + "@sendImage": { + "type": "String", + "placeholders": {} + }, + "sendMessages": "Enviar mensaxes", + "@sendMessages": { + "type": "String", + "placeholders": {} + }, + "sendOriginal": "Enviar orixinal", + "@sendOriginal": { + "type": "String", + "placeholders": {} + }, + "sendSticker": "Enviar adhesivo", + "@sendSticker": { + "type": "String", + "placeholders": {} + }, + "sendVideo": "Enviar vídeo", + "@sendVideo": { + "type": "String", + "placeholders": {} + }, + "sentAFile": "📁 {username} enviou un ficheiro", + "@sentAFile": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAnAudio": "🎤 {username} enviou un audio", + "@sentAnAudio": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAPicture": "🖼️ {username} enviou unha imaxe", + "@sentAPicture": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentASticker": "😊 {username} enviou un adhesivo", + "@sentASticker": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAVideo": "🎥 {username} enviou un vídeo", + "@sentAVideo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentCallInformations": "{senderName} enviou información da chamada", + "@sentCallInformations": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "setAsCanonicalAlias": "Establecer como alias principal", + "@setAsCanonicalAlias": { + "type": "String", + "placeholders": {} + }, + "setCustomEmotes": "Establecer emotes personalizados", + "@setCustomEmotes": { + "type": "String", + "placeholders": {} + }, + "setInvitationLink": "Establecer ligazón do convite", + "@setInvitationLink": { + "type": "String", + "placeholders": {} + }, + "setPermissionsLevel": "Establecer nivel de permisos", + "@setPermissionsLevel": { + "type": "String", + "placeholders": {} + }, + "setStatus": "Establecer estado", + "@setStatus": { + "type": "String", + "placeholders": {} + }, + "settings": "Axustes", + "@settings": { + "type": "String", + "placeholders": {} + }, + "share": "Compartir", + "@share": { + "type": "String", + "placeholders": {} + }, + "sharedTheLocation": "{username} compartiu a súa localización", + "@sharedTheLocation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "shareLocation": "Compartir localización", + "@shareLocation": { + "type": "String", + "placeholders": {} + }, + "showPassword": "Amosar contrasinal", + "@showPassword": { + "type": "String", + "placeholders": {} + }, + "singlesignon": "Conexión Unificada SSO", + "@singlesignon": { + "type": "String", + "placeholders": {} + }, + "skip": "Saltar", + "@skip": { + "type": "String", + "placeholders": {} + }, + "sourceCode": "Código fonte", + "@sourceCode": { + "type": "String", + "placeholders": {} + }, + "spaceIsPublic": "O Espazo é público", + "@spaceIsPublic": { + "type": "String", + "placeholders": {} + }, + "spaceName": "Nome do Espazo", + "@spaceName": { + "type": "String", + "placeholders": {} + }, + "startedACall": "{senderName} iniciou unha chamada", + "@startedACall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "status": "Estado", + "@status": { + "type": "String", + "placeholders": {} + }, + "statusExampleMessage": "¿Que tal estás hoxe?", + "@statusExampleMessage": { + "type": "String", + "placeholders": {} + }, + "submit": "Enviar", + "@submit": { + "type": "String", + "placeholders": {} + }, + "synchronizingPleaseWait": "Sincronizando... Agarda.", + "@synchronizingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "systemTheme": "Sistema", + "@systemTheme": { + "type": "String", + "placeholders": {} + }, + "theyDontMatch": "Non concordan", + "@theyDontMatch": { + "type": "String", + "placeholders": {} + }, + "theyMatch": "Concordan", + "@theyMatch": { + "type": "String", + "placeholders": {} + }, + "title": "FluffyChat", + "@title": { + "description": "Title for the application", + "type": "String", + "placeholders": {} + }, + "toggleFavorite": "Marcar Favorito", + "@toggleFavorite": { + "type": "String", + "placeholders": {} + }, + "toggleMuted": "Cambia Noificacións", + "@toggleMuted": { + "type": "String", + "placeholders": {} + }, + "toggleUnread": "Marcar como Lido/Non lido", + "@toggleUnread": { + "type": "String", + "placeholders": {} + }, + "tooManyRequestsWarning": "Demasiadas solicitudes. Inténtao máis tarde!", + "@tooManyRequestsWarning": { + "type": "String", + "placeholders": {} + }, + "transferFromAnotherDevice": "Transferir desde outro dispositivo", + "@transferFromAnotherDevice": { + "type": "String", + "placeholders": {} + }, + "tryToSendAgain": "Inténtao outra vez", + "@tryToSendAgain": { + "type": "String", + "placeholders": {} + }, + "unavailable": "Non dispoñible", + "@unavailable": { + "type": "String", + "placeholders": {} + }, + "unbannedUser": "{username} retirou o veto a {targetName}", + "@unbannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "unblockDevice": "Desbloquear dispositivo", + "@unblockDevice": { + "type": "String", + "placeholders": {} + }, + "unknownDevice": "Dispositivo descoñecido", + "@unknownDevice": { + "type": "String", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "Algoritmo de cifraxe descoñecido", + "@unknownEncryptionAlgorithm": { + "type": "String", + "placeholders": {} + }, + "unknownEvent": "Evento descoñecido '{type}'", + "@unknownEvent": { + "type": "String", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "unmuteChat": "Reactivar notificacións", + "@unmuteChat": { + "type": "String", + "placeholders": {} + }, + "unpin": "Desafixar", + "@unpin": { + "type": "String", + "placeholders": {} + }, + "unreadChats": "{unreadCount, plural, =1{1 conversa sen ler} other{{unreadCount} conversas sen ler}}", + "@unreadChats": { + "type": "String", + "placeholders": { + "unreadCount": { + "type": "int" + } + } + }, + "userAndOthersAreTyping": "{username} e {count} máis están escribindo…", + "@userAndOthersAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "userAndUserAreTyping": "{username} e {username2} están escribindo…", + "@userAndUserAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "username2": { + "type": "String" + } + } + }, + "userIsTyping": "{username} está escribindo…", + "@userIsTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "userLeftTheChat": "🚪 {username} deixou a conversa", + "@userLeftTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "username": "Nome de usuaria", + "@username": { + "type": "String", + "placeholders": {} + }, + "userSentUnknownEvent": "{username} enviou un evento {type}", + "@userSentUnknownEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "type": { + "type": "String" + } + } + }, + "verified": "Verificado", + "@verified": { + "type": "String", + "placeholders": {} + }, + "verify": "Verificar", + "@verify": { + "type": "String", + "placeholders": {} + }, + "verifyStart": "Comezar verificación", + "@verifyStart": { + "type": "String", + "placeholders": {} + }, + "verifySuccess": "Verificaches correctamente!", + "@verifySuccess": { + "type": "String", + "placeholders": {} + }, + "verifyTitle": "Verificando a outra conta", + "@verifyTitle": { + "type": "String", + "placeholders": {} + }, + "videoCall": "Chamada de vídeo", + "@videoCall": { + "type": "String", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "Visibilidade do historial da conversa", + "@visibilityOfTheChatHistory": { + "type": "String", + "placeholders": {} + }, + "visibleForAllParticipants": "Visible para todas as participantes", + "@visibleForAllParticipants": { + "type": "String", + "placeholders": {} + }, + "visibleForEveryone": "Visible para todas", + "@visibleForEveryone": { + "type": "String", + "placeholders": {} + }, + "voiceMessage": "Mensaxe de voz", + "@voiceMessage": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "Agardando a que a outra parte acepte a solicitude…", + "@waitingPartnerAcceptRequest": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerEmoji": "Agardando a que a outra parte acepte as emoticonas…", + "@waitingPartnerEmoji": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerNumbers": "Agardando a que a outra parte acepte os números…", + "@waitingPartnerNumbers": { + "type": "String", + "placeholders": {} + }, + "wallpaper": "Imaxe de fondo:", + "@wallpaper": { + "type": "String", + "placeholders": {} + }, + "warning": "Aviso!", + "@warning": { + "type": "String", + "placeholders": {} + }, + "weSentYouAnEmail": "Enviamosche un email", + "@weSentYouAnEmail": { + "type": "String", + "placeholders": {} + }, + "whoCanPerformWhichAction": "Quen pode realizar determinada acción", + "@whoCanPerformWhichAction": { + "type": "String", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "Quen se pode unir a este grupo", + "@whoIsAllowedToJoinThisGroup": { + "type": "String", + "placeholders": {} + }, + "whyDoYouWantToReportThis": "Por que queres denunciar esto?", + "@whyDoYouWantToReportThis": { + "type": "String", + "placeholders": {} + }, + "wipeChatBackup": "Queres eliminar a copia de apoio da conversa e crear unha nova chave de recuperación?", + "@wipeChatBackup": { + "type": "String", + "placeholders": {} + }, + "withTheseAddressesRecoveryDescription": "Con estos enderezos podes recuperar o contrasinal.", + "@withTheseAddressesRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "writeAMessage": "Escribe unha mensaxe…", + "@writeAMessage": { + "type": "String", + "placeholders": {} + }, + "yes": "Si", + "@yes": { + "type": "String", + "placeholders": {} + }, + "you": "Ti", + "@you": { + "type": "String", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "Xa non participas desta conversa", + "@youAreNoLongerParticipatingInThisChat": { + "type": "String", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "Foches vetada nesta conversa", + "@youHaveBeenBannedFromThisChat": { + "type": "String", + "placeholders": {} + }, + "yourPublicKey": "A túa chave pública", + "@yourPublicKey": { + "type": "String", + "placeholders": {} + }, + "chatHasBeenAddedToThisSpace": "Engadiuse a conversa a este espazo", + "@chatHasBeenAddedToThisSpace": {}, + "addToSpace": "Engadir ao espazo", + "@addToSpace": {}, + "scanQrCode": "Escanear código QR", + "@scanQrCode": {}, + "sendOnEnter": "Enter para enviar", + "@sendOnEnter": {}, + "homeserver": "Servidor de inicio", + "@homeserver": {}, + "serverRequiresEmail": "O servidor precisa validar o teu enderezo de email para rexistrarte.", + "@serverRequiresEmail": {}, + "enableMultiAccounts": "(BETA) Activar varias contas neste dispositivo", + "@enableMultiAccounts": {}, + "addAccount": "Engadir conta", + "@addAccount": {}, + "oneClientLoggedOut": "Un dos teus clientes foi desconectado", + "@oneClientLoggedOut": {}, + "link": "Ligazón", + "@link": {}, + "yourChatBackupHasBeenSetUp": "Configurouse a copia de apoio da charla.", + "@yourChatBackupHasBeenSetUp": {}, + "unverified": "Sen verificar", + "@unverified": {}, + "repeatPassword": "Repite o contrasinal", + "@repeatPassword": {}, + "messageInfo": "Info da mensaxe", + "@messageInfo": {}, + "time": "Hora", + "@time": {}, + "sender": "Remitente", + "@sender": {}, + "openGallery": "Galería pública", + "@openGallery": {}, + "addToSpaceDescription": "Elixe un espazo ao que engadir esta conversa.", + "@addToSpaceDescription": {}, + "messageType": "Tipo de mensaxe", + "@messageType": {}, + "removeFromSpace": "Retirar do espazo", + "@removeFromSpace": {}, + "start": "Comezar", + "@start": {}, + "commandHint_discardsession": "Descartar sesión", + "@commandHint_discardsession": { + "type": "String", + "description": "Usage hint for the command /discardsession" + }, + "commandHint_create": "Crear un grupo de conversa baleiro\nUsa --no-encryption para desactivar a cifraxe", + "@commandHint_create": { + "type": "String", + "description": "Usage hint for the command /create" + }, + "commandHint_clearcache": "Baleirar caché", + "@commandHint_clearcache": { + "type": "String", + "description": "Usage hint for the command /clearcache" + }, + "commandHint_dm": "Iniciar unha charla directa\nUsa --no-encryption para desactivar a cifraxe", + "@commandHint_dm": { + "type": "String", + "description": "Usage hint for the command /dm" + }, + "openVideoCamera": "Abrir a cámara para un vídeo", + "@openVideoCamera": { + "type": "String", + "placeholders": {} + }, + "videoWithSize": "Vídeo ({size})", + "@videoWithSize": { + "type": "String", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "publish": "Publicar", + "@publish": {}, + "dismiss": "Desbotar", + "@dismiss": {}, + "markAsRead": "Marcar como lido", + "@markAsRead": {}, + "reportUser": "Denunciar usuaria", + "@reportUser": {}, + "openChat": "Abrir Conversa", + "@openChat": {}, + "voiceCall": "Chamada de voz", + "@voiceCall": {}, + "emojis": "Emojis", + "@emojis": {}, + "placeCall": "Chamar", + "@placeCall": {}, + "unsupportedAndroidVersionLong": "Esta característica require unha vesión máis recente de Android. Mira se hai actualizacións ou soporte de LineageOS.", + "@unsupportedAndroidVersionLong": {}, + "videoCallsBetaWarning": "Ten en conta que as chamadas de vídeo están en fase beta. Poderían non funcionar correctamente ou non funcionar nalgunhas plataformas.", + "@videoCallsBetaWarning": {}, + "unsupportedAndroidVersion": "Version de Android non soportada", + "@unsupportedAndroidVersion": {}, + "reactedWith": "{sender} reaccionou con {reaction}", + "@reactedWith": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "reaction": { + "type": "String" + } + } + }, + "pinMessage": "Fixar na sala", + "@pinMessage": {}, + "confirmEventUnpin": "Tes a certeza de querer desafixar o evento?", + "@confirmEventUnpin": {}, + "experimentalVideoCalls": "Chamadas de vídeo en probas", + "@experimentalVideoCalls": {}, + "emailOrUsername": "Email ou nome de usuaria", + "@emailOrUsername": {}, + "switchToAccount": "Cambiar á conta {number}", + "@switchToAccount": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "previousAccount": "Conta anterior", + "@previousAccount": {}, + "nextAccount": "Conta seguinte", + "@nextAccount": {}, + "bundleName": "Nome do feixe", + "@bundleName": {}, + "widgetVideo": "Vídeo", + "@widgetVideo": {}, + "widgetJitsi": "Jitsi Meet", + "@widgetJitsi": {}, + "widgetCustom": "Personalizado", + "@widgetCustom": {}, + "widgetName": "Nome", + "@widgetName": {}, + "widgetUrlError": "Non é un URL válido.", + "@widgetUrlError": {}, + "widgetNameError": "Escribe un nome público.", + "@widgetNameError": {}, + "addWidget": "Engadir widget", + "@addWidget": {}, + "widgetEtherpad": "Nota de texto", + "@widgetEtherpad": {}, + "errorAddingWidget": "Erro ao engadir o widget.", + "@errorAddingWidget": {}, + "editBundlesForAccount": "Editar os feixes desta conta", + "@editBundlesForAccount": {}, + "addToBundle": "Engadir ao feixe", + "@addToBundle": {}, + "removeFromBundle": "Eliminar deste feixe", + "@removeFromBundle": {}, + "separateChatTypes": "Separar Conversas directas e Grupos", + "@separateChatTypes": { + "type": "String", + "placeholders": {} + }, + "youRejectedTheInvitation": "Rexeitaches o convite", + "@youRejectedTheInvitation": {}, + "youBannedUser": "Vetaches a {user}", + "@youBannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youInvitedBy": "📩 {user} convidoute", + "@youInvitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youJoinedTheChat": "Unícheste á conversa", + "@youJoinedTheChat": {}, + "youAcceptedTheInvitation": "👍 Aceptaches o convite", + "@youAcceptedTheInvitation": {}, + "youHaveWithdrawnTheInvitationFor": "Retiraches o convite para {user}", + "@youHaveWithdrawnTheInvitationFor": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youInvitedUser": "📩 Convidaches a {user}", + "@youInvitedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youKicked": "👞 Expulsaches a {user}", + "@youKicked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youKickedAndBanned": "🙅 Expulsaches e vetaches a {user}", + "@youKickedAndBanned": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youUnbannedUser": "Retiraches o veto a {user}", + "@youUnbannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "saveKeyManuallyDescription": "Garda esta chave manualmente usando o sistema para compartir do dispositivo ou portapapeis.", + "@saveKeyManuallyDescription": {}, + "storeInAndroidKeystore": "Gardar en Android KeyStore", + "@storeInAndroidKeystore": {}, + "storeInAppleKeyChain": "Gardar en Apple KeyChain", + "@storeInAppleKeyChain": {}, + "recoveryKeyLost": "Perdeches a chave de recuperación?", + "@recoveryKeyLost": {}, + "pleaseEnterRecoveryKey": "Escribe a túa chave de recuperación:", + "@pleaseEnterRecoveryKey": {}, + "recoveryKey": "Chave de recuperación", + "@recoveryKey": {}, + "storeSecurlyOnThisDevice": "Gardar de xeito seguro no dispositivo", + "@storeSecurlyOnThisDevice": {}, + "pleaseEnterRecoveryKeyDescription": "Para desbloquear as mensaxes antigas, escribe a chave de recuperación creada nunha sesión existente. A chave de recuperación NON é o teu contrasinal.", + "@pleaseEnterRecoveryKeyDescription": {}, + "users": "Usuarias", + "@users": {}, + "storeInSecureStorageDescription": "Gardar a chave de recuperación na almacenaxe segura deste dispositivo.", + "@storeInSecureStorageDescription": {}, + "countFiles": "{count} ficheiros", + "@countFiles": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "unlockOldMessages": "Desbloquear mensaxes antigas", + "@unlockOldMessages": {}, + "dehydrateTorLong": "Para usuarias de TOR, é recomendable exportar a sesión antes de pechar a xanela.", + "@dehydrateTorLong": {}, + "hydrateTor": "Usuarias TOR: Importar a sesión exportada", + "@hydrateTor": {}, + "hydrateTorLong": "Exportaches a túa sesión a última vez en TOR? Importaa rápidamente e segue conversando.", + "@hydrateTorLong": {}, + "hydrate": "Restablecer desde copia de apoio", + "@hydrate": {}, + "dehydrateWarning": "Esta acción non é reversible. Pon coidado en gardar o ficheiro de apoio.", + "@dehydrateWarning": {}, + "dehydrate": "Exportar sesión e eliminar dispositivo", + "@dehydrate": {}, + "dehydrateTor": "Usuarias TOR: Exportar sesión", + "@dehydrateTor": {}, + "indexedDbErrorTitle": "Problemas no modo privado", + "@indexedDbErrorTitle": {}, + "indexedDbErrorLong": "A almacenaxe de mensaxes non está activada por defecto no modo privado.\nMira en\n- about:config\n- establece dom.indexedDB.privateBrowsing.enabled como true\nSe non, non é posible executar FluffyChat.", + "@indexedDbErrorLong": {}, + "user": "Usuaria", + "@user": {}, + "custom": "Personal", + "@custom": {}, + "confirmMatrixId": "Confirma o teu ID Matrix para poder eliminar a conta.", + "@confirmMatrixId": {}, + "supposedMxid": "Debería ser {mxid}", + "@supposedMxid": { + "type": "String", + "placeholders": { + "mxid": { + "type": "String" + } + } + }, + "commandHint_markasdm": "Marcar como sala de mensaxe directa para o ID Matrix indicado", + "@commandHint_markasdm": {}, + "commandHint_markasgroup": "Marcar como grupo", + "@commandHint_markasgroup": {}, + "whyIsThisMessageEncrypted": "Por que non podo ler esta mensaxe?", + "@whyIsThisMessageEncrypted": {}, + "noKeyForThisMessage": "Pode ser que a mensaxe fose enviada antes de que ti accedeses á túa conta neste dispositivo.\n\nTamén é posible que a remitente non validase o teu dispositivo ou tamén que algo fallase na conexión a internet.\n\nPodes ler a mensaxe noutro dispositivo? Entón podes transferila desde el! Vai a Axustes > Dispositivos e comproba que tes tódolos dispositivos verificados. Entón cando abras a sala a próxima vez a sincronización realizarase e as chaves transmitiranse automáticamente.\n\nNon desexas perder as chaves cando pechas sesión ou cambias de dispositivo? Comproba nos axustes que activaches a copia de apoio das conversas.", + "@noKeyForThisMessage": {}, + "appearOnTop": "Aparecer arriba", + "@appearOnTop": {}, + "otherCallingPermissions": "Micrófono, cámara e outros permisos para FluffyChat", + "@otherCallingPermissions": {}, + "newGroup": "Novo grupo", + "@newGroup": {}, + "newSpace": "Novo espazo", + "@newSpace": {}, + "foregroundServiceRunning": "Esta notificación aparece cando se está a executar o servizo en segundo plano.", + "@foregroundServiceRunning": {}, + "screenSharingTitle": "compartición da pantalla", + "@screenSharingTitle": {}, + "callingPermissions": "Permisos de chamada", + "@callingPermissions": {}, + "callingAccount": "Conta que chama", + "@callingAccount": {}, + "callingAccountDetails": "Permítelle a FluffyChat usar a app de telefonía nativa de android.", + "@callingAccountDetails": {}, + "appearOnTopDetails": "Permítelle á app aparecer por enriba (non é preciso se xa configuraches FluffyChat como unha conta para chamadas)", + "@appearOnTopDetails": {}, + "enterSpace": "Entrar no espazo", + "@enterSpace": {}, + "enterRoom": "Entrar na sala", + "@enterRoom": {}, + "allSpaces": "Todos os espazos", + "@allSpaces": {}, + "screenSharingDetail": "Estás a compartir a túa pantalla en FluffyChat", + "@screenSharingDetail": {}, + "numChats": "{number} conversas", + "@numChats": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "hideUnimportantStateEvents": "Agochar os eventos de menor relevancia", + "@hideUnimportantStateEvents": {}, + "doNotShowAgain": "Non mostrar outra vez", + "@doNotShowAgain": {}, + "commandHint_googly": "Envía uns ollos desos grandes", + "@commandHint_googly": {}, + "googlyEyesContent": "{senderName} enviouche uns ollos grandes", + "@googlyEyesContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "cuddleContent": "{senderName} mándache un achuche", + "@cuddleContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "commandHint_cuddle": "Envía un agarimo", + "@commandHint_cuddle": {}, + "commandHint_hug": "Envía un abrazo", + "@commandHint_hug": {}, + "hugContent": "{senderName} abrázate", + "@hugContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "encryptThisChat": "Cifrar esta conversa", + "@encryptThisChat": {}, + "disableEncryptionWarning": "Por razóns de seguridade non podes desactivar a cifraxe dunha conversa onde foi activada previamente.", + "@disableEncryptionWarning": {}, + "sorryThatsNotPossible": "Lamentámolo... iso non é posible", + "@sorryThatsNotPossible": {}, + "deviceKeys": "Chaves do dispositivo:", + "@deviceKeys": {}, + "newSpaceDescription": "Os Espazos permítenche consolidar as túas conversas e construir comunidades públicas ou privadas.", + "@newSpaceDescription": {}, + "startFirstChat": "Abre a túa primeira conversa", + "@startFirstChat": {}, + "wasDirectChatDisplayName": "Conversa baleira (era {oldDisplayName})", + "@wasDirectChatDisplayName": { + "type": "String", + "placeholders": { + "oldDisplayName": { + "type": "String" + } + } + }, + "reopenChat": "Reabrir conversa", + "@reopenChat": {}, + "noOtherDevicesFound": "Non se atopan outros dispositivos", + "@noOtherDevicesFound": {}, + "noBackupWarning": "Aviso! Se non activas a copia de apoio da conversa, perderás o acceso ás túas mensaxes cifradas. É moi recomendable activar a copia de apoio da conversa antes de pechar a sesión.", + "@noBackupWarning": {}, + "fileIsTooBigForServer": "Non se puido enviar! O servidor só permite anexos que non superen {max}.", + "@fileIsTooBigForServer": {}, + "fileHasBeenSavedAt": "Gardouse o ficheiro en {path}", + "@fileHasBeenSavedAt": { + "type": "String", + "placeholders": { + "path": { + "type": "String" + } + } + }, + "jumpToLastReadMessage": "Ir á última mensaxe lida", + "@jumpToLastReadMessage": {}, + "readUpToHere": "Lin ate aquí", + "@readUpToHere": {}, + "openLinkInBrowser": "Abrir ligazón no navegador", + "@openLinkInBrowser": {}, + "jump": "Ir alá", + "@jump": {}, + "report": "informar", + "@report": {}, + "allRooms": "Todas as Conversas en grupo", + "@allRooms": { + "type": "String", + "placeholders": {} + }, + "reportErrorDescription": "😭 Vaia! Algo fallou. Se queres, podes informar do problema ás persoas desenvolvedoras.", + "@reportErrorDescription": {}, + "signInWithPassword": "Accede con contrasinal", + "@signInWithPassword": {}, + "pleaseTryAgainLaterOrChooseDifferentServer": "Inténtao máis tarde ou elixe un servidor diferente.", + "@pleaseTryAgainLaterOrChooseDifferentServer": {}, + "signInWith": "Accede con {provider}", + "@signInWith": { + "type": "String", + "placeholders": { + "provider": { + "type": "String" + } + } + }, + "notAnImage": "Non é un ficheiro de imaxe.", + "@notAnImage": {}, + "importNow": "Importar agora", + "@importNow": {}, + "importEmojis": "Importar Emojis", + "@importEmojis": {}, + "importFromZipFile": "Importar desde ficheiro .zip", + "@importFromZipFile": {}, + "exportEmotePack": "Exportar paquete Emote como .zip", + "@exportEmotePack": {}, + "replace": "Substituír", + "@replace": {}, + "sendTypingNotifications": "Permitir ver que estás escribindo", + "@sendTypingNotifications": {}, + "createGroup": "Crear grupo", + "@createGroup": {}, + "messagesStyle": "Mensaxes:", + "@messagesStyle": {}, + "profileNotFound": "Non se atopa a usuaria no servidor. Pode que haxa un problema coa conexión ou que a usuaria non exista.", + "@profileNotFound": {}, + "shareInviteLink": "Comparte ligazón de convite", + "@shareInviteLink": {}, + "setColorTheme": "Cor do decorado:", + "@setColorTheme": {}, + "setTheme": "Establecer decorado:", + "@setTheme": {}, + "inviteContactToGroupQuestion": "Queres convidar a {contact} para que se una á conversa \"{groupName}\"?", + "@inviteContactToGroupQuestion": {}, + "tryAgain": "Intentar outra vez", + "@tryAgain": {}, + "optionalRedactReason": "(Optativo) Razón para editar a mensaxe...", + "@optionalRedactReason": {}, + "redactedBy": "Editada por {username}", + "@redactedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "redactedByBecause": "Editada por {username} debido a: \"{reason}\"", + "@redactedByBecause": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "reason": { + "type": "String" + } + } + }, + "redactMessageDescription": "A mensaxe vai ser editada para todas as participantes na conversa. Non ten volta atrás.", + "@redactMessageDescription": {}, + "invite": "Convidar", + "@invite": {}, + "addChatDescription": "Engadir descrición da conversa...", + "@addChatDescription": {}, + "chatPermissions": "Permisos da conversa", + "@chatPermissions": {}, + "chatDescription": "Descrición da conversa", + "@chatDescription": {}, + "chatDescriptionHasBeenChanged": "Cambiou a descrición da conversa", + "@chatDescriptionHasBeenChanged": {}, + "noChatDescriptionYet": "Aínda non se escribeu a descrición da conversa.", + "@noChatDescriptionYet": {}, + "invalidServerName": "Nome de servidor non válido", + "@invalidServerName": {}, + "directChat": "Conversa Directa", + "@directChat": {}, + "setChatDescription": "Escribir descrición da conversa", + "@setChatDescription": {}, + "inviteGroupChat": "📨 Convidar a conversa en grupo", + "@inviteGroupChat": {}, + "invitePrivateChat": "📨 Convidar a conversa privada", + "@invitePrivateChat": {}, + "emoteKeyboardNoRecents": "Os emotes usados recentemente aparecerán aquí...", + "@emoteKeyboardNoRecents": { + "type": "String", + "placeholders": {} + }, + "banUserDescription": "Vaise vetar a usuaria na conversa e non poderá entrar outra vez ata que se retire o veto.", + "@banUserDescription": {}, + "removeDevicesDescription": "Vas pechar a sesión neste dispositivo e xa non poderás recibir mensaxes nel.", + "@removeDevicesDescription": {}, + "unbanUserDescription": "A usuaria vai poder entrar outra vez na conversa se quere.", + "@unbanUserDescription": {}, + "pushNotificationsNotAvailable": "Non están dispoñibles as notificacións push", + "@pushNotificationsNotAvailable": {}, + "makeAdminDescription": "Cando convirtas a esta usuaria en admin non poderás desfacer a acción xa que terá os mesmos permisos ca ti.", + "@makeAdminDescription": {}, + "archiveRoomDescription": "Vaise mover a charla ao arquivo. Outras usuarias poderán ver que saíches da conversa.", + "@archiveRoomDescription": {}, + "invalidInput": "Contido non válido!", + "@invalidInput": {}, + "hasKnocked": "🚪 {user} petou na porta", + "@hasKnocked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "wrongPinEntered": "PIN incorrecto! Inténtao outra vez en {seconds} segundos...", + "@wrongPinEntered": { + "type": "String", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "learnMore": "Saber máis", + "@learnMore": {}, + "roomUpgradeDescription": "Vaise recrear a charla coa nova versión da sala. Todas as participantes recibirán unha notificación para que cambien á nova charla. Podes ler máis información acerca das versións das salas en https://spec.matrix.org/latest/rooms/", + "@roomUpgradeDescription": {}, + "pleaseEnterANumber": "Escribe un número maior de cero", + "@pleaseEnterANumber": {}, + "kickUserDescription": "A usuaria foi expulsada pero non vetada. En conversas públicas a usuaria pode volver cando queira.", + "@kickUserDescription": {}, + "createGroupAndInviteUsers": "Crear un grupo e convidar usuarias", + "@createGroupAndInviteUsers": {}, + "groupCanBeFoundViaSearch": "O grupo pódese atopar ao buscar", + "@groupCanBeFoundViaSearch": {}, + "noUsersFoundWithQuery": "Lamentamos non atopar ningunha usuaria con \"{query}\". Comproba se está ben escrito.", + "@noUsersFoundWithQuery": { + "type": "String", + "placeholders": { + "query": { + "type": "String" + } + } + }, + "yourGlobalUserIdIs": "O teu ID-usuaria global é: ", + "@yourGlobalUserIdIs": {}, + "groupName": "Nome do grupo", + "@groupName": {}, + "searchChatsRooms": "Buscar #conversas, @usuarias...", + "@searchChatsRooms": {}, + "startConversation": "Iniciar conversa", + "@startConversation": {}, + "commandHint_sendraw": "Enviar json sen editar", + "@commandHint_sendraw": {}, + "wrongRecoveryKey": "Desculpa... non semella ser o xeito correcto de recuperar a chave.", + "@wrongRecoveryKey": {}, + "blockListDescription": "Podes bloquear usuarias que che molesten. Non recibirás mensaxes nin convites para salas procedentes das usuarias da túa lista persoal de bloqueo.", + "@blockListDescription": {}, + "blockedUsers": "Usuarias bloqueadas", + "@blockedUsers": {}, + "block": "Bloquear", + "@block": {}, + "blockUsername": "Ignorar identificador", + "@blockUsername": {}, + "thisDevice": "Este dispositivo:", + "@thisDevice": {}, + "publicSpaces": "Espazos públicos", + "@publicSpaces": {}, + "passwordIsWrong": "O contrasinal escrito non é correcto", + "@passwordIsWrong": {}, + "pleaseEnterYourCurrentPassword": "Escribe o contrasinal actual", + "@pleaseEnterYourCurrentPassword": {}, + "publicLink": "Ligazón pública", + "@publicLink": {}, + "nothingFound": "Non atopamos nada...", + "@nothingFound": {}, + "decline": "Desbotar", + "@decline": {}, + "newPassword": "Novo contrasinal", + "@newPassword": {}, + "passwordsDoNotMatch": "Os contrasinais non concordan", + "@passwordsDoNotMatch": {}, + "subspace": "Subespazo", + "@subspace": {}, + "select": "Escolle", + "@select": {}, + "pleaseChooseAStrongPassword": "Elixe un contrasinal forte", + "@pleaseChooseAStrongPassword": {}, + "addChatOrSubSpace": "Engadir charla ou sub espazo", + "@addChatOrSubSpace": {}, + "leaveEmptyToClearStatus": "Deixa baleiro para limpar o teu estado.", + "@leaveEmptyToClearStatus": {}, + "joinSpace": "Únete ao espazo", + "@joinSpace": {}, + "searchForUsers": "Buscar @persoas...", + "@searchForUsers": {}, + "databaseMigrationTitle": "Base de datos optimizada", + "@databaseMigrationTitle": {}, + "databaseMigrationBody": "Agarda, podería levarnos un pouco.", + "@databaseMigrationBody": {}, + "databaseBuildErrorBody": "Non se puido crear a base de datos SQlite. A app intentará usar a base de datos clásica. Por favor informa deste fallo ás desenvolvedoras en {url}. A mensaxe do erro é: {error}", + "@databaseBuildErrorBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "initAppError": "Houbo un fallo ao iniciar a app", + "@initAppError": {}, + "sessionLostBody": "Estragouse a túa sesión. Por favor informa deste fallo ás desenvolvedoras en {url}. A mensaxe do erro é: {error}", + "@sessionLostBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "restoreSessionBody": "A app vai intentar restablecer a sesión desde a copia de apoio. Por favor informa deste erro ás desenvolvedoras en {url}. A mensaxe do erro é: {error}", + "@restoreSessionBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "youInvitedToBy": "📩 Convidáronte cunha ligazón a:\n{alias}", + "@youInvitedToBy": { + "placeholders": { + "alias": { + "type": "String" + } + } + }, + "transparent": "Transparente", + "@transparent": {}, + "sendReadReceipts": "Enviar confirmación de lectura", + "@sendReadReceipts": {}, + "sendReadReceiptsDescription": "Outras participantes na conversa poden ver cando liches unha mensaxe.", + "@sendReadReceiptsDescription": {}, + "formattedMessages": "Mensaxes con formato", + "@formattedMessages": {}, + "verifyOtherDevice": "🔐 Verificar outro dispositivo", + "@verifyOtherDevice": {}, + "verifyOtherUser": "🔐 Verificar outra usuaria", + "@verifyOtherUser": {}, + "verifyOtherDeviceDescription": "Ao verificar outro dispositivo estás compartindo as chaves, aumentando a túa seguridade 💪. Ao iniciar a verificación aparecerá unha xanela emerxente nos dous dispositivos. Nesa xanela verás varios emojis ou números que tes que comparar entre eles. O mellor xeito de facelo é ter os dous dispositivos contigo cando inicias o proceso de verificación. 🤳", + "@verifyOtherDeviceDescription": {}, + "canceledKeyVerification": "{sender} desbotou a verificación da chave", + "@canceledKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "isReadyForKeyVerification": "{sender} xa pode verificar a chave", + "@isReadyForKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "forwardMessageTo": "Reenviar a mensaxe a {roomName}?", + "@forwardMessageTo": { + "type": "String", + "placeholders": { + "roomName": { + "type": "String" + } + } + }, + "sendTypingNotificationsDescription": "As outras participantes da conversa poden ver cando estás a escribir unha mensaxe.", + "@sendTypingNotificationsDescription": {}, + "formattedMessagesDescription": "Mostrar texto enriquecido nas mensaxes como letra grosa usando markdown.", + "@formattedMessagesDescription": {}, + "verifyOtherUserDescription": "Se verificas a outra usuaria, podes ter a certeza de que sabes con quen estás a conversar. 💪\n\nAo iniciar a verificación, ti mais a outra usuaria veredes unha xanela emerxente na app onde aparecerán varios emojis ou números que teredes que comparar entre vós.\n\nO mellor xeito de facelo é en persoa o cunha chamada de vídeo. 👭", + "@verifyOtherUserDescription": {}, + "requestedKeyVerification": "{sender} solicitou verificar a chave", + "@requestedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "acceptedKeyVerification": "{sender} aceptou a verificación da chave", + "@acceptedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "completedKeyVerification": "{sender} completou a verificación da chave", + "@completedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "startedKeyVerification": "{sender} comezou coa verificación da chave", + "@startedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "presenceStyle": "Presenza:", + "@presenceStyle": { + "type": "String", + "placeholders": {} + }, + "hidePresences": "Agochar Lista de estados?", + "@hidePresences": {}, + "presencesToggle": "Mostra mensaxes de estado de outras usuarias", + "@presencesToggle": { + "type": "String", + "placeholders": {} + }, + "incomingMessages": "Mensaxes recibidas", + "@incomingMessages": {}, + "stickers": "Adhesivos", + "@stickers": {}, + "discover": "Descubrir", + "@discover": {}, + "commandHint_ignore": "Ignorar o ID matrix indicado", + "@commandHint_ignore": {}, + "commandHint_unignore": "Non ignorar o ID matrix indicado", + "@commandHint_unignore": {}, + "unreadChatsInApp": "{appname}: {unread} charlas sen ler", + "@unreadChatsInApp": { + "type": "String", + "placeholders": { + "appname": { + "type": "String" + }, + "unread": { + "type": "String" + } + } + }, + "noDatabaseEncryption": "Nesta plataforma non temos soporte para cifrar a base de datos", + "@noDatabaseEncryption": {}, + "accessAndVisibility": "Acceso e Visibilidade", + "@accessAndVisibility": {}, + "accessAndVisibilityDescription": "Quen pode unirse a esta charla e de que xeito e como poden atopala.", + "@accessAndVisibilityDescription": {}, + "customEmojisAndStickers": "Emojis personais e adhesivos", + "@customEmojisAndStickers": {}, + "calls": "Chamadas", + "@calls": {}, + "hideRedactedMessages": "Agochar mensaxes editadas", + "@hideRedactedMessages": {}, + "hideRedactedMessagesBody": "Se alguén corrixe unha mensaxe entón esta xa non será visible na charla.", + "@hideRedactedMessagesBody": {}, + "hideInvalidOrUnknownMessageFormats": "Agochar formatos de mensaxe non válidos ou descoñecidos", + "@hideInvalidOrUnknownMessageFormats": {}, + "hideMemberChangesInPublicChats": "Agochar cambios dos membros nas charlas públicas", + "@hideMemberChangesInPublicChats": {}, + "notifyMeFor": "Notificarme sobre", + "@notifyMeFor": {}, + "hideMemberChangesInPublicChatsBody": "Non mostrar na cronoloxía se alguén se une ou deixa unha conversa pública, para mellorar a lexibilidade.", + "@hideMemberChangesInPublicChatsBody": {}, + "usersMustKnock": "As usuarias teñen que pedir entrar", + "@usersMustKnock": {}, + "userWouldLikeToChangeTheChat": "{user} quere unirse á charla.", + "@userWouldLikeToChangeTheChat": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "knocking": "A solicitar", + "@knocking": {}, + "chatCanBeDiscoveredViaSearchOnServer": "A charla pode ser atopada ao buscar en {server}", + "@chatCanBeDiscoveredViaSearchOnServer": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "createNewAddress": "Crear novos enderezos", + "@createNewAddress": {}, + "appLockDescription": "Bloquear a app cun código PIN cando non a uses", + "@appLockDescription": {}, + "globalChatId": "ID Global da charla", + "@globalChatId": {}, + "customEmojisAndStickersBody": "Engade ou comparte emojis personais e adhesivos que poden usarse nas charlas.", + "@customEmojisAndStickersBody": {}, + "overview": "Vista xeral", + "@overview": {}, + "passwordRecoverySettings": "Axustes de recuperación do contrasinal", + "@passwordRecoverySettings": {}, + "noPublicLinkHasBeenCreatedYet": "Aínda non se creou unha ligazón pública", + "@noPublicLinkHasBeenCreatedYet": {}, + "knock": "Solicitar acceso", + "@knock": {}, + "noOneCanJoin": "Ninguén pode unirse", + "@noOneCanJoin": {}, + "thereAreCountUsersBlocked": "Agora mesmo hai {count} usuarias bloqueadas.", + "@thereAreCountUsersBlocked": { + "type": "String", + "count": {} + }, + "publicChatAddresses": "Enderezos públicos da charla", + "@publicChatAddresses": {}, + "userRole": "Rol da usuaria", + "@userRole": {}, + "minimumPowerLevel": "{level} é o nivel mínimo de responsabilidade.", + "@minimumPowerLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "String" + } + } + }, + "searchIn": "Buscar na conversa \"{chat}\"...", + "@searchIn": { + "type": "String", + "placeholders": { + "chat": { + "type": "String" + } + } + }, + "searchMore": "Buscar máis...", + "@searchMore": {}, + "gallery": "Galería", + "@gallery": {}, + "files": "Ficheiros", + "@files": {}, + "knockRestricted": "Peta á porta", + "@knockRestricted": {}, + "restricted": "Non accesible", + "@restricted": {}, + "swipeRightToLeftToReply": "Despraza hacia a esquerda para responder", + "@swipeRightToLeftToReply": {}, + "alwaysUse24HourFormat": "falso", + "@alwaysUse24HourFormat": { + "description": "Set to true to always display time of day in 24 hour format." + }, + "noMoreChatsFound": "Non se atopan máis charlas…", + "@noMoreChatsFound": {}, + "joinedChats": "Charlas nas que participas", + "@joinedChats": {}, + "countChatsAndCountParticipants": "{chats} charlas e {participants} participantes", + "@countChatsAndCountParticipants": { + "type": "String", + "placeholders": { + "chats": { + "type": "int" + }, + "participants": { + "type": "int" + } + } + }, + "unread": "Sen ler", + "@unread": {}, + "space": "Espazo", + "@space": {}, + "spaces": "Espazos", + "@spaces": {}, + "goToSpace": "Ir ao espazo: {space}", + "@goToSpace": { + "type": "String", + "space": {} + }, + "markAsUnread": "Marcar como non lido", + "@markAsUnread": {}, + "userLevel": "{level} - Usuaria", + "@userLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "moderatorLevel": "{level} - Moderadora", + "@moderatorLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "adminLevel": "{level} - Administradora", + "@adminLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "changeGeneralChatSettings": "Cambiar os axustes xerais da charla", + "@changeGeneralChatSettings": {}, + "inviteOtherUsers": "Convidar a outras usuarias a esta charla", + "@inviteOtherUsers": {}, + "changeTheChatPermissions": "Cambiar os permisos na charla", + "@changeTheChatPermissions": {}, + "changeTheVisibilityOfChatHistory": "Cambiar a visibilidade do historial da charla", + "@changeTheVisibilityOfChatHistory": {}, + "changeTheCanonicalRoomAlias": "Cambiar o enderezo público principal da charla", + "@changeTheCanonicalRoomAlias": {}, + "sendRoomNotifications": "Enviar notificacións a @room", + "@sendRoomNotifications": {}, + "changeTheDescriptionOfTheGroup": "Cambiar a descrición da charla", + "@changeTheDescriptionOfTheGroup": {}, + "invitedBy": "📩 Convidada por {user}", + "@invitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "changelog": "Novidades na versión", + "@changelog": {}, + "chatPermissionsDescription": "Define que nivel de permisos son necesarios para realizar certas accións nesta charla. Os niveis de permiso 0, 50 e 100 normalmente representan, usuarias, moderadoras e administradoras, pero son posibles outras escalas.", + "@chatPermissionsDescription": {}, + "updateInstalled": "🎉 Instalouse a actualización a {version}!", + "@updateInstalled": { + "type": "String", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "sendCanceled": "Cancelouse o envío", + "@sendCanceled": {}, + "noChatsFoundHere": "Sen charlas por aquí. Comeza unha nova conversa con alguén premendo no botón de abaixo. ⤵️", + "@noChatsFoundHere": {}, + "discoverHomeservers": "Atopar servidores", + "@discoverHomeservers": {}, + "whatIsAHomeserver": "Que é un servidor de inicio?", + "@whatIsAHomeserver": {}, + "loginWithMatrixId": "Acceder co ID-Matrix", + "@loginWithMatrixId": {}, + "homeserverDescription": "Todos os teus datos quedan gardados no servidor de inicio, igual que co teu provedor de correo electrónico. Podes elexir o servidor que queres usar e poderás comunicarte con todos os demais. Aprende máis en https://matrix.org.", + "@homeserverDescription": {}, + "doesNotSeemToBeAValidHomeserver": "Non semella ser un servidor de inicio compatible. É o URL correcto?", + "@doesNotSeemToBeAValidHomeserver": {}, + "calculatingFileSize": "Calculando o tamaño do ficheiro…", + "@calculatingFileSize": {}, + "prepareSendingAttachment": "Preparando o envío…", + "@prepareSendingAttachment": {}, + "sendingAttachment": "Enviando o anexo…", + "@sendingAttachment": {}, + "generatingVideoThumbnail": "Creando miniatura do vídeo…", + "@generatingVideoThumbnail": {}, + "compressVideo": "Comprimindo o vídeo…", + "@compressVideo": {}, + "serverLimitReached": "Acadouse o límite do servidor! Agarda {seconds} segundos…", + "@serverLimitReached": { + "type": "integer", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "sendingAttachmentCountOfCount": "Enviando o anexo {index} de {length}…", + "@sendingAttachmentCountOfCount": { + "type": "integer", + "placeholders": { + "index": { + "type": "int" + }, + "length": { + "type": "int" + } + } + }, + "oneOfYourDevicesIsNotVerified": "Un dos teus dispositivos non está verificado", + "@oneOfYourDevicesIsNotVerified": {}, + "noticeChatBackupDeviceVerification": "Nota: Cando conectas todos os teus dispositivos á copia de apoio da conversa quedan verificados automaticamente.", + "@noticeChatBackupDeviceVerification": {}, + "blur": "Néboa:", + "@blur": {}, + "opacity": "Opacidade:", + "@opacity": {}, + "contactServerSecurity": "Contacto con Seguridade do servidor", + "@contactServerSecurity": {}, + "aboutHomeserver": "Sobre {homeserver}", + "@aboutHomeserver": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "welcomeText": "Ola! 👋 Isto é FluffyChat. Podes iniciar sesión en calquera servidor compatible con https://matrix.org. Poderás conversar con calquera. Unha enorme rede de mensaxería descentralizada!", + "@welcomeText": {}, + "setWallpaper": "Establecer fondo", + "@setWallpaper": {}, + "manageAccount": "Xestionar conta", + "@manageAccount": {}, + "noContactInformationProvided": "O servidor non proporciona información de contacto válida", + "@noContactInformationProvided": {}, + "contactServerAdmin": "Contacto con Admin do servidor", + "@contactServerAdmin": {}, + "supportPage": "Páxina de axuda", + "@supportPage": {}, + "serverInformation": "Información do servidor:", + "@serverInformation": {}, + "name": "Nome", + "@name": {}, + "version": "Versión", + "@version": {}, + "website": "Páxina web", + "@website": {}, + "continueText": "Continuar", + "@continueText": {}, + "italicText": "Cursiva", + "@italicText": {}, + "strikeThrough": "Riscar", + "@strikeThrough": {}, + "pleaseFillOut": "Por favor completa", + "@pleaseFillOut": {}, + "invalidUrl": "URL non válido", + "@invalidUrl": {}, + "boldText": "Resaltar texto", + "@boldText": {}, + "addLink": "Engadir ligazón", + "@addLink": {}, + "unableToJoinChat": "Non se puido acceder. Pode que a outra parte xa pechase a conversa.", + "@unableToJoinChat": {}, + "sendImages": "Enviar {count} imaxe", + "@sendImages": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "compress": "Comprimir", + "@compress": {}, + "previous": "Anterior", + "@previous": {}, + "otherPartyNotLoggedIn": "A outra parte non está conectada neste momento e pode que non reciba as mensaxes!", + "@otherPartyNotLoggedIn": {}, + "open": "Abrir", + "@open": {}, + "appWantsToUseForLogin": "Usar '{server}' para acceder", + "@appWantsToUseForLogin": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "contentNotificationSettings": "Axustes de notificación de contido", + "@contentNotificationSettings": {}, + "generalNotificationSettings": "Axustes xerais das notificacións", + "@generalNotificationSettings": {}, + "roomNotificationSettings": "Axustes de notificacións da sala", + "@roomNotificationSettings": {}, + "userSpecificNotificationSettings": "Axustes de notificación específicos da usuaria", + "@userSpecificNotificationSettings": {}, + "otherNotificationSettings": "Outros axustes das notificacións", + "@otherNotificationSettings": {}, + "notificationRuleContainsUserName": "Contén nome de usuaria", + "@notificationRuleContainsUserName": {}, + "notificationRuleContainsUserNameDescription": "Informa á usuaria cando unha mensaxe contén o seu identificador.", + "@notificationRuleContainsUserNameDescription": {}, + "notificationRuleMaster": "Acalar todas as notificacións", + "@notificationRuleMaster": {}, + "notificationRuleSuppressNotices": "Suprimir mensaxes automatizadas", + "@notificationRuleSuppressNotices": {}, + "notificationRuleSuppressNoticesDescription": "Suprime as notificacións desde clientes automatizados como os robots.", + "@notificationRuleSuppressNoticesDescription": {}, + "notificationRuleInviteForMe": "Teño un convite", + "@notificationRuleInviteForMe": {}, + "notificationRuleInviteForMeDescription": "Informa á usuaria de que recibeu o convite para unha sala.", + "@notificationRuleInviteForMeDescription": {}, + "notificationRuleMemberEvent": "Eventos dos participantes", + "@notificationRuleMemberEvent": {}, + "notificationRuleIsUserMention": "Mención da usuaria", + "@notificationRuleIsUserMention": {}, + "notificationRuleIsUserMentionDescription": "Informa cando se menciona explícitamente a usuaria nunha mensaxe.", + "@notificationRuleIsUserMentionDescription": {}, + "notificationRuleContainsDisplayName": "Contén o nome público", + "@notificationRuleContainsDisplayName": {}, + "notificationRuleContainsDisplayNameDescription": "Informa á usuaria cando unha mensaxe contén o seu nome público.", + "@notificationRuleContainsDisplayNameDescription": {}, + "notificationRuleIsRoomMention": "Mención da sala", + "@notificationRuleIsRoomMention": {}, + "notificationRuleIsRoomMentionDescription": "Informa á usuaria cando hai unha mención da sala.", + "@notificationRuleIsRoomMentionDescription": {}, + "notificationRuleRoomnotif": "Notificación da sala", + "@notificationRuleRoomnotif": {}, + "notificationRuleRoomnotifDescription": "Informa á usuaria cando unha mensaxe contén '@room'.", + "@notificationRuleRoomnotifDescription": {}, + "notificationRuleTombstone": "Lápida", + "@notificationRuleTombstone": {}, + "notificationRuleTombstoneDescription": "Informa á usuaria sobre a desactivación de mensaxes na sala.", + "@notificationRuleTombstoneDescription": {}, + "notificationRuleReaction": "Reacción", + "@notificationRuleReaction": {}, + "notificationRuleReactionDescription": "Omite as notificacións sobre reaccións.", + "@notificationRuleReactionDescription": {}, + "notificationRuleRoomServerAcl": "ACL da servidor da sala", + "@notificationRuleRoomServerAcl": {}, + "notificationRuleRoomServerAclDescription": "Omite notificacións para as listas de control de acceso (ACL) do servidor da sala.", + "@notificationRuleRoomServerAclDescription": {}, + "notificationRuleSuppressEdits": "Omite edicións", + "@notificationRuleSuppressEdits": {}, + "notificationRuleSuppressEditsDescription": "Omite as notificacións sobre mensaxes editadas.", + "@notificationRuleSuppressEditsDescription": {}, + "notificationRuleCall": "Chamada", + "@notificationRuleCall": {}, + "notificationRuleCallDescription": "Informa á usuaria sobre as chamadas.", + "@notificationRuleCallDescription": {}, + "notificationRuleEncryptedRoomOneToOne": "Sala cifrada conversa persoal", + "@notificationRuleEncryptedRoomOneToOne": {}, + "notificationRuleEncryptedRoomOneToOneDescription": "Informa á usuaria sobre mensaxes cifradas en salas de conversa persoal.", + "@notificationRuleEncryptedRoomOneToOneDescription": {}, + "notificationRuleRoomOneToOne": "Sala de conversa persoal", + "@notificationRuleRoomOneToOne": {}, + "notificationRuleRoomOneToOneDescription": "Informa á usuaria sobre mensaxes en salas de conversa persoal.", + "@notificationRuleRoomOneToOneDescription": {}, + "notificationRuleMessage": "Mensaxe", + "@notificationRuleMessage": {}, + "notificationRuleMessageDescription": "Informa á usuaria sobre mensaxes xenéricas.", + "@notificationRuleMessageDescription": {}, + "notificationRuleEncrypted": "Salas cifradas", + "@notificationRuleEncrypted": {}, + "notificationRuleEncryptedDescription": "Informa á usuaria sobre mensaxes en salas cifradas.", + "@notificationRuleEncryptedDescription": {}, + "notificationRuleJitsiDescription": "Informa á usuaria sobre eventos do widget Jitsi.", + "@notificationRuleJitsiDescription": {}, + "notificationRuleServerAcl": "Omite eventos do sevidor ACL", + "@notificationRuleServerAcl": {}, + "notificationRuleJitsi": "Jitsi", + "@notificationRuleJitsi": {}, + "notificationRuleServerAclDescription": "Omite notificación sobre eventos do servidor ACL.", + "@notificationRuleServerAclDescription": {}, + "unknownPushRule": "Regra push descoñecida '{rule}'", + "@unknownPushRule": { + "type": "String", + "placeholders": { + "rule": { + "type": "String" + } + } + }, + "deletePushRuleCanNotBeUndone": "Se omites este axuste de notificacións non poderás desfacer a acción.", + "@deletePushRuleCanNotBeUndone": {}, + "more": "Máis", + "@more": {}, + "newChatRequest": "📩 Nova solicitude de conversa", + "@newChatRequest": {}, + "shareKeysWith": "Compartir chaves con…", + "@shareKeysWith": {}, + "shareKeysWithDescription": "En que dispositivos se pode confiar e poden ler as túas conversas cifradas?", + "@shareKeysWithDescription": {}, + "allDevices": "Todos os dispositivos", + "@allDevices": {}, + "crossVerifiedDevicesIfEnabled": "Dispositivos verificados se está activado", + "@crossVerifiedDevicesIfEnabled": {}, + "crossVerifiedDevices": "Dispositivos verificados", + "@crossVerifiedDevices": {}, + "verifiedDevicesOnly": "Só dispositivos verificados", + "@verifiedDevicesOnly": {}, + "waitingForServer": "Agardando polo servidor…", + "@waitingForServer": {}, + "appIntroduction": "FluffyChat permíteche laretar coas túas amizades entre diferentes mensaxerías. Coñece máis en https://matrix.org ou toca en *Continuar*.", + "@appIntroduction": {}, + "notificationRuleMasterDescription": "Sobrescribe todas as outras regras e desactiva todas as notificacións.", + "@notificationRuleMasterDescription": {}, + "appWantsToUseForLoginDescription": "Por tanto permites que a app e o sitio web compartan información sobre ti.", + "@appWantsToUseForLoginDescription": {}, + "notificationRuleMemberEventDescription": "Suprime as notificacións dos eventos de participación.", + "@notificationRuleMemberEventDescription": {}, + "synchronizingPleaseWaitCounter": " Sincronizando…({percentage}%)", + "@synchronizingPleaseWaitCounter": { + "type": "String", + "placeholders": { + "percentage": { + "type": "String" + } + } + }, + "optionalMessage": "(Optativo) mensaxe…", + "@optionalMessage": {}, + "notSupportedOnThisDevice": "Non compatible co dispositivo", + "@notSupportedOnThisDevice": {}, + "takeAPhoto": "Facer foto", + "@takeAPhoto": {}, + "recordAVideo": "Gravar vídeo", + "@recordAVideo": {}, + "enterNewChat": "Entrar na nova conversa", + "@enterNewChat": {}, + "commandHint_roomupgrade": "Actualizar esta sala á versión de sala indicada", + "@commandHint_roomupgrade": {}, + "setCustomPermissionLevel": "Establecer nivel personalizado dos permisos", + "@setCustomPermissionLevel": {}, + "setPermissionsLevelDescription": "Elixe un rol predefinido dos indicados ou escribe un nivel personalizado entre 0 e 100.", + "@setPermissionsLevelDescription": {}, + "ignoreUser": "Ignorar usuaria", + "@ignoreUser": {}, + "normalUser": "Usuaria corrente", + "@normalUser": {}, + "approve": "Aprobar", + "@approve": {}, + "pleaseWaitUntilInvited": "Agora agarda a que alguén da sala te convide a entrar.", + "@pleaseWaitUntilInvited": {}, + "youHaveKnocked": "Petaches á porta", + "@youHaveKnocked": {}, + "sentVoiceMessage": "🎙️ {duration} - Mensaxe de voz de {sender}", + "@sentVoiceMessage": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "duration": { + "type": "String" + } + } + }, + "countInvited": "{count} convidadas", + "@countInvited": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "commandHint_logoutall": "Fechar a sesión en todos os dispositivos activos", + "@commandHint_logoutall": {}, + "commandHint_logout": "Fechar a sesión no dispositivo actual", + "@commandHint_logout": {}, + "moreEvents": "Máis eventos", + "@moreEvents": {}, + "customReaction": "Reacción personalizada", + "@customReaction": {}, + "declineInvitation": "Rexeitar o convite", + "@declineInvitation": {}, + "noMessagesYet": "Aínda non hai mensaxes", + "@noMessagesYet": {}, + "checkList": "Comprobar lista", + "@checkList": {}, + "displayNavigationRail": "Mostrar carril de navegación nos móbiles", + "@displayNavigationRail": {}, + "longPressToRecordVoiceMessage": "Pulsación longa para gravar mensaxe de voz.", + "@longPressToRecordVoiceMessage": {}, + "pause": "Deter", + "@pause": {}, + "resume": "Continuar", + "@resume": {}, + "newSubSpace": "Novo sub espazo", + "@newSubSpace": {}, + "moveToDifferentSpace": "Mover a outro espazo", + "@moveToDifferentSpace": {}, + "moveUp": "Mover arriba", + "@moveUp": {}, + "moveDown": "Mover abaixo", + "@moveDown": {}, + "removeFromSpaceDescription": "Vaise quitar a conversa do espazo pero seguirá aparecendo na túa lista de conversas.", + "@removeFromSpaceDescription": {}, + "countChats": "{chats} conversas", + "@countChats": { + "type": "String", + "placeholders": { + "chats": { + "type": "int" + } + } + }, + "donate": "Doar", + "@donate": {}, + "spaceMemberOf": "Participa no espazo {spaces}", + "@spaceMemberOf": { + "type": "String", + "placeholders": { + "spaces": { + "type": "String" + } + } + }, + "spaceMemberOfCanKnock": "Os membros de {spaces} poden petar á porta", + "@spaceMemberOfCanKnock": { + "type": "String", + "placeholders": { + "spaces": { + "type": "String" + } + } + }, + "startedAPoll": "{username} publicou unha enquisa.", + "@startedAPoll": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "poll": "Enquisa", + "@poll": {}, + "startPoll": "Publicar enquisa", + "@startPoll": {}, + "endPoll": "Finalizar enquisa", + "@endPoll": {}, + "answersVisible": "Resultados visibles", + "@answersVisible": {}, + "answersHidden": "Non se ven os resultados", + "@answersHidden": {}, + "pollQuestion": "Pregunta da enquisa", + "@pollQuestion": {}, + "answerOption": "Opción de resposta", + "@answerOption": {}, + "addAnswerOption": "Engadir opción", + "@addAnswerOption": {}, + "allowMultipleAnswers": "Permitir varias respostas", + "@allowMultipleAnswers": {}, + "pollHasBeenEnded": "Rematou a enquisa", + "@pollHasBeenEnded": {}, + "countVotes": "{count, plural, =1{Un voto} other{{count} votos}}", + "@countVotes": { + "type": "int", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "answersWillBeVisibleWhenPollHasEnded": "As respostas son visibles ao finalizar a enquisa", + "@answersWillBeVisibleWhenPollHasEnded": {}, + "replyInThread": "Responder ao fío", + "@replyInThread": {}, + "countReplies": "{count, plural, =1{Unha resposta} other{{count} respostas}}", + "@countReplies": { + "type": "int", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "thread": "Fío", + "@thread": {}, + "backToMainChat": "Volver á conversa principal", + "@backToMainChat": {} +} diff --git a/lib/l10n/intl_he.arb b/lib/l10n/intl_he.arb new file mode 100644 index 0000000..28f27b1 --- /dev/null +++ b/lib/l10n/intl_he.arb @@ -0,0 +1,1435 @@ +{ + "@@last_modified": "2021-08-14 12:41:10.036931", + "about": "אודות", + "@about": { + "type": "String", + "placeholders": {} + }, + "accept": "קבל", + "@accept": { + "type": "String", + "placeholders": {} + }, + "acceptedTheInvitation": "{username} קיבל את ההזמנה", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "account": "חשבון", + "@account": { + "type": "String", + "placeholders": {} + }, + "activatedEndToEndEncryption": "{username} הפעיל הצפנה מקצה לקצה", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "admin": "מנהל", + "@admin": { + "type": "String", + "placeholders": {} + }, + "alias": "כינוי", + "@alias": { + "type": "String", + "placeholders": {} + }, + "answeredTheCall": "{senderName} ענה לשיחה", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "anyoneCanJoin": "כל אחד יכול להצטרף", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "archive": "ארכיון", + "@archive": { + "type": "String", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "האם משתמשים אורחים מורשים להצטרף", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "האם אתה בטוח?", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "askSSSSSign": "כדי שתוכל לחתום על משתמש אחר , הזן את הסיסמה שלך או את מפתח השחזור.", + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "askVerificationRequest": "לקבל בקשת אימות זו מ- {username}?", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changePassword": "שנה סיסמא", + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "appLock": "נעילת אפליקציה", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "cancel": "ביטול", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "addEmail": "הוסף מייל", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "all": "הכל", + "@all": { + "type": "String", + "placeholders": {} + }, + "allChats": "כל הצ'אטים", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "banned": "חסום", + "@banned": { + "type": "String", + "placeholders": {} + }, + "sendOnEnter": "שלח בכניסה", + "@sendOnEnter": {}, + "badServerLoginTypesException": "שרת הבית תומך בסוגי הכניסה:\n{serverVersions}\nאבל אפליקציה זו תומכת רק ב:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "changedTheGuestAccessRulesTo": "{username} שינה את כללי הגישה לאורחים ל: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheJoinRules": "{username} שינה את כללי ההצטרפות", + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheChatNameTo": "{username} שינה את שם הצ'אט ל: '{chatname}'", + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "changedTheRoomInvitationLink": "{username} שינה את קישור ההזמנה", + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "repeatPassword": "כתוב שוב את הסיסמה", + "@repeatPassword": {}, + "areYouSureYouWantToLogout": "האם אתה בטוח שברצונך לצאת?", + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "chat": "צ׳אט", + "@chat": { + "type": "String", + "placeholders": {} + }, + "autoplayImages": "הפעל אוטומטית מדבקות ואנימציות מונפשים", + "@autoplayImages": { + "type": "String", + "placeholder": {} + }, + "badServerVersionsException": "שרת הבית תומך בגרסאות:\n{serverVersions}\nאבל האפליקציה הזו תומכת רק ב-{supportedVersions}", + "@badServerVersionsException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "banFromChat": "צאט חסום", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "bannedUser": "{username} חסם את {targetName}", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "blockDevice": "חסום מכשיר", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "blocked": "חסום", + "@blocked": { + "type": "String", + "placeholders": {} + }, + "botMessages": "הודעות בוט", + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "cantOpenUri": "לא ניתן לפתוח את ה-URI {uri}", + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "changeDeviceName": "שנה את שם המכשיר", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "changedTheChatAvatar": "{username} שינה את האווטאר של הצ'אט", + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheChatDescriptionTo": "{username} שינה את תיאור הצ'אט ל: '{description}'", + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "changedTheChatPermissions": "{username} שינה את הרשאות הצ'אט", + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheDisplaynameTo": "{username} שינה את שם התצוגה שלו ל: '{displayname}'", + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "changedTheGuestAccessRules": "{username} שינה את כללי הגישה לאורחים", + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheHistoryVisibility": "{username} שינה את נראות ההיסטוריה", + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheHistoryVisibilityTo": "{username} שינה את נראות ההיסטוריה ל: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheJoinRulesTo": "{username} שינה את כללי ההצטרפות ל: {joinRules}", + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "changedTheProfileAvatar": "{username} שינה את האווטאר שלו", + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomAliases": "{username} שינה את כינוי החדר", + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changeTheHomeserver": "שנה את שרת הבית", + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "changeTheme": "שנה את הסגנון שלך", + "@changeTheme": { + "type": "String", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "שנה את שם הקבוצה", + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "changeYourAvatar": "שינוי האווטאר שלך", + "@changeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "channelCorruptedDecryptError": "ההצפנה נפגמה", + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "yourChatBackupHasBeenSetUp": "גיבוי הצ'אט שלך הוגדר.", + "@yourChatBackupHasBeenSetUp": {}, + "chatBackup": "גיבוי צ'אט", + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "commandHint_ban": "חסום את המשתמש הנתון מהחדר הזה", + "@commandHint_ban": { + "type": "String", + "description": "Usage hint for the command /ban" + }, + "commandHint_clearcache": "נקה מטמון", + "@commandHint_clearcache": { + "type": "String", + "description": "Usage hint for the command /clearcache" + }, + "commandHint_create": "צור צ'אט קבוצתי ריק\nהשתמש ב--no-encryption כדי להשבית את ההצפנה", + "@commandHint_create": { + "type": "String", + "description": "Usage hint for the command /create" + }, + "commandHint_discardsession": "התעלם מהסשן", + "@commandHint_discardsession": { + "type": "String", + "description": "Usage hint for the command /discardsession" + }, + "commandHint_dm": "התחל צ'אט ישיר\nהשתמש ב--no-encryption כדי להשבית את ההצפנה", + "@commandHint_dm": { + "type": "String", + "description": "Usage hint for the command /dm" + }, + "commandHint_html": "שלח טקסט בתבנית HTML", + "@commandHint_html": { + "type": "String", + "description": "Usage hint for the command /html" + }, + "commandHint_invite": "הזמן את המשתמש הנתון לחדר זה", + "@commandHint_invite": { + "type": "String", + "description": "Usage hint for the command /invite" + }, + "commandHint_join": "הצטרף לחדר הנתון", + "@commandHint_join": { + "type": "String", + "description": "Usage hint for the command /join" + }, + "commandHint_kick": "הסר את המשתמש הנתון מהחדר הזה", + "@commandHint_kick": { + "type": "String", + "description": "Usage hint for the command /kick" + }, + "commandHint_leave": "עזוב את החדר הזה", + "@commandHint_leave": { + "type": "String", + "description": "Usage hint for the command /leave" + }, + "commandHint_me": "תאר את עצמך", + "@commandHint_me": { + "type": "String", + "description": "Usage hint for the command /me" + }, + "chatDetails": "פרטי צ'אט", + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "chatBackupDescription": "גיבוי הצ'אט שלך מאובטח באמצעות מפתח אבטחה. אנא וודא שאתה לא מאבד אותו.", + "@chatBackupDescription": { + "type": "String", + "placeholders": {} + }, + "chatHasBeenAddedToThisSpace": "צ'אט נוסף למרחב הזה", + "@chatHasBeenAddedToThisSpace": {}, + "chats": "צ'אטים", + "@chats": { + "type": "String", + "placeholders": {} + }, + "chooseAStrongPassword": "בחר סיסמה חזקה", + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "clearArchive": "נקה ארכיון", + "@clearArchive": {}, + "close": "סגור", + "@close": { + "type": "String", + "placeholders": {} + }, + "commandHint_myroomavatar": "הגדר את התמונה שלך לחדר זה (על ידי mxc-uri)", + "@commandHint_myroomavatar": { + "type": "String", + "description": "Usage hint for the command /myroomavatar" + }, + "commandHint_myroomnick": "הגדר את שם התצוגה שלך עבור חדר זה", + "@commandHint_myroomnick": { + "type": "String", + "description": "Usage hint for the command /myroomnick" + }, + "addToSpace": "הוסף לחלל", + "@addToSpace": {}, + "commandHint_unban": "בטל את החסימה של המשתמש הנתון מהחדר הזה", + "@commandHint_unban": { + "type": "String", + "description": "Usage hint for the command /unban" + }, + "countParticipants": "{count} משתתפים", + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "create": "צור", + "@create": { + "type": "String", + "placeholders": {} + }, + "createdTheChat": "{username} יצר את הצ'אט", + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "currentlyActive": "פעיל כעת", + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "darkTheme": "כהה", + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "dateWithoutYear": "{month}-{day}", + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "defaultPermissionLevel": "רמת הרשאת ברירת מחדל", + "@defaultPermissionLevel": { + "type": "String", + "placeholders": {} + }, + "deleteAccount": "מחק חשבון", + "@deleteAccount": { + "type": "String", + "placeholders": {} + }, + "deleteMessage": "מחק הודעה", + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "deviceId": "מזהה מכשיר", + "@deviceId": { + "type": "String", + "placeholders": {} + }, + "devices": "התקנים", + "@devices": { + "type": "String", + "placeholders": {} + }, + "directChats": "צ'אטים ישירים", + "@directChats": { + "type": "String", + "placeholders": {} + }, + "downloadFile": "הורד קובץ", + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "edit": "ערוך", + "@edit": { + "type": "String", + "placeholders": {} + }, + "editDisplayname": "ערוך את שם התצוגה", + "@editDisplayname": { + "type": "String", + "placeholders": {} + }, + "editRoomAliases": "ערוך כינויים לחדר", + "@editRoomAliases": { + "type": "String", + "placeholders": {} + }, + "emoteExists": "אימוט כבר קיים!", + "@emoteExists": { + "type": "String", + "placeholders": {} + }, + "emptyChat": "צ'אט ריק", + "@emptyChat": { + "type": "String", + "placeholders": {} + }, + "encrypted": "מוצפן", + "@encrypted": { + "type": "String", + "placeholders": {} + }, + "enterAnEmailAddress": "הזן כתובת דואר אלקטרוני", + "@enterAnEmailAddress": { + "type": "String", + "placeholders": {} + }, + "enterYourHomeserver": "הזן את שרת הבית שלך", + "@enterYourHomeserver": { + "type": "String", + "placeholders": {} + }, + "everythingReady": "הכל מוכן!", + "@everythingReady": { + "type": "String", + "placeholders": {} + }, + "fileName": "שם קובץ", + "@fileName": { + "type": "String", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "String", + "placeholders": {} + }, + "fontSize": "גודל גופן", + "@fontSize": { + "type": "String", + "placeholders": {} + }, + "forward": "העבר", + "@forward": { + "type": "String", + "placeholders": {} + }, + "fromJoining": "מהצטרפות", + "@fromJoining": { + "type": "String", + "placeholders": {} + }, + "fromTheInvitation": "מההזמנה", + "@fromTheInvitation": { + "type": "String", + "placeholders": {} + }, + "goToTheNewRoom": "עבור לחדר החדש", + "@goToTheNewRoom": { + "type": "String", + "placeholders": {} + }, + "groupIsPublic": "הקבוצה ציבורית", + "@groupIsPublic": { + "type": "String", + "placeholders": {} + }, + "groupWith": "קבוצה עם {displayname}", + "@groupWith": { + "type": "String", + "placeholders": { + "displayname": { + "type": "String" + } + } + }, + "guestsAreForbidden": "אורחים אסורים", + "@guestsAreForbidden": { + "type": "String", + "placeholders": {} + }, + "guestsCanJoin": "אורחים יכולים להצטרף", + "@guestsCanJoin": { + "type": "String", + "placeholders": {} + }, + "id": "מזהה", + "@id": { + "type": "String", + "placeholders": {} + }, + "identity": "זהות", + "@identity": { + "type": "String", + "placeholders": {} + }, + "ignoredUsers": "משתמשים שהתעלמו מהם", + "@ignoredUsers": { + "type": "String", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "ביטוי סיסמה או מפתח שחזור שגויים", + "@incorrectPassphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "inviteContact": "הזמן איש קשר", + "@inviteContact": { + "type": "String", + "placeholders": {} + }, + "invited": "הזמין", + "@invited": { + "type": "String", + "placeholders": {} + }, + "invitedUser": "{username} הזמין את {targetName}", + "@invitedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "invitedUsersOnly": "משתמשים מוזמנים בלבד", + "@invitedUsersOnly": { + "type": "String", + "placeholders": {} + }, + "inviteForMe": "הזמנה בשבילי", + "@inviteForMe": { + "type": "String", + "placeholders": {} + }, + "inviteText": "{username} הזמין אותך ל-FluffyChat.\n1. התקן את FluffyChat: https://fluffychat.im\n2. הירשם או היכנס\n3. פתח את קישור ההזמנה: {link}", + "@inviteText": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "link": { + "type": "String" + } + } + }, + "isTyping": "מקליד/ה…", + "@isTyping": { + "type": "String", + "placeholders": {} + }, + "joinedTheChat": "{username} הצטרף לצ'אט", + "@joinedTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "joinRoom": "הצטרף לחדר", + "@joinRoom": { + "type": "String", + "placeholders": {} + }, + "kicked": "{username} בעט ב {targetName}", + "@kicked": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickedAndBanned": "{username} בעט וחסם {targetName}", + "@kickedAndBanned": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickFromChat": "בעיטה מהצ'אט", + "@kickFromChat": { + "type": "String", + "placeholders": {} + }, + "lastActiveAgo": "פעילות אחרונה: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "String", + "placeholders": { + "localizedTimeShort": { + "type": "String" + } + } + }, + "leftTheChat": "עזב את הצ'אט", + "@leftTheChat": { + "type": "String", + "placeholders": {} + }, + "loadingPleaseWait": "טוען אנא המתן.", + "@loadingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "loadMore": "טען עוד…", + "@loadMore": { + "type": "String", + "placeholders": {} + }, + "locationDisabledNotice": "שירותי המיקום מושבתים. אנא הפעל אותם כדי לשתף את המיקום שלך.", + "@locationDisabledNotice": { + "type": "String", + "placeholders": {} + }, + "copy": "העתק", + "@copy": { + "type": "String", + "placeholders": {} + }, + "commandHint_send": "שלח טקסט", + "@commandHint_send": { + "type": "String", + "description": "Usage hint for the command /send" + }, + "commandHint_op": "הגדרת רמת צריכת החשמל של המשתמש הנתון (ברירת מחדל: 50)", + "@commandHint_op": { + "type": "String", + "description": "Usage hint for the command /op" + }, + "commandHint_plain": "שלח טקסט לא מעוצב", + "@commandHint_plain": { + "type": "String", + "description": "Usage hint for the command /plain" + }, + "commandHint_react": "שלח תשובה כתגובה", + "@commandHint_react": { + "type": "String", + "description": "Usage hint for the command /react" + }, + "containsUserName": "מכיל שם משתמש", + "@containsUserName": { + "type": "String", + "placeholders": {} + }, + "createNewSpace": "חלל חדש", + "@createNewSpace": { + "type": "String", + "placeholders": {} + }, + "enableEncryption": "אפשר הצפנה", + "@enableEncryption": { + "type": "String", + "placeholders": {} + }, + "inviteContactToGroup": "הזמן איש קשר אל {groupName}", + "@inviteContactToGroup": { + "type": "String", + "placeholders": { + "groupName": { + "type": "String" + } + } + }, + "dateWithYear": "{year}-{month}-{day}", + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "deactivateAccountWarning": "פעולה זו תשבית את חשבון המשתמש שלך. אי אפשר לבטל את זה! האם אתה בטוח?", + "@deactivateAccountWarning": { + "type": "String", + "placeholders": {} + }, + "device": "מכשיר", + "@device": { + "type": "String", + "placeholders": {} + }, + "group": "קבוצה", + "@group": { + "type": "String", + "placeholders": {} + }, + "displaynameHasBeenChanged": "שם התצוגה השתנה", + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "editBlockedServers": "ערוך שרתים חסומים", + "@editBlockedServers": { + "type": "String", + "placeholders": {} + }, + "editRoomAvatar": "עריכת אווטאר של חדר", + "@editRoomAvatar": { + "type": "String", + "placeholders": {} + }, + "endedTheCall": "{senderName} סיים את השיחה", + "@endedTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "groups": "קבוצות", + "@groups": { + "type": "String", + "placeholders": {} + }, + "enableEncryptionWarning": "לא תוכל לבטל את ההצפנה יותר. האם אתה בטוח?", + "@enableEncryptionWarning": { + "type": "String", + "placeholders": {} + }, + "encryption": "הצפנה", + "@encryption": { + "type": "String", + "placeholders": {} + }, + "errorObtainingLocation": "שגיאה בהשגת מיקום: {error}", + "@errorObtainingLocation": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "hasWithdrawnTheInvitationFor": "{username} ביטל את ההזמנה עבור {targetName}", + "@hasWithdrawnTheInvitationFor": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "hideRedactedEvents": "הסתר אירועים מצונזרים", + "@hideRedactedEvents": { + "type": "String", + "placeholders": {} + }, + "encryptionNotEnabled": "ההצפנה אינה מופעלת", + "@encryptionNotEnabled": { + "type": "String", + "placeholders": {} + }, + "extremeOffensive": "פוגעני ביותר", + "@extremeOffensive": { + "type": "String", + "placeholders": {} + }, + "hideUnknownEvents": "הסתר אירועים לא ידועים", + "@hideUnknownEvents": { + "type": "String", + "placeholders": {} + }, + "loadCountMoreParticipants": "טען {count} משתתפים נוספים", + "@loadCountMoreParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "homeserver": "שרת בית", + "@homeserver": {}, + "ignore": "התעלם", + "@ignore": { + "type": "String", + "placeholders": {} + }, + "iHaveClickedOnLink": "לחצתי על הקישור", + "@iHaveClickedOnLink": { + "type": "String", + "placeholders": {} + }, + "leave": "לעזוב", + "@leave": { + "type": "String", + "placeholders": {} + }, + "license": "רשיון", + "@license": { + "type": "String", + "placeholders": {} + }, + "lightTheme": "בהיר", + "@lightTheme": { + "type": "String", + "placeholders": {} + }, + "delete": "מחיקה", + "@delete": { + "type": "String", + "placeholders": {} + }, + "inoffensive": "לֹא פּוֹגֵעַ", + "@inoffensive": { + "type": "String", + "placeholders": {} + }, + "configureChat": "קביעת תצורה של צ'אט", + "@configureChat": { + "type": "String", + "placeholders": {} + }, + "confirm": "לאשר", + "@confirm": { + "type": "String", + "placeholders": {} + }, + "connect": "התחבר", + "@connect": { + "type": "String", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "איש הקשר הוזמן לקבוצה", + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "containsDisplayName": "מכיל שם תצוגה", + "@containsDisplayName": { + "type": "String", + "placeholders": {} + }, + "contentHasBeenReported": "התוכן דווח למנהלי השרת", + "@contentHasBeenReported": { + "type": "String", + "placeholders": {} + }, + "copiedToClipboard": "הועתק ללוח הגזירים", + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "commandInvalid": "הפקודה אינה חוקית", + "@commandInvalid": { + "type": "String" + }, + "commandMissing": "{command} אינו פקודה.", + "@commandMissing": { + "type": "String", + "placeholders": { + "command": { + "type": "String" + } + }, + "description": "State that {command} is not a valid /command." + }, + "compareEmojiMatch": "השווה וודא שהאימוג'י הבאים תואמים לאלו של המכשיר השני:", + "@compareEmojiMatch": { + "type": "String", + "placeholders": {} + }, + "compareNumbersMatch": "השווה וודא שהמספרים הבאים תואמים לאלה של המכשיר השני:", + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "copyToClipboard": "העתק ללוח", + "@copyToClipboard": { + "type": "String", + "placeholders": {} + }, + "couldNotDecryptMessage": "לא ניתן לפענח הודעה: {error}", + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "help": "עזרה", + "@help": { + "type": "String", + "placeholders": {} + }, + "howOffensiveIsThisContent": "עד כמה התוכן הזה פוגעני?", + "@howOffensiveIsThisContent": { + "type": "String", + "placeholders": {} + }, + "locationPermissionDeniedNotice": "הרשאת המיקום נדחתה. אנא אפשר את היכולת לשתף את מיקומך.", + "@locationPermissionDeniedNotice": { + "type": "String", + "placeholders": {} + }, + "login": "כניסה", + "@login": { + "type": "String", + "placeholders": {} + }, + "moderator": "מנחה", + "@moderator": { + "type": "String", + "placeholders": {} + }, + "needPantalaimonWarning": "שים לב שאתה צריך Pantalaimon כדי להשתמש בהצפנה מקצה לקצה לעת עתה.", + "@needPantalaimonWarning": { + "type": "String", + "placeholders": {} + }, + "newChat": "צ'אט חדש", + "@newChat": { + "type": "String", + "placeholders": {} + }, + "newVerificationRequest": "בקשת אימות חדשה!", + "@newVerificationRequest": { + "type": "String", + "placeholders": {} + }, + "next": "הבא", + "@next": { + "type": "String", + "placeholders": {} + }, + "no": "לא", + "@no": { + "type": "String", + "placeholders": {} + }, + "noConnectionToTheServer": "אין חיבור לשרת", + "@noConnectionToTheServer": { + "type": "String", + "placeholders": {} + }, + "noEncryptionForPublicRooms": "אתה יכול להפעיל הצפנה רק כשהחדר כבר לא נגיש לציבור.", + "@noEncryptionForPublicRooms": { + "type": "String", + "placeholders": {} + }, + "noRoomsFound": "לא נמצאו חדרים…", + "@noRoomsFound": { + "type": "String", + "placeholders": {} + }, + "notifications": "התראות", + "@notifications": { + "type": "String", + "placeholders": {} + }, + "numUsersTyping": "{count} משתמשים מקלידים…", + "@numUsersTyping": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "obtainingLocation": "משיג מיקום…", + "@obtainingLocation": { + "type": "String", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "גיבוי מפתח מקוון מופעל", + "@onlineKeyBackupEnabled": { + "type": "String", + "placeholders": {} + }, + "oopsPushError": "אופס! למרבה הצער, אירעה שגיאה בעת הגדרת התראות.", + "@oopsPushError": { + "type": "String", + "placeholders": {} + }, + "oopsSomethingWentWrong": "אופס, משהו השתבש…", + "@oopsSomethingWentWrong": { + "type": "String", + "placeholders": {} + }, + "openAppToReadMessages": "פתח את האפליקציה לקריאת הודעות", + "@openAppToReadMessages": { + "type": "String", + "placeholders": {} + }, + "oneClientLoggedOut": "אחד מהמכשירים שלך התנתק", + "@oneClientLoggedOut": {}, + "addAccount": "הוסף חשבון", + "@addAccount": {}, + "editBundlesForAccount": "ערוך חבילות עבור חשבון זה", + "@editBundlesForAccount": {}, + "participant": "משתתף", + "@participant": { + "type": "String", + "placeholders": {} + }, + "password": "סיסמה", + "@password": { + "type": "String", + "placeholders": {} + }, + "pleaseClickOnLink": "אנא לחץ על הקישור במייל ולאחר מכן המשך.", + "@pleaseClickOnLink": { + "type": "String", + "placeholders": {} + }, + "pleaseEnter4Digits": "אנא הזן 4 ספרות או השאר ריק כדי להשבית את נעילת האפליקציה.", + "@pleaseEnter4Digits": { + "type": "String", + "placeholders": {} + }, + "online": "מחובר/ת", + "@online": { + "type": "String", + "placeholders": {} + }, + "addToBundle": "הוסף לחבילה", + "@addToBundle": {}, + "passphraseOrKey": "ביטוי סיסמה או מפתח שחזור", + "@passphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "passwordForgotten": "שכחתי סיסמה", + "@passwordForgotten": { + "type": "String", + "placeholders": {} + }, + "passwordHasBeenChanged": "הסיסמה שונתה", + "@passwordHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "passwordRecovery": "שחזור סיסמה", + "@passwordRecovery": { + "type": "String", + "placeholders": {} + }, + "people": "אנשים", + "@people": { + "type": "String", + "placeholders": {} + }, + "pickImage": "בחר תמונה", + "@pickImage": { + "type": "String", + "placeholders": {} + }, + "play": "הפעל {fileName}", + "@play": { + "type": "String", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "pleaseChoose": "אנא בחר", + "@pleaseChoose": { + "type": "String", + "placeholders": {} + }, + "pleaseChooseAPasscode": "אנא בחר קוד גישה", + "@pleaseChooseAPasscode": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPassword": "נא הזן את הסיסמה שלך", + "@pleaseEnterYourPassword": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPin": "אנא הזן את קוד הpin שלך", + "@pleaseEnterYourPin": { + "type": "String", + "placeholders": {} + }, + "pin": "קוד pin", + "@pin": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourUsername": "אנא הזן שם משתמש", + "@pleaseEnterYourUsername": { + "type": "String", + "placeholders": {} + }, + "newMessageInFluffyChat": "הודעה חדשה ב-FluffyChat", + "@newMessageInFluffyChat": { + "type": "String", + "placeholders": {} + }, + "noGoogleServicesWarning": "נראה שאין לך שירותי גוגל בטלפון שלך. זו החלטה טובה לפרטיות שלך! כדי לקבל התרעות ב- FluffyChat אנו ממליצים להשתמש https://microg.org/ או https://unifiedpush.org/.", + "@noGoogleServicesWarning": { + "type": "String", + "placeholders": {} + }, + "noMatrixServer": "{server1} אינו שרת מטריקס, השתמש ב-{server2} במקום זאת?", + "@noMatrixServer": { + "type": "String", + "placeholders": { + "server1": { + "type": "String" + }, + "server2": { + "type": "String" + } + } + }, + "none": "ללא", + "@none": { + "type": "String", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "עדיין לא הוספת דרך לשחזר את הסיסמה שלך.", + "@noPasswordRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "offensive": "פוגעני", + "@offensive": { + "type": "String", + "placeholders": {} + }, + "notificationsEnabledForThisAccount": "התראות הופעלו עבור חשבון זה", + "@notificationsEnabledForThisAccount": { + "type": "String", + "placeholders": {} + }, + "bundleName": "שם החבילה", + "@bundleName": {}, + "offline": "לא מקוון", + "@offline": { + "type": "String", + "placeholders": {} + }, + "openVideoCamera": "פתח את המצלמה לסרטון", + "@openVideoCamera": { + "type": "String", + "placeholders": {} + }, + "removeFromBundle": "הסר מחבילה זו", + "@removeFromBundle": {}, + "enableMultiAccounts": "(בטא) אפשר ריבוי חשבונות במכשיר זה", + "@enableMultiAccounts": {}, + "openInMaps": "פתיחה במפות", + "@openInMaps": { + "type": "String", + "placeholders": {} + }, + "link": "קישור", + "@link": {}, + "serverRequiresEmail": "שרת זה צריך לאמת את כתובת הדואר האלקטרוני שלך לרישום.", + "@serverRequiresEmail": {}, + "logout": "יציאה", + "@logout": { + "type": "String", + "placeholders": {} + }, + "muteChat": "השתקת הצ'אט", + "@muteChat": { + "type": "String", + "placeholders": {} + }, + "scanQrCode": "סרוק קוד QR", + "@scanQrCode": {}, + "noPermission": "אין הרשאה", + "@noPermission": { + "type": "String", + "placeholders": {} + }, + "or": "או", + "@or": { + "type": "String", + "placeholders": {} + }, + "logInTo": "היכנס אל {homeserver}", + "@logInTo": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "memberChanges": "שינויים בחבר", + "@memberChanges": { + "type": "String", + "placeholders": {} + }, + "mention": "הזכיר", + "@mention": { + "type": "String", + "placeholders": {} + }, + "messages": "הודעות", + "@messages": { + "type": "String", + "placeholders": {} + }, + "openCamera": "פתח מצלמה", + "@openCamera": { + "type": "String", + "placeholders": {} + }, + "notAnImage": "הקובץ אינו תמונה.", + "@notAnImage": {}, + "alwaysUse24HourFormat": "", + "@alwaysUse24HourFormat": { + "description": "Set to true to always display time of day in 24 hour format." + } +} diff --git a/lib/l10n/intl_hi.arb b/lib/l10n/intl_hi.arb new file mode 100644 index 0000000..032a746 --- /dev/null +++ b/lib/l10n/intl_hi.arb @@ -0,0 +1,2109 @@ +{ + "@showPassword": { + "type": "String", + "placeholders": {} + }, + "@hugContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "@passphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "@pleaseEnterYourPassword": { + "type": "String", + "placeholders": {} + }, + "@theyMatch": { + "type": "String", + "placeholders": {} + }, + "@connect": { + "type": "String", + "placeholders": {} + }, + "@jumpToLastReadMessage": {}, + "@allRooms": { + "type": "String", + "placeholders": {} + }, + "@obtainingLocation": { + "type": "String", + "placeholders": {} + }, + "@commandHint_cuddle": {}, + "@chats": { + "type": "String", + "placeholders": {} + }, + "@widgetVideo": {}, + "@dismiss": {}, + "@unknownDevice": { + "type": "String", + "placeholders": {} + }, + "@emoteShortcode": { + "type": "String", + "placeholders": {} + }, + "@noEncryptionForPublicRooms": { + "type": "String", + "placeholders": {} + }, + "@admin": { + "type": "String", + "placeholders": {} + }, + "@reportErrorDescription": {}, + "@directChats": { + "type": "String", + "placeholders": {} + }, + "@setPermissionsLevel": { + "type": "String", + "placeholders": {} + }, + "@inviteContactToGroup": { + "type": "String", + "placeholders": { + "groupName": { + "type": "String" + } + } + }, + "@addAccount": {}, + "@close": { + "type": "String", + "placeholders": {} + }, + "@configureChat": { + "type": "String", + "placeholders": {} + }, + "@chatHasBeenAddedToThisSpace": {}, + "@reply": { + "type": "String", + "placeholders": {} + }, + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "@removeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "@unsupportedAndroidVersion": {}, + "@device": { + "type": "String", + "placeholders": {} + }, + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "@commandHint_html": { + "type": "String", + "description": "Usage hint for the command /html" + }, + "@widgetJitsi": {}, + "@youAreNoLongerParticipatingInThisChat": { + "type": "String", + "placeholders": {} + }, + "@encryption": { + "type": "String", + "placeholders": {} + }, + "@messageType": {}, + "@indexedDbErrorLong": {}, + "@oneClientLoggedOut": {}, + "@toggleMuted": { + "type": "String", + "placeholders": {} + }, + "@unsupportedAndroidVersionLong": {}, + "@kicked": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "@title": { + "description": "Title for the application", + "type": "String", + "placeholders": {} + }, + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@verifySuccess": { + "type": "String", + "placeholders": {} + }, + "@sendFile": { + "type": "String", + "placeholders": {} + }, + "@newVerificationRequest": { + "type": "String", + "placeholders": {} + }, + "@startFirstChat": {}, + "@callingAccount": {}, + "@requestPermission": { + "type": "String", + "placeholders": {} + }, + "@sentAPicture": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@invited": { + "type": "String", + "placeholders": {} + }, + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "@setColorTheme": {}, + "@nextAccount": {}, + "@commandHint_create": { + "type": "String", + "description": "Usage hint for the command /create" + }, + "@singlesignon": { + "type": "String", + "placeholders": {} + }, + "@warning": { + "type": "String", + "placeholders": {} + }, + "@password": { + "type": "String", + "placeholders": {} + }, + "@allSpaces": {}, + "@supposedMxid": { + "type": "String", + "placeholders": { + "mxid": { + "type": "String" + } + } + }, + "@editDisplayname": { + "type": "String", + "placeholders": {} + }, + "@user": {}, + "@roomVersion": { + "type": "String", + "placeholders": {} + }, + "@sentAFile": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@videoCall": { + "type": "String", + "placeholders": {} + }, + "@youAcceptedTheInvitation": {}, + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "@noMatrixServer": { + "type": "String", + "placeholders": { + "server1": { + "type": "String" + }, + "server2": { + "type": "String" + } + } + }, + "@userAndOthersAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "@youInvitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "@userIsTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@openAppToReadMessages": { + "type": "String", + "placeholders": {} + }, + "@sentAVideo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@banUserDescription": {}, + "@inviteContact": { + "type": "String", + "placeholders": {} + }, + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "@widgetEtherpad": {}, + "@waitingPartnerAcceptRequest": { + "type": "String", + "placeholders": {} + }, + "remove": "निकालना", + "@remove": { + "type": "String", + "placeholders": {} + }, + "@writeAMessage": { + "type": "String", + "placeholders": {} + }, + "@changeTheme": { + "type": "String", + "placeholders": {} + }, + "@id": { + "type": "String", + "placeholders": {} + }, + "@removeDevicesDescription": {}, + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@separateChatTypes": { + "type": "String", + "placeholders": {} + }, + "@tryAgain": {}, + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "@blocked": { + "type": "String", + "placeholders": {} + }, + "@youKickedAndBanned": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "@removeDevice": { + "type": "String", + "placeholders": {} + }, + "@unbanUserDescription": {}, + "@userAndUserAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "username2": { + "type": "String" + } + } + }, + "@pleaseClickOnLink": { + "type": "String", + "placeholders": {} + }, + "@saveFile": { + "type": "String", + "placeholders": {} + }, + "@sendOnEnter": {}, + "@pickImage": { + "type": "String", + "placeholders": {} + }, + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "@youRejectedTheInvitation": {}, + "@otherCallingPermissions": {}, + "@messagesStyle": {}, + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@invitedUsersOnly": { + "type": "String", + "placeholders": {} + }, + "@link": {}, + "@widgetUrlError": {}, + "@emailOrUsername": {}, + "@newSpaceDescription": {}, + "@chatDescription": {}, + "@callingAccountDetails": {}, + "@next": { + "type": "String", + "placeholders": {} + }, + "@pleaseFollowInstructionsOnWeb": { + "type": "String", + "placeholders": {} + }, + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "@editRoomAliases": { + "type": "String", + "placeholders": {} + }, + "@enterSpace": {}, + "@encryptThisChat": {}, + "@fileName": { + "type": "String", + "placeholders": {} + }, + "@unavailable": { + "type": "String", + "placeholders": {} + }, + "@previousAccount": {}, + "@publicRooms": { + "type": "String", + "placeholders": {} + }, + "@fromTheInvitation": { + "type": "String", + "placeholders": {} + }, + "@sendMessages": { + "type": "String", + "placeholders": {} + }, + "@incorrectPassphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "@emoteWarnNeedToPick": { + "type": "String", + "placeholders": {} + }, + "@reopenChat": {}, + "@pleaseEnterRecoveryKey": {}, + "@create": { + "type": "String", + "placeholders": {} + }, + "@toggleFavorite": { + "type": "String", + "placeholders": {} + }, + "@no": { + "type": "String", + "placeholders": {} + }, + "@alias": { + "type": "String", + "placeholders": {} + }, + "@widgetNameError": {}, + "@inoffensive": { + "type": "String", + "placeholders": {} + }, + "@unpin": { + "type": "String", + "placeholders": {} + }, + "@addToBundle": {}, + "@reportMessage": { + "type": "String", + "placeholders": {} + }, + "@spaceIsPublic": { + "type": "String", + "placeholders": {} + }, + "@addWidget": {}, + "@all": { + "type": "String", + "placeholders": {} + }, + "@removeAllOtherDevices": { + "type": "String", + "placeholders": {} + }, + "@unblockDevice": { + "type": "String", + "placeholders": {} + }, + "@countFiles": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@noKeyForThisMessage": {}, + "@enableEncryptionWarning": { + "type": "String", + "placeholders": {} + }, + "@inviteText": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "link": { + "type": "String" + } + } + }, + "@shareLocation": { + "type": "String", + "placeholders": {} + }, + "@reason": { + "type": "String", + "placeholders": {} + }, + "@commandHint_markasgroup": {}, + "@errorObtainingLocation": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@hydrateTor": {}, + "@pushNotificationsNotAvailable": {}, + "@passwordRecovery": { + "type": "String", + "placeholders": {} + }, + "@storeInAppleKeyChain": {}, + "@replaceRoomWithNewerVersion": { + "type": "String", + "placeholders": {} + }, + "@hydrate": {}, + "@invalidServerName": {}, + "@chatPermissions": {}, + "@voiceMessage": { + "type": "String", + "placeholders": {} + }, + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "@wipeChatBackup": { + "type": "String", + "placeholders": {} + }, + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "@sender": {}, + "@storeInAndroidKeystore": {}, + "@hideRedactedEvents": { + "type": "String", + "placeholders": {} + }, + "@online": { + "type": "String", + "placeholders": {} + }, + "@signInWithPassword": {}, + "@ignoredUsers": { + "type": "String", + "placeholders": {} + }, + "@lastActiveAgo": { + "type": "String", + "placeholders": { + "localizedTimeShort": { + "type": "String" + } + } + }, + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "@weSentYouAnEmail": { + "type": "String", + "placeholders": {} + }, + "@offensive": { + "type": "String", + "placeholders": {} + }, + "@needPantalaimonWarning": { + "type": "String", + "placeholders": {} + }, + "@makeAdminDescription": {}, + "@edit": { + "type": "String", + "placeholders": {} + }, + "@loadMore": { + "type": "String", + "placeholders": {} + }, + "@noEmotesFound": { + "type": "String", + "placeholders": {} + }, + "@synchronizingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "@transferFromAnotherDevice": { + "type": "String", + "placeholders": {} + }, + "@passwordHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "@pushRules": { + "type": "String", + "placeholders": {} + }, + "@goToTheNewRoom": { + "type": "String", + "placeholders": {} + }, + "@commandHint_clearcache": { + "type": "String", + "description": "Usage hint for the command /clearcache" + }, + "@loadingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "@copy": { + "type": "String", + "placeholders": {} + }, + "@saveKeyManuallyDescription": {}, + "@none": { + "type": "String", + "placeholders": {} + }, + "@editBundlesForAccount": {}, + "@enableEncryption": { + "type": "String", + "placeholders": {} + }, + "@whyIsThisMessageEncrypted": {}, + "@unreadChats": { + "type": "String", + "placeholders": { + "unreadCount": { + "type": "int" + } + } + }, + "@rejectedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@setChatDescription": {}, + "@userLeftTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@spaceName": { + "type": "String", + "placeholders": {} + }, + "importFromZipFile": ".zip फ़ाइल से आयात करें", + "@importFromZipFile": {}, + "@toggleUnread": { + "type": "String", + "placeholders": {} + }, + "@or": { + "type": "String", + "placeholders": {} + }, + "@dehydrateWarning": {}, + "@sendOriginal": { + "type": "String", + "placeholders": {} + }, + "@noOtherDevicesFound": {}, + "@whoIsAllowedToJoinThisGroup": { + "type": "String", + "placeholders": {} + }, + "@emptyChat": { + "type": "String", + "placeholders": {} + }, + "@seenByUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@storeSecurlyOnThisDevice": {}, + "@yourChatBackupHasBeenSetUp": {}, + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "@redactedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@submit": { + "type": "String", + "placeholders": {} + }, + "@videoCallsBetaWarning": {}, + "@unmuteChat": { + "type": "String", + "placeholders": {} + }, + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@redactedAnEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@autoplayImages": { + "type": "String", + "placeholder": {} + }, + "@compareEmojiMatch": { + "type": "String", + "placeholders": {} + }, + "@participant": { + "type": "String", + "placeholders": {} + }, + "@logInTo": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "@yes": { + "type": "String", + "placeholders": {} + }, + "@containsDisplayName": { + "type": "String", + "placeholders": {} + }, + "@signInWith": { + "type": "String", + "placeholders": { + "provider": { + "type": "String" + } + } + }, + "@username": { + "type": "String", + "placeholders": {} + }, + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@fileIsTooBigForServer": {}, + "@homeserver": {}, + "@help": { + "type": "String", + "placeholders": {} + }, + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "@people": { + "type": "String", + "placeholders": {} + }, + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "@leftTheChat": { + "type": "String", + "placeholders": {} + }, + "@verified": { + "type": "String", + "placeholders": {} + }, + "repeatPassword": "पासवर्ड दोहराएं", + "@repeatPassword": {}, + "@setStatus": { + "type": "String", + "placeholders": {} + }, + "@groupWith": { + "type": "String", + "placeholders": { + "displayname": { + "type": "String" + } + } + }, + "@callingPermissions": {}, + "@delete": { + "type": "String", + "placeholders": {} + }, + "@newMessageInFluffyChat": { + "type": "String", + "placeholders": {} + }, + "@readUpToHere": {}, + "@start": {}, + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "@deviceId": { + "type": "String", + "placeholders": {} + }, + "@register": { + "type": "String", + "placeholders": {} + }, + "@unlockOldMessages": {}, + "@identity": { + "type": "String", + "placeholders": {} + }, + "@numChats": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "@ignore": { + "type": "String", + "placeholders": {} + }, + "@recording": { + "type": "String", + "placeholders": {} + }, + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@moderator": { + "type": "String", + "placeholders": {} + }, + "@optionalRedactReason": {}, + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@waitingPartnerEmoji": { + "type": "String", + "placeholders": {} + }, + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "@tryToSendAgain": { + "type": "String", + "placeholders": {} + }, + "@guestsCanJoin": { + "type": "String", + "placeholders": {} + }, + "@ok": { + "type": "String", + "placeholders": {} + }, + "@copyToClipboard": { + "type": "String", + "placeholders": {} + }, + "@dehydrate": {}, + "@locationPermissionDeniedNotice": { + "type": "String", + "placeholders": {} + }, + "@send": { + "type": "String", + "placeholders": {} + }, + "@hasWithdrawnTheInvitationFor": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "@visibleForAllParticipants": { + "type": "String", + "placeholders": {} + }, + "@noRoomsFound": { + "type": "String", + "placeholders": {} + }, + "@banned": { + "type": "String", + "placeholders": {} + }, + "@sendAsText": { + "type": "String" + }, + "@inviteForMe": { + "type": "String", + "placeholders": {} + }, + "@archiveRoomDescription": {}, + "exportEmotePack": "इमोट पैक को .zip के रूप में निर्यात करें", + "@exportEmotePack": {}, + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "@sendSticker": { + "type": "String", + "placeholders": {} + }, + "@account": { + "type": "String", + "placeholders": {} + }, + "@switchToAccount": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "@commandInvalid": { + "type": "String" + }, + "@setAsCanonicalAlias": { + "type": "String", + "placeholders": {} + }, + "@whyDoYouWantToReportThis": { + "type": "String", + "placeholders": {} + }, + "@locationDisabledNotice": { + "type": "String", + "placeholders": {} + }, + "@placeCall": {}, + "@removedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@newChat": { + "type": "String", + "placeholders": {} + }, + "@notifications": { + "type": "String", + "placeholders": {} + }, + "@commandHint_plain": { + "type": "String", + "description": "Usage hint for the command /plain" + }, + "@emoteSettings": { + "type": "String", + "placeholders": {} + }, + "@experimentalVideoCalls": {}, + "@openCamera": { + "type": "String", + "placeholders": {} + }, + "@pleaseEnterRecoveryKeyDescription": {}, + "@guestsAreForbidden": { + "type": "String", + "placeholders": {} + }, + "@mention": { + "type": "String", + "placeholders": {} + }, + "@openInMaps": { + "type": "String", + "placeholders": {} + }, + "@withTheseAddressesRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "@inviteContactToGroupQuestion": {}, + "@emoteExists": { + "type": "String", + "placeholders": {} + }, + "@redactedByBecause": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "reason": { + "type": "String" + } + } + }, + "@isTyping": { + "type": "String", + "placeholders": {} + }, + "@youHaveWithdrawnTheInvitationFor": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "@chat": { + "type": "String", + "placeholders": {} + }, + "@group": { + "type": "String", + "placeholders": {} + }, + "@leave": { + "type": "String", + "placeholders": {} + }, + "@skip": { + "type": "String", + "placeholders": {} + }, + "@appearOnTopDetails": {}, + "@roomHasBeenUpgraded": { + "type": "String", + "placeholders": {} + }, + "@enterRoom": {}, + "@enableEmotesGlobally": { + "type": "String", + "placeholders": {} + }, + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "@pleaseChooseAPasscode": { + "type": "String", + "placeholders": {} + }, + "@noPasswordRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@allChats": { + "type": "String", + "placeholders": {} + }, + "@reportUser": {}, + "@sharedTheLocation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@commandHint_send": { + "type": "String", + "description": "Usage hint for the command /send" + }, + "@onlineKeyBackupEnabled": { + "type": "String", + "placeholders": {} + }, + "@unbannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "@confirmEventUnpin": {}, + "@badServerVersionsException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "@youInvitedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "@kickedAndBanned": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "@noConnectionToTheServer": { + "type": "String", + "placeholders": {} + }, + "@fileHasBeenSavedAt": { + "type": "String", + "placeholders": { + "path": { + "type": "String" + } + } + }, + "@license": { + "type": "String", + "placeholders": {} + }, + "@addToSpace": {}, + "@unbanFromChat": { + "type": "String", + "placeholders": {} + }, + "@commandMissing": { + "type": "String", + "placeholders": { + "command": { + "type": "String" + } + }, + "description": "State that {command} is not a valid /command." + }, + "@redactMessageDescription": {}, + "@rejoin": { + "type": "String", + "placeholders": {} + }, + "@recoveryKey": {}, + "@redactMessage": { + "type": "String", + "placeholders": {} + }, + "@forward": { + "type": "String", + "placeholders": {} + }, + "@commandHint_discardsession": { + "type": "String", + "description": "Usage hint for the command /discardsession" + }, + "@invalidInput": {}, + "@about": { + "type": "String", + "placeholders": {} + }, + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "@hideUnknownEvents": { + "type": "String", + "placeholders": {} + }, + "@dehydrateTorLong": {}, + "@yourPublicKey": { + "type": "String", + "placeholders": {} + }, + "@tooManyRequestsWarning": { + "type": "String", + "placeholders": {} + }, + "@invitedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "@kickFromChat": { + "type": "String", + "placeholders": {} + }, + "@commandHint_myroomnick": { + "type": "String", + "description": "Usage hint for the command /myroomnick" + }, + "@offline": { + "type": "String", + "placeholders": {} + }, + "@noPermission": { + "type": "String", + "placeholders": {} + }, + "@doNotShowAgain": {}, + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@report": {}, + "@status": { + "type": "String", + "placeholders": {} + }, + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "@groupIsPublic": { + "type": "String", + "placeholders": {} + }, + "@verifyStart": { + "type": "String", + "placeholders": {} + }, + "@memberChanges": { + "type": "String", + "placeholders": {} + }, + "@joinRoom": { + "type": "String", + "placeholders": {} + }, + "@unverified": {}, + "@fluffychat": { + "type": "String", + "placeholders": {} + }, + "@howOffensiveIsThisContent": { + "type": "String", + "placeholders": {} + }, + "@serverRequiresEmail": {}, + "@hideUnimportantStateEvents": {}, + "@screenSharingTitle": {}, + "@widgetCustom": {}, + "@sentCallInformations": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "@addToSpaceDescription": {}, + "@googlyEyesContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "@youBannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "@theyDontMatch": { + "type": "String", + "placeholders": {} + }, + "@youHaveBeenBannedFromThisChat": { + "type": "String", + "placeholders": {} + }, + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "@addChatDescription": {}, + "@sentAnAudio": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@editRoomAvatar": { + "type": "String", + "placeholders": {} + }, + "@encrypted": { + "type": "String", + "placeholders": {} + }, + "@commandHint_leave": { + "type": "String", + "description": "Usage hint for the command /leave" + }, + "@commandHint_myroomavatar": { + "type": "String", + "description": "Usage hint for the command /myroomavatar" + }, + "@cancel": { + "type": "String", + "placeholders": {} + }, + "@hasKnocked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "@publish": {}, + "@openLinkInBrowser": {}, + "@clearArchive": {}, + "@appLock": { + "type": "String", + "placeholders": {} + }, + "@commandHint_react": { + "type": "String", + "description": "Usage hint for the command /react" + }, + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@commandHint_me": { + "type": "String", + "description": "Usage hint for the command /me" + }, + "@pleaseEnterYourUsername": { + "type": "String", + "placeholders": {} + }, + "@messageInfo": {}, + "@disableEncryptionWarning": {}, + "@directChat": {}, + "@encryptionNotEnabled": { + "type": "String", + "placeholders": {} + }, + "@wrongPinEntered": { + "type": "String", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "@sendTypingNotifications": {}, + "@lightTheme": { + "type": "String", + "placeholders": {} + }, + "@inviteGroupChat": {}, + "@appearOnTop": {}, + "@invitePrivateChat": {}, + "@verifyTitle": { + "type": "String", + "placeholders": {} + }, + "@foregroundServiceRunning": {}, + "@enterAnEmailAddress": { + "type": "String", + "placeholders": {} + }, + "@voiceCall": {}, + "@commandHint_kick": { + "type": "String", + "description": "Usage hint for the command /kick" + }, + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "@createNewSpace": { + "type": "String", + "placeholders": {} + }, + "@commandHint_unban": { + "type": "String", + "description": "Usage hint for the command /unban" + }, + "@unknownEncryptionAlgorithm": { + "type": "String", + "placeholders": {} + }, + "@commandHint_ban": { + "type": "String", + "description": "Usage hint for the command /ban" + }, + "importEmojis": "इमोजी आयात करें", + "@importEmojis": {}, + "@confirm": { + "type": "String", + "placeholders": {} + }, + "@wasDirectChatDisplayName": { + "type": "String", + "placeholders": { + "oldDisplayName": { + "type": "String" + } + } + }, + "@noChatDescriptionYet": {}, + "@defaultPermissionLevel": { + "type": "String", + "placeholders": {} + }, + "@removeFromBundle": {}, + "@numUsersTyping": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@fontSize": { + "type": "String", + "placeholders": {} + }, + "@whoCanPerformWhichAction": { + "type": "String", + "placeholders": {} + }, + "@confirmMatrixId": {}, + "@learnMore": {}, + "@iHaveClickedOnLink": { + "type": "String", + "placeholders": {} + }, + "@you": { + "type": "String", + "placeholders": {} + }, + "notAnImage": "कोई छवि फ़ाइल नहीं।", + "@notAnImage": {}, + "@users": {}, + "@openGallery": {}, + "@chatDescriptionHasBeenChanged": {}, + "@search": { + "type": "String", + "placeholders": {} + }, + "@newGroup": {}, + "@bundleName": {}, + "@dehydrateTor": {}, + "@removeFromSpace": {}, + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "@commandHint_op": { + "type": "String", + "description": "Usage hint for the command /op" + }, + "@commandHint_join": { + "type": "String", + "description": "Usage hint for the command /join" + }, + "@sourceCode": { + "type": "String", + "placeholders": {} + }, + "@roomUpgradeDescription": {}, + "@commandHint_invite": { + "type": "String", + "description": "Usage hint for the command /invite" + }, + "@userSentUnknownEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "type": { + "type": "String" + } + } + }, + "@scanQrCode": {}, + "@logout": { + "type": "String", + "placeholders": {} + }, + "@pleaseEnterANumber": {}, + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "@youKicked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@profileNotFound": {}, + "@jump": {}, + "@groups": { + "type": "String", + "placeholders": {} + }, + "@reactedWith": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "reaction": { + "type": "String" + } + } + }, + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "@sorryThatsNotPossible": {}, + "@videoWithSize": { + "type": "String", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "@oopsSomethingWentWrong": { + "type": "String", + "placeholders": {} + }, + "@loadCountMoreParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@shareInviteLink": {}, + "@commandHint_markasdm": {}, + "@recoveryKeyLost": {}, + "@cuddleContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@containsUserName": { + "type": "String", + "placeholders": {} + }, + "@messages": { + "type": "String", + "placeholders": {} + }, + "@login": { + "type": "String", + "placeholders": {} + }, + "@deviceKeys": {}, + "@waitingPartnerNumbers": { + "type": "String", + "placeholders": {} + }, + "@noGoogleServicesWarning": { + "type": "String", + "placeholders": {} + }, + "@everythingReady": { + "type": "String", + "placeholders": {} + }, + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "@emoteKeyboardNoRecents": { + "type": "String", + "placeholders": {} + }, + "@setCustomEmotes": { + "type": "String", + "placeholders": {} + }, + "@startedACall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "@emoteInvalid": { + "type": "String", + "placeholders": {} + }, + "@systemTheme": { + "type": "String", + "placeholders": {} + }, + "@notificationsEnabledForThisAccount": { + "type": "String", + "placeholders": {} + }, + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "@visibilityOfTheChatHistory": { + "type": "String", + "placeholders": {} + }, + "@settings": { + "type": "String", + "placeholders": {} + }, + "@setTheme": {}, + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "@youJoinedTheChat": {}, + "@wallpaper": { + "type": "String", + "placeholders": {} + }, + "@openVideoCamera": { + "type": "String", + "placeholders": {} + }, + "@play": { + "type": "String", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "@chatBackupDescription": { + "type": "String", + "placeholders": {} + }, + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "@passwordForgotten": { + "type": "String", + "placeholders": {} + }, + "@statusExampleMessage": { + "type": "String", + "placeholders": {} + }, + "@security": { + "type": "String", + "placeholders": {} + }, + "@markAsRead": {}, + "@sendAudio": { + "type": "String", + "placeholders": {} + }, + "@widgetName": {}, + "@sentASticker": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@errorAddingWidget": {}, + "@commandHint_dm": { + "type": "String", + "description": "Usage hint for the command /dm" + }, + "@commandHint_hug": {}, + "@replace": {}, + "@reject": { + "type": "String", + "placeholders": {} + }, + "@extremeOffensive": { + "type": "String", + "placeholders": {} + }, + "@editBlockedServers": { + "type": "String", + "placeholders": {} + }, + "@oopsPushError": { + "type": "String", + "placeholders": {} + }, + "@youUnbannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "@deactivateAccountWarning": { + "type": "String", + "placeholders": {} + }, + "@archive": { + "type": "String", + "placeholders": {} + }, + "@joinedTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@visibleForEveryone": { + "type": "String", + "placeholders": {} + }, + "@pleaseEnter4Digits": { + "type": "String", + "placeholders": {} + }, + "@newSpace": {}, + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "@devices": { + "type": "String", + "placeholders": {} + }, + "@accept": { + "type": "String", + "placeholders": {} + }, + "@unknownEvent": { + "type": "String", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "@emojis": {}, + "@pleaseEnterYourPin": { + "type": "String", + "placeholders": {} + }, + "@pleaseChoose": { + "type": "String", + "placeholders": {} + }, + "@share": { + "type": "String", + "placeholders": {} + }, + "@commandHint_googly": {}, + "@pleaseTryAgainLaterOrChooseDifferentServer": {}, + "@createGroup": {}, + "@privacy": { + "type": "String", + "placeholders": {} + }, + "@changeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "@sendImage": { + "type": "String", + "placeholders": {} + }, + "@hydrateTorLong": {}, + "@time": {}, + "@enterYourHomeserver": { + "type": "String", + "placeholders": {} + }, + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "@contentHasBeenReported": { + "type": "String", + "placeholders": {} + }, + "@custom": {}, + "@noBackupWarning": {}, + "@fromJoining": { + "type": "String", + "placeholders": {} + }, + "@verify": { + "type": "String", + "placeholders": {} + }, + "@sendVideo": { + "type": "String", + "placeholders": {} + }, + "@storeInSecureStorageDescription": {}, + "@openChat": {}, + "@kickUserDescription": {}, + "@sendAMessage": { + "type": "String", + "placeholders": {} + }, + "@pin": { + "type": "String", + "placeholders": {} + }, + "importNow": "अभी आयात करें", + "@importNow": {}, + "@deleteAccount": { + "type": "String", + "placeholders": {} + }, + "@setInvitationLink": { + "type": "String", + "placeholders": {} + }, + "@pinMessage": {}, + "@screenSharingDetail": {}, + "@muteChat": { + "type": "String", + "placeholders": {} + }, + "@invite": {}, + "@enableMultiAccounts": {}, + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "@emotePacks": { + "type": "String", + "placeholders": {} + }, + "@indexedDbErrorTitle": {}, + "@endedTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + } +} diff --git a/lib/l10n/intl_hr.arb b/lib/l10n/intl_hr.arb new file mode 100644 index 0000000..040317d --- /dev/null +++ b/lib/l10n/intl_hr.arb @@ -0,0 +1,2995 @@ +{ + "@@locale": "hr", + "@@last_modified": "2021-08-14 12:41:10.025984", + "about": "Informacije", + "@about": { + "type": "String", + "placeholders": {} + }, + "accept": "Prihvati", + "@accept": { + "type": "String", + "placeholders": {} + }, + "acceptedTheInvitation": "👍 {username} je prihvatio/la poziv", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "account": "Račun", + "@account": { + "type": "String", + "placeholders": {} + }, + "activatedEndToEndEncryption": "🔐 {username} je aktivirao/la obostrano šifriranje", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "addEmail": "Dodaj e-mail", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "admin": "Administrator", + "@admin": { + "type": "String", + "placeholders": {} + }, + "alias": "pseudonim", + "@alias": { + "type": "String", + "placeholders": {} + }, + "all": "Svi", + "@all": { + "type": "String", + "placeholders": {} + }, + "answeredTheCall": "{senderName} je odgovorio/la na poziv", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "anyoneCanJoin": "Svatko se može pridružiti", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "appLock": "Zaključavanje programa", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "archive": "Arhiv", + "@archive": { + "type": "String", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "Smiju li se gosti pridružiti", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "Stvarno to želiš?", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "areYouSureYouWantToLogout": "Stvarno se želiš odjaviti?", + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "askSSSSSign": "Za potpisivanje druge osobe, upiši svoju sigurnosnu lozinku ili ključ za oporavak.", + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "askVerificationRequest": "Prihvatiti ovaj zahtjev za potvrđivanje od {username}?", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "badServerLoginTypesException": "Domaći poslužitelj podržava vrste prijave:\n{serverVersions}\nMeđutim ovaj program podržava samo:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "badServerVersionsException": "Domaći poslužitelj podržava verzije specifikacije:\n{serverVersions}\nMeđutim ovaj program podržava samo {supportedVersions}", + "@badServerVersionsException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "banFromChat": "Isključi iz razgovora", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "banned": "Isključen", + "@banned": { + "type": "String", + "placeholders": {} + }, + "bannedUser": "{username} je isključio/la {targetName}", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "blockDevice": "Blokiraj uređaj", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "blocked": "Blokirano", + "@blocked": { + "type": "String", + "placeholders": {} + }, + "botMessages": "Poruke bota", + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "cancel": "Odustani", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "cantOpenUri": "URI adresa {uri} se ne može otvoriti", + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "changeDeviceName": "Promijeni ime uređaja", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "changedTheChatAvatar": "{username} je promijenio/la avatar razgovora", + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheChatDescriptionTo": "{username} je promijenio/la opis razgovora u: '{description}'", + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "changedTheChatNameTo": "{username} je promijenio/la ime razgovora u: '{chatname}'", + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "changedTheChatPermissions": "{username} je promijenio/la dozvole razgovora", + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheDisplaynameTo": "{username} je promijenio/la svoje prikazno ime u: '{displayname}'", + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "changedTheGuestAccessRules": "{username} je promijenio/la pravila pristupa za goste", + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheGuestAccessRulesTo": "{username} je promijenio/la pravila pristupa za goste u: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheHistoryVisibility": "{username} je promijenio/la vidljivost kronologije", + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheHistoryVisibilityTo": "{username} je promijenio/la vidljivost kronologije u: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheJoinRules": "{username} je promijenio/la pravila pridruživanja", + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheJoinRulesTo": "{username} je promijenio/la pravila pridruživanja u: {joinRules}", + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "changedTheProfileAvatar": "{username} je promijenio/la svoj avatar", + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomAliases": "{username} je promijenio/la pseudonime soba", + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomInvitationLink": "{username} je promijenio/la poveznicu poziva", + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changePassword": "Promijeni lozinku", + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "changeTheHomeserver": "Promijeni domaćeg poslužitelja", + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "changeTheme": "Promijeni tvoj stil", + "@changeTheme": { + "type": "String", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "Promijeni ime grupe", + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "changeYourAvatar": "Promijeni svoj avatar", + "@changeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "channelCorruptedDecryptError": "Šifriranje je oštećeno", + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "chat": "Razgovor", + "@chat": { + "type": "String", + "placeholders": {} + }, + "chatBackup": "Sigurnosna kopija razgovora", + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "chatBackupDescription": "Tvoji su stari razgovori osigurani s ključem za obnavljanje. Pazi da ga ne izgubiš.", + "@chatBackupDescription": { + "type": "String", + "placeholders": {} + }, + "chatDetails": "Detalji razgovora", + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "chats": "Razgovori", + "@chats": { + "type": "String", + "placeholders": {} + }, + "chooseAStrongPassword": "Odaberi snažnu lozinku", + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "clearArchive": "Isprazni arhiv", + "@clearArchive": {}, + "close": "Zatvori", + "@close": { + "type": "String", + "placeholders": {} + }, + "commandHint_ban": "Isključi navedenog korisnika iz ove sobe", + "@commandHint_ban": { + "type": "String", + "description": "Usage hint for the command /ban" + }, + "commandHint_html": "Pošalji HTML formatirani tekst", + "@commandHint_html": { + "type": "String", + "description": "Usage hint for the command /html" + }, + "commandHint_invite": "Pozovi navedenog korisnika u ovu sobu", + "@commandHint_invite": { + "type": "String", + "description": "Usage hint for the command /invite" + }, + "commandHint_join": "Pridruži se navedenoj sobi", + "@commandHint_join": { + "type": "String", + "description": "Usage hint for the command /join" + }, + "commandHint_kick": "Ukloni navedenog korisnika iz ove sobe", + "@commandHint_kick": { + "type": "String", + "description": "Usage hint for the command /kick" + }, + "commandHint_leave": "Napusti ovu sobu", + "@commandHint_leave": { + "type": "String", + "description": "Usage hint for the command /leave" + }, + "commandHint_me": "Opiši se", + "@commandHint_me": { + "type": "String", + "description": "Usage hint for the command /me" + }, + "commandHint_myroomavatar": "Postavi svoju sliku za ovu sobu (mxc-uri)", + "@commandHint_myroomavatar": { + "type": "String", + "description": "Usage hint for the command /myroomavatar" + }, + "commandHint_myroomnick": "Postavi svoje ime za ovu sobu", + "@commandHint_myroomnick": { + "type": "String", + "description": "Usage hint for the command /myroomnick" + }, + "commandHint_op": "Postavi razinu prava navedenog korisnika (standardno: 50)", + "@commandHint_op": { + "type": "String", + "description": "Usage hint for the command /op" + }, + "commandHint_plain": "Pošalji neformatirani tekst", + "@commandHint_plain": { + "type": "String", + "description": "Usage hint for the command /plain" + }, + "commandHint_react": "Pošalji odgovor kao reakciju", + "@commandHint_react": { + "type": "String", + "description": "Usage hint for the command /react" + }, + "commandHint_send": "Pošalji tekst", + "@commandHint_send": { + "type": "String", + "description": "Usage hint for the command /send" + }, + "commandHint_unban": "Ponovo uključi navedenog korisnika u ovu sobu", + "@commandHint_unban": { + "type": "String", + "description": "Usage hint for the command /unban" + }, + "commandInvalid": "Naredba nevaljana", + "@commandInvalid": { + "type": "String" + }, + "commandMissing": "{command} nije naredba.", + "@commandMissing": { + "type": "String", + "placeholders": { + "command": { + "type": "String" + } + }, + "description": "State that {command} is not a valid /command." + }, + "compareEmojiMatch": "Usporedi emoji sličice", + "@compareEmojiMatch": { + "type": "String", + "placeholders": {} + }, + "compareNumbersMatch": "Usporedi brojeve", + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "configureChat": "Konfiguriraj razgovor", + "@configureChat": { + "type": "String", + "placeholders": {} + }, + "confirm": "Potvrdi", + "@confirm": { + "type": "String", + "placeholders": {} + }, + "connect": "Spoji", + "@connect": { + "type": "String", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "Kontakt je pozvan u grupu", + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "containsDisplayName": "Sadržava prikazano ime", + "@containsDisplayName": { + "type": "String", + "placeholders": {} + }, + "containsUserName": "Sadrži korisničko ime", + "@containsUserName": { + "type": "String", + "placeholders": {} + }, + "contentHasBeenReported": "Sadržaj je prijavljen administratorima poslužitelja", + "@contentHasBeenReported": { + "type": "String", + "placeholders": {} + }, + "copiedToClipboard": "Kopirano u međuspremnik", + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "copy": "Kopiraj", + "@copy": { + "type": "String", + "placeholders": {} + }, + "copyToClipboard": "Kopiraj u međuspremnik", + "@copyToClipboard": { + "type": "String", + "placeholders": {} + }, + "couldNotDecryptMessage": "Neuspjelo dešifriranje poruke: {error}", + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "countParticipants": "{count} sudionika", + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "create": "Stvori", + "@create": { + "type": "String", + "placeholders": {} + }, + "createdTheChat": "💬 {username} je započeo/la razgovor", + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "createNewSpace": "Novi prostor", + "@createNewSpace": { + "type": "String", + "placeholders": {} + }, + "currentlyActive": "Trenutačno aktivni", + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "darkTheme": "Tamna", + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "dateWithoutYear": "{day}. {month}.", + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "dateWithYear": "{day}. {month}. {year}.", + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "deactivateAccountWarning": "Ovo će nepovratno deaktivirati tvoj korisnički račun. Stvarno to želiš?", + "@deactivateAccountWarning": { + "type": "String", + "placeholders": {} + }, + "defaultPermissionLevel": "Standardna razina dozvole za nove korisnike", + "@defaultPermissionLevel": { + "type": "String", + "placeholders": {} + }, + "delete": "Izbriši", + "@delete": { + "type": "String", + "placeholders": {} + }, + "deleteAccount": "Izbriši račun", + "@deleteAccount": { + "type": "String", + "placeholders": {} + }, + "deleteMessage": "Izbriši poruku", + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "device": "Uređaj", + "@device": { + "type": "String", + "placeholders": {} + }, + "deviceId": "ID oznaka uređaja", + "@deviceId": { + "type": "String", + "placeholders": {} + }, + "devices": "Uređaji", + "@devices": { + "type": "String", + "placeholders": {} + }, + "directChats": "Izravni razgovori", + "@directChats": { + "type": "String", + "placeholders": {} + }, + "displaynameHasBeenChanged": "Prikazno ime je promijenjeno", + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "downloadFile": "Preuzmi datoteku", + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "edit": "Uredi", + "@edit": { + "type": "String", + "placeholders": {} + }, + "editBlockedServers": "Uredi blokirane poslužitelje", + "@editBlockedServers": { + "type": "String", + "placeholders": {} + }, + "editDisplayname": "Uredi prikazano ime", + "@editDisplayname": { + "type": "String", + "placeholders": {} + }, + "editRoomAliases": "Uredi pseudonime sobe", + "@editRoomAliases": { + "type": "String", + "placeholders": {} + }, + "editRoomAvatar": "Uredi avatar sobe", + "@editRoomAvatar": { + "type": "String", + "placeholders": {} + }, + "emoteExists": "Emotikon već postoji!", + "@emoteExists": { + "type": "String", + "placeholders": {} + }, + "emoteInvalid": "Neispravna kratica emotikona!", + "@emoteInvalid": { + "type": "String", + "placeholders": {} + }, + "emotePacks": "Paketi emotikona za sobu", + "@emotePacks": { + "type": "String", + "placeholders": {} + }, + "emoteSettings": "Postavke emotikona", + "@emoteSettings": { + "type": "String", + "placeholders": {} + }, + "emoteShortcode": "Kratica emotikona", + "@emoteShortcode": { + "type": "String", + "placeholders": {} + }, + "emoteWarnNeedToPick": "Moraš odabrati jednu kraticu emotikona i sliku!", + "@emoteWarnNeedToPick": { + "type": "String", + "placeholders": {} + }, + "emptyChat": "Prazan razgovor", + "@emptyChat": { + "type": "String", + "placeholders": {} + }, + "enableEmotesGlobally": "Aktiviraj paket emotikona globalno", + "@enableEmotesGlobally": { + "type": "String", + "placeholders": {} + }, + "enableEncryption": "Aktiviraj šifriranje", + "@enableEncryption": { + "type": "String", + "placeholders": {} + }, + "enableEncryptionWarning": "Više nećeš moći deaktivirati šifriranje. Stvarno to želiš?", + "@enableEncryptionWarning": { + "type": "String", + "placeholders": {} + }, + "encrypted": "Šifrirano", + "@encrypted": { + "type": "String", + "placeholders": {} + }, + "encryption": "Šifriranje", + "@encryption": { + "type": "String", + "placeholders": {} + }, + "encryptionNotEnabled": "Šifriranje nije aktivirano", + "@encryptionNotEnabled": { + "type": "String", + "placeholders": {} + }, + "endedTheCall": "{senderName} je završio/la poziv", + "@endedTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "enterAnEmailAddress": "Upiši e-adressu", + "@enterAnEmailAddress": { + "type": "String", + "placeholders": {} + }, + "enterYourHomeserver": "Upiši svoj domaći poslužitelj", + "@enterYourHomeserver": { + "type": "String", + "placeholders": {} + }, + "everythingReady": "Sve je spremno!", + "@everythingReady": { + "type": "String", + "placeholders": {} + }, + "extremeOffensive": "Izrazito uvredljiv", + "@extremeOffensive": { + "type": "String", + "placeholders": {} + }, + "fileName": "Ime datoteke", + "@fileName": { + "type": "String", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "String", + "placeholders": {} + }, + "fontSize": "Veličina fonta", + "@fontSize": { + "type": "String", + "placeholders": {} + }, + "forward": "Proslijedi", + "@forward": { + "type": "String", + "placeholders": {} + }, + "fromJoining": "Od pridruživanja", + "@fromJoining": { + "type": "String", + "placeholders": {} + }, + "fromTheInvitation": "Od poziva", + "@fromTheInvitation": { + "type": "String", + "placeholders": {} + }, + "goToTheNewRoom": "Idi u novu sobu", + "@goToTheNewRoom": { + "type": "String", + "placeholders": {} + }, + "group": "Grupiraj", + "@group": { + "type": "String", + "placeholders": {} + }, + "groupIsPublic": "Grupa je javna", + "@groupIsPublic": { + "type": "String", + "placeholders": {} + }, + "groups": "Grupe", + "@groups": { + "type": "String", + "placeholders": {} + }, + "groupWith": "Grupa s {displayname}", + "@groupWith": { + "type": "String", + "placeholders": { + "displayname": { + "type": "String" + } + } + }, + "guestsAreForbidden": "Gosti su zabranjeni", + "@guestsAreForbidden": { + "type": "String", + "placeholders": {} + }, + "guestsCanJoin": "Gosti se mogu pridružiti", + "@guestsCanJoin": { + "type": "String", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "{username} je povukao/la poziv za {targetName}", + "@hasWithdrawnTheInvitationFor": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "help": "Pomoć", + "@help": { + "type": "String", + "placeholders": {} + }, + "hideRedactedEvents": "Sakrij promijenjene događaje", + "@hideRedactedEvents": { + "type": "String", + "placeholders": {} + }, + "hideUnknownEvents": "Sakrij nepoznate događaje", + "@hideUnknownEvents": { + "type": "String", + "placeholders": {} + }, + "howOffensiveIsThisContent": "Koliko je ovaj sadržaj uvredljiv?", + "@howOffensiveIsThisContent": { + "type": "String", + "placeholders": {} + }, + "id": "ID", + "@id": { + "type": "String", + "placeholders": {} + }, + "identity": "Identitet", + "@identity": { + "type": "String", + "placeholders": {} + }, + "ignore": "Zanemari", + "@ignore": { + "type": "String", + "placeholders": {} + }, + "ignoredUsers": "Zanemareni korisnici", + "@ignoredUsers": { + "type": "String", + "placeholders": {} + }, + "iHaveClickedOnLink": "Pritisnuo/la sam poveznicu", + "@iHaveClickedOnLink": { + "type": "String", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "Neispravna lozinka ili ključ za obnavljanje", + "@incorrectPassphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "inoffensive": "Neuvredljiv", + "@inoffensive": { + "type": "String", + "placeholders": {} + }, + "inviteContact": "Pozovi kontakt", + "@inviteContact": { + "type": "String", + "placeholders": {} + }, + "inviteContactToGroup": "Pozovi kontakt u {groupName}", + "@inviteContactToGroup": { + "type": "String", + "placeholders": { + "groupName": { + "type": "String" + } + } + }, + "invited": "Pozvan/a", + "@invited": { + "type": "String", + "placeholders": {} + }, + "invitedUser": "📩 {username} je pozvao/la {targetName}", + "@invitedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "invitedUsersOnly": "Samo pozvani korisnici", + "@invitedUsersOnly": { + "type": "String", + "placeholders": {} + }, + "inviteForMe": "Poziv za mene", + "@inviteForMe": { + "type": "String", + "placeholders": {} + }, + "inviteText": "{username} te je pozvao/la u FluffyChat. \n1. Posjeti strnicu fluffychat.im i instaliraj aplikaciju \n2. Registriraj ili prijavi se \n3. Otvori poveznicu poziva: \n {link}", + "@inviteText": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "link": { + "type": "String" + } + } + }, + "isTyping": "piše …", + "@isTyping": { + "type": "String", + "placeholders": {} + }, + "joinedTheChat": "👋 {username} se pridružio/la razgovoru", + "@joinedTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "joinRoom": "Pridruži se sobi", + "@joinRoom": { + "type": "String", + "placeholders": {} + }, + "kicked": "👞 {username} je izbacio/la {targetName}", + "@kicked": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickedAndBanned": "🙅 {username} je izbacio/la i blokirao/la {targetName}", + "@kickedAndBanned": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickFromChat": "Izbaci iz razgovora", + "@kickFromChat": { + "type": "String", + "placeholders": {} + }, + "lastActiveAgo": "Zadnja aktivnost: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "String", + "placeholders": { + "localizedTimeShort": { + "type": "String" + } + } + }, + "leave": "Napusti", + "@leave": { + "type": "String", + "placeholders": {} + }, + "leftTheChat": "Napustio/la je razgovor", + "@leftTheChat": { + "type": "String", + "placeholders": {} + }, + "license": "Licenca", + "@license": { + "type": "String", + "placeholders": {} + }, + "lightTheme": "Svijetla", + "@lightTheme": { + "type": "String", + "placeholders": {} + }, + "loadCountMoreParticipants": "Učitaj još {count} sudionika", + "@loadCountMoreParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "loadingPleaseWait": "Učitava se … Pričekaj.", + "@loadingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "loadMore": "Učitaj još …", + "@loadMore": { + "type": "String", + "placeholders": {} + }, + "login": "Prijava", + "@login": { + "type": "String", + "placeholders": {} + }, + "logInTo": "Prijavi se na {homeserver}", + "@logInTo": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "logout": "Odjava", + "@logout": { + "type": "String", + "placeholders": {} + }, + "memberChanges": "Promjene člana", + "@memberChanges": { + "type": "String", + "placeholders": {} + }, + "mention": "Spominjanje", + "@mention": { + "type": "String", + "placeholders": {} + }, + "messages": "Poruke", + "@messages": { + "type": "String", + "placeholders": {} + }, + "moderator": "Voditelj", + "@moderator": { + "type": "String", + "placeholders": {} + }, + "muteChat": "Isključi zvuk razgovora", + "@muteChat": { + "type": "String", + "placeholders": {} + }, + "needPantalaimonWarning": "Za trenutačno korištenje obostranog šifriranja trebaš Pantalaimon.", + "@needPantalaimonWarning": { + "type": "String", + "placeholders": {} + }, + "newChat": "Novi razgovor", + "@newChat": { + "type": "String", + "placeholders": {} + }, + "newMessageInFluffyChat": "💬 Nova poruka u FluffyChatu", + "@newMessageInFluffyChat": { + "type": "String", + "placeholders": {} + }, + "newVerificationRequest": "Novi zahtjev za potvrđivanje!", + "@newVerificationRequest": { + "type": "String", + "placeholders": {} + }, + "next": "Dalje", + "@next": { + "type": "String", + "placeholders": {} + }, + "no": "Ne", + "@no": { + "type": "String", + "placeholders": {} + }, + "noConnectionToTheServer": "Ne postoji veza s poslužiteljem", + "@noConnectionToTheServer": { + "type": "String", + "placeholders": {} + }, + "noEmotesFound": "Nema emotikona. 😕", + "@noEmotesFound": { + "type": "String", + "placeholders": {} + }, + "noEncryptionForPublicRooms": "Šifriranje možeš aktivirati samo nakon što soba više nije javno dostupna.", + "@noEncryptionForPublicRooms": { + "type": "String", + "placeholders": {} + }, + "none": "Ništa", + "@none": { + "type": "String", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "Još nisi dodao/la način za obnavljanje lozinke.", + "@noPasswordRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "noPermission": "Bez dozvole", + "@noPermission": { + "type": "String", + "placeholders": {} + }, + "noRoomsFound": "Nema soba …", + "@noRoomsFound": { + "type": "String", + "placeholders": {} + }, + "notifications": "Obavijesti", + "@notifications": { + "type": "String", + "placeholders": {} + }, + "notificationsEnabledForThisAccount": "Obavijesti su aktivirane za ovaj račun", + "@notificationsEnabledForThisAccount": { + "type": "String", + "placeholders": {} + }, + "numUsersTyping": "{count} korisnika pišu …", + "@numUsersTyping": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "offensive": "Uvredljiv", + "@offensive": { + "type": "String", + "placeholders": {} + }, + "offline": "Nepovezano s internetom", + "@offline": { + "type": "String", + "placeholders": {} + }, + "ok": "U redu", + "@ok": { + "type": "String", + "placeholders": {} + }, + "online": "Povezano s internetom", + "@online": { + "type": "String", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "Internetski ključ sigurnosnih kopija je aktiviran", + "@onlineKeyBackupEnabled": { + "type": "String", + "placeholders": {} + }, + "oopsPushError": "Ups! Nažalost se dogodila greška prilikom postavljanja automatskog primanja obavijesti.", + "@oopsPushError": { + "type": "String", + "placeholders": {} + }, + "oopsSomethingWentWrong": "Ups, dogodila se greška …", + "@oopsSomethingWentWrong": { + "type": "String", + "placeholders": {} + }, + "openAppToReadMessages": "Za čitanje poruka, otvori program", + "@openAppToReadMessages": { + "type": "String", + "placeholders": {} + }, + "openCamera": "Otvori kameru", + "@openCamera": { + "type": "String", + "placeholders": {} + }, + "or": "Ili", + "@or": { + "type": "String", + "placeholders": {} + }, + "participant": "Sudionik", + "@participant": { + "type": "String", + "placeholders": {} + }, + "passphraseOrKey": "tajni izraz ili ključ za obnavljanje", + "@passphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "password": "Lozinka", + "@password": { + "type": "String", + "placeholders": {} + }, + "passwordForgotten": "Zaboravljena lozinka", + "@passwordForgotten": { + "type": "String", + "placeholders": {} + }, + "passwordHasBeenChanged": "Lozinka je promijenjena", + "@passwordHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "passwordRecovery": "Obnavljanje lozinke", + "@passwordRecovery": { + "type": "String", + "placeholders": {} + }, + "people": "Ljudi", + "@people": { + "type": "String", + "placeholders": {} + }, + "pickImage": "Odaberi sliku", + "@pickImage": { + "type": "String", + "placeholders": {} + }, + "pin": "Prikvači", + "@pin": { + "type": "String", + "placeholders": {} + }, + "play": "Sviraj {fileName}", + "@play": { + "type": "String", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "pleaseChoose": "Odaberi", + "@pleaseChoose": { + "type": "String", + "placeholders": {} + }, + "pleaseChooseAPasscode": "Odaberi lozinku", + "@pleaseChooseAPasscode": { + "type": "String", + "placeholders": {} + }, + "pleaseClickOnLink": "Pritisni poveznicu u e-poruci, zatim nastavi.", + "@pleaseClickOnLink": { + "type": "String", + "placeholders": {} + }, + "pleaseEnter4Digits": "Upiši 4 znamenke ili ostavi prazno, za deaktiviranje zaključavanja programa.", + "@pleaseEnter4Digits": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPassword": "Upiši svoju lozinku", + "@pleaseEnterYourPassword": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPin": "Upiši svoj pin", + "@pleaseEnterYourPin": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourUsername": "Upiši svoje korisničko ime", + "@pleaseEnterYourUsername": { + "type": "String", + "placeholders": {} + }, + "pleaseFollowInstructionsOnWeb": "Slijedi upute na web-stranici i dodirni „Dalje”.", + "@pleaseFollowInstructionsOnWeb": { + "type": "String", + "placeholders": {} + }, + "privacy": "Privatnost", + "@privacy": { + "type": "String", + "placeholders": {} + }, + "publicRooms": "Javne sobe", + "@publicRooms": { + "type": "String", + "placeholders": {} + }, + "pushRules": "Pravila slanja", + "@pushRules": { + "type": "String", + "placeholders": {} + }, + "reason": "Razlog", + "@reason": { + "type": "String", + "placeholders": {} + }, + "recording": "Snimanje", + "@recording": { + "type": "String", + "placeholders": {} + }, + "redactedAnEvent": "{username} je preuredio/la događaj", + "@redactedAnEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "redactMessage": "Ispravi poruku", + "@redactMessage": { + "type": "String", + "placeholders": {} + }, + "register": "Registracija", + "@register": { + "type": "String", + "placeholders": {} + }, + "reject": "Odbij", + "@reject": { + "type": "String", + "placeholders": {} + }, + "rejectedTheInvitation": "{username} je odbio/la poziv", + "@rejectedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "rejoin": "Ponovo se pridruži", + "@rejoin": { + "type": "String", + "placeholders": {} + }, + "remove": "Ukloni", + "@remove": { + "type": "String", + "placeholders": {} + }, + "removeAllOtherDevices": "Ukloni sve druge uređaje", + "@removeAllOtherDevices": { + "type": "String", + "placeholders": {} + }, + "removedBy": "Uklonjeno od {username}", + "@removedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "removeDevice": "Ukloni uređaj", + "@removeDevice": { + "type": "String", + "placeholders": {} + }, + "unbanFromChat": "Ponovo uključi u razgovor", + "@unbanFromChat": { + "type": "String", + "placeholders": {} + }, + "removeYourAvatar": "Ukloni svoj avatar", + "@removeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "replaceRoomWithNewerVersion": "Zamijeni sobu s novom verzijom", + "@replaceRoomWithNewerVersion": { + "type": "String", + "placeholders": {} + }, + "reply": "Odgovori", + "@reply": { + "type": "String", + "placeholders": {} + }, + "reportMessage": "Prijavi poruku", + "@reportMessage": { + "type": "String", + "placeholders": {} + }, + "requestPermission": "Zatraži dozvolu", + "@requestPermission": { + "type": "String", + "placeholders": {} + }, + "roomHasBeenUpgraded": "Soba je nadograđena", + "@roomHasBeenUpgraded": { + "type": "String", + "placeholders": {} + }, + "roomVersion": "Verzija sobe", + "@roomVersion": { + "type": "String", + "placeholders": {} + }, + "saveFile": "Spremi datoteku", + "@saveFile": { + "type": "String", + "placeholders": {} + }, + "search": "Traži", + "@search": { + "type": "String", + "placeholders": {} + }, + "security": "Sigurnost", + "@security": { + "type": "String", + "placeholders": {} + }, + "seenByUser": "Viđeno od {username}", + "@seenByUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "send": "Pošalji", + "@send": { + "type": "String", + "placeholders": {} + }, + "sendAMessage": "Pošalji poruku", + "@sendAMessage": { + "type": "String", + "placeholders": {} + }, + "sendAsText": "Pošalji kao tekst", + "@sendAsText": { + "type": "String" + }, + "sendAudio": "Pošalji audio datoteku", + "@sendAudio": { + "type": "String", + "placeholders": {} + }, + "sendFile": "Pošalji datoteku", + "@sendFile": { + "type": "String", + "placeholders": {} + }, + "sendImage": "Pošalji sliku", + "@sendImage": { + "type": "String", + "placeholders": {} + }, + "sendMessages": "Šalji poruke", + "@sendMessages": { + "type": "String", + "placeholders": {} + }, + "sendOriginal": "Pošalji original", + "@sendOriginal": { + "type": "String", + "placeholders": {} + }, + "sendSticker": "Pošalji naljepnicu", + "@sendSticker": { + "type": "String", + "placeholders": {} + }, + "sendVideo": "Pošalji video datoteku", + "@sendVideo": { + "type": "String", + "placeholders": {} + }, + "sentAFile": "📁 {username} ja poslao/la datoteku", + "@sentAFile": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAnAudio": "🎤 {username} ja poslao/la audio snimku", + "@sentAnAudio": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAPicture": "🖼️ {username} ja poslao/la sliku", + "@sentAPicture": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentASticker": "😊 {username} je poslao/la naljepnicu", + "@sentASticker": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAVideo": "🎥 {username} je poslao/la video", + "@sentAVideo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentCallInformations": "{senderName} je poslao/la podatke poziva", + "@sentCallInformations": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "setAsCanonicalAlias": "Postavi kao glavni pseudonim", + "@setAsCanonicalAlias": { + "type": "String", + "placeholders": {} + }, + "setCustomEmotes": "Postavi prilagođene emotikone", + "@setCustomEmotes": { + "type": "String", + "placeholders": {} + }, + "setInvitationLink": "Pošalji poveznicu poziva", + "@setInvitationLink": { + "type": "String", + "placeholders": {} + }, + "setPermissionsLevel": "Postavi razinu dozvola", + "@setPermissionsLevel": { + "type": "String", + "placeholders": {} + }, + "setStatus": "Postavi stanje", + "@setStatus": { + "type": "String", + "placeholders": {} + }, + "settings": "Postavke", + "@settings": { + "type": "String", + "placeholders": {} + }, + "share": "Dijeli", + "@share": { + "type": "String", + "placeholders": {} + }, + "sharedTheLocation": "{username} je dijelio/la svoje mjesto", + "@sharedTheLocation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "showPassword": "Pokaži lozinku", + "@showPassword": { + "type": "String", + "placeholders": {} + }, + "singlesignon": "Jednokratna prijava", + "@singlesignon": { + "type": "String", + "placeholders": {} + }, + "skip": "Preskoči", + "@skip": { + "type": "String", + "placeholders": {} + }, + "sourceCode": "Izvorni kȏd", + "@sourceCode": { + "type": "String", + "placeholders": {} + }, + "spaceIsPublic": "Prostor je javan", + "@spaceIsPublic": { + "type": "String", + "placeholders": {} + }, + "spaceName": "Ime prostora", + "@spaceName": { + "type": "String", + "placeholders": {} + }, + "startedACall": "{senderName} ja započeo/la poziv", + "@startedACall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "status": "Stanje", + "@status": { + "type": "String", + "placeholders": {} + }, + "statusExampleMessage": "Kako si danas?", + "@statusExampleMessage": { + "type": "String", + "placeholders": {} + }, + "submit": "Pošalji", + "@submit": { + "type": "String", + "placeholders": {} + }, + "synchronizingPleaseWait": "Sinkronizira se … Pričekaj.", + "@synchronizingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "systemTheme": "Sustav", + "@systemTheme": { + "type": "String", + "placeholders": {} + }, + "theyDontMatch": "Ne poklapaju se", + "@theyDontMatch": { + "type": "String", + "placeholders": {} + }, + "theyMatch": "Poklapaju se", + "@theyMatch": { + "type": "String", + "placeholders": {} + }, + "title": "FluffyChat", + "@title": { + "description": "Title for the application", + "type": "String", + "placeholders": {} + }, + "toggleFavorite": "Uklj/Isklj favorite", + "@toggleFavorite": { + "type": "String", + "placeholders": {} + }, + "toggleMuted": "Uklj/Isklj isključene", + "@toggleMuted": { + "type": "String", + "placeholders": {} + }, + "toggleUnread": "Označi kao pročitano/nepročitano", + "@toggleUnread": { + "type": "String", + "placeholders": {} + }, + "tooManyRequestsWarning": "Previše zahtjeva. Pokušaj ponovo kasnije!", + "@tooManyRequestsWarning": { + "type": "String", + "placeholders": {} + }, + "transferFromAnotherDevice": "Prenesi s jednog drugog uređaja", + "@transferFromAnotherDevice": { + "type": "String", + "placeholders": {} + }, + "tryToSendAgain": "Pokušaj ponovo poslati", + "@tryToSendAgain": { + "type": "String", + "placeholders": {} + }, + "unavailable": "Nedostupno", + "@unavailable": { + "type": "String", + "placeholders": {} + }, + "unbannedUser": "{username} je ponovo uključio/la {targetName}", + "@unbannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "unblockDevice": "Deblokiraj uređaj", + "@unblockDevice": { + "type": "String", + "placeholders": {} + }, + "unknownDevice": "Nepoznat uređaj", + "@unknownDevice": { + "type": "String", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "Nepoznat algoritam šifriranja", + "@unknownEncryptionAlgorithm": { + "type": "String", + "placeholders": {} + }, + "unknownEvent": "Nepoznat događaj '{type}'", + "@unknownEvent": { + "type": "String", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "unmuteChat": "Uključi zvuk razgovora", + "@unmuteChat": { + "type": "String", + "placeholders": {} + }, + "unpin": "Otkvači", + "@unpin": { + "type": "String", + "placeholders": {} + }, + "unreadChats": "{unreadCount, plural, =1{1 nepročitan razgovor} few{{unreadCount} nepročitana razgovora} other{{unreadCount} nepročitanih razgovora}}", + "@unreadChats": { + "type": "String", + "placeholders": { + "unreadCount": { + "type": "int" + } + } + }, + "userAndOthersAreTyping": "{username} i još {count} korisnika pišu …", + "@userAndOthersAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "userAndUserAreTyping": "{username} i {username2} pišu …", + "@userAndUserAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "username2": { + "type": "String" + } + } + }, + "userIsTyping": "{username} piše …", + "@userIsTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "userLeftTheChat": "🚪 {username} je napustio/la razgovor", + "@userLeftTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "username": "Korisničko ime", + "@username": { + "type": "String", + "placeholders": {} + }, + "userSentUnknownEvent": "{username} ja poslao/la {type} događaj", + "@userSentUnknownEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "type": { + "type": "String" + } + } + }, + "verified": "Potvrđeno", + "@verified": { + "type": "String", + "placeholders": {} + }, + "verify": "Potvrdi", + "@verify": { + "type": "String", + "placeholders": {} + }, + "verifyStart": "Pokreni potvrđivanje", + "@verifyStart": { + "type": "String", + "placeholders": {} + }, + "verifySuccess": "Uspješno si potvrdio/la!", + "@verifySuccess": { + "type": "String", + "placeholders": {} + }, + "verifyTitle": "Potvrđivanje drugog računa", + "@verifyTitle": { + "type": "String", + "placeholders": {} + }, + "videoCall": "Video poziv", + "@videoCall": { + "type": "String", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "Vidljivost povijesti razgovora", + "@visibilityOfTheChatHistory": { + "type": "String", + "placeholders": {} + }, + "visibleForAllParticipants": "Vidljivo za sve sudionike", + "@visibleForAllParticipants": { + "type": "String", + "placeholders": {} + }, + "visibleForEveryone": "Vidljivo za sve", + "@visibleForEveryone": { + "type": "String", + "placeholders": {} + }, + "voiceMessage": "Glasovna poruka", + "@voiceMessage": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "Čeka se na sugovornika da prihvati zahtjev …", + "@waitingPartnerAcceptRequest": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerEmoji": "Čeka se na sugovornika da prihvati emoji …", + "@waitingPartnerEmoji": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerNumbers": "Čeka se na sugovornika da prihvati brojeve …", + "@waitingPartnerNumbers": { + "type": "String", + "placeholders": {} + }, + "wallpaper": "Pozadina:", + "@wallpaper": { + "type": "String", + "placeholders": {} + }, + "warning": "Upozorenje!", + "@warning": { + "type": "String", + "placeholders": {} + }, + "weSentYouAnEmail": "Poslali smo ti e-poruku", + "@weSentYouAnEmail": { + "type": "String", + "placeholders": {} + }, + "whoCanPerformWhichAction": "Tko može izvršiti koju radnju", + "@whoCanPerformWhichAction": { + "type": "String", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "Tko se smije pridružiti grupi", + "@whoIsAllowedToJoinThisGroup": { + "type": "String", + "placeholders": {} + }, + "whyDoYouWantToReportThis": "Zašto želiš ovo prijaviti?", + "@whyDoYouWantToReportThis": { + "type": "String", + "placeholders": {} + }, + "wipeChatBackup": "Izbrisati sigurnosnu kopiju razgovora za stvaranje novog sigurnosnog ključa za obnavljanje?", + "@wipeChatBackup": { + "type": "String", + "placeholders": {} + }, + "withTheseAddressesRecoveryDescription": "Lozinku možeš obnoviti pomoću ovih adresa.", + "@withTheseAddressesRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "writeAMessage": "Napiši poruku …", + "@writeAMessage": { + "type": "String", + "placeholders": {} + }, + "yes": "Da", + "@yes": { + "type": "String", + "placeholders": {} + }, + "you": "Ti", + "@you": { + "type": "String", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "Više ne sudjeluješ u ovom razgovoru", + "@youAreNoLongerParticipatingInThisChat": { + "type": "String", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "Isključen/a si iz ovog razgovora", + "@youHaveBeenBannedFromThisChat": { + "type": "String", + "placeholders": {} + }, + "yourPublicKey": "Tvoj javni ključ", + "@yourPublicKey": { + "type": "String", + "placeholders": {} + }, + "shareLocation": "Dijeli lokaciju", + "@shareLocation": { + "type": "String", + "placeholders": {} + }, + "locationPermissionDeniedNotice": "Lokacijske dozvole su odbijene. Za dijeljenje tvoje lokacije dozvoli ih.", + "@locationPermissionDeniedNotice": { + "type": "String", + "placeholders": {} + }, + "locationDisabledNotice": "Lokacijske usluge su deaktivirane. Za dijeljenje tvoje lokacije aktiviraj ih.", + "@locationDisabledNotice": { + "type": "String", + "placeholders": {} + }, + "obtainingLocation": "Dohvaćanje lokacije …", + "@obtainingLocation": { + "type": "String", + "placeholders": {} + }, + "errorObtainingLocation": "Greška u dohvaćanju lokacije: {error}", + "@errorObtainingLocation": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "openInMaps": "Otvori u kartama", + "@openInMaps": { + "type": "String", + "placeholders": {} + }, + "noMatrixServer": "{server1} nije matrix poslužitelj. Da li umjesto njega koristiti {server2}?", + "@noMatrixServer": { + "type": "String", + "placeholders": { + "server1": { + "type": "String" + }, + "server2": { + "type": "String" + } + } + }, + "autoplayImages": "Automatski pokreni animirane naljepnice i emotikone", + "@autoplayImages": { + "type": "String", + "placeholder": {} + }, + "allChats": "Svi razgovori", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "chatHasBeenAddedToThisSpace": "Razgovor je dodan u ovaj prostor", + "@chatHasBeenAddedToThisSpace": {}, + "addToSpace": "Dodaj u prostor", + "@addToSpace": {}, + "serverRequiresEmail": "Za registraciju ovaj poslužitelj mora potvrditi tvoju e-mail adresu.", + "@serverRequiresEmail": {}, + "scanQrCode": "Snimi QR kod", + "@scanQrCode": {}, + "homeserver": "Domaći poslužitelj", + "@homeserver": {}, + "sendOnEnter": "Pošalji pritiskom tipke enter", + "@sendOnEnter": {}, + "link": "Poveznica", + "@link": {}, + "enableMultiAccounts": "(BETA) Omogući korištenje više računa na ovom uređaju", + "@enableMultiAccounts": {}, + "bundleName": "Ime paketa", + "@bundleName": {}, + "removeFromBundle": "Ukloni iz ovog paketa", + "@removeFromBundle": {}, + "addToBundle": "Dodaj u paket", + "@addToBundle": {}, + "editBundlesForAccount": "Uredi pakete za ovaj račun", + "@editBundlesForAccount": {}, + "addAccount": "Dodaj račun", + "@addAccount": {}, + "oneClientLoggedOut": "Jedan od tvojih klijenata je odjavljen", + "@oneClientLoggedOut": {}, + "unverified": "Nepotvrđeno", + "@unverified": {}, + "yourChatBackupHasBeenSetUp": "Sigurnosna kopija tvog razgovora je postavljena.", + "@yourChatBackupHasBeenSetUp": {}, + "repeatPassword": "Ponovi lozinku", + "@repeatPassword": {}, + "messageInfo": "Informacija poruke", + "@messageInfo": {}, + "messageType": "Vrsta poruke", + "@messageType": {}, + "sender": "Pošiljatelj", + "@sender": {}, + "openGallery": "Otvori galeriju", + "@openGallery": {}, + "time": "Vrijeme", + "@time": {}, + "removeFromSpace": "Ukloni iz prostora", + "@removeFromSpace": {}, + "addToSpaceDescription": "Odaberi prostor kojem će se ovaj razgovor dodati.", + "@addToSpaceDescription": {}, + "start": "Početak", + "@start": {}, + "commandHint_clearcache": "Isprazni predmemoriju", + "@commandHint_clearcache": { + "type": "String", + "description": "Usage hint for the command /clearcache" + }, + "commandHint_create": "Stvori prazan grupni razgovor\nKoristi --no-encryption za deaktiviranje šifriranja", + "@commandHint_create": { + "type": "String", + "description": "Usage hint for the command /create" + }, + "commandHint_discardsession": "Odbaci sesiju", + "@commandHint_discardsession": { + "type": "String", + "description": "Usage hint for the command /discardsession" + }, + "commandHint_dm": "Započni izravni razgovor\nKoristi --no-encryption za deaktiviranje šifriranja", + "@commandHint_dm": { + "type": "String", + "description": "Usage hint for the command /dm" + }, + "openVideoCamera": "Otvori kameru za video", + "@openVideoCamera": { + "type": "String", + "placeholders": {} + }, + "videoWithSize": "Video ({size})", + "@videoWithSize": { + "type": "String", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "publish": "Objavi", + "@publish": {}, + "markAsRead": "Označi kao pročitano", + "@markAsRead": {}, + "reportUser": "Prijavi korisnika", + "@reportUser": {}, + "openChat": "Otvori razgovor", + "@openChat": {}, + "dismiss": "Odbaci", + "@dismiss": {}, + "unsupportedAndroidVersion": "Nepodržana Android verzija", + "@unsupportedAndroidVersion": {}, + "widgetVideo": "Video", + "@widgetVideo": {}, + "widgetEtherpad": "Tekstna bilješka", + "@widgetEtherpad": {}, + "widgetCustom": "Prilagođeno", + "@widgetCustom": {}, + "widgetName": "Ime", + "@widgetName": {}, + "widgetUrlError": "Ovo nije valjan URL.", + "@widgetUrlError": {}, + "switchToAccount": "Prijeđi na račun {number}", + "@switchToAccount": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "nextAccount": "Sljedeći račun", + "@nextAccount": {}, + "emailOrUsername": "E-mail ili korisničko ime", + "@emailOrUsername": {}, + "unsupportedAndroidVersionLong": "Ova funkcija zahtijeva noviju verziju Androida. Provjeri, postoje li nove verzije ili podrška za Lineage OS.", + "@unsupportedAndroidVersionLong": {}, + "previousAccount": "Prethodni račun", + "@previousAccount": {}, + "recoveryKey": "Ključ za obnavljanje", + "@recoveryKey": {}, + "recoveryKeyLost": "Izgubio/la si ključ za obnavljanje?", + "@recoveryKeyLost": {}, + "youKickedAndBanned": "🙅 Izbacio/la si i blokirao/la korisnika {user}", + "@youKickedAndBanned": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "dehydrateWarning": "Ovo je nepovratna radnja. Spremi datoteku sigurnosne kopije na sigurno mjeto.", + "@dehydrateWarning": {}, + "hydrateTor": "Korisnici TOR-a: Uzvezite izvoz sesije", + "@hydrateTor": {}, + "dehydrateTor": "Korisnici TOR-a: izvezite sesiju", + "@dehydrateTor": {}, + "emojis": "Emojiji", + "@emojis": {}, + "indexedDbErrorLong": "Spremište poruka nažalost nije standarno uključena u privatnom modusu.\nOtvori stranicu\n - about:config\n - postavi dom.indexedDB.privateBrowsing.enabled na true\nFluffyChat se inače neće moći pokrenuti.", + "@indexedDbErrorLong": {}, + "storeSecurlyOnThisDevice": "Spremi sigurno na ovom uređaju", + "@storeSecurlyOnThisDevice": {}, + "countFiles": "Broj datoteka: {count}", + "@countFiles": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "reactedWith": "{sender} je reagirao/la sa {reaction}", + "@reactedWith": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "reaction": { + "type": "String" + } + } + }, + "pinMessage": "Prikvači na sobu", + "@pinMessage": {}, + "confirmEventUnpin": "Stvarno želiš trajno otkvačiti događaj?", + "@confirmEventUnpin": {}, + "voiceCall": "Glasovni poziv", + "@voiceCall": {}, + "placeCall": "Nazovi", + "@placeCall": {}, + "videoCallsBetaWarning": "Napominjemo da se funkcija videopoziva trenutačno nalazi u beta stanju. Možda neće raditi ispravno ili uopće neće raditi na svim platformama.", + "@videoCallsBetaWarning": {}, + "experimentalVideoCalls": "Eksperimentalni videopozivi", + "@experimentalVideoCalls": {}, + "widgetJitsi": "Jitsi Meet", + "@widgetJitsi": {}, + "addWidget": "Dodaj widget", + "@addWidget": {}, + "widgetNameError": "Zadaj prikazno ime.", + "@widgetNameError": {}, + "youRejectedTheInvitation": "Odbio/la si poziv", + "@youRejectedTheInvitation": {}, + "errorAddingWidget": "Greška prilikom dodavanja widgeta.", + "@errorAddingWidget": {}, + "youJoinedTheChat": "Pridružio/la si se razgovoru", + "@youJoinedTheChat": {}, + "youAcceptedTheInvitation": "👍 Prihvatio/la si poziv", + "@youAcceptedTheInvitation": {}, + "youHaveWithdrawnTheInvitationFor": "Povukao/la si poziv za korisnika {user}", + "@youHaveWithdrawnTheInvitationFor": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youInvitedBy": "📩 {user} te je pozvao/la", + "@youInvitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youInvitedUser": "📩 Pozvao/la si korisnika {user}", + "@youInvitedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youKicked": "👞 Izbacio/la si korisnika {user}", + "@youKicked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youUnbannedUser": "Ponovo si uključio/la korisnika {user}", + "@youUnbannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "dehydrate": "Izvezi sesiju i izbriši uređaj", + "@dehydrate": {}, + "unlockOldMessages": "Otključaj stare poruke", + "@unlockOldMessages": {}, + "storeInSecureStorageDescription": "Ključ za obnavljanje spremi u sigurno spremište na ovom uređaju.", + "@storeInSecureStorageDescription": {}, + "saveKeyManuallyDescription": "Spremi ovaj ključ ručno pokretanjem dijaloga za dijeljenje sustava ili međuspremnika.", + "@saveKeyManuallyDescription": {}, + "storeInAndroidKeystore": "Spremi u Android KeyStore", + "@storeInAndroidKeystore": {}, + "separateChatTypes": "Odvojeni izravni razgovori, grupe i prostori", + "@separateChatTypes": { + "type": "String", + "placeholders": {} + }, + "dehydrateTorLong": "Korisnicima TOR-a preporučuje se izvoz sesije prije zatvaranja prozora.", + "@dehydrateTorLong": {}, + "hydrateTorLong": "Je li zadnji izvoz sesije bio na TOR-u? Brzo ga uvezi i nastavi razgovarati.", + "@hydrateTorLong": {}, + "hydrate": "Obnovi pomoću sigurnosne kopije", + "@hydrate": {}, + "pleaseEnterRecoveryKey": "Upiši svoj ključ za obnavljanje:", + "@pleaseEnterRecoveryKey": {}, + "users": "Korisnici", + "@users": {}, + "pleaseEnterRecoveryKeyDescription": "Za otključavanje starih poruka upiši ključ za obnavljanje koji je generiran u prethodnoj sesiji. Tvoj ključ za obnavljanje NIJE tvoja lozinka.", + "@pleaseEnterRecoveryKeyDescription": {}, + "indexedDbErrorTitle": "Problemi u privatnom modusu", + "@indexedDbErrorTitle": {}, + "youBannedUser": "Isključio/la si korisnika {user}", + "@youBannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "storeInAppleKeyChain": "Spremi u Apple KeyChain", + "@storeInAppleKeyChain": {}, + "user": "Korisnik", + "@user": {}, + "custom": "Prilagođeno", + "@custom": {}, + "fileHasBeenSavedAt": "Datoteka je spremljena u {path}", + "@fileHasBeenSavedAt": { + "type": "String", + "placeholders": { + "path": { + "type": "String" + } + } + }, + "numChats": "{number} razgovora", + "@numChats": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "fileIsTooBigForServer": "Neuspjelo slanje! Poslužitelj podržava samo priloge do {max}.", + "@fileIsTooBigForServer": {}, + "jumpToLastReadMessage": "Skoči na zadnju pročitanu poruku", + "@jumpToLastReadMessage": {}, + "commandHint_markasdm": "Označi kao sobu za izravnu razmjenu poruka za zadani Matrix ID", + "@commandHint_markasdm": {}, + "commandHint_markasgroup": "Označi kao grupu", + "@commandHint_markasgroup": {}, + "hideUnimportantStateEvents": "Sakrij nevažna stanja događaja", + "@hideUnimportantStateEvents": {}, + "doNotShowAgain": "Nemoj više prikazivati", + "@doNotShowAgain": {}, + "readUpToHere": "Pročitaj do ovdje", + "@readUpToHere": {}, + "wasDirectChatDisplayName": "Prazan razgovor (zvao se {oldDisplayName})", + "@wasDirectChatDisplayName": { + "type": "String", + "placeholders": { + "oldDisplayName": { + "type": "String" + } + } + }, + "noBackupWarning": "Upozorenje! Bez aktiviranja spremanja sigurnosne kopije razgovora, izgubit ćeš pristup tvojim šifriranim porukama. Preporučujemo spremanje sigurnosne kopije razgovora prije odjave.", + "@noBackupWarning": {}, + "noOtherDevicesFound": "Nijedan drugi uređaj nije pronađen", + "@noOtherDevicesFound": {}, + "whyIsThisMessageEncrypted": "Zašto nije moguće čitati ovu poruku?", + "@whyIsThisMessageEncrypted": {}, + "jump": "Skoči", + "@jump": {}, + "startFirstChat": "Započni svoj prvi razgovor", + "@startFirstChat": {}, + "newSpaceDescription": "Prostori omogućuju konsolidiranje tvojih razgovora i izgradnju privatne ili javne zajednice.", + "@newSpaceDescription": {}, + "encryptThisChat": "Šifiraj ovaj razgovor", + "@encryptThisChat": {}, + "deviceKeys": "Ključevi uređaja:", + "@deviceKeys": {}, + "foregroundServiceRunning": "Ova se obavijest pojavljuje kada se pokreće usluga u prvom planu.", + "@foregroundServiceRunning": {}, + "callingPermissions": "Dozvole za pozivanje", + "@callingPermissions": {}, + "callingAccountDetails": "Omogućuje FluffyChatu korištenje izvorne Android aplikacije za pozivanje.", + "@callingAccountDetails": {}, + "callingAccount": "Račun za pozivanje", + "@callingAccount": {}, + "commandHint_hug": "Pošalji grljenje", + "@commandHint_hug": {}, + "commandHint_googly": "Pošalji kotrljajuće oči", + "@commandHint_googly": {}, + "commandHint_cuddle": "Pošalji maženje", + "@commandHint_cuddle": {}, + "confirmMatrixId": "Za brisanje tvog računa potvrdi svoj Matrix ID.", + "@confirmMatrixId": {}, + "supposedMxid": "Trebao bi biti {mxid}", + "@supposedMxid": { + "type": "String", + "placeholders": { + "mxid": { + "type": "String" + } + } + }, + "enterRoom": "Uđi u sobu", + "@enterRoom": {}, + "screenSharingDetail": "Dijeliš svoj ekran u FuffyChatu", + "@screenSharingDetail": {}, + "appearOnTopDetails": "Omogućuje prikaz aplikacije ispred drugih (nije potrebno ako je FluffyChat već postavljen kao račun za pozivanje)", + "@appearOnTopDetails": {}, + "appearOnTop": "Prikaz ispred drugih", + "@appearOnTop": {}, + "newGroup": "Nova grupa", + "@newGroup": {}, + "allSpaces": "Svi prostori", + "@allSpaces": {}, + "screenSharingTitle": "dijeljenje ekrana", + "@screenSharingTitle": {}, + "otherCallingPermissions": "Mikrofon, kamera i druge FluffyChat dozvole", + "@otherCallingPermissions": {}, + "enterSpace": "Uđi u prostor", + "@enterSpace": {}, + "newSpace": "Novi prostor", + "@newSpace": {}, + "sorryThatsNotPossible": "Žao nam je … to nije moguće", + "@sorryThatsNotPossible": {}, + "disableEncryptionWarning": "Iz sigurnosnih razloga ne možeš deaktivirati šifriranje u razgovoru u kojem je prije bilo aktivirano.", + "@disableEncryptionWarning": {}, + "googlyEyesContent": "{senderName} ti šalje kotrljajuće oči", + "@googlyEyesContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "cuddleContent": "{senderName} te mazi", + "@cuddleContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "hugContent": "{senderName} te grli", + "@hugContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "noKeyForThisMessage": "To se može dogoditi ako je poruka poslana prije prijave na tvoj račun na ovom uređaju.\n\nTakođer je moguće da je pošiljatelj blokirao tvoj uređaj ili je došlo do greške s internetskom vezom.\n\nMožeš li pročitati poruku na jednoj drugoj sesiji? U tom slučaju možeš prenijeti poruku iz nje! Idi na Postavke > Uređaji i uvjeri se da su se tvoji uređaji međusobno provjerili. Kada sljedeći put otvoriš sobu i obje sesije su u prednjem planu, ključevi će se automatski prenijeti.\n\nNe želiš izgubiti ključeve kada se odjaviš ili zamijeniš uređaje? Aktiviraj spremanje sigurnosne kopije razgovora u postavkama.", + "@noKeyForThisMessage": {}, + "reopenChat": "Ponovo otvori razgovor", + "@reopenChat": {}, + "openLinkInBrowser": "Otvori poveznicu u pregledniku", + "@openLinkInBrowser": {}, + "report": "prijavi", + "@report": {}, + "allRooms": "Svi grupni razgovori", + "@allRooms": { + "type": "String", + "placeholders": {} + }, + "reportErrorDescription": "😭 Joj! Dogodila se greška. Pokušaj ponovo kasnije. Ako želiš, grešku možeš prijaviti programerima.", + "@reportErrorDescription": {}, + "signInWithPassword": "Prijavi se s lozinkom", + "@signInWithPassword": {}, + "pleaseTryAgainLaterOrChooseDifferentServer": "Pokušaj ponovo kasnije ili odaberi jedan drugi poslužitelj.", + "@pleaseTryAgainLaterOrChooseDifferentServer": {}, + "signInWith": "Prijavi se pomoću {provider}", + "@signInWith": { + "type": "String", + "placeholders": { + "provider": { + "type": "String" + } + } + }, + "notAnImage": "Nije slikovna datoteka.", + "@notAnImage": {}, + "importNow": "Uvezi sada", + "@importNow": {}, + "importEmojis": "Uvezi emoji slike", + "@importEmojis": {}, + "importFromZipFile": "Uvezi iz .zip datoteke", + "@importFromZipFile": {}, + "replace": "Zamijeni", + "@replace": {}, + "exportEmotePack": "Izvezi paket emotikona kao .zip", + "@exportEmotePack": {}, + "sendTypingNotifications": "Pošalji pismene obavijesti", + "@sendTypingNotifications": {}, + "setColorTheme": "Postavi boju teme:", + "@setColorTheme": {}, + "tryAgain": "Pokušaj ponovo", + "@tryAgain": {}, + "messagesStyle": "Poruke:", + "@messagesStyle": {}, + "chatDescription": "Opis razgovora", + "@chatDescription": {}, + "invalidServerName": "Neispravno ime servera", + "@invalidServerName": {}, + "chatPermissions": "Dozvole za razgovor", + "@chatPermissions": {}, + "setChatDescription": "Postavi opis rzgovora", + "@setChatDescription": {}, + "redactedBy": "Preuređeno od {username}", + "@redactedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "optionalRedactReason": "(Opcionalno) Razlog za redigiranje ove poruke …", + "@optionalRedactReason": {}, + "inviteContactToGroupQuestion": "Želiš li pozvati {contact} u razgovor grupe „{groupName}”?", + "@inviteContactToGroupQuestion": {}, + "redactedByBecause": "Preuređeno od {username} zbog: „{reason}”", + "@redactedByBecause": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "reason": { + "type": "String" + } + } + }, + "redactMessageDescription": "Poruka će se redigirati za sve sudionike u ovom razgovoru. To se ne može poništiti.", + "@redactMessageDescription": {}, + "addChatDescription": "Dodaj opis razgovora …", + "@addChatDescription": {}, + "directChat": "Izravni razgovor", + "@directChat": {}, + "inviteGroupChat": "📨 Pozivnica u grupni razgovor", + "@inviteGroupChat": {}, + "invitePrivateChat": "📨 Pozivnica u privatni razgovor", + "@invitePrivateChat": {}, + "noChatDescriptionYet": "Opis razgovora još nije stvoren.", + "@noChatDescriptionYet": {}, + "chatDescriptionHasBeenChanged": "Opis razgovora je promijenjen", + "@chatDescriptionHasBeenChanged": {}, + "profileNotFound": "Korisnik nije pronađen na poslužitelju. Možda postoji problem s vezom ili korisnik ne postoji.", + "@profileNotFound": {}, + "shareInviteLink": "Dijeli poveznicu za poziv", + "@shareInviteLink": {}, + "emoteKeyboardNoRecents": "Ovdje će se pojaviti nedavno korišteni emotikoni …", + "@emoteKeyboardNoRecents": { + "type": "String", + "placeholders": {} + }, + "setTheme": "Postavi temu:", + "@setTheme": {}, + "createGroup": "Stvori grupu", + "@createGroup": {}, + "invite": "Pozovi", + "@invite": {}, + "invalidInput": "Neispravan unos!", + "@invalidInput": {}, + "wrongPinEntered": "Unesen je pogrešan PIN! Pokušaj ponovo za {seconds} sekunde …", + "@wrongPinEntered": { + "type": "String", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "hasKnocked": "🚪 {user} je pokucao/la", + "@hasKnocked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "pleaseEnterANumber": "Upiši broj veći od 0", + "@pleaseEnterANumber": {}, + "pushNotificationsNotAvailable": "Automatsko slanje obavijesti nije dostupno", + "@pushNotificationsNotAvailable": {}, + "learnMore": "Saznaj više", + "@learnMore": {}, + "createGroupAndInviteUsers": "Stvori grupu i pozovi korisnike", + "@createGroupAndInviteUsers": {}, + "startConversation": "Pokreni konverzaciju", + "@startConversation": {}, + "blockedUsers": "Blokirani korisnici", + "@blockedUsers": {}, + "groupCanBeFoundViaSearch": "Grupa se može pronaći putem pretrage", + "@groupCanBeFoundViaSearch": {}, + "block": "Blokiraj", + "@block": {}, + "yourGlobalUserIdIs": "Tvoj globalni korisnički ID je: ", + "@yourGlobalUserIdIs": {}, + "commandHint_sendraw": "Pošalji neobrađeni json", + "@commandHint_sendraw": {}, + "wrongRecoveryKey": "Oprosti … čini se da ovo nije ispravan ključ za obnavljanje.", + "@wrongRecoveryKey": {}, + "blockUsername": "Zanemari korisničko ime", + "@blockUsername": {}, + "groupName": "Ime grupe", + "@groupName": {}, + "databaseMigrationTitle": "Baza podataka je optimirana", + "@databaseMigrationTitle": {}, + "searchChatsRooms": "Traži #chats, @users …", + "@searchChatsRooms": {}, + "databaseMigrationBody": "Pričekaj. Ovo može potrajati.", + "@databaseMigrationBody": {}, + "transparent": "Prozirno", + "@transparent": {}, + "formattedMessages": "Formatirane poruke", + "@formattedMessages": {}, + "incomingMessages": "Dolazne poruke", + "@incomingMessages": {}, + "passwordsDoNotMatch": "Lozinke se ne poklapaju", + "@passwordsDoNotMatch": {}, + "accessAndVisibility": "Pristup i vidljivost", + "@accessAndVisibility": {}, + "calls": "Pozivi", + "@calls": {}, + "customEmojisAndStickers": "Prilagođeni emojiji i naljepnice", + "@customEmojisAndStickers": {}, + "customEmojisAndStickersBody": "Dodaj ili dijeli prilagođene emojije ili naljepnice koje se mogu koristiti u bilo kojem razgovoru.", + "@customEmojisAndStickersBody": {}, + "accessAndVisibilityDescription": "Tko se smije pridružiti ovom razgovoru i kako se razgovor može otkriti.", + "@accessAndVisibilityDescription": {}, + "stickers": "Naljepnice", + "@stickers": {}, + "discover": "Otkrij", + "@discover": {}, + "formattedMessagesDescription": "Prikaži formatirani sadržaj poruke poput podebljanog teksta koristeći markdown.", + "@formattedMessagesDescription": {}, + "nothingFound": "Ništa nije pronađeno...", + "@nothingFound": {}, + "select": "Odaberi", + "@select": {}, + "newPassword": "Nova lozinka", + "@newPassword": {}, + "unbanUserDescription": "Korisnik će se ponovo moći pridružiti razgovoru ako pokuša.", + "@unbanUserDescription": {}, + "publicSpaces": "Javni prostori", + "@publicSpaces": {}, + "subspace": "Podprostori", + "@subspace": {}, + "decline": "Odbij", + "@decline": {}, + "thisDevice": "Ovaj uređaj:", + "@thisDevice": {}, + "presenceStyle": "Prisutnost:", + "@presenceStyle": { + "type": "String", + "placeholders": {} + }, + "presencesToggle": "Prikaži poruke stanja od drugih korisnika", + "@presencesToggle": { + "type": "String", + "placeholders": {} + }, + "noPublicLinkHasBeenCreatedYet": "Još nije stvorena nijedna javna poveznica", + "@noPublicLinkHasBeenCreatedYet": {}, + "hidePresences": "Sakriti popis stanja?", + "@hidePresences": {}, + "pleaseEnterYourCurrentPassword": "Upiši svoju trenutačnu lozinku", + "@pleaseEnterYourCurrentPassword": {}, + "publicLink": "Javna poveznica", + "@publicLink": {}, + "passwordIsWrong": "Tvoja upisana lozinka je kriva", + "@passwordIsWrong": {}, + "initAppError": "Dogodila se greška prilikom inicijaliziranja aplikacije", + "@initAppError": {}, + "hideRedactedMessagesBody": "Ako netko redigira poruku, ta poruka više neće biti vidljiva u razgovoru.", + "@hideRedactedMessagesBody": {}, + "kickUserDescription": "Korisnik je izbačen iz razgovora, ali nije blokiran. U javnim razgovorima se korisnik može ponovo pridružiti u bilo kojem trenutku.", + "@kickUserDescription": {}, + "addChatOrSubSpace": "Dodaj razgovor ili podpodručje", + "@addChatOrSubSpace": {}, + "appLockDescription": "Zaključaj aplikaciju kada je ne koristiš s PIN kodom", + "@appLockDescription": {}, + "globalChatId": "Globalni ID razgovora", + "@globalChatId": {}, + "hideRedactedMessages": "Sakrij redigirane poruke", + "@hideRedactedMessages": {}, + "hideInvalidOrUnknownMessageFormats": "Sakrij nevažeće ili nepoznate formate poruka", + "@hideInvalidOrUnknownMessageFormats": {}, + "overview": "Pregled", + "@overview": {}, + "notifyMeFor": "Obavijesit me za", + "@notifyMeFor": {}, + "passwordRecoverySettings": "Postavke za obnavljanje lozinke", + "@passwordRecoverySettings": {}, + "hideMemberChangesInPublicChats": "Sakrij promjene članova u javnim razgovorima", + "@hideMemberChangesInPublicChats": {}, + "youInvitedToBy": "📩 Pozvan/a si putem poveznice na:\n{alias}", + "@youInvitedToBy": { + "placeholders": { + "alias": { + "type": "String" + } + } + }, + "usersMustKnock": "Korisnici moraju pokucati", + "@usersMustKnock": {}, + "noOneCanJoin": "Nitko se ne može pridružiti", + "@noOneCanJoin": {}, + "userWouldLikeToChangeTheChat": "{user} se želi pridružiti razgovoru.", + "@userWouldLikeToChangeTheChat": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "knock": "Pokucaj", + "@knock": {}, + "knocking": "Kucanje", + "@knocking": {}, + "chatCanBeDiscoveredViaSearchOnServer": "Razgovor se može otkriti pretraživanjem servera {server}", + "@chatCanBeDiscoveredViaSearchOnServer": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "searchForUsers": "Traži @users...", + "@searchForUsers": {}, + "pleaseChooseAStrongPassword": "Odaberi snažnu lozinku", + "@pleaseChooseAStrongPassword": {}, + "joinSpace": "Pridruži se prostoru", + "@joinSpace": {}, + "publicChatAddresses": "Adrese javnih razgovora", + "@publicChatAddresses": {}, + "createNewAddress": "Stvori novu adresu", + "@createNewAddress": {}, + "userRole": "Korisnička uloga", + "@userRole": {}, + "verifyOtherUser": "🔐 Potvrdi drugog korisnika", + "@verifyOtherUser": {}, + "sendTypingNotificationsDescription": "Drugi sudionici u razgovoru mogu vidjeti kada pišeš novu poruku.", + "@sendTypingNotificationsDescription": {}, + "sendReadReceiptsDescription": "Drugi sudionici u raygovoru mogu vidjeti kada pročitaš poruku.", + "@sendReadReceiptsDescription": {}, + "searchIn": "Traži u razgovoru „{chat}”...", + "@searchIn": { + "type": "String", + "placeholders": { + "chat": { + "type": "String" + } + } + }, + "searchMore": "Traži više...", + "@searchMore": {}, + "gallery": "Galerija", + "@gallery": {}, + "files": "Datoteke", + "@files": {}, + "verifyOtherDevice": "🔐 Potvrdi drugi uređaj", + "@verifyOtherDevice": {}, + "unreadChatsInApp": "{appname}: Nroj nepročitanih razgovora: {unread}", + "@unreadChatsInApp": { + "type": "String", + "placeholders": { + "appname": { + "type": "String" + }, + "unread": { + "type": "String" + } + } + }, + "commandHint_ignore": "Zanemari navedeni matrix ID", + "@commandHint_ignore": {}, + "blockListDescription": "Možeš blokirati korisnike koji te ometaju. Nećeš moći primati poruke ili pozivnice za sobe od korisnika koji se nalaze u tvom osobnom popisu blokiranih.", + "@blockListDescription": {}, + "isReadyForKeyVerification": "{sender} je spreman/na za potvrđivanje ključa", + "@isReadyForKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "banUserDescription": "Korisnik će biti isključen iz razgovora i moći će ponovo prisustvovati razgovoru kad ga se deblokira.", + "@banUserDescription": {}, + "sessionLostBody": "Tvoja je sesija izgubljena. Prijavi ovu grešku programerima na {url}. Poruka o grešci glasi: {error}", + "@sessionLostBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "completedKeyVerification": "{sender} je dovršio/la potvrđivanje ključa", + "@completedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "archiveRoomDescription": "Razgovor će se premjestiti u arhivu. Drugi korisnici će moći vidjeti da si napustio/la razgovor.", + "@archiveRoomDescription": {}, + "removeDevicesDescription": "Bit ćeš odjavljen/a s ovog uređaja i više nećeš moći primati poruke.", + "@removeDevicesDescription": {}, + "noUsersFoundWithQuery": "Nažalost nije pronađen nijedan korisnik s „{query}”. Provjeri točnost upisa.", + "@noUsersFoundWithQuery": { + "type": "String", + "placeholders": { + "query": { + "type": "String" + } + } + }, + "restoreSessionBody": "Aplikacija sada pokušava obnoviti tvoju sesiju iz sigurnosne kopije. Prijavi ovu grešku programerima na {url}. Poruka o grešci glasi: {error}", + "@restoreSessionBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "requestedKeyVerification": "{sender} je zatražio/la potvrđivanje ključa", + "@requestedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "restricted": "Ograničeni", + "@restricted": {}, + "roomUpgradeDescription": "Razgovor će se tada ponovo stvoriti s novom verzijom sobe. Svi sudionici će biti obaviješteni da se moraju prebaciti na novi razgovor. Više o verzijama soba možeš saznati na https://spec.matrix.org/latest/rooms/", + "@roomUpgradeDescription": {}, + "noGoogleServicesWarning": "Čini se da Firebase Cloud Messaging nije dostupan na tvom uređaju. Za daljnje primanje push obavijesti, preporučujemo da instaliraš ntfy. S ntfy ili drugim pružateljem Unified Push usluge možeš primati push obavijesti na podatkovno siguran način. Ntfy možeš preuzeti s PlayStorea ili s F-Droida.", + "@noGoogleServicesWarning": { + "type": "String", + "placeholders": {} + }, + "verifyOtherDeviceDescription": "Kada potvrdiš jedan drugi uređaj, ti uređaji mogu razmjenjivati ključeve, povećavajući tvoju ukupnu sigurnost. 💪 Kada pokreneš provjeru, pojavit će se skočni prozor u aplikaciji na oba uređaja. Tamo ćeš tada vidjeti niz emojija ili brojeve koje moraš međusobno usporediti. Najbolje je imati oba uređaja pri ruci prije nego što započneš provjeru. 🤳", + "@verifyOtherDeviceDescription": {}, + "verifyOtherUserDescription": "Ako potvrdiš jednog drugog korisnika, možeš biti siguran/na da znaš kome zapravo pišeš. 💪\n\nKada pokreneš provjeru, vi i drugi korisnik vidjet ćete skočni prozor u aplikaciji. Tamo ćeš tada vidjeti niz emojija ili brojeve koje morate međusobno usporediti.\n\nNajbolji način za to je da se nađete zajedno ili započnete videopoziv. 👭", + "@verifyOtherUserDescription": {}, + "knockRestricted": "Pokucaj na ograničene sobe", + "@knockRestricted": {}, + "hideMemberChangesInPublicChatsBody": "Za bolju čitljivosti, na vremenskoj traci razgovora nemoj prikazivati kad se netko pridruži ili napusti javni razgovor.", + "@hideMemberChangesInPublicChatsBody": {}, + "makeAdminDescription": "Nakon postavljanja ovog korisnika kao administratora, to možda nećeš moći poništiti jer će on tada imati iste dozvole kao i ti.", + "@makeAdminDescription": {}, + "leaveEmptyToClearStatus": "Ostavi prazno za brisanje tvog stanja.", + "@leaveEmptyToClearStatus": {}, + "forwardMessageTo": "Proslijediti poruku u sobu {roomName}?", + "@forwardMessageTo": { + "type": "String", + "placeholders": { + "roomName": { + "type": "String" + } + } + }, + "minimumPowerLevel": "{level} je najmanja razina prava.", + "@minimumPowerLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "String" + } + } + }, + "databaseBuildErrorBody": "Nije moguće izgraditi SQlite bazu podataka. Aplikacija za sada pokušava koristiti staru bazu podataka. Prijavi ovu grešku programerima na {url}. Poruka o grešci glasi: {error}", + "@databaseBuildErrorBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "sendReadReceipts": "Šalji potvrde o čitanju", + "@sendReadReceipts": {}, + "acceptedKeyVerification": "{sender} je prihvatio/la potvrđivanje ključa", + "@acceptedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "canceledKeyVerification": "{sender} je prekinuo/la potvrđivanje ključa", + "@canceledKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "startedKeyVerification": "{sender} je pokrenuo/la potvrđivanje ključa", + "@startedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "commandHint_unignore": "Poništi zanemarivanje navedenog matrix ID-a", + "@commandHint_unignore": {}, + "noDatabaseEncryption": "Šifriranje baze podataka nije podržano na ovoj platformi", + "@noDatabaseEncryption": {}, + "thereAreCountUsersBlocked": "Broj trenutačno blokiranih korisnika: {count}.", + "@thereAreCountUsersBlocked": { + "type": "String", + "count": {} + }, + "swipeRightToLeftToReply": "Za odgovaranje povuci prstom zdesna ulijevo", + "@swipeRightToLeftToReply": {}, + "alwaysUse24HourFormat": "true", + "@alwaysUse24HourFormat": { + "description": "Set to true to always display time of day in 24 hour format." + }, + "prepareSendingAttachment": "Pripremi slanje priloga …", + "@prepareSendingAttachment": {}, + "sendingAttachment": "Slanje priloga …", + "@sendingAttachment": {}, + "sendingAttachmentCountOfCount": "Slanje priloga {index} od {length} …", + "@sendingAttachmentCountOfCount": { + "type": "integer", + "placeholders": { + "index": { + "type": "int" + }, + "length": { + "type": "int" + } + } + } +} diff --git a/lib/l10n/intl_hu.arb b/lib/l10n/intl_hu.arb new file mode 100644 index 0000000..fb94d4e --- /dev/null +++ b/lib/l10n/intl_hu.arb @@ -0,0 +1,3377 @@ +{ + "@@locale": "hu", + "@@last_modified": "2021-08-14 12:41:10.016566", + "about": "Névjegy", + "@about": { + "type": "String", + "placeholders": {} + }, + "accept": "Elfogad", + "@accept": { + "type": "String", + "placeholders": {} + }, + "acceptedTheInvitation": "👍 {username} elfogadta a meghívást", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "account": "Fiók", + "@account": { + "type": "String", + "placeholders": {} + }, + "activatedEndToEndEncryption": "🔐 {username} aktiválta a végpontok közötti titkosítást", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "admin": "Adminisztrátor", + "@admin": { + "type": "String", + "placeholders": {} + }, + "alias": "álnév", + "@alias": { + "type": "String", + "placeholders": {} + }, + "answeredTheCall": "{senderName} válaszolt a hívásra", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "anyoneCanJoin": "Bárki csatlakozhat", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "archive": "Archívum", + "@archive": { + "type": "String", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "Csatlakozhatnak-e vendégek", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "Biztos benne?", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "askSSSSSign": "A másik fél igazolásához meg kell adnia a biztonságos tároló jelmondatát vagy a visszaállítási kulcsotát.", + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "askVerificationRequest": "Elfogadja {username} hitelesítési kérelmét?", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "banFromChat": "Kitiltás a csevegésből", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "banned": "Kitiltva", + "@banned": { + "type": "String", + "placeholders": {} + }, + "bannedUser": "{username} kitiltva {targetName} által", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "blockDevice": "Eszköz blokkolása", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "cancel": "Mégse", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "changeDeviceName": "Eszköznév módosítása", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "changedTheChatAvatar": "{username} módosította a csevegési profilképét", + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheChatDescriptionTo": "{username} megváltoztatta a csevegés leírást a következőre: '{description}'", + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "changedTheChatNameTo": "{username} módosította a csevegés nevét a következőre: '{chatname}'", + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "changedTheChatPermissions": "{username} módosította a csevegési engedélyeket", + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheDisplaynameTo": "{username} módosította a megjelenített nevét erre: '{displayname}'", + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "changedTheGuestAccessRules": "{username} módosította a vendégek hozzáférési szabályokat", + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheGuestAccessRulesTo": "{username} módosította a vendégek hozzáférési szabályait a következőre: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheHistoryVisibility": "{username} módosította az előzmények láthatóságát", + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheHistoryVisibilityTo": "{username} módosította az előzmények láthatóságát a következőre: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheJoinRules": "{username} módosított a csatlakozási szabályokat", + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheJoinRulesTo": "{username} módosította a csatlakozási szabályokat a következőre: {joinRules}", + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "changedTheProfileAvatar": "{username} módosította a profilképét", + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomAliases": "{username} módosította a szoba álneveit", + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomInvitationLink": "{username} módosította a meghívó hivatkozást", + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changePassword": "Jelszó módosítása", + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "changeTheHomeserver": "Matrix-kiszolgáló váltás", + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "changeTheme": "Stílusának módosítása", + "@changeTheme": { + "type": "String", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "Csoport nevének módosítása", + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "channelCorruptedDecryptError": "A titkosítás megsérült", + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "chat": "Csevegés", + "@chat": { + "type": "String", + "placeholders": {} + }, + "chatDetails": "Csevegés részletei", + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "chooseAStrongPassword": "Válasszon egy erős jelszót", + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "close": "Bezár", + "@close": { + "type": "String", + "placeholders": {} + }, + "compareEmojiMatch": "Kérem, hasonlítsa össze a hangulatjeleket", + "@compareEmojiMatch": { + "type": "String", + "placeholders": {} + }, + "compareNumbersMatch": "Kérem, hasonlítsa össze a számokat", + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "confirm": "Megerősít", + "@confirm": { + "type": "String", + "placeholders": {} + }, + "connect": "Csatlakozás", + "@connect": { + "type": "String", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "Kapcsolat meghívásra került a csoportba", + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "copiedToClipboard": "Vágólapra másolva", + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "copy": "Másolás", + "@copy": { + "type": "String", + "placeholders": {} + }, + "couldNotDecryptMessage": "Nem sikerült visszafejteni az üzenetet: {error}", + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "countParticipants": "{count} résztvevő", + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "create": "Létrehoz", + "@create": { + "type": "String", + "placeholders": {} + }, + "createdTheChat": "💬 {username} csevegést hozott létre", + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "currentlyActive": "Jelenleg aktív", + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "darkTheme": "Sötét", + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "dateWithoutYear": "{month}. {day}.", + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "dateWithYear": "{year}. {month}. {day}.", + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "deactivateAccountWarning": "Ez deaktiválja a felhasználói fiókját. Ez nem vonható vissza! Biztos benne?", + "@deactivateAccountWarning": { + "type": "String", + "placeholders": {} + }, + "delete": "Törlés", + "@delete": { + "type": "String", + "placeholders": {} + }, + "deleteAccount": "Fiók törlése", + "@deleteAccount": { + "type": "String", + "placeholders": {} + }, + "deleteMessage": "Üzenet törlése", + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "device": "Eszköz", + "@device": { + "type": "String", + "placeholders": {} + }, + "devices": "Eszközök", + "@devices": { + "type": "String", + "placeholders": {} + }, + "displaynameHasBeenChanged": "A megjelenítési név megváltozott", + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "downloadFile": "Fájl letöltése", + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "editDisplayname": "Megjelenítési név szerkesztése", + "@editDisplayname": { + "type": "String", + "placeholders": {} + }, + "emoteExists": "A hangulatjel már létezik!", + "@emoteExists": { + "type": "String", + "placeholders": {} + }, + "emoteInvalid": "Érvénytelen hangulatjel rövidkód!", + "@emoteInvalid": { + "type": "String", + "placeholders": {} + }, + "emotePacks": "Hangulatjel csomagok a szobához", + "@emotePacks": { + "type": "String", + "placeholders": {} + }, + "emoteSettings": "Hangulatjel Beállítások", + "@emoteSettings": { + "type": "String", + "placeholders": {} + }, + "emoteShortcode": "Hangulatjel rövidkód", + "@emoteShortcode": { + "type": "String", + "placeholders": {} + }, + "emoteWarnNeedToPick": "Ki kell választania egy hangulatjel rövidkódot és egy képet!", + "@emoteWarnNeedToPick": { + "type": "String", + "placeholders": {} + }, + "emptyChat": "Üres csevegés", + "@emptyChat": { + "type": "String", + "placeholders": {} + }, + "enableEmotesGlobally": "Hangulatjel csomag engedélyezése globálisan", + "@enableEmotesGlobally": { + "type": "String", + "placeholders": {} + }, + "enableEncryptionWarning": "Többé nem fogja tudni kikapcsolni a titkosítást. Biztos benne?", + "@enableEncryptionWarning": { + "type": "String", + "placeholders": {} + }, + "encryption": "Titkosítás", + "@encryption": { + "type": "String", + "placeholders": {} + }, + "encryptionNotEnabled": "Titkosítás nem engedélyezve", + "@encryptionNotEnabled": { + "type": "String", + "placeholders": {} + }, + "endedTheCall": "{senderName} befejezte a hívást", + "@endedTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "enterYourHomeserver": "Adja meg a Matrix-kiszolgálóját", + "@enterYourHomeserver": { + "type": "String", + "placeholders": {} + }, + "fileName": "Fájlnév", + "@fileName": { + "type": "String", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "String", + "placeholders": {} + }, + "forward": "Továbbítás", + "@forward": { + "type": "String", + "placeholders": {} + }, + "fromJoining": "Csatlakozás óta", + "@fromJoining": { + "type": "String", + "placeholders": {} + }, + "fromTheInvitation": "Meghívás óta", + "@fromTheInvitation": { + "type": "String", + "placeholders": {} + }, + "group": "Csoport", + "@group": { + "type": "String", + "placeholders": {} + }, + "groupIsPublic": "A csoport nyilvános", + "@groupIsPublic": { + "type": "String", + "placeholders": {} + }, + "groupWith": "Csoport {displayname}-al", + "@groupWith": { + "type": "String", + "placeholders": { + "displayname": { + "type": "String" + } + } + }, + "guestsAreForbidden": "A vendégek nem engedélyezettek", + "@guestsAreForbidden": { + "type": "String", + "placeholders": {} + }, + "guestsCanJoin": "Csatlakozhatnak vendégek", + "@guestsCanJoin": { + "type": "String", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "{username} visszavonta {targetName} meghívását", + "@hasWithdrawnTheInvitationFor": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "help": "Súgó", + "@help": { + "type": "String", + "placeholders": {} + }, + "hideRedactedEvents": "Szerkesztett események elrejtése", + "@hideRedactedEvents": { + "type": "String", + "placeholders": {} + }, + "hideUnknownEvents": "Ismeretlen események elrejtése", + "@hideUnknownEvents": { + "type": "String", + "placeholders": {} + }, + "id": "ID", + "@id": { + "type": "String", + "placeholders": {} + }, + "identity": "Azonosító", + "@identity": { + "type": "String", + "placeholders": {} + }, + "ignoredUsers": "Figyelmen kívül hagyott felhasználók", + "@ignoredUsers": { + "type": "String", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "Hibás jelmondat vagy visszaállítási kulcs", + "@incorrectPassphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "inviteContact": "Ismerős meghívása", + "@inviteContact": { + "type": "String", + "placeholders": {} + }, + "inviteContactToGroup": "Ismerős meghívása a(z) {groupName} csoportba", + "@inviteContactToGroup": { + "type": "String", + "placeholders": { + "groupName": { + "type": "String" + } + } + }, + "invited": "Meghívott", + "@invited": { + "type": "String", + "placeholders": {} + }, + "invitedUser": "📩 {username} meghívta {targetName} felhasználót", + "@invitedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "invitedUsersOnly": "Csak meghívott felhasználók", + "@invitedUsersOnly": { + "type": "String", + "placeholders": {} + }, + "inviteText": "{username} meghívta a FluffyChat-be.\n1. Keresse fel a fluffychat.im oldalt, és telepítse az alkalmazást \n2. Regisztráljon vagy jelentkezzen be \n3. Nyissa meg a meghívó linket: \n {link}", + "@inviteText": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "link": { + "type": "String" + } + } + }, + "isTyping": "épp gépel…", + "@isTyping": { + "type": "String", + "placeholders": {} + }, + "joinedTheChat": "👋 {username} csatlakozott a csevegéshez", + "@joinedTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "joinRoom": "Csatlakozás a szobához", + "@joinRoom": { + "type": "String", + "placeholders": {} + }, + "kicked": "👞 {username} kirúgta {targetName}-t", + "@kicked": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickedAndBanned": "🙅 {username} kirúgta és kitiltotta {targetName}-t", + "@kickedAndBanned": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickFromChat": "Kirúgás a csevegésből", + "@kickFromChat": { + "type": "String", + "placeholders": {} + }, + "lastActiveAgo": "Utoljára aktív: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "String", + "placeholders": { + "localizedTimeShort": { + "type": "String" + } + } + }, + "leave": "Elhagy", + "@leave": { + "type": "String", + "placeholders": {} + }, + "leftTheChat": "Elhagyta a csevegést", + "@leftTheChat": { + "type": "String", + "placeholders": {} + }, + "license": "Licenc", + "@license": { + "type": "String", + "placeholders": {} + }, + "lightTheme": "Világos", + "@lightTheme": { + "type": "String", + "placeholders": {} + }, + "loadCountMoreParticipants": "További {count} résztvevő betöltése", + "@loadCountMoreParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "loadingPleaseWait": "Betöltés… Kérem, várjon.", + "@loadingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "loadMore": "Továbbiak betöltése…", + "@loadMore": { + "type": "String", + "placeholders": {} + }, + "login": "Bejelentkezés", + "@login": { + "type": "String", + "placeholders": {} + }, + "logInTo": "Bejelentkezés a(z) {homeserver} Matrix-kiszolgálóra", + "@logInTo": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "logout": "Kijelentkezés", + "@logout": { + "type": "String", + "placeholders": {} + }, + "mention": "Megemlítés", + "@mention": { + "type": "String", + "placeholders": {} + }, + "moderator": "Moderátor", + "@moderator": { + "type": "String", + "placeholders": {} + }, + "muteChat": "Csevegés némítása", + "@muteChat": { + "type": "String", + "placeholders": {} + }, + "needPantalaimonWarning": "Jelenleg a Pantalaimon szükséges a végpontok közötti titkosítás használatához.", + "@needPantalaimonWarning": { + "type": "String", + "placeholders": {} + }, + "newMessageInFluffyChat": "💬 Új FluffyChat üzenet", + "@newMessageInFluffyChat": { + "type": "String", + "placeholders": {} + }, + "newVerificationRequest": "Új hitelesítési kérelem!", + "@newVerificationRequest": { + "type": "String", + "placeholders": {} + }, + "no": "Nem", + "@no": { + "type": "String", + "placeholders": {} + }, + "noEmotesFound": "Nem találhatóak hangulatjelek. 😕", + "@noEmotesFound": { + "type": "String", + "placeholders": {} + }, + "noGoogleServicesWarning": "Úgy tűnik a Firebase Cloud Messaging nem elérhető a készülékén. Ha mégis push értesítéseket kíván kapni, javasoljuk a ntfy telepítését. A ntfy vagy más egyéb Egyesített Push szolgáltató esetében úgy kaphat értesítést, hogy adatai biztonságban maradnak. Letöltheti a ntfy-t a PlayStore-ból, vagy F-Droid-ról is.", + "@noGoogleServicesWarning": { + "type": "String", + "placeholders": {} + }, + "none": "Nincs", + "@none": { + "type": "String", + "placeholders": {} + }, + "noPermission": "Nincs engedély", + "@noPermission": { + "type": "String", + "placeholders": {} + }, + "noRoomsFound": "Nem találhatóak szobák…", + "@noRoomsFound": { + "type": "String", + "placeholders": {} + }, + "offline": "Offline", + "@offline": { + "type": "String", + "placeholders": {} + }, + "ok": "Ok", + "@ok": { + "type": "String", + "placeholders": {} + }, + "online": "Online", + "@online": { + "type": "String", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "Online kulcsmentés engedélyezve", + "@onlineKeyBackupEnabled": { + "type": "String", + "placeholders": {} + }, + "oopsSomethingWentWrong": "Hoppá, valami hiba lépett fel…", + "@oopsSomethingWentWrong": { + "type": "String", + "placeholders": {} + }, + "openAppToReadMessages": "Alkalmazás megnyitása az üzenetek elolvasásához", + "@openAppToReadMessages": { + "type": "String", + "placeholders": {} + }, + "openCamera": "Kamera megnyitása", + "@openCamera": { + "type": "String", + "placeholders": {} + }, + "passphraseOrKey": "jelmondat vagy visszaállítási kulcs", + "@passphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "password": "Jelszó", + "@password": { + "type": "String", + "placeholders": {} + }, + "passwordHasBeenChanged": "A jelszó módosításra került", + "@passwordHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "pickImage": "Kép választása", + "@pickImage": { + "type": "String", + "placeholders": {} + }, + "pin": "Rögzítés", + "@pin": { + "type": "String", + "placeholders": {} + }, + "play": "{fileName} lejátszása", + "@play": { + "type": "String", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "pleaseEnterYourPassword": "Kérem, adja meg jelszavát", + "@pleaseEnterYourPassword": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourUsername": "Kérem, adja meg a felhasználónevét", + "@pleaseEnterYourUsername": { + "type": "String", + "placeholders": {} + }, + "privacy": "Adatvédelem", + "@privacy": { + "type": "String", + "placeholders": {} + }, + "publicRooms": "Nyilvános szobák", + "@publicRooms": { + "type": "String", + "placeholders": {} + }, + "recording": "Felvétel", + "@recording": { + "type": "String", + "placeholders": {} + }, + "redactedAnEvent": "{username} szerkesztett egy eseményt", + "@redactedAnEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "reject": "Elutasít", + "@reject": { + "type": "String", + "placeholders": {} + }, + "rejectedTheInvitation": "{username} elutasította a meghívást", + "@rejectedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "rejoin": "Újracsatlakozás", + "@rejoin": { + "type": "String", + "placeholders": {} + }, + "remove": "Eltávolítás", + "@remove": { + "type": "String", + "placeholders": {} + }, + "removeAllOtherDevices": "Minden más eszköz eltávolítása", + "@removeAllOtherDevices": { + "type": "String", + "placeholders": {} + }, + "removedBy": "{username} által eltávolítva", + "@removedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "removeDevice": "Eszköz eltávolítása", + "@removeDevice": { + "type": "String", + "placeholders": {} + }, + "unbanFromChat": "Csevegés kitiltás feloldása", + "@unbanFromChat": { + "type": "String", + "placeholders": {} + }, + "reply": "Válasz", + "@reply": { + "type": "String", + "placeholders": {} + }, + "requestPermission": "Jogosultsági kérelem", + "@requestPermission": { + "type": "String", + "placeholders": {} + }, + "roomHasBeenUpgraded": "A szoba frissítésre került", + "@roomHasBeenUpgraded": { + "type": "String", + "placeholders": {} + }, + "seenByUser": "{username} látta", + "@seenByUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "send": "Küldés", + "@send": { + "type": "String", + "placeholders": {} + }, + "sendAMessage": "Üzenet küldése", + "@sendAMessage": { + "type": "String", + "placeholders": {} + }, + "sendAudio": "Hangüzenet küldése", + "@sendAudio": { + "type": "String", + "placeholders": {} + }, + "sendFile": "Fájl küldése", + "@sendFile": { + "type": "String", + "placeholders": {} + }, + "sendImage": "Kép küldése", + "@sendImage": { + "type": "String", + "placeholders": {} + }, + "sendOriginal": "Eredeti küldése", + "@sendOriginal": { + "type": "String", + "placeholders": {} + }, + "sendVideo": "Videó küldése", + "@sendVideo": { + "type": "String", + "placeholders": {} + }, + "sentAFile": "📁 {username} küldött egy fájlt", + "@sentAFile": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAnAudio": "🎤 {username} hangüzenetet küldött", + "@sentAnAudio": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAPicture": "🖼️ {username} képet küldött", + "@sentAPicture": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentASticker": "😊 {username} matricát küldött", + "@sentASticker": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAVideo": "🎥 {username} videót küldött", + "@sentAVideo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentCallInformations": "{senderName} hívásinformációt küldött", + "@sentCallInformations": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "setInvitationLink": "Meghívó hivatkozás beállítása", + "@setInvitationLink": { + "type": "String", + "placeholders": {} + }, + "setStatus": "Állapot beállítása", + "@setStatus": { + "type": "String", + "placeholders": {} + }, + "settings": "Beállítások", + "@settings": { + "type": "String", + "placeholders": {} + }, + "share": "Megosztás", + "@share": { + "type": "String", + "placeholders": {} + }, + "sharedTheLocation": "{username} megosztotta a pozícióját", + "@sharedTheLocation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "skip": "Kihagy", + "@skip": { + "type": "String", + "placeholders": {} + }, + "sourceCode": "Forráskód", + "@sourceCode": { + "type": "String", + "placeholders": {} + }, + "startedACall": "{senderName} hívást indított", + "@startedACall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "statusExampleMessage": "Hogy érzi magát a mai napon?", + "@statusExampleMessage": { + "type": "String", + "placeholders": {} + }, + "submit": "Beküldés", + "@submit": { + "type": "String", + "placeholders": {} + }, + "systemTheme": "Rendszer", + "@systemTheme": { + "type": "String", + "placeholders": {} + }, + "theyDontMatch": "Nem egyezőek", + "@theyDontMatch": { + "type": "String", + "placeholders": {} + }, + "theyMatch": "Egyezőek", + "@theyMatch": { + "type": "String", + "placeholders": {} + }, + "title": "FluffyChat", + "@title": { + "description": "Title for the application", + "type": "String", + "placeholders": {} + }, + "tryToSendAgain": "Újraküldés megpróbálása", + "@tryToSendAgain": { + "type": "String", + "placeholders": {} + }, + "unavailable": "Nem elérhető", + "@unavailable": { + "type": "String", + "placeholders": {} + }, + "unbannedUser": "{username} feloldotta {targetName} kitiltását", + "@unbannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "unblockDevice": "Eszköz blokkolás feloldása", + "@unblockDevice": { + "type": "String", + "placeholders": {} + }, + "unknownDevice": "Ismeretlen eszköz", + "@unknownDevice": { + "type": "String", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "Ismeretlen titkosítási algoritmus", + "@unknownEncryptionAlgorithm": { + "type": "String", + "placeholders": {} + }, + "unknownEvent": "Ismeretlen esemény: '{type}'", + "@unknownEvent": { + "type": "String", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "unmuteChat": "Csevegés némítás feloldása", + "@unmuteChat": { + "type": "String", + "placeholders": {} + }, + "unpin": "Rögzítés megszüntetése", + "@unpin": { + "type": "String", + "placeholders": {} + }, + "unreadChats": "{unreadCount, plural, =1{1 olvasatlan csevegés} other{{unreadCount} olvasatlan csevegés}}", + "@unreadChats": { + "type": "String", + "placeholders": { + "unreadCount": { + "type": "int" + } + } + }, + "userAndOthersAreTyping": "{username} és {count} másik résztvevő gépel…", + "@userAndOthersAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "userAndUserAreTyping": "{username} és {username2} gépel…", + "@userAndUserAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "username2": { + "type": "String" + } + } + }, + "userIsTyping": "{username} gépel…", + "@userIsTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "userLeftTheChat": "🚪 {username} elhagyta a csevegést", + "@userLeftTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "username": "Felhasználónév", + "@username": { + "type": "String", + "placeholders": {} + }, + "userSentUnknownEvent": "{username} felhasználó {type} eseményt küldött", + "@userSentUnknownEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "type": { + "type": "String" + } + } + }, + "verify": "Hitelesít", + "@verify": { + "type": "String", + "placeholders": {} + }, + "verifyStart": "Hitelesítés megkezdése", + "@verifyStart": { + "type": "String", + "placeholders": {} + }, + "verifySuccess": "Sikeres hitelesítés!", + "@verifySuccess": { + "type": "String", + "placeholders": {} + }, + "verifyTitle": "Másik fiók hitelesítése", + "@verifyTitle": { + "type": "String", + "placeholders": {} + }, + "videoCall": "Videóhívás", + "@videoCall": { + "type": "String", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "Csevegési előzmény láthatósága", + "@visibilityOfTheChatHistory": { + "type": "String", + "placeholders": {} + }, + "visibleForAllParticipants": "Minden résztvevő számára látható", + "@visibleForAllParticipants": { + "type": "String", + "placeholders": {} + }, + "visibleForEveryone": "Bárki számára látható", + "@visibleForEveryone": { + "type": "String", + "placeholders": {} + }, + "voiceMessage": "Hangüzenet", + "@voiceMessage": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "Várakozás a partnerre, hogy elfogadja a kérést…", + "@waitingPartnerAcceptRequest": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerEmoji": "Várakozás a partnerre, hogy elfogadja a hangulatjelet…", + "@waitingPartnerEmoji": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerNumbers": "Várakozás a partnerre, hogy elfogadja a számokat…", + "@waitingPartnerNumbers": { + "type": "String", + "placeholders": {} + }, + "wallpaper": "Háttér:", + "@wallpaper": { + "type": "String", + "placeholders": {} + }, + "warning": "Figyelem!", + "@warning": { + "type": "String", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "Ki csatlakozhat a csoporthoz", + "@whoIsAllowedToJoinThisGroup": { + "type": "String", + "placeholders": {} + }, + "writeAMessage": "Írjon egy üzenetet…", + "@writeAMessage": { + "type": "String", + "placeholders": {} + }, + "yes": "Igen", + "@yes": { + "type": "String", + "placeholders": {} + }, + "you": "Ön", + "@you": { + "type": "String", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "Immáron nem vesz részt ebben a csevegésben", + "@youAreNoLongerParticipatingInThisChat": { + "type": "String", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "Kitiltották ebből a csevegésből", + "@youHaveBeenBannedFromThisChat": { + "type": "String", + "placeholders": {} + }, + "withTheseAddressesRecoveryDescription": "Ezekkel a címekkel vissza tudja állítani a jelszavát.", + "@withTheseAddressesRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "weSentYouAnEmail": "Küldtünk Önnek egy emailt", + "@weSentYouAnEmail": { + "type": "String", + "placeholders": {} + }, + "passwordRecovery": "Jelszó visszaállítás", + "@passwordRecovery": { + "type": "String", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "Még nem adott meg semmilyen módszert a jelszava visszaállítására.", + "@noPasswordRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "inviteForMe": "Meghívás számomra", + "@inviteForMe": { + "type": "String", + "placeholders": {} + }, + "iHaveClickedOnLink": "Rákattintottam a linkre", + "@iHaveClickedOnLink": { + "type": "String", + "placeholders": {} + }, + "enterAnEmailAddress": "Adjon meg egy email címet", + "@enterAnEmailAddress": { + "type": "String", + "placeholders": {} + }, + "encrypted": "Titkosított", + "@encrypted": { + "type": "String", + "placeholders": {} + }, + "edit": "Szerkeszt", + "@edit": { + "type": "String", + "placeholders": {} + }, + "directChats": "Privát Csevegések", + "@directChats": { + "type": "String", + "placeholders": {} + }, + "deviceId": "Eszköz ID", + "@deviceId": { + "type": "String", + "placeholders": {} + }, + "botMessages": "Bot üzenetek", + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "repeatPassword": "Jelszó ismétlése", + "@repeatPassword": {}, + "addEmail": "E-mail-cím hozzáadása", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "all": "Összes", + "@all": { + "type": "String", + "placeholders": {} + }, + "allChats": "Összes csevegés", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "autoplayImages": "Animált matricák és hangulatjelek automatikus lejátszása", + "@autoplayImages": { + "type": "String", + "placeholder": {} + }, + "sendOnEnter": "Küldés Enterrel", + "@sendOnEnter": {}, + "cantOpenUri": "Nem sikerült a következő URI megnyitása: {uri}", + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "changeYourAvatar": "Profilkép módosítása", + "@changeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "addToSpace": "Hozzáadás a térhez", + "@addToSpace": {}, + "areYouSureYouWantToLogout": "Biztosan kijelentkezik?", + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "badServerLoginTypesException": "A Matrix-kiszolgáló a következő bejelentkezéseket támogatja:\n{serverVersions}\nDe ez az alkalmazást csak ezeket támogatja:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "blocked": "Blokkolva", + "@blocked": { + "type": "String", + "placeholders": {} + }, + "appLock": "Alkalmazás zár", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "commandHint_myroomnick": "Megjelenített nevének hozzárendelése a szobához", + "@commandHint_myroomnick": { + "type": "String", + "description": "Usage hint for the command /myroomnick" + }, + "commandHint_plain": "Formázatlan szöveg küldése", + "@commandHint_plain": { + "type": "String", + "description": "Usage hint for the command /plain" + }, + "commandHint_send": "Szöveg küldése", + "@commandHint_send": { + "type": "String", + "description": "Usage hint for the command /send" + }, + "contentHasBeenReported": "A tartalom jelentésre került a szerver adminisztrátorok számára", + "@contentHasBeenReported": { + "type": "String", + "placeholders": {} + }, + "commandHint_myroomavatar": "Profilképe hozzárendelése a szobához (mxc URI használatával)", + "@commandHint_myroomavatar": { + "type": "String", + "description": "Usage hint for the command /myroomavatar" + }, + "copyToClipboard": "Vágólapra másolás", + "@copyToClipboard": { + "type": "String", + "placeholders": {} + }, + "editRoomAliases": "Szoba álnevek szerkesztése", + "@editRoomAliases": { + "type": "String", + "placeholders": {} + }, + "editRoomAvatar": "Szoba-profilkép szerkesztése", + "@editRoomAvatar": { + "type": "String", + "placeholders": {} + }, + "enableEncryption": "Titkosítás engedélyezése", + "@enableEncryption": { + "type": "String", + "placeholders": {} + }, + "extremeOffensive": "Rendkívül sértő", + "@extremeOffensive": { + "type": "String", + "placeholders": {} + }, + "fontSize": "Betűméret", + "@fontSize": { + "type": "String", + "placeholders": {} + }, + "everythingReady": "Minden kész!", + "@everythingReady": { + "type": "String", + "placeholders": {} + }, + "groups": "Csoportok", + "@groups": { + "type": "String", + "placeholders": {} + }, + "howOffensiveIsThisContent": "Mennyire sértő ez a tartalom?", + "@howOffensiveIsThisContent": { + "type": "String", + "placeholders": {} + }, + "inoffensive": "Nem sértő", + "@inoffensive": { + "type": "String", + "placeholders": {} + }, + "locationPermissionDeniedNotice": "A helymeghatározás visszautasításra került. Kérem engedélyezze, hogy meg tudja osztani helyzetét.", + "@locationPermissionDeniedNotice": { + "type": "String", + "placeholders": {} + }, + "newChat": "Új csevegés", + "@newChat": { + "type": "String", + "placeholders": {} + }, + "scanQrCode": "QR kód beolvasása", + "@scanQrCode": {}, + "notificationsEnabledForThisAccount": "Értesítések be vannak kapcsolva ebben a fiókban", + "@notificationsEnabledForThisAccount": { + "type": "String", + "placeholders": {} + }, + "offensive": "Sértő", + "@offensive": { + "type": "String", + "placeholders": {} + }, + "oopsPushError": "Hoppá! Sajnos hiba lépett fel a push értesítések beállításakor.", + "@oopsPushError": { + "type": "String", + "placeholders": {} + }, + "commandHint_create": "Egy üres csevegő csoport létrehozása\nA --no-encryption paraméterrel feloldhatja a titkosítást", + "@commandHint_create": { + "type": "String", + "description": "Usage hint for the command /create" + }, + "commandHint_invite": "Adott felhasználó meghívása ebbe a szobába", + "@commandHint_invite": { + "type": "String", + "description": "Usage hint for the command /invite" + }, + "locationDisabledNotice": "A helymeghatározás ki van kapcsolva. Kérem, kapcsolja be, hogy meg tudja osztani helyzetét.", + "@locationDisabledNotice": { + "type": "String", + "placeholders": {} + }, + "homeserver": "Matrix-kiszolgáló", + "@homeserver": {}, + "chatBackup": "Csevegés biztonsági mentés", + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "ignore": "Figyelmen kívül hagyás", + "@ignore": { + "type": "String", + "placeholders": {} + }, + "next": "Következő", + "@next": { + "type": "String", + "placeholders": {} + }, + "yourChatBackupHasBeenSetUp": "A csevegés biztonsági mentés beállításra került.", + "@yourChatBackupHasBeenSetUp": {}, + "chatBackupDescription": "A régebbi beszélgetései egy biztonsági kulccsal vannak védve. Bizonyosodjon meg róla, hogy nem veszíti el.", + "@chatBackupDescription": { + "type": "String", + "placeholders": {} + }, + "containsDisplayName": "Tartalmazza a megjelenített nevet", + "@containsDisplayName": { + "type": "String", + "placeholders": {} + }, + "containsUserName": "Tartalmazza a felhasználónevet", + "@containsUserName": { + "type": "String", + "placeholders": {} + }, + "goToTheNewRoom": "Ugrás az új szobába", + "@goToTheNewRoom": { + "type": "String", + "placeholders": {} + }, + "noConnectionToTheServer": "Nem elérhető a szerver", + "@noConnectionToTheServer": { + "type": "String", + "placeholders": {} + }, + "noEncryptionForPublicRooms": "Csak akkor kapcsolható be a titkosítás, ha a szoba nem nyilvánosan hozzáférhető.", + "@noEncryptionForPublicRooms": { + "type": "String", + "placeholders": {} + }, + "chatHasBeenAddedToThisSpace": "Csevegés hozzáadva a térhez", + "@chatHasBeenAddedToThisSpace": {}, + "chats": "Csevegések", + "@chats": { + "type": "String", + "placeholders": {} + }, + "clearArchive": "Archívum ürítése", + "@clearArchive": {}, + "commandHint_ban": "Adott felhasználó kitiltása a szobából", + "@commandHint_ban": { + "type": "String", + "description": "Usage hint for the command /ban" + }, + "commandHint_clearcache": "Gyorsítótár törlése", + "@commandHint_clearcache": { + "type": "String", + "description": "Usage hint for the command /clearcache" + }, + "commandHint_discardsession": "Munkamenet elvetése", + "@commandHint_discardsession": { + "type": "String", + "description": "Usage hint for the command /discardsession" + }, + "commandHint_dm": "Közvetlen csevegés indítása\nA --no-encryption paraméterrel kikapcsolhatja a titkosítást", + "@commandHint_dm": { + "type": "String", + "description": "Usage hint for the command /dm" + }, + "commandHint_html": "HTML formázott szöveg küldése", + "@commandHint_html": { + "type": "String", + "description": "Usage hint for the command /html" + }, + "commandHint_join": "Csatlakozás a megadott szobához", + "@commandHint_join": { + "type": "String", + "description": "Usage hint for the command /join" + }, + "commandHint_kick": "A megadott felhasználó kirúgása a szobából", + "@commandHint_kick": { + "type": "String", + "description": "Usage hint for the command /kick" + }, + "commandHint_leave": "Szoba elhagyása", + "@commandHint_leave": { + "type": "String", + "description": "Usage hint for the command /leave" + }, + "commandInvalid": "Érvénytelen parancs", + "@commandInvalid": { + "type": "String" + }, + "commandMissing": "{command} nem egy parancs.", + "@commandMissing": { + "type": "String", + "placeholders": { + "command": { + "type": "String" + } + }, + "description": "State that {command} is not a valid /command." + }, + "configureChat": "Csevegés konfigurálása", + "@configureChat": { + "type": "String", + "placeholders": {} + }, + "createNewSpace": "Új tér", + "@createNewSpace": { + "type": "String", + "placeholders": {} + }, + "defaultPermissionLevel": "Alapértelmezett hozzáférési szint új felhasználóknál", + "@defaultPermissionLevel": { + "type": "String", + "placeholders": {} + }, + "errorObtainingLocation": "Hiba a helymeghatározáskor: {error}", + "@errorObtainingLocation": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "memberChanges": "Tagi változások", + "@memberChanges": { + "type": "String", + "placeholders": {} + }, + "messages": "Üzenetek", + "@messages": { + "type": "String", + "placeholders": {} + }, + "noMatrixServer": "{server1} nem egy Matrix szerver, akarja használja a {server2} szervert inkább?", + "@noMatrixServer": { + "type": "String", + "placeholders": { + "server1": { + "type": "String" + }, + "server2": { + "type": "String" + } + } + }, + "notifications": "Értesítések", + "@notifications": { + "type": "String", + "placeholders": {} + }, + "numUsersTyping": "{count} felhasználó gépel…", + "@numUsersTyping": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "obtainingLocation": "Tartózkodási hely lekérése…", + "@obtainingLocation": { + "type": "String", + "placeholders": {} + }, + "openVideoCamera": "Kamera megnyitása videóhoz", + "@openVideoCamera": { + "type": "String", + "placeholders": {} + }, + "badServerVersionsException": "A Matrix-kiszolgáló ezeket a specifikált verziókat támogatja:\n{serverVersions}\nAzonban ez az app csak a következőket: {supportedVersions}", + "@badServerVersionsException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "commandHint_me": "Írja le magát", + "@commandHint_me": { + "type": "String", + "description": "Usage hint for the command /me" + }, + "commandHint_op": "Az adott felhasználó hozzáférési szintjének megadása (alapértelmezett: 50)", + "@commandHint_op": { + "type": "String", + "description": "Usage hint for the command /op" + }, + "commandHint_react": "Válasz küldése reakcióként", + "@commandHint_react": { + "type": "String", + "description": "Usage hint for the command /react" + }, + "commandHint_unban": "Adott felhasználó kitiltásának feloldása a szobához", + "@commandHint_unban": { + "type": "String", + "description": "Usage hint for the command /unban" + }, + "editBlockedServers": "Blokkolt szerverek szerkesztése", + "@editBlockedServers": { + "type": "String", + "placeholders": {} + }, + "dehydrate": "Munkamenet exportálása és az eszköz törlése", + "@dehydrate": {}, + "dehydrateWarning": "Ez nem visszavonható. Bizonyosodjon meg róla, hogy biztonságos helyre menti a fájlt.", + "@dehydrateWarning": {}, + "dehydrateTor": "TOR felhasználók: Munkamenet exportálása", + "@dehydrateTor": {}, + "dehydrateTorLong": "TOR felhasználóknak ajánlott a munkamenet exportálása az ablak bezárása előtt.", + "@dehydrateTorLong": {}, + "hydrateTor": "TOR felhasználóknak: munkamenet export importálása", + "@hydrateTor": {}, + "hydrate": "Visszaállítás mentett fájlból", + "@hydrate": {}, + "link": "Hivatkozás", + "@link": {}, + "redactMessage": "Üzenet szerkesztése", + "@redactMessage": { + "type": "String", + "placeholders": {} + }, + "people": "Emberek", + "@people": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPin": "Kérem, írja be PIN kódját", + "@pleaseEnterYourPin": { + "type": "String", + "placeholders": {} + }, + "cuddleContent": "{senderName} hozzád bújik", + "@cuddleContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "commandHint_markasgroup": "Jelölés csoportnak", + "@commandHint_markasgroup": {}, + "addAccount": "Fiók hozzáadása", + "@addAccount": {}, + "search": "Keresés", + "@search": { + "type": "String", + "placeholders": {} + }, + "commandHint_googly": "Gülüszemek küldése", + "@commandHint_googly": {}, + "commandHint_cuddle": "Összebújás küldése", + "@commandHint_cuddle": {}, + "sendMessages": "Üzenetek küldése", + "@sendMessages": { + "type": "String", + "placeholders": {} + }, + "sendSticker": "Matrica küldése", + "@sendSticker": { + "type": "String", + "placeholders": {} + }, + "reportMessage": "Üzenet jelentése", + "@reportMessage": { + "type": "String", + "placeholders": {} + }, + "participant": "Résztvevő", + "@participant": { + "type": "String", + "placeholders": {} + }, + "passwordForgotten": "Elfelejtett jelszó", + "@passwordForgotten": { + "type": "String", + "placeholders": {} + }, + "roomVersion": "Szoba verzió", + "@roomVersion": { + "type": "String", + "placeholders": {} + }, + "confirmMatrixId": "Kérem, igazolja vissza Matrix ID-jét a fiók törléséhez.", + "@confirmMatrixId": {}, + "or": "Vagy", + "@or": { + "type": "String", + "placeholders": {} + }, + "pleaseChoose": "Kérem, válasszon", + "@pleaseChoose": { + "type": "String", + "placeholders": {} + }, + "commandHint_hug": "Ölelés küldése", + "@commandHint_hug": {}, + "reason": "Indok", + "@reason": { + "type": "String", + "placeholders": {} + }, + "register": "Regisztráció", + "@register": { + "type": "String", + "placeholders": {} + }, + "saveFile": "Fájl mentése", + "@saveFile": { + "type": "String", + "placeholders": {} + }, + "googlyEyesContent": "{senderName} gülüszemeket küld", + "@googlyEyesContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "openInMaps": "Megnyitás térképen", + "@openInMaps": { + "type": "String", + "placeholders": {} + }, + "pleaseEnter4Digits": "Írjon be 4 számjegyet, vagy hagyja üresen a zár kikapcsolásához.", + "@pleaseEnter4Digits": { + "type": "String", + "placeholders": {} + }, + "security": "Biztonság", + "@security": { + "type": "String", + "placeholders": {} + }, + "notAnImage": "Nem kép fájl.", + "@notAnImage": {}, + "showPassword": "Jelszó megjelenítése", + "@showPassword": { + "type": "String", + "placeholders": {} + }, + "hugContent": "{senderName} megölel", + "@hugContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "jumpToLastReadMessage": "Az utoljára olvasott üzenethez ugrás", + "@jumpToLastReadMessage": {}, + "allRooms": "Minden Csoport Csevegés", + "@allRooms": { + "type": "String", + "placeholders": {} + }, + "widgetVideo": "Videó", + "@widgetVideo": {}, + "dismiss": "Elvetés", + "@dismiss": {}, + "reportErrorDescription": "😭 Sajnos, valami félresiklott. Ha kívánja, jelezheti a bugot a fejlesztőknek.", + "@reportErrorDescription": {}, + "setPermissionsLevel": "Engedélyszint beállítása", + "@setPermissionsLevel": { + "type": "String", + "placeholders": {} + }, + "removeYourAvatar": "Profilképének törlése", + "@removeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "unsupportedAndroidVersion": "Nem támogatott Android verzió", + "@unsupportedAndroidVersion": {}, + "widgetJitsi": "Jitsi Meet", + "@widgetJitsi": {}, + "messageType": "Üzenet típus", + "@messageType": {}, + "indexedDbErrorLong": "Sajnos az üzenet mentés alapból nincs bekapcsolva privát módban.\nKeresse meg a\n - about:config\n - állítsa a dom.indexedDB.privateBrowsing.enabled \"true\"-ra\nMáskülönben nem lehetséges a FluffyChat futtatása.", + "@indexedDbErrorLong": {}, + "oneClientLoggedOut": "Az egyik kliense kijelentkezett", + "@oneClientLoggedOut": {}, + "toggleMuted": "Némítottak megjelenítése", + "@toggleMuted": { + "type": "String", + "placeholders": {} + }, + "startFirstChat": "Kezdje meg első csevegését", + "@startFirstChat": {}, + "callingAccount": "Hívási fiók", + "@callingAccount": {}, + "setColorTheme": "Szín séma beállítása:", + "@setColorTheme": {}, + "nextAccount": "Következő fiók", + "@nextAccount": {}, + "singlesignon": "Egyszeri Bejelentkezés", + "@singlesignon": { + "type": "String", + "placeholders": {} + }, + "allSpaces": "Minden tér", + "@allSpaces": {}, + "supposedMxid": "{mxid}-nek kell lennie", + "@supposedMxid": { + "type": "String", + "placeholders": { + "mxid": { + "type": "String" + } + } + }, + "user": "Felhasználó", + "@user": {}, + "youAcceptedTheInvitation": "👍 Elfogadta a meghívást", + "@youAcceptedTheInvitation": {}, + "youInvitedBy": "📩 {user} jóvoltából kapott meghívást", + "@youInvitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "banUserDescription": "A felhasználó kitiltásra kerül a csevegésből, és nem fog tudni visszajönni egészen a kitiltás feloldásáig.", + "@banUserDescription": {}, + "widgetEtherpad": "Szöveges megjegyzés", + "@widgetEtherpad": {}, + "removeDevicesDescription": "Ki fog jelentkezni a készülékről, és többé nem fog tudni fogadni üzeneteket.", + "@removeDevicesDescription": {}, + "separateChatTypes": "Csoportok és privát üzenetek elkülönítése", + "@separateChatTypes": { + "type": "String", + "placeholders": {} + }, + "tryAgain": "Próbálja újra", + "@tryAgain": {}, + "youKickedAndBanned": "🙅 Kirúgta és kitiltotta {user}-t", + "@youKickedAndBanned": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "unbanUserDescription": "A felhasználó vissza tud jönni a csevegésbe ha akar.", + "@unbanUserDescription": {}, + "pleaseClickOnLink": "Kérem, kattintson a linkre az emailben, és folytassa a műveletet.", + "@pleaseClickOnLink": { + "type": "String", + "placeholders": {} + }, + "youRejectedTheInvitation": "Visszautasította a meghívást", + "@youRejectedTheInvitation": {}, + "otherCallingPermissions": "Mikrofon, kamera, és más egyéb FluffyChat engedélyek", + "@otherCallingPermissions": {}, + "messagesStyle": "Üzenetek:", + "@messagesStyle": {}, + "widgetUrlError": "Helytelen hivatkozás.", + "@widgetUrlError": {}, + "emailOrUsername": "Email vagy felhasználónév", + "@emailOrUsername": {}, + "newSpaceDescription": "A terek lehetővé teszik a csevegések konszolidációját, ezáltal létrehozva publikus vagy privát közösségeket.", + "@newSpaceDescription": {}, + "chatDescription": "Csevegés leírás", + "@chatDescription": {}, + "callingAccountDetails": "Engedélyezés a FluffyChat számára hogy használja a natív android hívás applikációt.", + "@callingAccountDetails": {}, + "pleaseFollowInstructionsOnWeb": "Kérem, kövesse az instrukciókat az oldalon, és nyomjon a tovább gombra.", + "@pleaseFollowInstructionsOnWeb": { + "type": "String", + "placeholders": {} + }, + "enterSpace": "Belépés a térre", + "@enterSpace": {}, + "encryptThisChat": "A csevegés titkosítása", + "@encryptThisChat": {}, + "previousAccount": "Előző fiók", + "@previousAccount": {}, + "reopenChat": "Csevegés újranyitása", + "@reopenChat": {}, + "pleaseEnterRecoveryKey": "Kérem, adja meg a visszaállító kódját:", + "@pleaseEnterRecoveryKey": {}, + "toggleFavorite": "Kedvencek megjelenítése", + "@toggleFavorite": { + "type": "String", + "placeholders": {} + }, + "widgetNameError": "Kérem adjon meg egy megjelenítendő nevet.", + "@widgetNameError": {}, + "addToBundle": "Hozzáadás fiókcsoporthoz", + "@addToBundle": {}, + "spaceIsPublic": "A tér publikus", + "@spaceIsPublic": { + "type": "String", + "placeholders": {} + }, + "addWidget": "Widget hozzáadása", + "@addWidget": {}, + "countFiles": "{count} fájl", + "@countFiles": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "noKeyForThisMessage": "Akkor fordulhat elő, ha az üzenet az eszközre való bejelentkezés előtt került küldésre.\n\nAz is elképzelhető, hogy a küldő blokkolta az eszközét, vagy valami probléma lépett fel az internet kapcsolatban.\n\nMás helyen látja az üzenetet? Akkor át tudja másolni ide is! Menjen a Beállítások > Eszközök részbe, és győződjön meg róla, hogy az eszközei megerősítették egymást. Legközelebb amikor ezt a szobát megnyitja, és mind a két kliens az előtérben van, akkor szikronizálódni fognak.\n\nNem akarja elveszíteni a kulcsokat amikor kijelentkezik, vagy eszközt cserél? Győződjön meg róla, hogy bekapcsolta a chat mentést a beállításokban.", + "@noKeyForThisMessage": {}, + "shareLocation": "Pozíció megosztása", + "@shareLocation": { + "type": "String", + "placeholders": {} + }, + "pushNotificationsNotAvailable": "Push értesítések nem elérhetőek", + "@pushNotificationsNotAvailable": {}, + "storeInAppleKeyChain": "Tárolás az Apple KeyChain-be", + "@storeInAppleKeyChain": {}, + "replaceRoomWithNewerVersion": "Szoba cserélése egy újabb verzióra", + "@replaceRoomWithNewerVersion": { + "type": "String", + "placeholders": {} + }, + "invalidServerName": "Hibás szerver név", + "@invalidServerName": {}, + "chatPermissions": "Csevegés engedélyek", + "@chatPermissions": {}, + "wipeChatBackup": "Le kívánja törölni a chat mentését, hogy létrehozhasson egy új visszaállítási kulcsot?", + "@wipeChatBackup": { + "type": "String", + "placeholders": {} + }, + "sender": "Küldő", + "@sender": {}, + "storeInAndroidKeystore": "Tárolás az Android KeyStore-ba", + "@storeInAndroidKeystore": {}, + "signInWithPassword": "Bejelentkezés jelszóval", + "@signInWithPassword": {}, + "makeAdminDescription": "Miután a felhasználót aminisztrátorrá lépteti elő, nem fogja tudni visszavonni döntését, mivel azonos jogosultsági szinttel fognak rendelkezni.", + "@makeAdminDescription": {}, + "synchronizingPleaseWait": "Szinkronizálás... Kérem, várjon.", + "@synchronizingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "transferFromAnotherDevice": "Átvitel másik eszközről", + "@transferFromAnotherDevice": { + "type": "String", + "placeholders": {} + }, + "pushRules": "Push szabályok", + "@pushRules": { + "type": "String", + "placeholders": {} + }, + "saveKeyManuallyDescription": "A kulcs manuális mentése rendszer megosztás vagy vágólap másolás segítségével.", + "@saveKeyManuallyDescription": {}, + "editBundlesForAccount": "Fiókcsoportok szerkesztése ehhez a fiókhoz", + "@editBundlesForAccount": {}, + "whyIsThisMessageEncrypted": "Miért olvashatatlan ez az üzenet?", + "@whyIsThisMessageEncrypted": {}, + "setChatDescription": "Csevegés leírás beállítása", + "@setChatDescription": {}, + "spaceName": "Tér név", + "@spaceName": { + "type": "String", + "placeholders": {} + }, + "importFromZipFile": "Importálás zip fájlból", + "@importFromZipFile": {}, + "toggleUnread": "Jelölés Olvasottként/Olvasatlanként", + "@toggleUnread": { + "type": "String", + "placeholders": {} + }, + "noOtherDevicesFound": "Nem található más eszköz", + "@noOtherDevicesFound": {}, + "redactedBy": "{username} által szerkesztve", + "@redactedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "videoCallsBetaWarning": "Kérem vegye figyelembe, hogy a videó hívások jelenleg béta fázisban vannak. Nem biztos, hogy megfelelően fognak működni, vagy egyáltalán elindulnak egyes platformokon.", + "@videoCallsBetaWarning": {}, + "signInWith": "Bejelentkezés a {provider} kiszolgálóval", + "@signInWith": { + "type": "String", + "placeholders": { + "provider": { + "type": "String" + } + } + }, + "fileIsTooBigForServer": "Nem küldhető el! A szerver csak {max} határig enged csatolmányokat.", + "@fileIsTooBigForServer": {}, + "verified": "Hitelesített", + "@verified": { + "type": "String", + "placeholders": {} + }, + "callingPermissions": "Hívási engedélyek", + "@callingPermissions": {}, + "readUpToHere": "Olvasás idáig", + "@readUpToHere": {}, + "start": "Kezdés", + "@start": {}, + "unlockOldMessages": "Régi üzenetek feloldása", + "@unlockOldMessages": {}, + "numChats": "{number} csevegés", + "@numChats": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "optionalRedactReason": "(Választható) A szerkesztés oka...", + "@optionalRedactReason": {}, + "sendAsText": "Küldés szövegként", + "@sendAsText": { + "type": "String" + }, + "archiveRoomDescription": "A csevegés bekerül az archívumba. Más felhasználók látni fogják, hogy elhagyta a csevegést.", + "@archiveRoomDescription": {}, + "exportEmotePack": "Emojicsomag exportálása zip-be", + "@exportEmotePack": {}, + "switchToAccount": "A {number} számú fiókra váltás", + "@switchToAccount": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "setAsCanonicalAlias": "Beállítás alapértelmezett álnévként", + "@setAsCanonicalAlias": { + "type": "String", + "placeholders": {} + }, + "whyDoYouWantToReportThis": "Miért kívánja ezt bejelenteni?", + "@whyDoYouWantToReportThis": { + "type": "String", + "placeholders": {} + }, + "experimentalVideoCalls": "Kísérleti videó hívások", + "@experimentalVideoCalls": {}, + "pleaseEnterRecoveryKeyDescription": "A régi üzenetei feloldásához adja meg a korábban generált visszaállítási jelszavát. A visszaállítási jelszó NEM EGYEZIK MEG a jelszóval.", + "@pleaseEnterRecoveryKeyDescription": {}, + "inviteContactToGroupQuestion": "Meg kívánja hívni {contact} ismerősét a \"{groupName}\" csevegő csoportba?", + "@inviteContactToGroupQuestion": {}, + "redactedByBecause": "{username} által szerkesztve, mivel: \"{reason}\"", + "@redactedByBecause": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "reason": { + "type": "String" + } + } + }, + "youHaveWithdrawnTheInvitationFor": "Visszavonta {user} meghívását", + "@youHaveWithdrawnTheInvitationFor": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "appearOnTopDetails": "Engedélyezi az app számára, hogy mindig legfelül jelenjen meg (nem szükséges, ha a FluffyChat hívó fiókként lett beállítva)", + "@appearOnTopDetails": {}, + "enterRoom": "Belépés a szobába", + "@enterRoom": {}, + "pleaseChooseAPasscode": "Kérem, válasszon egy kódot", + "@pleaseChooseAPasscode": { + "type": "String", + "placeholders": {} + }, + "reportUser": "Felhasználó jelentése", + "@reportUser": {}, + "confirmEventUnpin": "Biztosan végleg le akarja venni a kitűzött eseményt?", + "@confirmEventUnpin": {}, + "youInvitedUser": "📩 Meghívta {user}-t", + "@youInvitedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "fileHasBeenSavedAt": "A fájl mentésre került a következő elérési úton {path}", + "@fileHasBeenSavedAt": { + "type": "String", + "placeholders": { + "path": { + "type": "String" + } + } + }, + "redactMessageDescription": "A társalgásban összes résztvevője számára módosításra kerül az üzenet. Ez nem visszavonható.", + "@redactMessageDescription": {}, + "recoveryKey": "Visszaállító kulcs", + "@recoveryKey": {}, + "invalidInput": "Hibás bevitel!", + "@invalidInput": {}, + "yourPublicKey": "A publikus kulcsa", + "@yourPublicKey": { + "type": "String", + "placeholders": {} + }, + "tooManyRequestsWarning": "Túl sok egyidejű kérelem. Kérem próbálja meg később!", + "@tooManyRequestsWarning": { + "type": "String", + "placeholders": {} + }, + "doNotShowAgain": "Ne mutassa újra", + "@doNotShowAgain": {}, + "report": "jelentés", + "@report": {}, + "status": "Állapot", + "@status": { + "type": "String", + "placeholders": {} + }, + "unverified": "Hitelesítetlen", + "@unverified": {}, + "serverRequiresEmail": "Ehhez a szerverhez szükséges az email címének visszaigazolása.", + "@serverRequiresEmail": {}, + "hideUnimportantStateEvents": "Jelentéktelen esemény státuszok elrejtése", + "@hideUnimportantStateEvents": {}, + "screenSharingTitle": "képernyő megosztás", + "@screenSharingTitle": {}, + "widgetCustom": "Egyedi", + "@widgetCustom": {}, + "addToSpaceDescription": "Válassza ki melyik térhez kívánja hozzáadni a csevegést.", + "@addToSpaceDescription": {}, + "youBannedUser": "Letitotta {user} felhasználót", + "@youBannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "addChatDescription": "Chat leírás hozzáadása...", + "@addChatDescription": {}, + "hasKnocked": "🚪 {user} bekopogott", + "@hasKnocked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "publish": "Közzététel", + "@publish": {}, + "openLinkInBrowser": "Hivatkozás megnyitása böngészőben", + "@openLinkInBrowser": {}, + "messageInfo": "Üzenet információ", + "@messageInfo": {}, + "disableEncryptionWarning": "Biztonsági okokból nem kapcsolható ki egy korábban bekapcsolt csevegés titkosítás.", + "@disableEncryptionWarning": {}, + "directChat": "Privát csevegés", + "@directChat": {}, + "wrongPinEntered": "Hibás pinkódot adott meg! Próbálja újra {seconds} mp múlva...", + "@wrongPinEntered": { + "type": "String", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "sendTypingNotifications": "Gépelési értesítés megjelenítése", + "@sendTypingNotifications": {}, + "inviteGroupChat": "📨 Meghívó a csoportba", + "@inviteGroupChat": {}, + "appearOnTop": "Megjelenés legfelül", + "@appearOnTop": {}, + "invitePrivateChat": "📨 Meghívó privát csevegéshez", + "@invitePrivateChat": {}, + "foregroundServiceRunning": "Ez az értesítés akkor jelenik meg ha az előtéri szolgáltatás fut.", + "@foregroundServiceRunning": {}, + "voiceCall": "Hang hívás", + "@voiceCall": {}, + "importEmojis": "Emojik importálása", + "@importEmojis": {}, + "wasDirectChatDisplayName": "Üres csevegés (korábban {oldDisplayName})", + "@wasDirectChatDisplayName": { + "type": "String", + "placeholders": { + "oldDisplayName": { + "type": "String" + } + } + }, + "noChatDescriptionYet": "Még nincs csevegő szoba leírás.", + "@noChatDescriptionYet": {}, + "removeFromBundle": "Eltávolítás a fiókcsoportból", + "@removeFromBundle": {}, + "whoCanPerformWhichAction": "Ki milyen műveletet végezhet", + "@whoCanPerformWhichAction": { + "type": "String", + "placeholders": {} + }, + "learnMore": "Tudjon meg többet", + "@learnMore": {}, + "users": "Felhasználók", + "@users": {}, + "openGallery": "Galéria megnyitása", + "@openGallery": {}, + "chatDescriptionHasBeenChanged": "A csevegés leírás megváltozott", + "@chatDescriptionHasBeenChanged": {}, + "newGroup": "Új csoport", + "@newGroup": {}, + "bundleName": "Fiókcsoport neve", + "@bundleName": {}, + "removeFromSpace": "Eltávolítás a térről", + "@removeFromSpace": {}, + "roomUpgradeDescription": "A csevegés újra elkészül az új szoba verzióval. Minden résztvevő értesítést kap, hogy át kell állniuk az új csevegésre. További információkért a szoba verziókról látogasson el a https://spec.matrix.org/latest/rooms/ címre", + "@roomUpgradeDescription": {}, + "pleaseEnterANumber": "Adjon meg egy 0-nál nagyobb számot", + "@pleaseEnterANumber": {}, + "youKicked": "👞 Kirúgta {user}-t", + "@youKicked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "profileNotFound": "A felhasználó nem található a szerveren. Lehetséges, hogy csatlakozási problémák adódtak, vagy nem létezik a felhasználó.", + "@profileNotFound": {}, + "jump": "Ugrás", + "@jump": {}, + "reactedWith": "{sender} a következőképp reagált: {reaction}", + "@reactedWith": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "reaction": { + "type": "String" + } + } + }, + "sorryThatsNotPossible": "Ez sajnos nem lehetséges", + "@sorryThatsNotPossible": {}, + "videoWithSize": "Videó ({size})", + "@videoWithSize": { + "type": "String", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "shareInviteLink": "Meghívó link megosztása", + "@shareInviteLink": {}, + "commandHint_markasdm": "Szoba megjelölése mint közvetlen csevegő szoba az adott Matrix ID-nél", + "@commandHint_markasdm": {}, + "recoveryKeyLost": "Elveszett visszaállító kulcs?", + "@recoveryKeyLost": {}, + "deviceKeys": "Eszköz kulcsok:", + "@deviceKeys": {}, + "emoteKeyboardNoRecents": "A nemrég használt hangulatjelek fognak itt megjelenni...", + "@emoteKeyboardNoRecents": { + "type": "String", + "placeholders": {} + }, + "setCustomEmotes": "Egyedi hangulatjelek beállítása", + "@setCustomEmotes": { + "type": "String", + "placeholders": {} + }, + "setTheme": "Téma beállítása:", + "@setTheme": {}, + "youJoinedTheChat": "Becsatlakozott a csevegésbe", + "@youJoinedTheChat": {}, + "markAsRead": "Olvasottként megjelölés", + "@markAsRead": {}, + "widgetName": "Név", + "@widgetName": {}, + "errorAddingWidget": "Hiba lépett fel a widget hozzáadásánál.", + "@errorAddingWidget": {}, + "replace": "Kicserél", + "@replace": {}, + "youUnbannedUser": "Levette a letiltást {user}-ről", + "@youUnbannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "newSpace": "Új tér", + "@newSpace": {}, + "emojis": "Hangulatjelek", + "@emojis": {}, + "pleaseTryAgainLaterOrChooseDifferentServer": "Próbálja meg később, vagy válasszon másik szervert.", + "@pleaseTryAgainLaterOrChooseDifferentServer": {}, + "createGroup": "Csoport létrehozása", + "@createGroup": {}, + "hydrateTorLong": "Legutóbb TOR segítségével exportálta korábbi munkamenetét? Gyorsan importálja őket vissza, és folytassa a csevegést.", + "@hydrateTorLong": {}, + "time": "Idő", + "@time": {}, + "custom": "Egyedi", + "@custom": {}, + "noBackupWarning": "Figyelem! Ha nem kapcsolja be a csevegés mentést, elveszíti a hozzáférést a tikosított üzeneteihez. Erősen ajánlott a csevegés mentés bekapcsolása kijelentkezés előtt.", + "@noBackupWarning": {}, + "storeInSecureStorageDescription": "Tárolja a visszaállítási kulcsot az eszköz biztonsági tárjában.", + "@storeInSecureStorageDescription": {}, + "openChat": "Csevegés megnyitása", + "@openChat": {}, + "kickUserDescription": "A felhasználó kirúgásra került a csevegésből, de nincs kitiltva. Publikus csevegés esetén a felhasználó bármikor visszatérhet.", + "@kickUserDescription": {}, + "importNow": "Importálás most", + "@importNow": {}, + "pinMessage": "Kitűzés a szobában", + "@pinMessage": {}, + "invite": "Meghívás", + "@invite": {}, + "enableMultiAccounts": "(BÉTA) Több fiók bekapcsolása az eszközön", + "@enableMultiAccounts": {}, + "indexedDbErrorTitle": "Privát mód problémák", + "@indexedDbErrorTitle": {}, + "unsupportedAndroidVersionLong": "Ehhez a funkcióhoz egy újabb Android verzió kell. Kérem ellenőrizze be van e frissítve teljesen készüléke, esetlegesen van e LineageOS támogatás hozzá.", + "@unsupportedAndroidVersionLong": {}, + "storeSecurlyOnThisDevice": "Biztonságos tárolás az eszközön", + "@storeSecurlyOnThisDevice": {}, + "screenSharingDetail": "Megosztja a képernyőjét a FluffyChat-ben", + "@screenSharingDetail": {}, + "placeCall": "Tér hívás", + "@placeCall": {}, + "block": "Blokkolás", + "@block": {}, + "blockedUsers": "Blokkolt felhasználók", + "@blockedUsers": {}, + "blockListDescription": "Az Önt zavaró felhasználókat blokkolhatja. A blokkolt listán található felhasználóktól nem tud fogadni üzenetet vagy szoba meghívást.", + "@blockListDescription": {}, + "blockUsername": "Felhasználónév ignorálása", + "@blockUsername": {}, + "presenceStyle": "Állapot:", + "@presenceStyle": { + "type": "String", + "placeholders": {} + }, + "presencesToggle": "Más felhasználók állapot üzeneteinek megjelenítése", + "@presencesToggle": { + "type": "String", + "placeholders": {} + }, + "youInvitedToBy": "📩 Meghívást kapott linken keresztül a következőhöz:\n{alias}", + "@youInvitedToBy": { + "placeholders": { + "alias": { + "type": "String" + } + } + }, + "decline": "Elutasítás", + "@decline": {}, + "yourGlobalUserIdIs": "A globális felhasználó-ID-je: ", + "@yourGlobalUserIdIs": {}, + "noUsersFoundWithQuery": "\"{query}\"-vel nem található felhasználó. Ellenőrizze nincs e elírás.", + "@noUsersFoundWithQuery": { + "type": "String", + "placeholders": { + "query": { + "type": "String" + } + } + }, + "acceptedKeyVerification": "{sender} elfogadta a kulcs megerősítést", + "@acceptedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "searchForUsers": "Keressen @felhasználókat...", + "@searchForUsers": {}, + "joinSpace": "Csatlakozás a térre", + "@joinSpace": {}, + "publicSpaces": "Nyilvános terek", + "@publicSpaces": {}, + "databaseMigrationTitle": "Adatbázis optimalizálva", + "@databaseMigrationTitle": {}, + "leaveEmptyToClearStatus": "Hagyja üresen a státusz kitörléséhez.", + "@leaveEmptyToClearStatus": {}, + "pleaseEnterYourCurrentPassword": "Kérem adja meg jelenlegi jelszavát", + "@pleaseEnterYourCurrentPassword": {}, + "newPassword": "Új jelszó", + "@newPassword": {}, + "addChatOrSubSpace": "Csevegés vagy al-tér hozzáadása", + "@addChatOrSubSpace": {}, + "pleaseChooseAStrongPassword": "Kérem válasszon egy erős jelszót", + "@pleaseChooseAStrongPassword": {}, + "passwordsDoNotMatch": "A jelszavak nem egyeznek", + "@passwordsDoNotMatch": {}, + "passwordIsWrong": "Hibás a beírt jelszava", + "@passwordIsWrong": {}, + "subspace": "Al-tér", + "@subspace": {}, + "thisDevice": "Ez az eszköz:", + "@thisDevice": {}, + "forwardMessageTo": "Üzenet továbbítása a {roomName} szobába?", + "@forwardMessageTo": { + "type": "String", + "placeholders": { + "roomName": { + "type": "String" + } + } + }, + "sendTypingNotificationsDescription": "A csevegés többi tagja látja amikor gépel.", + "@sendTypingNotificationsDescription": {}, + "sendReadReceiptsDescription": "A csevegés többi tagja láthatja, ha olvasta az üzeneteiket.", + "@sendReadReceiptsDescription": {}, + "sendReadReceipts": "Olvasási igazolás küldése", + "@sendReadReceipts": {}, + "formattedMessages": "Formázott üzenetek", + "@formattedMessages": {}, + "formattedMessagesDescription": "Formázott szöveg - mint például félkövér - megjelenítése \"markdown\"-al.", + "@formattedMessagesDescription": {}, + "verifyOtherUser": "🔐 Más felhasználó igazolása", + "@verifyOtherUser": {}, + "verifyOtherDevice": "🔐 Más eszköz hitelesítése", + "@verifyOtherDevice": {}, + "sessionLostBody": "A munkamenete elvesződött. Kérem jelentse ezt a fejlesztőknek a {url} címen. A hiba szövege a következő: {error}", + "@sessionLostBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "databaseBuildErrorBody": "Nem lehetséges az SQlite adatbázis létrehozása. Az app megpróbálja a régi típusú adatbázist használni. Kérem jelentse a hibát a fejlesztőknek a {url} hivatkozáson. A hiba szövege a következő: {error}", + "@databaseBuildErrorBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "restoreSessionBody": "Megpróbálkozunk visszaállítani a munkamenetét egy korábbi mentésből. Kérem jelezze a hibát a fejlesztőknek a {url} címen. A hiba szövege a következő: {error}", + "@restoreSessionBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "hidePresences": "El kívánja rejteni a státusz listát?", + "@hidePresences": {}, + "searchChatsRooms": "Keressen #csevegéseket, @felhasználókat...", + "@searchChatsRooms": {}, + "wrongRecoveryKey": "Sajnos, úgy tűnik hibásan adta meg a visszaállítási kulcsot.", + "@wrongRecoveryKey": {}, + "startConversation": "Társalgás kezdése", + "@startConversation": {}, + "commandHint_sendraw": "Tiszta json küldése", + "@commandHint_sendraw": {}, + "databaseMigrationBody": "Kérem várjon. Ez igénybe vehet valamennyi időt.", + "@databaseMigrationBody": {}, + "initAppError": "Hiba lépett fel az app indítása során", + "@initAppError": {}, + "canceledKeyVerification": "{sender} visszautasította a kulcs megerősítést", + "@canceledKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "completedKeyVerification": "{sender} befejezte a kulcs megerősítést", + "@completedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "isReadyForKeyVerification": "{sender} készen áll a kulcs megerősítésre", + "@isReadyForKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "requestedKeyVerification": "{sender} kulcs megerősítést kér", + "@requestedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "startedKeyVerification": "{sender} elkezdte a kulcs megerősítést", + "@startedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "transparent": "Átlátszó", + "@transparent": {}, + "incomingMessages": "Bejövő üzenetek", + "@incomingMessages": {}, + "nothingFound": "Nincs találat...", + "@nothingFound": {}, + "publicLink": "Nyilvános hivatkozás", + "@publicLink": {}, + "select": "Kiválaszt", + "@select": {}, + "stickers": "Matricák", + "@stickers": {}, + "discover": "Felfedezés", + "@discover": {}, + "groupName": "Csoport név", + "@groupName": {}, + "createGroupAndInviteUsers": "Hozzon létre egy csoportot és hívjon meg felhasználókat", + "@createGroupAndInviteUsers": {}, + "groupCanBeFoundViaSearch": "A csoportokat kereséssel találhatja meg", + "@groupCanBeFoundViaSearch": {}, + "verifyOtherUserDescription": "Ha megerősít egy másik felhasználót, akkor teljesen biztos lehet abban kivel cseveg. 💪\n\nA megerősítési folyamat kezdetekor megjelenik egy felugró ablak mindkettőjüknél. Ekkor egy hangulatjel vagy szám sor összehasonlítási folyamat veszi kezdetét.\n\nA legpraktikusabb módja ennek, hogy találkozzanak, vagy videó hívás során beszéljék meg. 👭", + "@verifyOtherUserDescription": {}, + "verifyOtherDeviceDescription": "Amikor egy másik eszközt hitelesít, az eszközök kulcsokat cserélnek egymás között, ezáltal növelve az összbiztonságot. 💪 Amikor megkezdődik a folyamat, mind a két eszközön megjelenik egy felugró üzenet. Hangulatjelek és számok sorozata fog megjelenni, amit össze tud hasonlítani a két eszközön. Érdemes tehát mind a két eszközt a közelben tartani. 🤳", + "@verifyOtherDeviceDescription": {}, + "accessAndVisibility": "Hozzáférés és láthatóság", + "@accessAndVisibility": {}, + "accessAndVisibilityDescription": "Ki számára engedélyezett a csevegéshez való csatlakozás, és hogyan találhatja azt meg.", + "@accessAndVisibilityDescription": {}, + "calls": "Hívások", + "@calls": {}, + "hideInvalidOrUnknownMessageFormats": "Érvénytelen vagy ismeretlen üzenetformátum elrejtése", + "@hideInvalidOrUnknownMessageFormats": {}, + "hideMemberChangesInPublicChatsBody": "Ne mutassa ha valaki be- vagy kilép a csevegésből az olvashatóság javítása érdekében.", + "@hideMemberChangesInPublicChatsBody": {}, + "notifyMeFor": "Értesítsen ha", + "@notifyMeFor": {}, + "passwordRecoverySettings": "Jelszó-helyreállítási beállítások", + "@passwordRecoverySettings": {}, + "noOneCanJoin": "Senki sem csatlakozhat", + "@noOneCanJoin": {}, + "userWouldLikeToChangeTheChat": "{user} szeretne csatlakozni a csevegéshez.", + "@userWouldLikeToChangeTheChat": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "noPublicLinkHasBeenCreatedYet": "Nyilvános link nem került még létrehozásra", + "@noPublicLinkHasBeenCreatedYet": {}, + "chatCanBeDiscoveredViaSearchOnServer": "Csevegés felfedezhető a {server} szerveren történő kereséssel", + "@chatCanBeDiscoveredViaSearchOnServer": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "appLockDescription": "Applikáció zárolása PIN kóddal használaton kívül", + "@appLockDescription": {}, + "customEmojisAndStickers": "Egyedi hangulatjelek és matricák", + "@customEmojisAndStickers": {}, + "customEmojisAndStickersBody": "Egyedi hangulatjelek és matricák hozzáadása, amelyek bármely csevegésben felhasználhatóak.", + "@customEmojisAndStickersBody": {}, + "overview": "Áttekintés", + "@overview": {}, + "publicChatAddresses": "Nyilvános csevegés címek", + "@publicChatAddresses": {}, + "userRole": "Felhasználói szerep", + "@userRole": {}, + "createNewAddress": "Új cím létrehozása", + "@createNewAddress": {}, + "noDatabaseEncryption": "Adatbázis titkosítás nem támogatott ezen a platformon", + "@noDatabaseEncryption": {}, + "thereAreCountUsersBlocked": "Jelenleg {count} felhasználó van letiltva.", + "@thereAreCountUsersBlocked": { + "type": "String", + "count": {} + }, + "unreadChatsInApp": "{appname}: {unread} olvasatlan csevegések", + "@unreadChatsInApp": { + "type": "String", + "placeholders": { + "appname": { + "type": "String" + }, + "unread": { + "type": "String" + } + } + }, + "searchIn": "Keresés a \"{chat}\" csevegésben...", + "@searchIn": { + "type": "String", + "placeholders": { + "chat": { + "type": "String" + } + } + }, + "files": "Fájlok", + "@files": {}, + "commandHint_unignore": "Adott matrix ID figyelembe vétele", + "@commandHint_unignore": {}, + "restricted": "Korlátozott", + "@restricted": {}, + "knockRestricted": "Kopogás korlátozva", + "@knockRestricted": {}, + "globalChatId": "Átfogó csevegő ID", + "@globalChatId": {}, + "hideRedactedMessages": "Szerkesztett üzenetek elrejtése", + "@hideRedactedMessages": {}, + "hideRedactedMessagesBody": "Ha valaki szerkeszti az üzenetét, ez az üzenet nem jelenik meg a csevegés során.", + "@hideRedactedMessagesBody": {}, + "hideMemberChangesInPublicChats": "Tag változások elrejtése a publikus csevegésben", + "@hideMemberChangesInPublicChats": {}, + "knocking": "Bekopogás", + "@knocking": {}, + "usersMustKnock": "A felhasználóknak be kell kopogniuk", + "@usersMustKnock": {}, + "knock": "Kopogás", + "@knock": {}, + "minimumPowerLevel": "{level} a minimum szint.", + "@minimumPowerLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "String" + } + } + }, + "searchMore": "További keresés...", + "@searchMore": {}, + "gallery": "Galéria", + "@gallery": {}, + "commandHint_ignore": "Adott matrix ID figyelmen kívül hagyása", + "@commandHint_ignore": {}, + "unread": "Olvasatlan", + "@unread": {}, + "space": "Tér", + "@space": {}, + "spaces": "Terek", + "@spaces": {}, + "invitedBy": "📩 {user} jóvoltából meghívva", + "@invitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "markAsUnread": "Olvasatlannak jelölés", + "@markAsUnread": {}, + "moderatorLevel": "{level} - Moderátor", + "@moderatorLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "changeGeneralChatSettings": "Általános csevegés beállítások módosítása", + "@changeGeneralChatSettings": {}, + "updateInstalled": "🎉 {version} verziójú frissítés telepítve!", + "@updateInstalled": { + "type": "String", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "changelog": "Változásnapló", + "@changelog": {}, + "sendCanceled": "Küldés visszavonva", + "@sendCanceled": {}, + "noChatsFoundHere": "Itt még nem található csevegés. Kezdjen egy új csevegést valakivel a lenti gomb segítéségvel. ⤵️", + "@noChatsFoundHere": {}, + "goToSpace": "Ugrás a {space} térre", + "@goToSpace": { + "type": "String", + "space": {} + }, + "changeTheCanonicalRoomAlias": "Csevegés fő, nyilvános címének változtatása", + "@changeTheCanonicalRoomAlias": {}, + "chatPermissionsDescription": "Adja meg milyen erősségi szint kell egyes csevegési művelethez. A 0, 50 és 100-as szintek általában felhasználókat, moderátorokat és adminisztrátorokat jelölnek de bármilyen szintezés lehetséges.", + "@chatPermissionsDescription": {}, + "whatIsAHomeserver": "Mi az a Matrix-kiszolgáló?", + "@whatIsAHomeserver": {}, + "homeserverDescription": "Az összes adata a Mátrix-kiszolgálón tárolódik, pont mint egy e-mail kiszolgálón. Kiválaszthatja melyik Matrix-kiszolgálót akarja használni, miközben tud kommunikálni mindenkivel. Tudjon meg többet a https://matrix.org címen.", + "@homeserverDescription": {}, + "userLevel": "{level} - Felhasználó", + "@userLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "adminLevel": "{level} - Adminisztrátor", + "@adminLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "inviteOtherUsers": "Más felhasználók meghívása a csevegésbe", + "@inviteOtherUsers": {}, + "changeTheVisibilityOfChatHistory": "Csevegési előzmények láthatóságának változtatása", + "@changeTheVisibilityOfChatHistory": {}, + "changeTheChatPermissions": "Csevegés engedélyek változtatása", + "@changeTheChatPermissions": {}, + "sendRoomNotifications": "@szoba értesítés küldése", + "@sendRoomNotifications": {}, + "changeTheDescriptionOfTheGroup": "Csevegés leírásának változtatása", + "@changeTheDescriptionOfTheGroup": {}, + "swipeRightToLeftToReply": "Húzza balra a válaszoláshoz", + "@swipeRightToLeftToReply": {}, + "alwaysUse24HourFormat": "", + "@alwaysUse24HourFormat": { + "description": "Set to true to always display time of day in 24 hour format." + }, + "loginWithMatrixId": "Bejelentkezés Matrix-ID-vel", + "@loginWithMatrixId": {}, + "discoverHomeservers": "Matrix-kiszolgálók felfedezése", + "@discoverHomeservers": {}, + "doesNotSeemToBeAValidHomeserver": "Nem tűnik kompatibilisnek a Mátrix-kiszolgálónak. Hibás a hivatkozás?", + "@doesNotSeemToBeAValidHomeserver": {}, + "countChatsAndCountParticipants": "{chats} csevegések és {participants} résztvevők", + "@countChatsAndCountParticipants": { + "type": "String", + "placeholders": { + "chats": { + "type": "int" + }, + "participants": { + "type": "int" + } + } + }, + "noMoreChatsFound": "Nem található több csevegés...", + "@noMoreChatsFound": {}, + "joinedChats": "Csatlakozott csevegések", + "@joinedChats": {}, + "checkList": "Tennivalók listája", + "@checkList": {}, + "countInvited": "{count} meghívott", + "@countInvited": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "sendImages": "{count} kép küldése", + "@sendImages": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "aboutHomeserver": "Névjegy {homeserver}", + "@aboutHomeserver": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "normalUser": "Normál felhasználó", + "@normalUser": {}, + "ignoreUser": "Felhasználó ignorálása", + "@ignoreUser": {}, + "commandHint_roomupgrade": "Szoba frissítése a megadott szoba verzióra", + "@commandHint_roomupgrade": {}, + "setCustomPermissionLevel": "Egyedi engedélyszint beállítása", + "@setCustomPermissionLevel": {}, + "setPermissionsLevelDescription": "Kérem, válasszon egy előre meghatározott szerepkört, vagy adjon meg egy egyedi engedély szintet 0 és 100 között.", + "@setPermissionsLevelDescription": {}, + "sendingAttachmentCountOfCount": "{index} csatolmány küldése {length}-ból...", + "@sendingAttachmentCountOfCount": { + "type": "integer", + "placeholders": { + "index": { + "type": "int" + }, + "length": { + "type": "int" + } + } + }, + "serverLimitReached": "Szerver korlát elérve! {seconds} mp türelem...", + "@serverLimitReached": { + "type": "integer", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "oneOfYourDevicesIsNotVerified": "Egyik készüléke nem hitelesített", + "@oneOfYourDevicesIsNotVerified": {}, + "synchronizingPleaseWaitCounter": " Szinkronizálás… ({percentage}%)", + "@synchronizingPleaseWaitCounter": { + "type": "String", + "placeholders": { + "percentage": { + "type": "String" + } + } + }, + "calculatingFileSize": "Fájl méret kalkulálása...", + "@calculatingFileSize": {}, + "prepareSendingAttachment": "Felkészülés csatolmány küldésére...", + "@prepareSendingAttachment": {}, + "sendingAttachment": "Csatolmány küldése...", + "@sendingAttachment": {}, + "generatingVideoThumbnail": "Videó miniatűr generálása...", + "@generatingVideoThumbnail": {}, + "compressVideo": "Videó tömörítése...", + "@compressVideo": {}, + "contentNotificationSettings": "Tartalom értesítési beállítások", + "@contentNotificationSettings": {}, + "generalNotificationSettings": "Átalános értesítési beállítások", + "@generalNotificationSettings": {}, + "roomNotificationSettings": "Szoba értesítési beállítások", + "@roomNotificationSettings": {}, + "notificationRuleMasterDescription": "Felülír minden más szabályt, és kikapcsolja az összes értesítést.", + "@notificationRuleMasterDescription": {}, + "notificationRuleInviteForMe": "Meghívás Számomra", + "@notificationRuleInviteForMe": {}, + "notificationRuleMemberEventDescription": "Némítja a tagi események értesítéseit.", + "@notificationRuleMemberEventDescription": {}, + "notificationRuleIsUserMention": "Felhasználó Említése", + "@notificationRuleIsUserMention": {}, + "notificationRuleTombstoneDescription": "Értesíti a felhasználót a szoba deaktiválás üzenetekről.", + "@notificationRuleTombstoneDescription": {}, + "notificationRuleCall": "Hívás", + "@notificationRuleCall": {}, + "notificationRuleEncryptedRoomOneToOneDescription": "Értesíti a felhasználót a titkosított négyszemközti szobákban levő üzenetekről.", + "@notificationRuleEncryptedRoomOneToOneDescription": {}, + "notificationRuleRoomOneToOne": "Négyszemközti Szoba", + "@notificationRuleRoomOneToOne": {}, + "notificationRuleMessage": "Üzenet", + "@notificationRuleMessage": {}, + "notificationRuleMessageDescription": "Értesíti a felhasználót az általános üzenetekről.", + "@notificationRuleMessageDescription": {}, + "notificationRuleEncrypted": "Titkosított", + "@notificationRuleEncrypted": {}, + "notificationRuleEncryptedDescription": "Értesíti a felhasználót a titkosított szobákban levő üzenetekről.", + "@notificationRuleEncryptedDescription": {}, + "notificationRuleServerAcl": "Némítja a Szerver ACL Eseményeket", + "@notificationRuleServerAcl": {}, + "unknownPushRule": "'{rule}' egy ismeretlen push szabály", + "@unknownPushRule": { + "type": "String", + "placeholders": { + "rule": { + "type": "String" + } + } + }, + "compress": "Tömörítés", + "@compress": {}, + "boldText": "Félkövér szöveg", + "@boldText": {}, + "italicText": "Dőlt szöveg", + "@italicText": {}, + "strikeThrough": "Áthúzott", + "@strikeThrough": {}, + "appWantsToUseForLogin": "Használja a '{server}' szervert a bejelentkezéshez", + "@appWantsToUseForLogin": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "otherPartyNotLoggedIn": "A másik fél jelenleg nincs bejelentkezve, emiatt nem fogadhat üzeneteket!", + "@otherPartyNotLoggedIn": {}, + "appWantsToUseForLoginDescription": "Ezennel engedélyezi az applikáció és weboldal számára, hogy információkat gyűjtsön Önről.", + "@appWantsToUseForLoginDescription": {}, + "waitingForServer": "Várakozás a szerverre...", + "@waitingForServer": {}, + "appIntroduction": "A FluffyChat segítségével cseveghet barátaival, akár más üzenetküldő alkalmazásokon keresztül is. Tudjon meg erről többet a https://matrix.org oldalon, vagy nyomjon a \"Folytatás\" gombra.", + "@appIntroduction": {}, + "open": "Megnyitás", + "@open": {}, + "notificationRuleSuppressNotices": "Minden automata üzenetet némít", + "@notificationRuleSuppressNotices": {}, + "notificationRuleSuppressNoticesDescription": "Némít minden automata klienstől érkező értesítést mint például botok.", + "@notificationRuleSuppressNoticesDescription": {}, + "newChatRequest": "📩 Új csevegés kérelem", + "@newChatRequest": {}, + "notificationRuleContainsUserNameDescription": "Értesíti a felhasználót, ha az üzenet tartalmazza a nevét.", + "@notificationRuleContainsUserNameDescription": {}, + "notificationRuleInviteForMeDescription": "Értesíti a felhasználót szoba meghívás esetén.", + "@notificationRuleInviteForMeDescription": {}, + "notificationRuleMemberEvent": "Tagi Esemény", + "@notificationRuleMemberEvent": {}, + "notificationRuleIsUserMentionDescription": "Értesíti a felhasználót, ha közvetlenül említésre kerül az üzenetben.", + "@notificationRuleIsUserMentionDescription": {}, + "notificationRuleIsRoomMention": "Szoba Említés", + "@notificationRuleIsRoomMention": {}, + "notificationRuleIsRoomMentionDescription": "Értesíti a felhasználót szoba említéskor.", + "@notificationRuleIsRoomMentionDescription": {}, + "notificationRuleRoomnotif": "Szoba Értesítés", + "@notificationRuleRoomnotif": {}, + "notificationRuleRoomnotifDescription": "Értesíti a felhasználót ha az üzenet tartalmazza a '@szoba' említést.", + "@notificationRuleRoomnotifDescription": {}, + "crossVerifiedDevicesIfEnabled": "Kereszt-hitelesített eszközök ha be van kapcsolva", + "@crossVerifiedDevicesIfEnabled": {}, + "crossVerifiedDevices": "Kereszt-hitelesített eszközök", + "@crossVerifiedDevices": {}, + "serverInformation": "Szerver információ:", + "@serverInformation": {}, + "unableToJoinChat": "Nem csatlakozhat a csevegéshez. Elképzelhető, hogy a másik fél már kilépett.", + "@unableToJoinChat": {}, + "userSpecificNotificationSettings": "Felhasználó specifikus értesítés beállítások", + "@userSpecificNotificationSettings": {}, + "otherNotificationSettings": "Egyéb értesítés beállítások", + "@otherNotificationSettings": {}, + "notificationRuleContainsUserName": "Felhasználó nevet tartalmaz", + "@notificationRuleContainsUserName": {}, + "notificationRuleContainsDisplayName": "Megjelenített Nevet Tartalmaz", + "@notificationRuleContainsDisplayName": {}, + "notificationRuleReaction": "Reakció", + "@notificationRuleReaction": {}, + "notificationRuleReactionDescription": "Némítja a reakciók értesítéseit.", + "@notificationRuleReactionDescription": {}, + "notificationRuleRoomServerAcl": "Szoba Szerver ACL", + "@notificationRuleRoomServerAcl": {}, + "notificationRuleRoomServerAclDescription": "Némítja a szoba szerver hozzáférési kezelő lista (ACL) értesítéseket.", + "@notificationRuleRoomServerAclDescription": {}, + "notificationRuleSuppressEdits": "Szerkesztések némítása", + "@notificationRuleSuppressEdits": {}, + "notificationRuleSuppressEditsDescription": "Némítja a szerkesztett üzenetek értesítéseit.", + "@notificationRuleSuppressEditsDescription": {}, + "notificationRuleEncryptedRoomOneToOne": "Titkosított Négyszemközti Szoba", + "@notificationRuleEncryptedRoomOneToOne": {}, + "notificationRuleRoomOneToOneDescription": "Értesíti a felhasználót a négyszemközti szobában levő üzenetekről.", + "@notificationRuleRoomOneToOneDescription": {}, + "notificationRuleJitsi": "Jitsi", + "@notificationRuleJitsi": {}, + "notificationRuleJitsiDescription": "Értesíti a felhasználót a Jitsi widget eseményekről.", + "@notificationRuleJitsiDescription": {}, + "sentVoiceMessage": "🎙️ {duration} - {sender}", + "@sentVoiceMessage": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "duration": { + "type": "String" + } + } + }, + "deletePushRuleCanNotBeUndone": "Ha törli ezt az értesítési beállítást, később nem vonható vissza.", + "@deletePushRuleCanNotBeUndone": {}, + "manageAccount": "Fiók kezelése", + "@manageAccount": {}, + "enterNewChat": "Belépés új csevegésbe", + "@enterNewChat": {}, + "blur": "Homályosít:", + "@blur": {}, + "name": "Név", + "@name": {}, + "continueText": "Folytatás", + "@continueText": {}, + "opacity": "Átlátszóság:", + "@opacity": {}, + "welcomeText": "Üdv 👋 Ez a FluffyChat. Bejelentkezhet bármely matrix-kiszolgálóhoz amely kompatibilis a https://matrix.org címmel. Ezután cseveghet bárkivel. Így képez egy óriási decentralizált üzenetküldő hálózatot!", + "@welcomeText": {}, + "addLink": "Hivatkozás hozzáadása", + "@addLink": {}, + "invalidUrl": "Helytelen hivatkozás", + "@invalidUrl": {}, + "setWallpaper": "Háttér beállítás", + "@setWallpaper": {}, + "noContactInformationProvided": "A szervertől nem érkezett vissza kapcsolati információ", + "@noContactInformationProvided": {}, + "contactServerSecurity": "Kapcsolatfelvétel a szerver biztonsággal", + "@contactServerSecurity": {}, + "contactServerAdmin": "Kapcsolatfelvétel a szerver adminnal", + "@contactServerAdmin": {}, + "supportPage": "Támogatási oldal", + "@supportPage": {}, + "version": "Verzió", + "@version": {}, + "verifiedDevicesOnly": "Csak hitelesített eszközök", + "@verifiedDevicesOnly": {}, + "website": "Weboldal", + "@website": {}, + "pleaseFillOut": "Kérem töltse ki", + "@pleaseFillOut": {}, + "previous": "Előző", + "@previous": {}, + "optionalMessage": "(Választható) üzenet...", + "@optionalMessage": {}, + "takeAPhoto": "Készítsen egy fotót", + "@takeAPhoto": {}, + "recordAVideo": "Vegyen fel egy videót", + "@recordAVideo": {}, + "notSupportedOnThisDevice": "Nem támogatott ezen az eszközön", + "@notSupportedOnThisDevice": {}, + "noticeChatBackupDeviceVerification": "Megjegyzés: Minden eszköze amit a csevegés mentéshez kapcsol, automatikusan hitelesítésre kerül.", + "@noticeChatBackupDeviceVerification": {}, + "notificationRuleMaster": "Minden értesítés némítása", + "@notificationRuleMaster": {}, + "notificationRuleContainsDisplayNameDescription": "Értesíti a felhasználót, ha közvetlenül említésre kerül a megjelenített neve az üzenetben.", + "@notificationRuleContainsDisplayNameDescription": {}, + "notificationRuleTombstone": "Sírkő", + "@notificationRuleTombstone": {}, + "shareKeysWithDescription": "Mely eszközök tekinthetőek megbízhatónak, hogy olvashassák a titkosított csevegéseket is?", + "@shareKeysWithDescription": {}, + "allDevices": "Minden eszköz", + "@allDevices": {}, + "notificationRuleServerAclDescription": "Némítja a Szerver ACL események értesítéseit.", + "@notificationRuleServerAclDescription": {}, + "notificationRuleCallDescription": "Értesíti a felhasználót a hívásokról.", + "@notificationRuleCallDescription": {}, + "more": "Több", + "@more": {}, + "shareKeysWith": "Kulcsok megosztása...", + "@shareKeysWith": {}, + "approve": "Jóváhagy", + "@approve": {}, + "youHaveKnocked": "Kopogott", + "@youHaveKnocked": {}, + "pleaseWaitUntilInvited": "Kérem várjon, amíg valaki a szobából behívja Önt.", + "@pleaseWaitUntilInvited": {} +} diff --git a/lib/l10n/intl_ia.arb b/lib/l10n/intl_ia.arb new file mode 100644 index 0000000..ec6a01f --- /dev/null +++ b/lib/l10n/intl_ia.arb @@ -0,0 +1,60 @@ +{ + "repeatPassword": "Repeter le contrasigno", + "@repeatPassword": {}, + "notAnImage": "Non es un file de imagine.", + "@notAnImage": {}, + "remove": "Remover", + "@remove": { + "type": "String", + "placeholders": {} + }, + "importEmojis": "Importar emojis", + "@importEmojis": {}, + "importFromZipFile": "Importar ab un file .zip", + "@importFromZipFile": {}, + "importNow": "Importar ora", + "@importNow": {}, + "exportEmotePack": "Exportar pacchetto de emotes como un .zip", + "@exportEmotePack": {}, + "replace": "Reimplaciar", + "@replace": {}, + "about": "A proposito de", + "@about": { + "type": "String", + "placeholders": {} + }, + "accept": "Acceptar", + "@accept": { + "type": "String", + "placeholders": {} + }, + "acceptedTheInvitation": "👍 {username} acceptava tu invitation", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "account": "Conto", + "@account": { + "type": "String", + "placeholders": {} + }, + "addEmail": "Adder email", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "supposedMxid": "Isto deberea esser {mxid}", + "@supposedMxid": { + "type": "String", + "placeholders": { + "mxid": { + "type": "String" + } + } + }, + "@custom": {} +} diff --git a/lib/l10n/intl_id.arb b/lib/l10n/intl_id.arb new file mode 100644 index 0000000..6452572 --- /dev/null +++ b/lib/l10n/intl_id.arb @@ -0,0 +1,3396 @@ +{ + "@@last_modified": "2021-08-14 12:41:10.002360", + "setAsCanonicalAlias": "Atur sebagai alias utama", + "@setAsCanonicalAlias": { + "type": "String", + "placeholders": {} + }, + "roomVersion": "Versi ruangan", + "@roomVersion": { + "type": "String", + "placeholders": {} + }, + "people": "Orang-orang", + "@people": { + "type": "String", + "placeholders": {} + }, + "goToTheNewRoom": "Pergi ke ruangan yang baru", + "@goToTheNewRoom": { + "type": "String", + "placeholders": {} + }, + "chats": "Obrolan", + "@chats": { + "type": "String", + "placeholders": {} + }, + "blockDevice": "Blokir Perangkat", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "areYouSureYouWantToLogout": "Apakah kamu yakin ingin keluar?", + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "Apakah kamu yakin?", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "archive": "Arsip", + "@archive": { + "type": "String", + "placeholders": {} + }, + "anyoneCanJoin": "Siapa saja dapat bergabung", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "answeredTheCall": "{senderName} menjawab panggilan", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "alias": "alias", + "@alias": { + "type": "String", + "placeholders": {} + }, + "admin": "Admin", + "@admin": { + "type": "String", + "placeholders": {} + }, + "account": "Akun", + "@account": { + "type": "String", + "placeholders": {} + }, + "acceptedTheInvitation": "👍 {username} menerima undangannya", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "accept": "Terima", + "@accept": { + "type": "String", + "placeholders": {} + }, + "about": "Tentang", + "@about": { + "type": "String", + "placeholders": {} + }, + "isTyping": "sedang mengetik…", + "@isTyping": { + "type": "String", + "placeholders": {} + }, + "inviteText": "{username} mengundang kamu ke FluffyChat. \n1. Kunjungi fluffychat.im dan instal aplikasi\n2. Daftar atau masuk \n3. Buka tautan undangan: \n {link}", + "@inviteText": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "link": { + "type": "String" + } + } + }, + "inviteForMe": "Undangan untuk saya", + "@inviteForMe": { + "type": "String", + "placeholders": {} + }, + "invitedUsersOnly": "Pengguna yang diundang saja", + "@invitedUsersOnly": { + "type": "String", + "placeholders": {} + }, + "invitedUser": "📩 {username} mengundang {targetName}", + "@invitedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "invited": "Diundang", + "@invited": { + "type": "String", + "placeholders": {} + }, + "inviteContactToGroup": "Undang kontak ke {groupName}", + "@inviteContactToGroup": { + "type": "String", + "placeholders": { + "groupName": { + "type": "String" + } + } + }, + "inviteContact": "Undang kontak", + "@inviteContact": { + "type": "String", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "Frasa sandi atau kunci pemulihan yang salah", + "@incorrectPassphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "iHaveClickedOnLink": "Saya sudah klik tautannya", + "@iHaveClickedOnLink": { + "type": "String", + "placeholders": {} + }, + "ignoredUsers": "Pengguna yang diabaikan", + "@ignoredUsers": { + "type": "String", + "placeholders": {} + }, + "identity": "Identitas", + "@identity": { + "type": "String", + "placeholders": {} + }, + "id": "ID", + "@id": { + "type": "String", + "placeholders": {} + }, + "hideUnknownEvents": "Sembunyikan peristiwa tidak dikenal", + "@hideUnknownEvents": { + "type": "String", + "placeholders": {} + }, + "hideRedactedEvents": "Sembunyikan peristiwa yang dihapus", + "@hideRedactedEvents": { + "type": "String", + "placeholders": {} + }, + "help": "Bantuan", + "@help": { + "type": "String", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "{username} telah mencabut undangan untuk {targetName}", + "@hasWithdrawnTheInvitationFor": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "guestsCanJoin": "Tamu bisa bergabung", + "@guestsCanJoin": { + "type": "String", + "placeholders": {} + }, + "guestsAreForbidden": "Tamu dilarang", + "@guestsAreForbidden": { + "type": "String", + "placeholders": {} + }, + "groupWith": "Grup dengan {displayname}", + "@groupWith": { + "type": "String", + "placeholders": { + "displayname": { + "type": "String" + } + } + }, + "groupIsPublic": "Grup bersifat publik", + "@groupIsPublic": { + "type": "String", + "placeholders": {} + }, + "group": "Grup", + "@group": { + "type": "String", + "placeholders": {} + }, + "fromTheInvitation": "Dari undangan", + "@fromTheInvitation": { + "type": "String", + "placeholders": {} + }, + "fromJoining": "Dari bergabung", + "@fromJoining": { + "type": "String", + "placeholders": {} + }, + "forward": "Teruskan", + "@forward": { + "type": "String", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "String", + "placeholders": {} + }, + "fileName": "Nama file", + "@fileName": { + "type": "String", + "placeholders": {} + }, + "everythingReady": "Semua siap!", + "@everythingReady": { + "type": "String", + "placeholders": {} + }, + "enterYourHomeserver": "Masukkan homeserver-mu", + "@enterYourHomeserver": { + "type": "String", + "placeholders": {} + }, + "enterAnEmailAddress": "Masukkan alamat email", + "@enterAnEmailAddress": { + "type": "String", + "placeholders": {} + }, + "endedTheCall": "{senderName} mengakhiri panggilan", + "@endedTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "encryption": "Enkripsi", + "@encryption": { + "type": "String", + "placeholders": {} + }, + "encrypted": "Terenkripsi", + "@encrypted": { + "type": "String", + "placeholders": {} + }, + "enableEncryptionWarning": "Kamu tidak akan bisa menonaktifkan enkripsi. Apakah kamu yakin?", + "@enableEncryptionWarning": { + "type": "String", + "placeholders": {} + }, + "enableEmotesGlobally": "Aktifkan paket emote secara global", + "@enableEmotesGlobally": { + "type": "String", + "placeholders": {} + }, + "emptyChat": "Chat kosong", + "@emptyChat": { + "type": "String", + "placeholders": {} + }, + "emoteWarnNeedToPick": "Kamu harus memilih shortcode emote dan gambar!", + "@emoteWarnNeedToPick": { + "type": "String", + "placeholders": {} + }, + "emoteShortcode": "Shortcode emote", + "@emoteShortcode": { + "type": "String", + "placeholders": {} + }, + "emoteSettings": "Pengaturan Emote", + "@emoteSettings": { + "type": "String", + "placeholders": {} + }, + "emotePacks": "Paket emote untuk ruangan", + "@emotePacks": { + "type": "String", + "placeholders": {} + }, + "emoteInvalid": "Shortcode emote tidak valid!", + "@emoteInvalid": { + "type": "String", + "placeholders": {} + }, + "emoteExists": "Emote sudah ada!", + "@emoteExists": { + "type": "String", + "placeholders": {} + }, + "editRoomAliases": "Edit alias ruangan", + "@editRoomAliases": { + "type": "String", + "placeholders": {} + }, + "editDisplayname": "Edit nama tampilan", + "@editDisplayname": { + "type": "String", + "placeholders": {} + }, + "edit": "Sunting", + "@edit": { + "type": "String", + "placeholders": {} + }, + "downloadFile": "Unduh berkas", + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "displaynameHasBeenChanged": "Nama tampilan telah diubah", + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "directChats": "Chat Langsung", + "@directChats": { + "type": "String", + "placeholders": {} + }, + "devices": "Perangkat", + "@devices": { + "type": "String", + "placeholders": {} + }, + "deviceId": "ID Perangkat", + "@deviceId": { + "type": "String", + "placeholders": {} + }, + "device": "Perangkat", + "@device": { + "type": "String", + "placeholders": {} + }, + "deleteMessage": "Hapus pesan", + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "deleteAccount": "Hapus akun", + "@deleteAccount": { + "type": "String", + "placeholders": {} + }, + "delete": "Hapus", + "@delete": { + "type": "String", + "placeholders": {} + }, + "deactivateAccountWarning": "Ini akan menonaktifkan akun penggunamu. Ini tidak bisa dibatalkan! Apakah kamu yakin?", + "@deactivateAccountWarning": { + "type": "String", + "placeholders": {} + }, + "dateWithYear": "{day}-{month}-{year}", + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "dateWithoutYear": "{day}-{month}", + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "dateAndTimeOfDay": "{timeOfDay}, {date}", + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "currentlyActive": "Aktif", + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "createdTheChat": "💬 {username} membuat obrolan ini", + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "create": "Buat", + "@create": { + "type": "String", + "placeholders": {} + }, + "countParticipants": "{count} anggota", + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "couldNotDecryptMessage": "Tidak dapat mendekripsikan pesan: {error}", + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "copyToClipboard": "Salin ke papan klip", + "@copyToClipboard": { + "type": "String", + "placeholders": {} + }, + "copy": "Salin", + "@copy": { + "type": "String", + "placeholders": {} + }, + "copiedToClipboard": "Disalin ke papan klip", + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "chatBackup": "Cadangan obrolan", + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "chat": "Obrolan", + "@chat": { + "type": "String", + "placeholders": {} + }, + "channelCorruptedDecryptError": "Enkripsi telah rusak", + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "changeYourAvatar": "Ubah avatarmu", + "@changeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "Ubah nama grup", + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "changeTheHomeserver": "Ubah homeserver", + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "changePassword": "Ubah kata sandi", + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "changedTheRoomInvitationLink": "{username} mengubah tautan undangan", + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomAliases": "{username} mengubah alias ruangan", + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheProfileAvatar": "{username} mengubah avatarnya", + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheJoinRulesTo": "{username} mengubah aturan bergabung ke: {joinRules}", + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "changedTheJoinRules": "{username} mengubah aturan bergabung", + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheHistoryVisibilityTo": "{username} mengubah visibilitas sejarah ke: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheHistoryVisibility": "{username} mengubah visibilitas sejarah", + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheGuestAccessRulesTo": "{username} mengubah aturan akses tamu ke: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheGuestAccessRules": "{username} mengubah aturan akses tamu", + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheDisplaynameTo": "{username} mengubah nama tampilan ke: '{displayname}'", + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "changedTheChatPermissions": "{username} mengubah izin obrolan", + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheChatNameTo": "{username} mengubah nama obrolan ke: '{chatname}'", + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "changedTheChatDescriptionTo": "{username} mengubah deskripsi obrolan ke: '{description}'", + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "changedTheChatAvatar": "{username} mengubah avatar obrolan", + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changeDeviceName": "Ganti nama perangkat", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "cantOpenUri": "Tidak bisa membuka URI ini {uri}", + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "cancel": "Batal", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "botMessages": "Pesan bot", + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "blocked": "Diblokir", + "@blocked": { + "type": "String", + "placeholders": {} + }, + "bannedUser": "{username} mencekal {targetName}", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "banned": "Dicekal", + "@banned": { + "type": "String", + "placeholders": {} + }, + "banFromChat": "Cekal dari obrolan", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "badServerVersionsException": "Homeserver ini mendukung versi Spec ini:\n{serverVersions}\nTetapi aplikasi ini hanya mendukung {supportedVersions}", + "@badServerVersionsException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "sendOnEnter": "Kirim dengan enter", + "@sendOnEnter": {}, + "badServerLoginTypesException": "Homeserver ini mendukung tipe masuk ini:\n{serverVersions}\nTetapi aplikasi ini mendukung:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "autoplayImages": "Mainkan stiker beranimasi dan emote secara otomatis", + "@autoplayImages": { + "type": "String", + "placeholder": {} + }, + "askVerificationRequest": "Terima permintaan verifikasi dari {username}?", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "askSSSSSign": "Untuk dapat menandatangani orang lain, silakan masukkan frasa sandi atau kunci pemulihan penyimpanan aman kamu.", + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "Apakah pengguna tamu diizinkan untuk bergabung", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "appLock": "Kunci aplikasi", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "allChats": "Semua obrolan", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "all": "Semua", + "@all": { + "type": "String", + "placeholders": {} + }, + "addToSpace": "Tambah ke space", + "@addToSpace": {}, + "addEmail": "Tambah email", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "encryptionNotEnabled": "Enkripsi tidak diaktifkan", + "@encryptionNotEnabled": { + "type": "String", + "placeholders": {} + }, + "containsUserName": "Berisi nama pengguna", + "@containsUserName": { + "type": "String", + "placeholders": {} + }, + "containsDisplayName": "Berisi nama tampilan", + "@containsDisplayName": { + "type": "String", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "Kontak telah diundang ke grup", + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "connect": "Hubungkan", + "@connect": { + "type": "String", + "placeholders": {} + }, + "confirm": "Konfirmasi", + "@confirm": { + "type": "String", + "placeholders": {} + }, + "compareNumbersMatch": "Bandingkan angka", + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "compareEmojiMatch": "Bandingkan emoji", + "@compareEmojiMatch": { + "type": "String", + "placeholders": {} + }, + "close": "Tutup", + "@close": { + "type": "String", + "placeholders": {} + }, + "clearArchive": "Bersihkan arsip", + "@clearArchive": {}, + "chooseAStrongPassword": "Pilih kata sandi yang kuat", + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "chatDetails": "Detail obrolan", + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "chatBackupDescription": "Pesan lamamu diamankan dengan sebuah kunci pemulihan. Pastikan kamu tidak menghilangkannya.", + "@chatBackupDescription": { + "type": "String", + "placeholders": {} + }, + "activatedEndToEndEncryption": "🔐 {username} mengaktifkan enkripsi ujung ke ujung", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "loadingPleaseWait": "Memuat… Mohon tunggu.", + "@loadingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "loadCountMoreParticipants": "Muat {count} anggota", + "@loadCountMoreParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "license": "Lisensi", + "@license": { + "type": "String", + "placeholders": {} + }, + "leftTheChat": "Keluar dari obrolan", + "@leftTheChat": { + "type": "String", + "placeholders": {} + }, + "leave": "Tinggalkan", + "@leave": { + "type": "String", + "placeholders": {} + }, + "lastActiveAgo": "Terakhir aktif: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "String", + "placeholders": { + "localizedTimeShort": { + "type": "String" + } + } + }, + "kickFromChat": "Keluarkan dari obrolan", + "@kickFromChat": { + "type": "String", + "placeholders": {} + }, + "kickedAndBanned": "🙅 {username} mengeluarkan dan mencekal {targetName}", + "@kickedAndBanned": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kicked": "👞 {username} mengeluarkan {targetName}", + "@kicked": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "joinRoom": "Bergabung dengan ruangan", + "@joinRoom": { + "type": "String", + "placeholders": {} + }, + "joinedTheChat": "👋 {username} telah bergabung dengan obrolan", + "@joinedTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "loadMore": "Muat lebih banyak…", + "@loadMore": { + "type": "String", + "placeholders": {} + }, + "noPermission": "Tidak ada izin", + "@noPermission": { + "type": "String", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "Kamu belum menambahkan cara untuk memulihkan kata sandimu.", + "@noPasswordRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "none": "Tidak Ada", + "@none": { + "type": "String", + "placeholders": {} + }, + "noGoogleServicesWarning": "Perpesanan Awan Firebase sepertinya tidak tersedia di perangkatmu. Untuk dapat menerima notifikasi dorongan, kami menyarankan memasang ntfy. Dengan ntfy atau penyedia UnifiedPush lainnya, kamu bisa menerima notifikasi dorongan dengan cara yang aman. Kamu bisa mengunduh ntfy dari Play Store atau F-Droid.", + "@noGoogleServicesWarning": { + "type": "String", + "placeholders": {} + }, + "noEncryptionForPublicRooms": "Kamu hanya bisa mengaktifkan enkripsi setelah ruangan tidak lagi dapat diakses secara publik.", + "@noEncryptionForPublicRooms": { + "type": "String", + "placeholders": {} + }, + "noEmotesFound": "Tidak ada emote yang ditemukan. 😕", + "@noEmotesFound": { + "type": "String", + "placeholders": {} + }, + "next": "Lanjut", + "@next": { + "type": "String", + "placeholders": {} + }, + "newVerificationRequest": "Permintaan verifikasi baru!", + "@newVerificationRequest": { + "type": "String", + "placeholders": {} + }, + "newMessageInFluffyChat": "💬 Pesan baru di FluffyChat", + "@newMessageInFluffyChat": { + "type": "String", + "placeholders": {} + }, + "newChat": "Chat baru", + "@newChat": { + "type": "String", + "placeholders": {} + }, + "needPantalaimonWarning": "Perlu diketahui bahwa kamu memerlukan Pantalaimon untuk menggunakan enkripsi ujung-ke-ujung untuk saat ini.", + "@needPantalaimonWarning": { + "type": "String", + "placeholders": {} + }, + "muteChat": "Bisukan obrolan", + "@muteChat": { + "type": "String", + "placeholders": {} + }, + "moderator": "Moderator", + "@moderator": { + "type": "String", + "placeholders": {} + }, + "mention": "Sebutkan", + "@mention": { + "type": "String", + "placeholders": {} + }, + "memberChanges": "Perubahan anggota", + "@memberChanges": { + "type": "String", + "placeholders": {} + }, + "logout": "Keluar", + "@logout": { + "type": "String", + "placeholders": {} + }, + "logInTo": "Masuk ke {homeserver}", + "@logInTo": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "login": "Masuk", + "@login": { + "type": "String", + "placeholders": {} + }, + "noRoomsFound": "Tidak ada ruangan yang ditemukan…", + "@noRoomsFound": { + "type": "String", + "placeholders": {} + }, + "verified": "Terverifikasi", + "@verified": { + "type": "String", + "placeholders": {} + }, + "userLeftTheChat": "🚪 {username} keluar dari obrolan", + "@userLeftTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "unavailable": "Tidak tersedia", + "@unavailable": { + "type": "String", + "placeholders": {} + }, + "transferFromAnotherDevice": "Transfer dari perangkat lain", + "@transferFromAnotherDevice": { + "type": "String", + "placeholders": {} + }, + "showPassword": "Tampilkan kata sandi", + "@showPassword": { + "type": "String", + "placeholders": {} + }, + "removeYourAvatar": "Hapus avatarmu", + "@removeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "register": "Daftar", + "@register": { + "type": "String", + "placeholders": {} + }, + "pushRules": "Aturan push", + "@pushRules": { + "type": "String", + "placeholders": {} + }, + "pleaseFollowInstructionsOnWeb": "Mohon ikuti petunjuk di situs web dan tekan lanjut.", + "@pleaseFollowInstructionsOnWeb": { + "type": "String", + "placeholders": {} + }, + "pleaseChoose": "Mohon pilih", + "@pleaseChoose": { + "type": "String", + "placeholders": {} + }, + "oopsPushError": "Ups! Sayangnya, terjadi kesalahan saat mengatur pemberitahuan push.", + "@oopsPushError": { + "type": "String", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "Cadangan Kunci Online dinyalakan", + "@onlineKeyBackupEnabled": { + "type": "String", + "placeholders": {} + }, + "online": "Online", + "@online": { + "type": "String", + "placeholders": {} + }, + "ok": "Ok", + "@ok": { + "type": "String", + "placeholders": {} + }, + "offline": "Offline", + "@offline": { + "type": "String", + "placeholders": {} + }, + "notificationsEnabledForThisAccount": "Notifikasi diaktifkan untuk akun ini", + "@notificationsEnabledForThisAccount": { + "type": "String", + "placeholders": {} + }, + "notifications": "Notifikasi", + "@notifications": { + "type": "String", + "placeholders": {} + }, + "yourPublicKey": "Kunci publikmu", + "@yourPublicKey": { + "type": "String", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "Kamu telah dicekal dari obrolan ini", + "@youHaveBeenBannedFromThisChat": { + "type": "String", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "Kamu tidak berpartisipasi lagi di obrolan ini", + "@youAreNoLongerParticipatingInThisChat": { + "type": "String", + "placeholders": {} + }, + "you": "Kamu", + "@you": { + "type": "String", + "placeholders": {} + }, + "yes": "Ya", + "@yes": { + "type": "String", + "placeholders": {} + }, + "writeAMessage": "Tulis pesan…", + "@writeAMessage": { + "type": "String", + "placeholders": {} + }, + "withTheseAddressesRecoveryDescription": "Dengan alamat ini kamu bisa memulihkan kata sandimu.", + "@withTheseAddressesRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "wipeChatBackup": "Hapus cadangan obrolan untuk membuat kunci pemulihan baru?", + "@wipeChatBackup": { + "type": "String", + "placeholders": {} + }, + "whyDoYouWantToReportThis": "Kenapa kamu ingin melaporkannya?", + "@whyDoYouWantToReportThis": { + "type": "String", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "Siapa yang dapat bergabung ke grup ini", + "@whoIsAllowedToJoinThisGroup": { + "type": "String", + "placeholders": {} + }, + "whoCanPerformWhichAction": "Siapa yang dapat melakukan tindakan apa", + "@whoCanPerformWhichAction": { + "type": "String", + "placeholders": {} + }, + "weSentYouAnEmail": "Kami mengirim kamu sebuah email", + "@weSentYouAnEmail": { + "type": "String", + "placeholders": {} + }, + "warning": "Peringatan!", + "@warning": { + "type": "String", + "placeholders": {} + }, + "wallpaper": "Latar belakang:", + "@wallpaper": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerNumbers": "Menunggu pengguna untuk menerima angka…", + "@waitingPartnerNumbers": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerEmoji": "Menunggu pengguna untuk menerima emoji…", + "@waitingPartnerEmoji": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "Menunggu pengguna untuk menerima permintaan…", + "@waitingPartnerAcceptRequest": { + "type": "String", + "placeholders": {} + }, + "voiceMessage": "Pesan suara", + "@voiceMessage": { + "type": "String", + "placeholders": {} + }, + "visibleForEveryone": "Terlihat untuk semua orang", + "@visibleForEveryone": { + "type": "String", + "placeholders": {} + }, + "visibleForAllParticipants": "Terlihat untuk semua anggota", + "@visibleForAllParticipants": { + "type": "String", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "Visibilitas sejarah obrolan", + "@visibilityOfTheChatHistory": { + "type": "String", + "placeholders": {} + }, + "videoCall": "Panggilan video", + "@videoCall": { + "type": "String", + "placeholders": {} + }, + "verifyTitle": "Memverifikasi akun lain", + "@verifyTitle": { + "type": "String", + "placeholders": {} + }, + "verifySuccess": "Kamu berhasil memverifikasi!", + "@verifySuccess": { + "type": "String", + "placeholders": {} + }, + "verifyStart": "Mulai Verifikasi", + "@verifyStart": { + "type": "String", + "placeholders": {} + }, + "verify": "Verifikasi", + "@verify": { + "type": "String", + "placeholders": {} + }, + "userSentUnknownEvent": "{username} mengirim peristiwa {type}", + "@userSentUnknownEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "type": { + "type": "String" + } + } + }, + "username": "Nama Pengguna", + "@username": { + "type": "String", + "placeholders": {} + }, + "userIsTyping": "{username} sedang mengetik…", + "@userIsTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "userAndUserAreTyping": "{username} dan {username2} sedang mengetik…", + "@userAndUserAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "username2": { + "type": "String" + } + } + }, + "userAndOthersAreTyping": "{username} dan {count} lainnya sedang mengetik…", + "@userAndOthersAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "unreadChats": "{unreadCount, plural, =1{1 obrolan belum dibaca} other{{unreadCount} obrolan belum dibaca}}", + "@unreadChats": { + "type": "String", + "placeholders": { + "unreadCount": { + "type": "int" + } + } + }, + "unpin": "Lepaskan pin", + "@unpin": { + "type": "String", + "placeholders": {} + }, + "unmuteChat": "Bunyikan obrolan", + "@unmuteChat": { + "type": "String", + "placeholders": {} + }, + "unknownEvent": "Peristiwa tidak dikenal '{type}'", + "@unknownEvent": { + "type": "String", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "unknownEncryptionAlgorithm": "Algoritma enkripsi tidak dikenal", + "@unknownEncryptionAlgorithm": { + "type": "String", + "placeholders": {} + }, + "unknownDevice": "Perangkat tidak dikenal", + "@unknownDevice": { + "type": "String", + "placeholders": {} + }, + "unblockDevice": "Hilangkan Pemblokiran Perangkat", + "@unblockDevice": { + "type": "String", + "placeholders": {} + }, + "unbannedUser": "{username} menghilangkan cekalan {targetName}", + "@unbannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "tryToSendAgain": "Coba kirim lagi", + "@tryToSendAgain": { + "type": "String", + "placeholders": {} + }, + "tooManyRequestsWarning": "Terlalu banyak permintaan. Coba lagi nanti!", + "@tooManyRequestsWarning": { + "type": "String", + "placeholders": {} + }, + "toggleUnread": "Tandai Baca/Belum Dibaca", + "@toggleUnread": { + "type": "String", + "placeholders": {} + }, + "toggleMuted": "Beralih Bisuan", + "@toggleMuted": { + "type": "String", + "placeholders": {} + }, + "toggleFavorite": "Beralih Favorit", + "@toggleFavorite": { + "type": "String", + "placeholders": {} + }, + "title": "FluffyChat", + "@title": { + "description": "Title for the application", + "type": "String", + "placeholders": {} + }, + "theyMatch": "Cocok", + "@theyMatch": { + "type": "String", + "placeholders": {} + }, + "theyDontMatch": "Tidak Cocok", + "@theyDontMatch": { + "type": "String", + "placeholders": {} + }, + "systemTheme": "Sistem", + "@systemTheme": { + "type": "String", + "placeholders": {} + }, + "synchronizingPleaseWait": "Menyinkronkan... Mohon tunggu.", + "@synchronizingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "submit": "Kirim", + "@submit": { + "type": "String", + "placeholders": {} + }, + "statusExampleMessage": "Apa kabar hari ini?", + "@statusExampleMessage": { + "type": "String", + "placeholders": {} + }, + "status": "Status", + "@status": { + "type": "String", + "placeholders": {} + }, + "startedACall": "{senderName} memulai panggilan", + "@startedACall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "spaceName": "Nama space", + "@spaceName": { + "type": "String", + "placeholders": {} + }, + "spaceIsPublic": "Space publik", + "@spaceIsPublic": { + "type": "String", + "placeholders": {} + }, + "sourceCode": "Kode sumber", + "@sourceCode": { + "type": "String", + "placeholders": {} + }, + "skip": "Lewat", + "@skip": { + "type": "String", + "placeholders": {} + }, + "singlesignon": "Login Masuk Tunggal", + "@singlesignon": { + "type": "String", + "placeholders": {} + }, + "shareLocation": "Bagikan lokasi", + "@shareLocation": { + "type": "String", + "placeholders": {} + }, + "sharedTheLocation": "{username} membagikan lokasinya", + "@sharedTheLocation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "share": "Bagikan", + "@share": { + "type": "String", + "placeholders": {} + }, + "settings": "Pengaturan", + "@settings": { + "type": "String", + "placeholders": {} + }, + "setStatus": "Tetapkan status", + "@setStatus": { + "type": "String", + "placeholders": {} + }, + "setPermissionsLevel": "Tetapkan level izin", + "@setPermissionsLevel": { + "type": "String", + "placeholders": {} + }, + "setInvitationLink": "Tetapkan tautan undangan", + "@setInvitationLink": { + "type": "String", + "placeholders": {} + }, + "setCustomEmotes": "Tetapkan emote kustom", + "@setCustomEmotes": { + "type": "String", + "placeholders": {} + }, + "sentCallInformations": "{senderName} mengirim informasi panggilan", + "@sentCallInformations": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "sentAVideo": "🎥 {username} mengirim video", + "@sentAVideo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentASticker": "😊 {username} mengirim stiker", + "@sentASticker": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAPicture": "🖼️ {username} mengirim gambar", + "@sentAPicture": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAnAudio": "🎤 {username} mengirim suara", + "@sentAnAudio": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAFile": "📁 {username} mengirim file", + "@sentAFile": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "seenByUser": "Dilihat oleh {username}", + "@seenByUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "security": "Keamanan", + "@security": { + "type": "String", + "placeholders": {} + }, + "search": "Cari", + "@search": { + "type": "String", + "placeholders": {} + }, + "requestPermission": "Minta izin", + "@requestPermission": { + "type": "String", + "placeholders": {} + }, + "reportMessage": "Laporkan pesan", + "@reportMessage": { + "type": "String", + "placeholders": {} + }, + "reply": "Balas", + "@reply": { + "type": "String", + "placeholders": {} + }, + "replaceRoomWithNewerVersion": "Menggantikan ruangan dengan versi baru", + "@replaceRoomWithNewerVersion": { + "type": "String", + "placeholders": {} + }, + "unbanFromChat": "Hilangkan cekalan dari obrolan", + "@unbanFromChat": { + "type": "String", + "placeholders": {} + }, + "remove": "Hapus", + "@remove": { + "type": "String", + "placeholders": {} + }, + "rejoin": "Gabung kembali", + "@rejoin": { + "type": "String", + "placeholders": {} + }, + "rejectedTheInvitation": "{username} menolak undangannya", + "@rejectedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "reject": "Tolak", + "@reject": { + "type": "String", + "placeholders": {} + }, + "redactMessage": "Hapus pesan", + "@redactMessage": { + "type": "String", + "placeholders": {} + }, + "redactedAnEvent": "{username} menghapus sebuah peristiwa", + "@redactedAnEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "pleaseEnterYourPassword": "Mohon masukkan kata sandimu", + "@pleaseEnterYourPassword": { + "type": "String", + "placeholders": {} + }, + "pleaseClickOnLink": "Mohon klik tautan di email dan lanjut.", + "@pleaseClickOnLink": { + "type": "String", + "placeholders": {} + }, + "pleaseChooseAPasscode": "Mohon pilih kode sandi", + "@pleaseChooseAPasscode": { + "type": "String", + "placeholders": {} + }, + "play": "Mainkan {fileName}", + "@play": { + "type": "String", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "pin": "Pin", + "@pin": { + "type": "String", + "placeholders": {} + }, + "passwordRecovery": "Pemulihan kata sandi", + "@passwordRecovery": { + "type": "String", + "placeholders": {} + }, + "passwordHasBeenChanged": "Kata sandi telah diubah", + "@passwordHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "passwordForgotten": "Lupa kata sandi", + "@passwordForgotten": { + "type": "String", + "placeholders": {} + }, + "password": "Kata sandi", + "@password": { + "type": "String", + "placeholders": {} + }, + "passphraseOrKey": "frasa sandi atau kunci pemulihan", + "@passphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "participant": "Peserta", + "@participant": { + "type": "String", + "placeholders": {} + }, + "or": "Atau", + "@or": { + "type": "String", + "placeholders": {} + }, + "serverRequiresEmail": "Server ini harus memvalidasi alamat email kamu untuk registrasi.", + "@serverRequiresEmail": {}, + "openInMaps": "Buka di peta", + "@openInMaps": { + "type": "String", + "placeholders": {} + }, + "enableMultiAccounts": "(BETA) Aktifkan multi-akun di perangkat ini", + "@enableMultiAccounts": {}, + "bundleName": "Nama bundel", + "@bundleName": {}, + "removeFromBundle": "Hilangkan dari bundel ini", + "@removeFromBundle": {}, + "addToBundle": "Tambah ke bundel", + "@addToBundle": {}, + "editBundlesForAccount": "Edit bundel untuk akun ini", + "@editBundlesForAccount": {}, + "addAccount": "Tambah akun", + "@addAccount": {}, + "oneClientLoggedOut": "Salah satu klienmu telah keluar", + "@oneClientLoggedOut": {}, + "openCamera": "Buka kamera", + "@openCamera": { + "type": "String", + "placeholders": {} + }, + "openAppToReadMessages": "Buka aplikasi untuk membaca pesan", + "@openAppToReadMessages": { + "type": "String", + "placeholders": {} + }, + "oopsSomethingWentWrong": "Ups, ada yang salah…", + "@oopsSomethingWentWrong": { + "type": "String", + "placeholders": {} + }, + "offensive": "Menyinggung", + "@offensive": { + "type": "String", + "placeholders": {} + }, + "obtainingLocation": "Mendapatkan lokasi…", + "@obtainingLocation": { + "type": "String", + "placeholders": {} + }, + "numUsersTyping": "{count} pengguna sedang mengetik…", + "@numUsersTyping": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "scanQrCode": "Pindai kode QR", + "@scanQrCode": {}, + "noMatrixServer": "{server1} itu bukan server Matrix, gunakan {server2} saja?", + "@noMatrixServer": { + "type": "String", + "placeholders": { + "server1": { + "type": "String" + }, + "server2": { + "type": "String" + } + } + }, + "no": "Tidak", + "@no": { + "type": "String", + "placeholders": {} + }, + "noConnectionToTheServer": "Tidak ada koneksi ke server", + "@noConnectionToTheServer": { + "type": "String", + "placeholders": {} + }, + "messages": "Pesan", + "@messages": { + "type": "String", + "placeholders": {} + }, + "locationDisabledNotice": "Layanan lokasi dinonaktifkan. Mohon diaktifkan untuk bisa membagikan lokasimu.", + "@locationDisabledNotice": { + "type": "String", + "placeholders": {} + }, + "locationPermissionDeniedNotice": "Izin lokasi ditolak. Mohon memberikan izin untuk bisa membagikan lokasimu.", + "@locationPermissionDeniedNotice": { + "type": "String", + "placeholders": {} + }, + "lightTheme": "Terang", + "@lightTheme": { + "type": "String", + "placeholders": {} + }, + "inoffensive": "Tidak menyinggung", + "@inoffensive": { + "type": "String", + "placeholders": {} + }, + "ignore": "Abaikan", + "@ignore": { + "type": "String", + "placeholders": {} + }, + "howOffensiveIsThisContent": "Seberapa menyinggungnya konten ini?", + "@howOffensiveIsThisContent": { + "type": "String", + "placeholders": {} + }, + "groups": "Grup", + "@groups": { + "type": "String", + "placeholders": {} + }, + "fontSize": "Ukuran font", + "@fontSize": { + "type": "String", + "placeholders": {} + }, + "errorObtainingLocation": "Gagal mendapat lokasi: {error}", + "@errorObtainingLocation": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "homeserver": "Homeserver", + "@homeserver": {}, + "enableEncryption": "Aktifkan enkripsi", + "@enableEncryption": { + "type": "String", + "placeholders": {} + }, + "editRoomAvatar": "Edit avatar ruangan", + "@editRoomAvatar": { + "type": "String", + "placeholders": {} + }, + "editBlockedServers": "Edit server yang diblokir", + "@editBlockedServers": { + "type": "String", + "placeholders": {} + }, + "defaultPermissionLevel": "Level izin bawaan untuk pengguna baru", + "@defaultPermissionLevel": { + "type": "String", + "placeholders": {} + }, + "darkTheme": "Gelap", + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "createNewSpace": "Space baru", + "@createNewSpace": { + "type": "String", + "placeholders": {} + }, + "contentHasBeenReported": "Konten telah dilaporkan ke admin server", + "@contentHasBeenReported": { + "type": "String", + "placeholders": {} + }, + "configureChat": "Konfigurasi obrolan", + "@configureChat": { + "type": "String", + "placeholders": {} + }, + "commandMissing": "{command} bukan sebuah perintah.", + "@commandMissing": { + "type": "String", + "placeholders": { + "command": { + "type": "String" + } + }, + "description": "State that {command} is not a valid /command." + }, + "commandInvalid": "Perintah tidak valid", + "@commandInvalid": { + "type": "String" + }, + "commandHint_unban": "Hilangkan cekalan untuk pengguna yang dicantumkan dari ruangan ini", + "@commandHint_unban": { + "type": "String", + "description": "Usage hint for the command /unban" + }, + "commandHint_send": "Kirim teks", + "@commandHint_send": { + "type": "String", + "description": "Usage hint for the command /send" + }, + "commandHint_react": "Kirim balasan sebagai reaksi", + "@commandHint_react": { + "type": "String", + "description": "Usage hint for the command /react" + }, + "commandHint_plain": "Kirim teks yang tidak diformat", + "@commandHint_plain": { + "type": "String", + "description": "Usage hint for the command /plain" + }, + "commandHint_op": "Tetapkan tingkat kekuatan pengguna yang dicantum (default: 50)", + "@commandHint_op": { + "type": "String", + "description": "Usage hint for the command /op" + }, + "commandHint_myroomnick": "Tetapkan nama tampilanmu untuk ruangan ini", + "@commandHint_myroomnick": { + "type": "String", + "description": "Usage hint for the command /myroomnick" + }, + "commandHint_myroomavatar": "Tetapkan gambarmu untuk ruangan ini (oleh uri-mxc)", + "@commandHint_myroomavatar": { + "type": "String", + "description": "Usage hint for the command /myroomavatar" + }, + "commandHint_me": "Jelaskan dirimu", + "@commandHint_me": { + "type": "String", + "description": "Usage hint for the command /me" + }, + "commandHint_leave": "Tinggalkan ruangan ini", + "@commandHint_leave": { + "type": "String", + "description": "Usage hint for the command /leave" + }, + "commandHint_kick": "Keluarkan pengguna yang dicantum dari ruangan ini", + "@commandHint_kick": { + "type": "String", + "description": "Usage hint for the command /kick" + }, + "commandHint_join": "Gabung ke ruangan yang dicantum", + "@commandHint_join": { + "type": "String", + "description": "Usage hint for the command /join" + }, + "commandHint_invite": "Undang pengguna yang dicantum ke ruangan ini", + "@commandHint_invite": { + "type": "String", + "description": "Usage hint for the command /invite" + }, + "commandHint_html": "Kirim teks yang diformat dengan HTML", + "@commandHint_html": { + "type": "String", + "description": "Usage hint for the command /html" + }, + "commandHint_ban": "Cekal pengguna yang dicantumkan dari ruangan ini", + "@commandHint_ban": { + "type": "String", + "description": "Usage hint for the command /ban" + }, + "chatHasBeenAddedToThisSpace": "Obrolan telah ditambahkan ke space ini", + "@chatHasBeenAddedToThisSpace": {}, + "changeTheme": "Ubah tema", + "@changeTheme": { + "type": "String", + "placeholders": {} + }, + "extremeOffensive": "Sangat menyinggung", + "@extremeOffensive": { + "type": "String", + "placeholders": {} + }, + "sendVideo": "Kirim video", + "@sendVideo": { + "type": "String", + "placeholders": {} + }, + "sendSticker": "Kirim stiker", + "@sendSticker": { + "type": "String", + "placeholders": {} + }, + "sendOriginal": "Kirim yang asli", + "@sendOriginal": { + "type": "String", + "placeholders": {} + }, + "sendMessages": "Kirim pesan", + "@sendMessages": { + "type": "String", + "placeholders": {} + }, + "sendImage": "Kirim gambar", + "@sendImage": { + "type": "String", + "placeholders": {} + }, + "sendFile": "Kirim file", + "@sendFile": { + "type": "String", + "placeholders": {} + }, + "sendAudio": "Kirim suara", + "@sendAudio": { + "type": "String", + "placeholders": {} + }, + "sendAsText": "Kirim sebagai teks", + "@sendAsText": { + "type": "String" + }, + "sendAMessage": "Kirim pesan", + "@sendAMessage": { + "type": "String", + "placeholders": {} + }, + "send": "Kirim", + "@send": { + "type": "String", + "placeholders": {} + }, + "saveFile": "Simpan file", + "@saveFile": { + "type": "String", + "placeholders": {} + }, + "roomHasBeenUpgraded": "Ruangan telah ditingkatkan", + "@roomHasBeenUpgraded": { + "type": "String", + "placeholders": {} + }, + "removeDevice": "Hapus perangkat", + "@removeDevice": { + "type": "String", + "placeholders": {} + }, + "removedBy": "Dihapus oleh {username}", + "@removedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "removeAllOtherDevices": "Hapus semua perangkat lain", + "@removeAllOtherDevices": { + "type": "String", + "placeholders": {} + }, + "recording": "Merekam", + "@recording": { + "type": "String", + "placeholders": {} + }, + "reason": "Alasan", + "@reason": { + "type": "String", + "placeholders": {} + }, + "publicRooms": "Ruangan Publik", + "@publicRooms": { + "type": "String", + "placeholders": {} + }, + "privacy": "Privasi", + "@privacy": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourUsername": "Mohon masukkan nama penggunamu", + "@pleaseEnterYourUsername": { + "type": "String", + "placeholders": {} + }, + "pleaseEnter4Digits": "Mohon masukkan 4 digit atau tinggalkan kosong untuk menonaktifkan kunci aplikasi.", + "@pleaseEnter4Digits": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPin": "Masukkan pin", + "@pleaseEnterYourPin": { + "type": "String", + "placeholders": {} + }, + "pickImage": "Pilih gambar", + "@pickImage": { + "type": "String", + "placeholders": {} + }, + "link": "Tautan", + "@link": {}, + "yourChatBackupHasBeenSetUp": "Cadangan obrolanmu telah disiapkan.", + "@yourChatBackupHasBeenSetUp": {}, + "unverified": "Tidak terverifikasi", + "@unverified": {}, + "repeatPassword": "Ulangi kata sandi", + "@repeatPassword": {}, + "messageInfo": "Informasi pesan", + "@messageInfo": {}, + "time": "Waktu", + "@time": {}, + "messageType": "Tipe Pesan", + "@messageType": {}, + "sender": "Pengirim", + "@sender": {}, + "openGallery": "Buka galeri", + "@openGallery": {}, + "addToSpaceDescription": "Pilih sebuah space untuk menambahkan obrolan ke spacenya.", + "@addToSpaceDescription": {}, + "start": "Mulai", + "@start": {}, + "removeFromSpace": "Hilangkan dari space", + "@removeFromSpace": {}, + "commandHint_clearcache": "Bersihkan tembolok", + "@commandHint_clearcache": { + "type": "String", + "description": "Usage hint for the command /clearcache" + }, + "commandHint_discardsession": "Buang sesi", + "@commandHint_discardsession": { + "type": "String", + "description": "Usage hint for the command /discardsession" + }, + "commandHint_dm": "Mulai sebuah obrolan langsung\nGunakan --no-encryption untuk menonaktifkan enkripsi", + "@commandHint_dm": { + "type": "String", + "description": "Usage hint for the command /dm" + }, + "commandHint_create": "Buat sebuah grup obrolan kosong\nGunakan --no-encryption untuk menonaktifkan enkripsi", + "@commandHint_create": { + "type": "String", + "description": "Usage hint for the command /create" + }, + "openVideoCamera": "Buka kamera untuk merekam video", + "@openVideoCamera": { + "type": "String", + "placeholders": {} + }, + "publish": "Publikasi", + "@publish": {}, + "videoWithSize": "Video ({size})", + "@videoWithSize": { + "type": "String", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "dismiss": "Abaikan", + "@dismiss": {}, + "markAsRead": "Tandai sebagai dibaca", + "@markAsRead": {}, + "reportUser": "Laporkan pengguna", + "@reportUser": {}, + "openChat": "Buka Chat", + "@openChat": {}, + "reactedWith": "{sender} bereaksi dengan {reaction}", + "@reactedWith": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "reaction": { + "type": "String" + } + } + }, + "emojis": "Emoji", + "@emojis": {}, + "pinMessage": "Sematkan ke ruangan", + "@pinMessage": {}, + "confirmEventUnpin": "Apakah kamu yakin untuk melepaskan pin peristiwa ini secara permanen?", + "@confirmEventUnpin": {}, + "unsupportedAndroidVersionLong": "Fitur ini memerlukan versi Android yang baru. Mohon periksa untuk pembaruan atau dukungan LineageOS.", + "@unsupportedAndroidVersionLong": {}, + "unsupportedAndroidVersion": "Versi Android tidak didukung", + "@unsupportedAndroidVersion": {}, + "placeCall": "Lakukan panggilan", + "@placeCall": {}, + "voiceCall": "Panggilan suara", + "@voiceCall": {}, + "videoCallsBetaWarning": "Dicatat bahwa panggilan video sedang dalam beta. Fitur ini mungkin tidak berkerja dengan benar atau tidak berkerja sama sekali pada semua platform.", + "@videoCallsBetaWarning": {}, + "emailOrUsername": "Email atau nama pengguna", + "@emailOrUsername": {}, + "experimentalVideoCalls": "Panggilan video eksperimental", + "@experimentalVideoCalls": {}, + "previousAccount": "Akun sebelumnya", + "@previousAccount": {}, + "switchToAccount": "Ganti ke akun {number}", + "@switchToAccount": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "nextAccount": "Akun berikutnya", + "@nextAccount": {}, + "widgetEtherpad": "Catatan teks", + "@widgetEtherpad": {}, + "widgetJitsi": "Jitsi Meet", + "@widgetJitsi": {}, + "widgetCustom": "Kustom", + "@widgetCustom": {}, + "errorAddingWidget": "Terjadi kesalahan menambahkan widget.", + "@errorAddingWidget": {}, + "widgetName": "Nama", + "@widgetName": {}, + "addWidget": "Tambahkan widget", + "@addWidget": {}, + "widgetVideo": "Video", + "@widgetVideo": {}, + "widgetUrlError": "Ini bukan URL yang valid.", + "@widgetUrlError": {}, + "widgetNameError": "Mohon sediakan sebuah nama tampilan.", + "@widgetNameError": {}, + "separateChatTypes": "Pisahkan Pesan Langsung dan Grup", + "@separateChatTypes": { + "type": "String", + "placeholders": {} + }, + "youInvitedBy": "📩 Kamu telah diundang oleh {user}", + "@youInvitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youInvitedUser": "📩 Kamu mengundang {user}", + "@youInvitedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youKicked": "👞 Kamu mengeluarkan {user}", + "@youKicked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youKickedAndBanned": "🙅 Kamu mengeluarkan dan mencekal {user}", + "@youKickedAndBanned": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youRejectedTheInvitation": "Kamu menolak undangannya", + "@youRejectedTheInvitation": {}, + "youJoinedTheChat": "Kamu bergabung ke obrolan", + "@youJoinedTheChat": {}, + "youAcceptedTheInvitation": "👍 Kamu menerima undangannya", + "@youAcceptedTheInvitation": {}, + "youBannedUser": "Kamu mencekal {user}", + "@youBannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youHaveWithdrawnTheInvitationFor": "Kamu telah membatalkan undangan untuk {user}", + "@youHaveWithdrawnTheInvitationFor": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youUnbannedUser": "Kamu membatalkan cekalan {user}", + "@youUnbannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "pleaseEnterRecoveryKeyDescription": "Untuk mengakses pesan lamamu, mohon masukkan kunci pemulihanmu yang telah dibuat di sesi sebelumnya. Kunci pemulihanmu BUKAN kata sandimu.", + "@pleaseEnterRecoveryKeyDescription": {}, + "users": "Pengguna", + "@users": {}, + "storeInSecureStorageDescription": "Simpan kunci pemulihan di penyimpanan aman perangkat ini.", + "@storeInSecureStorageDescription": {}, + "saveKeyManuallyDescription": "Simpan kunci ini secara manual dengan memicu dialog pembagian atau papan klip sistem.", + "@saveKeyManuallyDescription": {}, + "recoveryKey": "Kunci pemulihan", + "@recoveryKey": {}, + "storeInAppleKeyChain": "Simpan di Apple KeyChain", + "@storeInAppleKeyChain": {}, + "pleaseEnterRecoveryKey": "Mohon masukkan kunci pemulihanmu:", + "@pleaseEnterRecoveryKey": {}, + "unlockOldMessages": "Akses pesan lama", + "@unlockOldMessages": {}, + "recoveryKeyLost": "Kunci pemulihan hilang?", + "@recoveryKeyLost": {}, + "storeInAndroidKeystore": "Simpan di Android KeyStore", + "@storeInAndroidKeystore": {}, + "storeSecurlyOnThisDevice": "Simpan secara aman di perangkat ini", + "@storeSecurlyOnThisDevice": {}, + "countFiles": "{count} file", + "@countFiles": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "hydrate": "Pulihkan dari file cadangan", + "@hydrate": {}, + "indexedDbErrorTitle": "Masalah dengan mode privat", + "@indexedDbErrorTitle": {}, + "indexedDbErrorLong": "Penyimpanan pesan sayangnya tidak diaktifkan dalam mode privat secara default.\nMohon kunjungi\n- about:config\n- tetapkan dom.indexedDB.privateBrowsing.enabled ke true\nJika tidak ditetapkan, FluffyChat tidak akan dapat dijalankan.", + "@indexedDbErrorLong": {}, + "dehydrate": "Ekspor sesi dan bersihkan perangkat", + "@dehydrate": {}, + "dehydrateWarning": "Tindakan ini tidak dapat diurungkan. Pastikan kamu telah menyimpan file cadangan dengan aman.", + "@dehydrateWarning": {}, + "dehydrateTor": "Pengguna Tor: Ekspor sesi", + "@dehydrateTor": {}, + "hydrateTorLong": "Apakah kamu mengekspor sesimu terakhir kali di Tor? Impor dengan cepat dan lanjut mengobrol.", + "@hydrateTorLong": {}, + "dehydrateTorLong": "Pengguna Tor disarankan untuk mengekspor sesi sebelum menutup jendela.", + "@dehydrateTorLong": {}, + "hydrateTor": "Pengguna Tor: Impor eksporan sesi", + "@hydrateTor": {}, + "custom": "Kustom", + "@custom": {}, + "user": "Pengguna", + "@user": {}, + "confirmMatrixId": "Mohon konfirmasi ID Matrix Anda untuk menghapus akun Anda.", + "@confirmMatrixId": {}, + "supposedMxid": "Ini seharusnya {mxid}", + "@supposedMxid": { + "type": "String", + "placeholders": { + "mxid": { + "type": "String" + } + } + }, + "commandHint_markasdm": "Tandai sebagai ruangan pesan langsung untuk ID Matrix yang ditentukan", + "@commandHint_markasdm": {}, + "commandHint_markasgroup": "Tandai sebagai grup", + "@commandHint_markasgroup": {}, + "screenSharingTitle": "membagikan layar", + "@screenSharingTitle": {}, + "appearOnTopDetails": "Memperbolehkan aplikasi untuk ditampilkan di atas (tidak dibutuhkan jika kamu memiliki FluffyChat ditetapkan sebagai akun pemanggilan)", + "@appearOnTopDetails": {}, + "callingAccountDetails": "Memperbolehkan FluffyChat untuk menggunakan aplikasi penelepon Android bawaan.", + "@callingAccountDetails": {}, + "noKeyForThisMessage": "Hal ini bisa terjadi jika pesan dikirim sebelum kamu masuk ke akunmu di perangkat ini.\n\nMungkin juga pengirim telah memblokir perangkatmu atau ada yang tidak beres dengan koneksi internet.\n\nApakah kamu bisa membaca pesan pada sesi lain? Maka kamu bisa mentransfer pesan dari sesi tersebut! Buka Pengaturan > Perangkat dan pastikan bahwa perangkat Anda telah ditandatangani secara silang. Ketika kamu membuka ruangan di lain waktu dan kedua sesi berada di latar depan, kunci akan ditransmisikan secara otomatis.\n\nApakah kamu tidak mau kehilangan kunci saat keluar atau berpindah perangkat? Pastikan bahwa kamu telah mengaktifkan cadangan obrolan dalam pengaturan.", + "@noKeyForThisMessage": {}, + "foregroundServiceRunning": "Notifikasi ini ditampilkan ketika layanan latar depan berjalan.", + "@foregroundServiceRunning": {}, + "callingPermissions": "Perizinan panggilan", + "@callingPermissions": {}, + "appearOnTop": "Tampilkan di atas", + "@appearOnTop": {}, + "callingAccount": "Akun pemanggilan", + "@callingAccount": {}, + "otherCallingPermissions": "Mikrofon, kamera dan perizinan FluffyChat lainnya", + "@otherCallingPermissions": {}, + "whyIsThisMessageEncrypted": "Mengapa pesan ini tidak bisa dibaca?", + "@whyIsThisMessageEncrypted": {}, + "newGroup": "Grup baru", + "@newGroup": {}, + "newSpace": "Space baru", + "@newSpace": {}, + "enterSpace": "Masuk space", + "@enterSpace": {}, + "enterRoom": "Masuk ruangan", + "@enterRoom": {}, + "allSpaces": "Semua space", + "@allSpaces": {}, + "screenSharingDetail": "Kamu membagikan layarmu di FluffyChat", + "@screenSharingDetail": {}, + "numChats": "{number} obrolan", + "@numChats": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "hideUnimportantStateEvents": "Sembunyikan peristiwa keadaan yang tidak penting", + "@hideUnimportantStateEvents": {}, + "doNotShowAgain": "Jangan tampilkan lagi", + "@doNotShowAgain": {}, + "hugContent": "{senderName} memeluk kamu", + "@hugContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "googlyEyesContent": "{senderName} mengirim mata googly", + "@googlyEyesContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "cuddleContent": "{senderName} berpelukan dengan kamu", + "@cuddleContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "commandHint_googly": "Kirim mata googly", + "@commandHint_googly": {}, + "commandHint_hug": "Kirim pelukan", + "@commandHint_hug": {}, + "commandHint_cuddle": "Kirim berpelukan", + "@commandHint_cuddle": {}, + "wasDirectChatDisplayName": "Obrolan kosong (sebelumnya {oldDisplayName})", + "@wasDirectChatDisplayName": { + "type": "String", + "placeholders": { + "oldDisplayName": { + "type": "String" + } + } + }, + "startFirstChat": "Mulai obrolan pertamamu", + "@startFirstChat": {}, + "newSpaceDescription": "Fitur space bisa membantu untuk memisahkan obrolanmu dan membuat komunitas pribadi atau publik.", + "@newSpaceDescription": {}, + "sorryThatsNotPossible": "Maaf... itu tidak mungkin", + "@sorryThatsNotPossible": {}, + "deviceKeys": "Kunci perangkat:", + "@deviceKeys": {}, + "encryptThisChat": "Enkripsi obrolan ini", + "@encryptThisChat": {}, + "disableEncryptionWarning": "Demi keamanan kamu tidak bisa menonaktifkan enkripsi dalam sebuah obrolan di mana sebelumbya sudah diaktifkan.", + "@disableEncryptionWarning": {}, + "reopenChat": "Buka obrolan lagi", + "@reopenChat": {}, + "noBackupWarning": "Peringatan! Tanpa mengaktifkan cadangan percakapan, kamu akan kehilangan akses ke pesan terenkripsimu. Disarankan untuk mengaktifkan cadangan percakapan terlebih dahulu sebelum keluar dari akun.", + "@noBackupWarning": {}, + "noOtherDevicesFound": "Tidak ada perangkat lain yang ditemukan", + "@noOtherDevicesFound": {}, + "fileIsTooBigForServer": "Tidak dapat mengirim! Server hanya mendukung lampiran sampai dengan {max}.", + "@fileIsTooBigForServer": {}, + "fileHasBeenSavedAt": "Berkas telah disimpan di {path}", + "@fileHasBeenSavedAt": { + "type": "String", + "placeholders": { + "path": { + "type": "String" + } + } + }, + "jumpToLastReadMessage": "Pergi ke pesan terakhir dibaca", + "@jumpToLastReadMessage": {}, + "readUpToHere": "Baca sampai sini", + "@readUpToHere": {}, + "jump": "Lompat", + "@jump": {}, + "openLinkInBrowser": "Buka tautan dalam peramban", + "@openLinkInBrowser": {}, + "allRooms": "Semua Percakapan Grup", + "@allRooms": { + "type": "String", + "placeholders": {} + }, + "report": "laporkan", + "@report": {}, + "reportErrorDescription": "😭 Aduh. Ada yang salah. Jika kamu mau, kamu bisa melaporkan kutu ini kepada para pengembang.", + "@reportErrorDescription": {}, + "signInWithPassword": "Masuk dengan kata sandi", + "@signInWithPassword": {}, + "pleaseTryAgainLaterOrChooseDifferentServer": "Silakan coba lagi nanti atau pilih server yang lain.", + "@pleaseTryAgainLaterOrChooseDifferentServer": {}, + "signInWith": "Masuk dengan {provider}", + "@signInWith": { + "type": "String", + "placeholders": { + "provider": { + "type": "String" + } + } + }, + "notAnImage": "Bukan berkas gambar.", + "@notAnImage": {}, + "importNow": "Impor sekarang", + "@importNow": {}, + "importFromZipFile": "Impor dari berkas .zip", + "@importFromZipFile": {}, + "exportEmotePack": "Ekspor paket Emote sebagai .zip", + "@exportEmotePack": {}, + "replace": "Ganti", + "@replace": {}, + "importEmojis": "Impor Emoji", + "@importEmojis": {}, + "sendTypingNotifications": "Kirim notifikasi pengetikan", + "@sendTypingNotifications": {}, + "createGroup": "Buat grup", + "@createGroup": {}, + "inviteContactToGroupQuestion": "Apakah kamu ingin mengundang {contact} ke obrolan \"{groupName}\"?", + "@inviteContactToGroupQuestion": {}, + "tryAgain": "Coba ulang", + "@tryAgain": {}, + "messagesStyle": "Pesan:", + "@messagesStyle": {}, + "shareInviteLink": "Bagikan tautan undangan", + "@shareInviteLink": {}, + "setTheme": "Atur tema:", + "@setTheme": {}, + "invalidServerName": "Nama server tidak valid", + "@invalidServerName": {}, + "addChatDescription": "Tambahkan deskripsi obrolan...", + "@addChatDescription": {}, + "chatPermissions": "Perizinan obrolan", + "@chatPermissions": {}, + "chatDescription": "Deskripsi obrolan", + "@chatDescription": {}, + "chatDescriptionHasBeenChanged": "Deskripsi obrolan diubah", + "@chatDescriptionHasBeenChanged": {}, + "noChatDescriptionYet": "Deskripsi obrolan belum dibuat.", + "@noChatDescriptionYet": {}, + "redactMessageDescription": "Pesan akan dihilangkan untuk semua anggota dalam percakapan ini. Ini tidak dapat diurungkan.", + "@redactMessageDescription": {}, + "optionalRedactReason": "(Opsional) Alasan menghilangkan pesan ini...", + "@optionalRedactReason": {}, + "redactedBy": "Dihilangkan oleh {username}", + "@redactedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "directChat": "Chat langsung", + "@directChat": {}, + "redactedByBecause": "Dihilangkan oleh {username} karena: \"{reason}\"", + "@redactedByBecause": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "reason": { + "type": "String" + } + } + }, + "setChatDescription": "Lihat deskripsi obrolan", + "@setChatDescription": {}, + "profileNotFound": "Pengguna ini tidak dapat ditemukan di server. Mungkin ada masalah koneksi atau penggunanya tidak ada.", + "@profileNotFound": {}, + "setColorTheme": "Atur tema warna:", + "@setColorTheme": {}, + "invite": "Undang", + "@invite": {}, + "inviteGroupChat": "📨 Undangan percakapan grup", + "@inviteGroupChat": {}, + "invitePrivateChat": "📨 Undangan percakapan privat", + "@invitePrivateChat": {}, + "emoteKeyboardNoRecents": "Emote yang telah digunakan akan muncul di sini...", + "@emoteKeyboardNoRecents": { + "type": "String", + "placeholders": {} + }, + "invalidInput": "Masukan tidak valid!", + "@invalidInput": {}, + "wrongPinEntered": "PIN yang dimasukkan salah! Coba lagi dalam {seconds} detik...", + "@wrongPinEntered": { + "type": "String", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "banUserDescription": "Pengguna akan dicekal dari percakapan dan tidak akan dapat memasuki percakapan lagi sampai dibatalkan cekalannya.", + "@banUserDescription": {}, + "removeDevicesDescription": "Kamu akan dikeluarkan dari perangkat ini dan tidak akan dapat menerima pesan lagi.", + "@removeDevicesDescription": {}, + "unbanUserDescription": "Pengguna akan dapat memasuki percakapannya lagi jika dicoba.", + "@unbanUserDescription": {}, + "pushNotificationsNotAvailable": "Notifikasi dorongan tidak tersedia", + "@pushNotificationsNotAvailable": {}, + "makeAdminDescription": "Setelah kamu membuat pengguna ini admin, kamu tidak akan dapat mengurungkan ini karena penggunanya akan memiliki perizinan yang sama seperti kamu.", + "@makeAdminDescription": {}, + "archiveRoomDescription": "Percakapan akan dipindahkan ke arsip. Pengguna lain akan melihat bahwa kamu telah meninggalkan percakapan.", + "@archiveRoomDescription": {}, + "hasKnocked": "🚪 {user} telah dikeluarkan", + "@hasKnocked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "learnMore": "Pelajari lebih lanjut", + "@learnMore": {}, + "roomUpgradeDescription": "Percakapannya akan dibuat ulang dengan versi ruangan yang baru. Semua anggota akan diberi tahu bahwa mereka harus ganti ke percakapan yang baru. Kamu bisa mempelajari lebih lanjut tentang versi ruangan di https://spec.matrix.org/latest/rooms/", + "@roomUpgradeDescription": {}, + "pleaseEnterANumber": "Silakan masukkan angka lebih dari 0", + "@pleaseEnterANumber": {}, + "kickUserDescription": "Pengguna ini dikeluarkan dari percakapan tetapi tidak dicekal. Dalam percakapan publik, penggunanya dapat bergabung ulang kapan pun.", + "@kickUserDescription": {}, + "groupCanBeFoundViaSearch": "Grup dapat dicari melalui pencarian", + "@groupCanBeFoundViaSearch": {}, + "groupName": "Nama grup", + "@groupName": {}, + "wrongRecoveryKey": "Maaf... ini sepertinya bukan kunci pemulihan yang benar.", + "@wrongRecoveryKey": {}, + "addChatOrSubSpace": "Tambahkan percakapan atau subspace", + "@addChatOrSubSpace": {}, + "pleaseChooseAStrongPassword": "Silakan pilih kata sandi yang kuat", + "@pleaseChooseAStrongPassword": {}, + "joinSpace": "Bergabung ke space", + "@joinSpace": {}, + "acceptedKeyVerification": "{sender} menerima verifikasi kunci", + "@acceptedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "canceledKeyVerification": "{sender} membatalkan verifikasi kunci", + "@canceledKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "isReadyForKeyVerification": "{sender} siap untuk verifikasi kunci", + "@isReadyForKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "verifyOtherDevice": "🔐 Verifikasi perangkat lain", + "@verifyOtherDevice": {}, + "requestedKeyVerification": "{sender} meminta verifikasi kunci", + "@requestedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "startedKeyVerification": "{sender} memulai verifikasi kunci", + "@startedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "formattedMessagesDescription": "Tampilkan konten pesan kaya seperti teks tebal menggunakan Markdown.", + "@formattedMessagesDescription": {}, + "noUsersFoundWithQuery": "Sayangnya tidak ada pengguna yang dapat ditemukan dengan \"{query}\". Silakan periksa jika ada tipo.", + "@noUsersFoundWithQuery": { + "type": "String", + "placeholders": { + "query": { + "type": "String" + } + } + }, + "databaseBuildErrorBody": "Tidak dapat membangun basis data SQLite. Aplikasi mencoba menggunakan basis data lawas untuk sekarang. Silakan laporkan kesalahan ini kepada pengembang di {url}. Pesan kesalahannya adalah: {error}", + "@databaseBuildErrorBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "passwordIsWrong": "Kata sandi yang kamu masukkan salah", + "@passwordIsWrong": {}, + "searchChatsRooms": "Cari #percakapan, @pengguna...", + "@searchChatsRooms": {}, + "createGroupAndInviteUsers": "Buat sebuah grup dan undang pengguna", + "@createGroupAndInviteUsers": {}, + "pleaseEnterYourCurrentPassword": "Silakan masukkan kata sandimu saat ini", + "@pleaseEnterYourCurrentPassword": {}, + "passwordsDoNotMatch": "Kata sandi tidak cocok", + "@passwordsDoNotMatch": {}, + "publicLink": "Tautan publik", + "@publicLink": {}, + "sendTypingNotificationsDescription": "Anggota lain dalam percakapan dapat melihat ketika kamu sedang mengetik sebuah pesan baru.", + "@sendTypingNotificationsDescription": {}, + "forwardMessageTo": "Teruskan pesan ke {roomName}?", + "@forwardMessageTo": { + "type": "String", + "placeholders": { + "roomName": { + "type": "String" + } + } + }, + "sendReadReceipts": "Kirim laporan dibaca", + "@sendReadReceipts": {}, + "formattedMessages": "Pesan yang diformat", + "@formattedMessages": {}, + "verifyOtherUser": "🔐 Verifikasi pengguna lain", + "@verifyOtherUser": {}, + "sessionLostBody": "Sesimu hilang. Silakan laporkan kesalahan ini kepada pengembang di {url}. Pesan kesalahannya adalah: {error}", + "@sessionLostBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "restoreSessionBody": "Aplikasi sekarang mencoba memulihkan sesimu dari cadangan. Silakan laporkan kesalahan ini kepada pengembang di {url}. Pesan kesalahannya adalah: {error}", + "@restoreSessionBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "presenceStyle": "Presensi:", + "@presenceStyle": { + "type": "String", + "placeholders": {} + }, + "presencesToggle": "Tampilkan pesan status dari pengguna lain", + "@presencesToggle": { + "type": "String", + "placeholders": {} + }, + "youInvitedToBy": "📩 Kamu telah diundang melalui surel ke:\n{alias}", + "@youInvitedToBy": { + "placeholders": { + "alias": { + "type": "String" + } + } + }, + "publicSpaces": "Space publik", + "@publicSpaces": {}, + "commandHint_sendraw": "Kirim JSON mentah", + "@commandHint_sendraw": {}, + "sendReadReceiptsDescription": "Anggota lain dalam percakapan dapat melihat ketika kamu membaca sebuah pesan.", + "@sendReadReceiptsDescription": {}, + "block": "Blokir", + "@block": {}, + "blockedUsers": "Pengguna yang terblokir", + "@blockedUsers": {}, + "blockListDescription": "Kamu bisa memblokir pengguna yang sedang menganggumu. Kamu tidak akan mendapatkan pesan atau undangan ruangan dari pengguna dalam daftar blokiran pribadimu.", + "@blockListDescription": {}, + "blockUsername": "Abaikan nama pengguna", + "@blockUsername": {}, + "hidePresences": "Sembunyikan Daftar Status?", + "@hidePresences": {}, + "transparent": "Transparan", + "@transparent": {}, + "stickers": "Stiker", + "@stickers": {}, + "discover": "Jelajahi", + "@discover": {}, + "startConversation": "Mulai percakapan", + "@startConversation": {}, + "yourGlobalUserIdIs": "ID pengguna globalmu adalah: ", + "@yourGlobalUserIdIs": {}, + "select": "Pilih", + "@select": {}, + "subspace": "Subspace", + "@subspace": {}, + "decline": "Tolak", + "@decline": {}, + "nothingFound": "Tidak ada yang ditemukan...", + "@nothingFound": {}, + "thisDevice": "Perangkat ini:", + "@thisDevice": {}, + "newPassword": "Kata sandi baru", + "@newPassword": {}, + "incomingMessages": "Pesan masuk", + "@incomingMessages": {}, + "databaseMigrationTitle": "Basis data sudah dioptimalkan", + "@databaseMigrationTitle": {}, + "searchForUsers": "Cari @pengguna...", + "@searchForUsers": {}, + "completedKeyVerification": "{sender} menyelesaikan verifikasi kunci", + "@completedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "databaseMigrationBody": "Silakan tunggu. Ini dapat membutuhkan beberapa waktu.", + "@databaseMigrationBody": {}, + "leaveEmptyToClearStatus": "Tinggalkan kosong untuk menghapus statusmu.", + "@leaveEmptyToClearStatus": {}, + "initAppError": "Terjadi kesalahan saat init aplikasi", + "@initAppError": {}, + "verifyOtherDeviceDescription": "Saat kamu memverifikasi perangkat lain, perangkat tersebut dapat bertukar kunci, sehingga meningkatkan keamananmu secara keseluruhan. 💪 Saat Anda memulai verifikasi, sebuah pemberitahuan akan muncul di aplikasi pada kedua perangkat. Di situ kemudian akan melihat serangkaian emoji atau angka yang harus dibandingkan satu sama lain. Sebaiknya siapkan kedua perangkat sebelum kamu memulai verifikasi. 🤳", + "@verifyOtherDeviceDescription": {}, + "verifyOtherUserDescription": "Jika kamu memverifikasi pengguna lain, kamu bisa yakin bahwa kamu tahu kepada siapa sebenarnya kamu menulis pesan kepadanya. 💪\n\nSaat kamu memulai verifikasi, kamu dan pengguna lain akan melihat pemberitahuan di aplikasi. Di sana kemudian akan melihat serangkaian emoji atau angka yang harus dibandingkan satu sama lain.\n\nCara terbaik untuk melakukannya adalah dengan bertemu secara langsung atau memulai panggilan video. 👭", + "@verifyOtherUserDescription": {}, + "commandHint_ignore": "Abaikan ID Matrix yang diberikan", + "@commandHint_ignore": {}, + "commandHint_unignore": "Batalkan pengabaian ID Matrix yang diberikan", + "@commandHint_unignore": {}, + "unreadChatsInApp": "{appname}: {unread} obrolan belum dibaca", + "@unreadChatsInApp": { + "type": "String", + "placeholders": { + "appname": { + "type": "String" + }, + "unread": { + "type": "String" + } + } + }, + "noDatabaseEncryption": "Enkripsi basis data tidak didukung di platform ini", + "@noDatabaseEncryption": {}, + "customEmojisAndStickersBody": "Tambakan atau bagikan emoji atau stiker kustom yang dapat digunakan dalam obrolan apa pun.", + "@customEmojisAndStickersBody": {}, + "hideRedactedMessages": "Sembunyikan pesan yang dihapus", + "@hideRedactedMessages": {}, + "appLockDescription": "Kunci aplikasi ketika tidak digunakan dengan kode PIN", + "@appLockDescription": {}, + "accessAndVisibility": "Akses dan keterlihatan", + "@accessAndVisibility": {}, + "globalChatId": "ID obrolan global", + "@globalChatId": {}, + "accessAndVisibilityDescription": "Siapa yang diperbolehkan bergabung ke obrolan ini dan bagaimana obrolannya dapat ditemukan.", + "@accessAndVisibilityDescription": {}, + "calls": "Panggilan", + "@calls": {}, + "customEmojisAndStickers": "Emoji dan stiker kustom", + "@customEmojisAndStickers": {}, + "hideRedactedMessagesBody": "Jika seseorang menghapus pesan, pesannya tidak akan terlihat lagi dalam obrolan.", + "@hideRedactedMessagesBody": {}, + "hideMemberChangesInPublicChatsBody": "Jangan tampilkan dalam lini masa obrolan jika seseorang bergabung atau keluar dari obrolan untuk meningkatkan keterlihatan.", + "@hideMemberChangesInPublicChatsBody": {}, + "notifyMeFor": "Beri tahu aku untuk", + "@notifyMeFor": {}, + "hideInvalidOrUnknownMessageFormats": "Sembunyikan format pesan yang tidak valid atau tidak diketahui", + "@hideInvalidOrUnknownMessageFormats": {}, + "hideMemberChangesInPublicChats": "Sembunyikan perubahan anggota dalam obrolan publik", + "@hideMemberChangesInPublicChats": {}, + "overview": "Ikhtisar", + "@overview": {}, + "passwordRecoverySettings": "Pengaturan pemulihan kata sandi", + "@passwordRecoverySettings": {}, + "usersMustKnock": "Pengguna harus mengetuk", + "@usersMustKnock": {}, + "noOneCanJoin": "Tidak ada siapa pun yang dapat bergabung", + "@noOneCanJoin": {}, + "userWouldLikeToChangeTheChat": "{user} ingin bergabung dengan obrolan.", + "@userWouldLikeToChangeTheChat": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "noPublicLinkHasBeenCreatedYet": "Belum ada tautan publik yang dibuat", + "@noPublicLinkHasBeenCreatedYet": {}, + "knock": "Ketuk", + "@knock": {}, + "knocking": "Mengetuk", + "@knocking": {}, + "chatCanBeDiscoveredViaSearchOnServer": "Obrolan dapat ditemukan melalui pencarian di {server}", + "@chatCanBeDiscoveredViaSearchOnServer": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "thereAreCountUsersBlocked": "Saat ini ada {count} pengguna yang diblokir.", + "@thereAreCountUsersBlocked": { + "type": "String", + "count": {} + }, + "publicChatAddresses": "Alamat obrolan umum", + "@publicChatAddresses": {}, + "createNewAddress": "Buat alamat baru", + "@createNewAddress": {}, + "userRole": "Peran pengguna", + "@userRole": {}, + "minimumPowerLevel": "{level} adalah tingkat daya minimum.", + "@minimumPowerLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "String" + } + } + }, + "swipeRightToLeftToReply": "Usap dari kanan ke kiri untuk membalas", + "@swipeRightToLeftToReply": {}, + "searchMore": "Cari lebih banyak...", + "@searchMore": {}, + "gallery": "Galeri", + "@gallery": {}, + "searchIn": "Cari dalam obrolan \"{chat}\"...", + "@searchIn": { + "type": "String", + "placeholders": { + "chat": { + "type": "String" + } + } + }, + "files": "Berkas", + "@files": {}, + "restricted": "Dibatasi", + "@restricted": {}, + "knockRestricted": "Ketukan dibatasi", + "@knockRestricted": {}, + "alwaysUse24HourFormat": "tidak", + "@alwaysUse24HourFormat": { + "description": "Set to true to always display time of day in 24 hour format." + }, + "sendCanceled": "Pengiriman dibatalkan", + "@sendCanceled": {}, + "noChatsFoundHere": "Belum ada chat di sini. Mulai chat baru dengan seseorang menggunakan tombol di bawah. ⤵️", + "@noChatsFoundHere": {}, + "invitedBy": "📩 Diundang oleh {user}", + "@invitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "markAsUnread": "Tandai sebagai belum dibaca", + "@markAsUnread": {}, + "goToSpace": "Pergi ke space: {space}", + "@goToSpace": { + "type": "String", + "space": {} + }, + "changeTheChatPermissions": "Ubah perizinan chat", + "@changeTheChatPermissions": {}, + "changeTheCanonicalRoomAlias": "Ubah alamat chat publik utama", + "@changeTheCanonicalRoomAlias": {}, + "changeTheVisibilityOfChatHistory": "Ubah keterlihatan riwayat chat", + "@changeTheVisibilityOfChatHistory": {}, + "changeTheDescriptionOfTheGroup": "Ubah deskripsi chat", + "@changeTheDescriptionOfTheGroup": {}, + "sendingAttachment": "Mengirim lampiran...", + "@sendingAttachment": {}, + "compressVideo": "Mengompres video...", + "@compressVideo": {}, + "calculatingFileSize": "Menghitung ukuran berkas...", + "@calculatingFileSize": {}, + "prepareSendingAttachment": "Menyiapkan pengiriman lampiran...", + "@prepareSendingAttachment": {}, + "sendingAttachmentCountOfCount": "Mengirim lampiran {index} dari {length}...", + "@sendingAttachmentCountOfCount": { + "type": "integer", + "placeholders": { + "index": { + "type": "int" + }, + "length": { + "type": "int" + } + } + }, + "userLevel": "{level} - Pengguna", + "@userLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "adminLevel": "{level} - Admin", + "@adminLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "moderatorLevel": "{level} - Moderator", + "@moderatorLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "changeGeneralChatSettings": "Ubah pengaturan chat umum", + "@changeGeneralChatSettings": {}, + "discoverHomeservers": "Jelajahi homeserver", + "@discoverHomeservers": {}, + "loginWithMatrixId": "Masuk dengan ID Matrix", + "@loginWithMatrixId": {}, + "doesNotSeemToBeAValidHomeserver": "Sepertinya bukan homeserver yang kompatibel. URL salah?", + "@doesNotSeemToBeAValidHomeserver": {}, + "countChatsAndCountParticipants": "{chats} chat dan {participants} anggota", + "@countChatsAndCountParticipants": { + "type": "String", + "placeholders": { + "chats": { + "type": "int" + }, + "participants": { + "type": "int" + } + } + }, + "unread": "Tidak dibaca", + "@unread": {}, + "space": "Space", + "@space": {}, + "spaces": "Space", + "@spaces": {}, + "joinedChats": "Bergabung chat", + "@joinedChats": {}, + "noMoreChatsFound": "Tidak ada chat lagi yang ditemukan...", + "@noMoreChatsFound": {}, + "generatingVideoThumbnail": "Membuat gambar kecil video...", + "@generatingVideoThumbnail": {}, + "changelog": "Catatan perubahan", + "@changelog": {}, + "whatIsAHomeserver": "Apa itu homeserver?", + "@whatIsAHomeserver": {}, + "sendRoomNotifications": "Kirim notifikasi @room", + "@sendRoomNotifications": {}, + "updateInstalled": "🎉 Pembaruan {version} terpasang!", + "@updateInstalled": { + "type": "String", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "inviteOtherUsers": "Undang pengguna lain ke chat ini", + "@inviteOtherUsers": {}, + "serverLimitReached": "Batasan server tercapai! Menunggu {seconds} detik...", + "@serverLimitReached": { + "type": "integer", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "chatPermissionsDescription": "Tentukan tingkat kekuasaan yang diperlukan untuk tindakan tertentu dalam chat ini. Tingkat kekuasaan 0, 50 dan 100 biasanya mewakili pengguna, moderator dan admin, tetapi gradasi apa pun dimungkinkan.", + "@chatPermissionsDescription": {}, + "homeserverDescription": "Semua data Anda disimpan di dalam server, seperti halnya penyedia email. Anda dapat memilih homeserver mana yang ingin Anda gunakan, sementara Anda masih dapat berkomunikasi dengan semua orang. Pelajari lebih lanjut di https://matrix.org.", + "@homeserverDescription": {}, + "oneOfYourDevicesIsNotVerified": "Salah satu perangkat Anda tidak terverifikasi", + "@oneOfYourDevicesIsNotVerified": {}, + "noticeChatBackupDeviceVerification": "Catatan: Ketika Anda menghubungkan semua perangkat Anda ke cadangan chat, mereka akan diverifikasi secara otomatis.", + "@noticeChatBackupDeviceVerification": {}, + "welcomeText": "Halo 👋 Ini FluffyChat. Kamu bisa masuk ke homeserver mana pun, yang kompatibel dengan https://matrix.org. Lalu, chat dengan siapa pun. Ini merupakan jaringan perpesanan besar yang terdesentralisasi!", + "@welcomeText": {}, + "continueText": "Lanjutkan", + "@continueText": {}, + "aboutHomeserver": "Tentang {homeserver}", + "@aboutHomeserver": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "blur": "Buram:", + "@blur": {}, + "contactServerAdmin": "Hubungi admin server", + "@contactServerAdmin": {}, + "opacity": "Opasitas:", + "@opacity": {}, + "setWallpaper": "Atur later belakang", + "@setWallpaper": {}, + "serverInformation": "Informasi server:", + "@serverInformation": {}, + "noContactInformationProvided": "Server tidak menyediakan informasi kontak valid apa pun", + "@noContactInformationProvided": {}, + "supportPage": "Laman dukungan", + "@supportPage": {}, + "version": "Versi", + "@version": {}, + "website": "Situs Web", + "@website": {}, + "manageAccount": "Kelola akun", + "@manageAccount": {}, + "contactServerSecurity": "Hubungi keamanan server", + "@contactServerSecurity": {}, + "name": "Nama", + "@name": {}, + "strikeThrough": "Coret", + "@strikeThrough": {}, + "pleaseFillOut": "Silakan isi", + "@pleaseFillOut": {}, + "addLink": "Tambahkan tautan", + "@addLink": {}, + "invalidUrl": "URL tidak valid", + "@invalidUrl": {}, + "boldText": "Teks tebal", + "@boldText": {}, + "italicText": "Teks miring", + "@italicText": {}, + "unableToJoinChat": "Tidak dapat bergabung dalam chat. Mungkin pihak lain telah menutup percakapan.", + "@unableToJoinChat": {}, + "sendImages": "Kirim {count} gambar", + "@sendImages": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "compress": "Kompres", + "@compress": {}, + "contentNotificationSettings": "Pengaturan notifikasi konten", + "@contentNotificationSettings": {}, + "generalNotificationSettings": "Pengaturan notifikasi umum", + "@generalNotificationSettings": {}, + "roomNotificationSettings": "Pengaturan notifikasi ruangan", + "@roomNotificationSettings": {}, + "userSpecificNotificationSettings": "Pengaturan notifikasi spesifik pengguna", + "@userSpecificNotificationSettings": {}, + "otherNotificationSettings": "Pengaturan notifikasi lainnya", + "@otherNotificationSettings": {}, + "notificationRuleContainsUserName": "Berisi Nama Pengguna", + "@notificationRuleContainsUserName": {}, + "notificationRuleContainsUserNameDescription": "Memberi tahu pengguna ketika pesan memiliki nama penggunanya.", + "@notificationRuleContainsUserNameDescription": {}, + "notificationRuleMaster": "Bisukan semua notifikasi", + "@notificationRuleMaster": {}, + "notificationRuleMasterDescription": "Menimpa peraturan lainnya dan menonaktifkan semua notifikasi.", + "@notificationRuleMasterDescription": {}, + "notificationRuleSuppressNotices": "Dimakan Pesan Terautomasi", + "@notificationRuleSuppressNotices": {}, + "notificationRuleSuppressNoticesDescription": "Mendiamkan notifikasi dari klien terautomasi seperti bot.", + "@notificationRuleSuppressNoticesDescription": {}, + "notificationRuleInviteForMe": "Undang untuk Aku", + "@notificationRuleInviteForMe": {}, + "notificationRuleInviteForMeDescription": "Memberi tahu pengguna ketika diundang ke ruangan.", + "@notificationRuleInviteForMeDescription": {}, + "notificationRuleMemberEvent": "Peristiwa Anggota", + "@notificationRuleMemberEvent": {}, + "notificationRuleMemberEventDescription": "Mendiamkan notifikasi peristiwa keanggotaan.", + "@notificationRuleMemberEventDescription": {}, + "notificationRuleIsUserMention": "Sebutan Pengguna", + "@notificationRuleIsUserMention": {}, + "notificationRuleIsUserMentionDescription": "Memberi tahu pengguna ketika disebut secara langsung dalam pesan.", + "@notificationRuleIsUserMentionDescription": {}, + "notificationRuleContainsDisplayName": "Berisi Nama Tampilan", + "@notificationRuleContainsDisplayName": {}, + "notificationRuleIsRoomMention": "Sebutan Ruangan", + "@notificationRuleIsRoomMention": {}, + "notificationRuleIsRoomMentionDescription": "Memberi tahu pengguna ketika ada sebutan ruangan.", + "@notificationRuleIsRoomMentionDescription": {}, + "notificationRuleRoomnotif": "Notifikasi Ruangan", + "@notificationRuleRoomnotif": {}, + "notificationRuleRoomnotifDescription": "Memberi tahu pengguna ketika pesan berisi '@room'.", + "@notificationRuleRoomnotifDescription": {}, + "notificationRuleTombstone": "Nisan", + "@notificationRuleTombstone": {}, + "notificationRuleTombstoneDescription": "Memberi tahu pengguna tentang pesan deaktivasi ruangan.", + "@notificationRuleTombstoneDescription": {}, + "notificationRuleReaction": "Reaksi", + "@notificationRuleReaction": {}, + "notificationRuleReactionDescription": "Mendiamkan notifikasi reaksi.", + "@notificationRuleReactionDescription": {}, + "notificationRuleRoomServerAcl": "ACL Server Ruangan", + "@notificationRuleRoomServerAcl": {}, + "notificationRuleRoomServerAclDescription": "Mendiamkan notifikasi daftar kontrol akses server ruangan (ACL).", + "@notificationRuleRoomServerAclDescription": {}, + "notificationRuleSuppressEdits": "Diamkan Penyuntingan", + "@notificationRuleSuppressEdits": {}, + "notificationRuleSuppressEditsDescription": "Mendiamkan notifikasi pesan tersunting.", + "@notificationRuleSuppressEditsDescription": {}, + "notificationRuleCall": "Panggilan", + "@notificationRuleCall": {}, + "notificationRuleCallDescription": "Memberi tahu pengguna tentang panggilan.", + "@notificationRuleCallDescription": {}, + "notificationRuleEncryptedRoomOneToOne": "Ruangan Terenkripsi Satu ke Satu", + "@notificationRuleEncryptedRoomOneToOne": {}, + "notificationRuleEncryptedRoomOneToOneDescription": "Memberi tahu pengguna tentang pesan dalam ruangan satu ke satu.", + "@notificationRuleEncryptedRoomOneToOneDescription": {}, + "notificationRuleRoomOneToOne": "Ruangan Satu ke Satu", + "@notificationRuleRoomOneToOne": {}, + "notificationRuleRoomOneToOneDescription": "Memberi tahu pengguna tentang pesan dalam ruangan satu ke satu.", + "@notificationRuleRoomOneToOneDescription": {}, + "notificationRuleMessage": "Pesan", + "@notificationRuleMessage": {}, + "notificationRuleMessageDescription": "Memberi tahu pengguna tentang pesan umum.", + "@notificationRuleMessageDescription": {}, + "notificationRuleEncrypted": "Terenkripsi", + "@notificationRuleEncrypted": {}, + "notificationRuleEncryptedDescription": "Memberi tahu pengguna tentang pesan dalam ruangan terenkripsi.", + "@notificationRuleEncryptedDescription": {}, + "notificationRuleJitsi": "Jitsi", + "@notificationRuleJitsi": {}, + "notificationRuleJitsiDescription": "Memberi tahu pengguna tentang peristiwa widget Jitsi.", + "@notificationRuleJitsiDescription": {}, + "notificationRuleServerAcl": "Diamkan Peristiwa ACL Server", + "@notificationRuleServerAcl": {}, + "notificationRuleServerAclDescription": "Mendiamkan notifikasi peristiwa ACL server.", + "@notificationRuleServerAclDescription": {}, + "unknownPushRule": "Aturan dorongan '{rule}' tidak diketahui", + "@unknownPushRule": { + "type": "String", + "placeholders": { + "rule": { + "type": "String" + } + } + }, + "deletePushRuleCanNotBeUndone": "Jika kamu menghapus pengaturan notifikasi ini, maka tidak dapat diurungkan.", + "@deletePushRuleCanNotBeUndone": {}, + "more": "Tambahan", + "@more": {}, + "newChatRequest": "📩 Permintaan pesan baru", + "@newChatRequest": {}, + "allDevices": "Semua perangkat", + "@allDevices": {}, + "crossVerifiedDevices": "Perangkat terverifikasi silang", + "@crossVerifiedDevices": {}, + "waitingForServer": "Menunggu server...", + "@waitingForServer": {}, + "appIntroduction": "FluffyChat memungkinkanmu untuk mengobrol dengan teman-temanmu di berbagai perpesanan. Pelajari lebih lanjut di https://matrix.org atau ketuk *Lanjutkan* saja.", + "@appIntroduction": {}, + "notificationRuleContainsDisplayNameDescription": "Memberi tahu pengguna ketika pesan berisi nama tampilannya.", + "@notificationRuleContainsDisplayNameDescription": {}, + "shareKeysWith": "Bagikan kunci dengan...", + "@shareKeysWith": {}, + "synchronizingPleaseWaitCounter": " Sinkronisasi… ({percentage}%)", + "@synchronizingPleaseWaitCounter": { + "type": "String", + "placeholders": { + "percentage": { + "type": "String" + } + } + }, + "shareKeysWithDescription": "Perangkat apa saja yang dipercayai supaya mereka bisa membaca bersama dengan pesanmu dalam obrolan terenkripsi?", + "@shareKeysWithDescription": {}, + "verifiedDevicesOnly": "Perangkat terverifikasi saja", + "@verifiedDevicesOnly": {}, + "crossVerifiedDevicesIfEnabled": "Verifikasi silang perangkat jika diaktifkan", + "@crossVerifiedDevicesIfEnabled": {}, + "previous": "Sebelumnya", + "@previous": {}, + "otherPartyNotLoggedIn": "Pihak lain belum masuk dan tidak dapat menerima pesan!", + "@otherPartyNotLoggedIn": {}, + "appWantsToUseForLogin": "Gunakan '{server}' untuk masuk", + "@appWantsToUseForLogin": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "appWantsToUseForLoginDescription": "Anda memperbolehkan aplikasi dan situs web membagikan informasi tentang Anda.", + "@appWantsToUseForLoginDescription": {}, + "open": "Buka", + "@open": {}, + "takeAPhoto": "Ambil foto", + "@takeAPhoto": {}, + "recordAVideo": "Rekam video", + "@recordAVideo": {}, + "optionalMessage": "Pesan (opsional)...", + "@optionalMessage": {}, + "notSupportedOnThisDevice": "Tidak didukung pada perangkat ini", + "@notSupportedOnThisDevice": {}, + "enterNewChat": "Masuk ke obrolan baru", + "@enterNewChat": {}, + "commandHint_roomupgrade": "Tingkatkan ruangan ini ke versi ruangan yang ditentukan", + "@commandHint_roomupgrade": {}, + "pleaseWaitUntilInvited": "Silakan menunggu sampai seseorang dari ruangan mengundang Anda.", + "@pleaseWaitUntilInvited": {}, + "setCustomPermissionLevel": "Atur tingkat perizinan kustom", + "@setCustomPermissionLevel": {}, + "setPermissionsLevelDescription": "Silakan pilih peran yang sudah ditentukan di bawah atau masukkan tingkat perizinan kustom antara 0 dan 100.", + "@setPermissionsLevelDescription": {}, + "ignoreUser": "Abaikan pengguna", + "@ignoreUser": {}, + "normalUser": "Pengguna biasa", + "@normalUser": {}, + "approve": "Terima", + "@approve": {}, + "youHaveKnocked": "Anda telah mengetuk", + "@youHaveKnocked": {}, + "sentVoiceMessage": "🎙️ {duration} - Pesan suara dari {sender}", + "@sentVoiceMessage": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "duration": { + "type": "String" + } + } + }, + "checkList": "Ceklis", + "@checkList": {}, + "countInvited": "{count} diundang", + "@countInvited": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "commandHint_logout": "Keluar dari perangkatmu saat ini", + "@commandHint_logout": {}, + "commandHint_logoutall": "Keluarkan semua perangkat aktif", + "@commandHint_logoutall": {}, + "displayNavigationRail": "Tampilkan jalur navigasi pada ponsel", + "@displayNavigationRail": {}, + "customReaction": "Reaksi khusus", + "@customReaction": {}, + "moreEvents": "Peristiwa tambahan", + "@moreEvents": {}, + "declineInvitation": "Tolak undangan", + "@declineInvitation": {}, + "noMessagesYet": "Belum ada pesan", + "@noMessagesYet": {}, + "longPressToRecordVoiceMessage": "Tekan lama untuk merekam pesan suara.", + "@longPressToRecordVoiceMessage": {}, + "pause": "Jeda", + "@pause": {}, + "resume": "Lanjut", + "@resume": {} +} diff --git a/lib/l10n/intl_ie.arb b/lib/l10n/intl_ie.arb new file mode 100644 index 0000000..20258f7 --- /dev/null +++ b/lib/l10n/intl_ie.arb @@ -0,0 +1,2346 @@ +{ + "group": "Gruppe", + "@group": { + "type": "String", + "placeholders": {} + }, + "identity": "Identitá", + "@identity": { + "type": "String", + "placeholders": {} + }, + "close": "Cluder", + "@close": { + "type": "String", + "placeholders": {} + }, + "confirm": "Confirmar", + "@confirm": { + "type": "String", + "placeholders": {} + }, + "admin": "Administrator", + "@admin": { + "type": "String", + "placeholders": {} + }, + "chats": "Conversationes", + "@chats": { + "type": "String", + "placeholders": {} + }, + "containsUserName": "Contene li nómine", + "@containsUserName": { + "type": "String", + "placeholders": {} + }, + "containsDisplayName": "Contene li visibil nómine", + "@containsDisplayName": { + "type": "String", + "placeholders": {} + }, + "copiedToClipboard": "Copiat al Paperiere", + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "copyToClipboard": "Copiar al Paperiere", + "@copyToClipboard": { + "type": "String", + "placeholders": {} + }, + "countParticipants": "{count} participantes", + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "createNewSpace": "Crear un spacie", + "@createNewSpace": { + "type": "String", + "placeholders": {} + }, + "currentlyActive": "Activ actualmen", + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "deleteAccount": "Destructer li conto", + "@deleteAccount": { + "type": "String", + "placeholders": {} + }, + "deleteMessage": "Remover li missage", + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "editBlockedServers": "Modificar blocat servitores", + "@editBlockedServers": { + "type": "String", + "placeholders": {} + }, + "everythingReady": "Omni es pret!", + "@everythingReady": { + "type": "String", + "placeholders": {} + }, + "extremeOffensive": "Extremmen offensiv", + "@extremeOffensive": { + "type": "String", + "placeholders": {} + }, + "fileName": "Nómine de file", + "@fileName": { + "type": "String", + "placeholders": {} + }, + "fontSize": "Dimension de fonde", + "@fontSize": { + "type": "String", + "placeholders": {} + }, + "fromJoining": "Pro adhesion", + "@fromJoining": { + "type": "String", + "placeholders": {} + }, + "enterYourHomeserver": "Provide vor hem-servitor", + "@enterYourHomeserver": { + "type": "String", + "placeholders": {} + }, + "fromTheInvitation": "Pro invitation", + "@fromTheInvitation": { + "type": "String", + "placeholders": {} + }, + "groupIsPublic": "Gruppe es public", + "@groupIsPublic": { + "type": "String", + "placeholders": {} + }, + "help": "Auxilie", + "@help": { + "type": "String", + "placeholders": {} + }, + "hideUnknownEvents": "Celar ínconosset evenimentes", + "@hideUnknownEvents": { + "type": "String", + "placeholders": {} + }, + "id": "ID", + "@id": { + "type": "String", + "placeholders": {} + }, + "ignoredUsers": "Ignorat usatores", + "@ignoredUsers": { + "type": "String", + "placeholders": {} + }, + "invitedUsersOnly": "Solmen invitat usatores", + "@invitedUsersOnly": { + "type": "String", + "placeholders": {} + }, + "login": "Aperter li session", + "@login": { + "type": "String", + "placeholders": {} + }, + "isTyping": "tippa…", + "@isTyping": { + "type": "String", + "placeholders": {} + }, + "joinRoom": "Adherer al chambre", + "@joinRoom": { + "type": "String", + "placeholders": {} + }, + "loadMore": "Cargar plu…", + "@loadMore": { + "type": "String", + "placeholders": {} + }, + "inviteForMe": "Invitationes por me", + "@inviteForMe": { + "type": "String", + "placeholders": {} + }, + "lastActiveAgo": "Ultim activité: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "String", + "placeholders": { + "localizedTimeShort": { + "type": "String" + } + } + }, + "mention": "Mentionar", + "@mention": { + "type": "String", + "placeholders": {} + }, + "next": "Sequent", + "@next": { + "type": "String", + "placeholders": {} + }, + "no": "No", + "@no": { + "type": "String", + "placeholders": {} + }, + "offensive": "Offensiv", + "@offensive": { + "type": "String", + "placeholders": {} + }, + "offline": "For del rete", + "@offline": { + "type": "String", + "placeholders": {} + }, + "ok": "OK", + "@ok": { + "type": "String", + "placeholders": {} + }, + "online": "In li rete", + "@online": { + "type": "String", + "placeholders": {} + }, + "memberChanges": "Cambios inter membres", + "@memberChanges": { + "type": "String", + "placeholders": {} + }, + "muteChat": "Assurdar li conversation", + "@muteChat": { + "type": "String", + "placeholders": {} + }, + "newChat": "Crear un conversation", + "@newChat": { + "type": "String", + "placeholders": {} + }, + "newVerificationRequest": "Nov demanda de verification!", + "@newVerificationRequest": { + "type": "String", + "placeholders": {} + }, + "scanQrCode": "Scannar un code QR", + "@scanQrCode": {}, + "noRoomsFound": "Null chambres trovat…", + "@noRoomsFound": { + "type": "String", + "placeholders": {} + }, + "openInMaps": "Aperter in mappas", + "@openInMaps": { + "type": "String", + "placeholders": {} + }, + "password": "Contrasigne", + "@password": { + "type": "String", + "placeholders": {} + }, + "passwordForgotten": "Li contrasigne esset obliviat", + "@passwordForgotten": { + "type": "String", + "placeholders": {} + }, + "passwordRecovery": "Reganiar li contrasigne", + "@passwordRecovery": { + "type": "String", + "placeholders": {} + }, + "pleaseChoose": "Ples selecter", + "@pleaseChoose": { + "type": "String", + "placeholders": {} + }, + "pushRules": "Regules de push-notificationes", + "@pushRules": { + "type": "String", + "placeholders": {} + }, + "redactMessage": "Redacter li missage", + "@redactMessage": { + "type": "String", + "placeholders": {} + }, + "removeDevice": "Remover li aparate", + "@removeDevice": { + "type": "String", + "placeholders": {} + }, + "saveFile": "Gardar li file", + "@saveFile": { + "type": "String", + "placeholders": {} + }, + "recoveryKey": "Clave de regania", + "@recoveryKey": {}, + "sendMessages": "Inviar missages", + "@sendMessages": { + "type": "String", + "placeholders": {} + }, + "sendVideo": "Inviar video", + "@sendVideo": { + "type": "String", + "placeholders": {} + }, + "shareLocation": "Partir un localisation", + "@shareLocation": { + "type": "String", + "placeholders": {} + }, + "spaceName": "Nómine de spacie", + "@spaceName": { + "type": "String", + "placeholders": {} + }, + "unavailable": "Índisponibil", + "@unavailable": { + "type": "String", + "placeholders": {} + }, + "toggleUnread": "Marcar quam (ín)leet", + "@toggleUnread": { + "type": "String", + "placeholders": {} + }, + "unblockDevice": "Deblocar li aparate", + "@unblockDevice": { + "type": "String", + "placeholders": {} + }, + "unknownDevice": "Ínconosset aparate", + "@unknownDevice": { + "type": "String", + "placeholders": {} + }, + "voiceMessage": "Voce-missage", + "@voiceMessage": { + "type": "String", + "placeholders": {} + }, + "wallpaper": "Tapete", + "@wallpaper": { + "type": "String", + "placeholders": {} + }, + "messageType": "Tip de missage", + "@messageType": {}, + "start": "Iniciar", + "@start": {}, + "messageInfo": "Information pri li missage", + "@messageInfo": {}, + "openGallery": "Aperter li galerie", + "@openGallery": {}, + "videoWithSize": "Video ({size})", + "@videoWithSize": { + "type": "String", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "reportUser": "Raportar li usator", + "@reportUser": {}, + "voiceCall": "Telefonada", + "@voiceCall": {}, + "nextAccount": "Sequent conto", + "@nextAccount": {}, + "previousAccount": "Precedent conto", + "@previousAccount": {}, + "countFiles": "{count} files", + "@countFiles": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "all": "Omni", + "@all": { + "type": "String", + "placeholders": {} + }, + "create": "Crear", + "@create": { + "type": "String", + "placeholders": {} + }, + "connect": "Conexer", + "@connect": { + "type": "String", + "placeholders": {} + }, + "copy": "Copiar", + "@copy": { + "type": "String", + "placeholders": {} + }, + "darkTheme": "Obscur", + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "messages": "Missages", + "@messages": { + "type": "String", + "placeholders": {} + }, + "none": "Null", + "@none": { + "type": "String", + "placeholders": {} + }, + "rejoin": "Re-adherer", + "@rejoin": { + "type": "String", + "placeholders": {} + }, + "remove": "Remover", + "@remove": { + "type": "String", + "placeholders": {} + }, + "notifications": "Notificationes", + "@notifications": { + "type": "String", + "placeholders": {} + }, + "reply": "Responder", + "@reply": { + "type": "String", + "placeholders": {} + }, + "dateWithYear": "{day}.{month}.{year}", + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "delete": "Remover", + "@delete": { + "type": "String", + "placeholders": {} + }, + "search": "Sercha", + "@search": { + "type": "String", + "placeholders": {} + }, + "devices": "Aparates", + "@devices": { + "type": "String", + "placeholders": {} + }, + "lightTheme": "Lucid", + "@lightTheme": { + "type": "String", + "placeholders": {} + }, + "edit": "Redacter", + "@edit": { + "type": "String", + "placeholders": {} + }, + "security": "Securitá", + "@security": { + "type": "String", + "placeholders": {} + }, + "settings": "Parametres", + "@settings": { + "type": "String", + "placeholders": {} + }, + "share": "Partir", + "@share": { + "type": "String", + "placeholders": {} + }, + "systemTheme": "Del sistema", + "@systemTheme": { + "type": "String", + "placeholders": {} + }, + "username": "Nómine de usator", + "@username": { + "type": "String", + "placeholders": {} + }, + "verify": "Verificar", + "@verify": { + "type": "String", + "placeholders": {} + }, + "submit": "Inviar", + "@submit": { + "type": "String", + "placeholders": {} + }, + "unpin": "Defixar", + "@unpin": { + "type": "String", + "placeholders": {} + }, + "verified": "Verificat", + "@verified": { + "type": "String", + "placeholders": {} + }, + "warning": "Avise!", + "@warning": { + "type": "String", + "placeholders": {} + }, + "yes": "Yes", + "@yes": { + "type": "String", + "placeholders": {} + }, + "time": "Hora", + "@time": {}, + "publish": "Publicar", + "@publish": {}, + "sender": "Autor", + "@sender": {}, + "dismiss": "Demisser", + "@dismiss": {}, + "custom": "Personalisat", + "@custom": {}, + "emojis": "Emoji", + "@emojis": {}, + "widgetCustom": "Personalisat", + "@widgetCustom": {}, + "users": "Usatores", + "@users": {}, + "user": "Usator", + "@user": {}, + "forward": "Avan", + "@forward": { + "type": "String", + "placeholders": {} + }, + "groups": "Gruppes", + "@groups": { + "type": "String", + "placeholders": {} + }, + "ignore": "Ignorar", + "@ignore": { + "type": "String", + "placeholders": {} + }, + "inoffensive": "Ínoffensiv", + "@inoffensive": { + "type": "String", + "placeholders": {} + }, + "invited": "Invitat", + "@invited": { + "type": "String", + "placeholders": {} + }, + "leave": "Forlassar", + "@leave": { + "type": "String", + "placeholders": {} + }, + "license": "Licentie", + "@license": { + "type": "String", + "placeholders": {} + }, + "or": "O", + "@or": { + "type": "String", + "placeholders": {} + }, + "link": "Ligament", + "@link": {}, + "participant": "Participante", + "@participant": { + "type": "String", + "placeholders": {} + }, + "reason": "Cause", + "@reason": { + "type": "String", + "placeholders": {} + }, + "people": "Homes", + "@people": { + "type": "String", + "placeholders": {} + }, + "pin": "Fixar", + "@pin": { + "type": "String", + "placeholders": {} + }, + "privacy": "Privatie", + "@privacy": { + "type": "String", + "placeholders": {} + }, + "recording": "Registrante", + "@recording": { + "type": "String", + "placeholders": {} + }, + "register": "Inregistrar se", + "@register": { + "type": "String", + "placeholders": {} + }, + "reject": "Refuser", + "@reject": { + "type": "String", + "placeholders": {} + }, + "repeatPassword": "Repetir li contrasigne", + "@repeatPassword": {}, + "addEmail": "Adjunter e-post", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "changePassword": "Cambiar li contrasigne", + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "clearArchive": "Vacuar li archive", + "@clearArchive": {}, + "commandHint_clearcache": "Vacuar li cache", + "@commandHint_clearcache": { + "type": "String", + "description": "Usage hint for the command /clearcache" + }, + "commandHint_send": "Inviar li textu", + "@commandHint_send": { + "type": "String", + "description": "Usage hint for the command /send" + }, + "configureChat": "Configurar li conversation", + "@configureChat": { + "type": "String", + "placeholders": {} + }, + "directChats": "Direct conversationes", + "@directChats": { + "type": "String", + "placeholders": {} + }, + "enableEncryption": "Activar li ciffration", + "@enableEncryption": { + "type": "String", + "placeholders": {} + }, + "downloadFile": "Descargar li file", + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "emoteSettings": "Parametres de emotiones", + "@emoteSettings": { + "type": "String", + "placeholders": {} + }, + "emoteShortcode": "Curt-code de emotion", + "@emoteShortcode": { + "type": "String", + "placeholders": {} + }, + "emptyChat": "Vacui conversation", + "@emptyChat": { + "type": "String", + "placeholders": {} + }, + "videoCall": "Videotelefonada", + "@videoCall": { + "type": "String", + "placeholders": {} + }, + "openChat": "Aperter li conversation", + "@openChat": {}, + "reportMessage": "Raportar li missage", + "@reportMessage": { + "type": "String", + "placeholders": {} + }, + "noPermission": "Sin permission", + "@noPermission": { + "type": "String", + "placeholders": {} + }, + "openCamera": "Aperter li cámera", + "@openCamera": { + "type": "String", + "placeholders": {} + }, + "showPassword": "Monstrar li contrasigne", + "@showPassword": { + "type": "String", + "placeholders": {} + }, + "sendFile": "Inviar un file", + "@sendFile": { + "type": "String", + "placeholders": {} + }, + "sendImage": "Inviar un image", + "@sendImage": { + "type": "String", + "placeholders": {} + }, + "sendOriginal": "Inviar li originale", + "@sendOriginal": { + "type": "String", + "placeholders": {} + }, + "theyMatch": "Corresponde", + "@theyMatch": { + "type": "String", + "placeholders": {} + }, + "anyoneCanJoin": "Alquí posse adherer se", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "obtainingLocation": "Obtenente li localisation…", + "@obtainingLocation": { + "type": "String", + "placeholders": {} + }, + "addWidget": "Adjunter un widget", + "@addWidget": {}, + "addAccount": "Adjunter un conto", + "@addAccount": {}, + "publicRooms": "Public chambres", + "@publicRooms": { + "type": "String", + "placeholders": {} + }, + "verifyStart": "Iniciar li verification", + "@verifyStart": { + "type": "String", + "placeholders": {} + }, + "roomVersion": "Version del chambre", + "@roomVersion": { + "type": "String", + "placeholders": {} + }, + "sendAudio": "Inviar audio", + "@sendAudio": { + "type": "String", + "placeholders": {} + }, + "sendSticker": "Inviar un nota adhesiv", + "@sendSticker": { + "type": "String", + "placeholders": {} + }, + "setStatus": "Assignar li statu", + "@setStatus": { + "type": "String", + "placeholders": {} + }, + "sourceCode": "Code de fonte", + "@sourceCode": { + "type": "String", + "placeholders": {} + }, + "play": "Reproducter {fileName}", + "@play": { + "type": "String", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "about": "Pri", + "@about": { + "type": "String", + "placeholders": {} + }, + "accept": "Acceptar", + "@accept": { + "type": "String", + "placeholders": {} + }, + "confirmMatrixId": "Ples confirmar vor Matrix ID por destructer vor conto.", + "@confirmMatrixId": {}, + "allChats": "Omni conversationes", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "addToSpace": "Adjunter al spacie", + "@addToSpace": {}, + "askVerificationRequest": "Esque acceptar ti demanda de verification de {username}?", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "autoplayImages": "Automaticmen reproducter animat images", + "@autoplayImages": { + "type": "String", + "placeholder": {} + }, + "sendOnEnter": "Inviar per Enter", + "@sendOnEnter": {}, + "blocked": "Blocat", + "@blocked": { + "type": "String", + "placeholders": {} + }, + "blockDevice": "Blocar li aparate", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "botMessages": "Missages de robots", + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "changeDeviceName": "Cambiar li nómine de aparate", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "changeTheHomeserver": "Cambiar li hem-servitor", + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "chat": "Conversation", + "@chat": { + "type": "String", + "placeholders": {} + }, + "changeYourAvatar": "Cambiar vor avatar", + "@changeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "chatBackup": "Archive de conversation", + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "chatDetails": "Detallies del conversation", + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "commandHint_me": "Ples descrir vos", + "@commandHint_me": { + "type": "String", + "description": "Usage hint for the command /me" + }, + "commandHint_leave": "Forlassar ti chambre", + "@commandHint_leave": { + "type": "String", + "description": "Usage hint for the command /leave" + }, + "commandInvalid": "Comande es ínvalid", + "@commandInvalid": { + "type": "String" + }, + "widgetEtherpad": "Textual nota", + "@widgetEtherpad": {}, + "banFromChat": "Bannir del conversation", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "changeTheme": "Cambiar li stil", + "@changeTheme": { + "type": "String", + "placeholders": {} + }, + "commandHint_markasgroup": "Marcar quam gruppe", + "@commandHint_markasgroup": {}, + "widgetJitsi": "Jitsi Meet", + "@widgetJitsi": {}, + "screenSharingTitle": "partir li ecran", + "@screenSharingTitle": {}, + "callingPermissions": "Permissiones de telefonada", + "@callingPermissions": {}, + "callingAccount": "Conto telefonante", + "@callingAccount": {}, + "bannedUser": "{username} ha bannit {targetName}", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "commandHint_html": "Inviar contenete HTML", + "@commandHint_html": { + "type": "String", + "description": "Usage hint for the command /html" + }, + "commandHint_plain": "Inviar textu sin formate", + "@commandHint_plain": { + "type": "String", + "description": "Usage hint for the command /plain" + }, + "editRoomAliases": "Modificar pseudonimos del chambre", + "@editRoomAliases": { + "type": "String", + "placeholders": {} + }, + "emoteExists": "Emotion ja existe!", + "@emoteExists": { + "type": "String", + "placeholders": {} + }, + "editRoomAvatar": "Modificar li avatar del chambre", + "@editRoomAvatar": { + "type": "String", + "placeholders": {} + }, + "groupWith": "Gruppe con {displayname}", + "@groupWith": { + "type": "String", + "placeholders": { + "displayname": { + "type": "String" + } + } + }, + "invitedUser": "{username} invitat {targetName}", + "@invitedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "leftTheChat": "Surtit ex li conversation", + "@leftTheChat": { + "type": "String", + "placeholders": {} + }, + "loadingPleaseWait": "Cargante... ples atender.", + "@loadingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "acceptedTheInvitation": "{username} ha acceptat li invitation", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "supposedMxid": "To deve esser {mxid}", + "@supposedMxid": { + "type": "String", + "placeholders": { + "mxid": { + "type": "String" + } + } + }, + "areYouSureYouWantToLogout": "Esque vu vole cluder li session?", + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "badServerLoginTypesException": "Li hem-servitor supporta ti tipes de autentication:\n{serverVersions}\nMa ti-ci application supporta solmen:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "cantOpenUri": "Ne successat aperter li adresse {uri}", + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "badServerVersionsException": "Li hem-servitor supporta ti versiones de specification:\n{serverVersions}\nMa ti-ci application supporta solmen {supportedVersions}", + "@badServerVersionsException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "dateWithoutYear": "{day}.{month}", + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "device": "Aparate", + "@device": { + "type": "String", + "placeholders": {} + }, + "widgetVideo": "Video", + "@widgetVideo": {}, + "widgetName": "Nómine", + "@widgetName": {}, + "account": "Conto", + "@account": { + "type": "String", + "placeholders": {} + }, + "alias": "pseudonim", + "@alias": { + "type": "String", + "placeholders": {} + }, + "archive": "Archive", + "@archive": { + "type": "String", + "placeholders": {} + }, + "banned": "Bannit", + "@banned": { + "type": "String", + "placeholders": {} + }, + "cancel": "Anullar", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "encrypted": "Ciffrat", + "@encrypted": { + "type": "String", + "placeholders": {} + }, + "encryption": "Ciffration", + "@encryption": { + "type": "String", + "placeholders": {} + }, + "homeserver": "Hem-servitor", + "@homeserver": {}, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "String", + "placeholders": {} + }, + "moderator": "Moderator", + "@moderator": { + "type": "String", + "placeholders": {} + }, + "newGroup": "Crear un gruppe", + "@newGroup": {}, + "newSpace": "Crear un spacie", + "@newSpace": {}, + "enterSpace": "Intrar li spacie", + "@enterSpace": {}, + "enterRoom": "Intrar li chambre", + "@enterRoom": {}, + "allSpaces": "Omni spacies", + "@allSpaces": {}, + "numChats": "{number} conversationes", + "@numChats": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "logout": "Cluder li session", + "@logout": { + "type": "String", + "placeholders": {} + }, + "send": "Inviar", + "@send": { + "type": "String", + "placeholders": {} + }, + "you": "Vu", + "@you": { + "type": "String", + "placeholders": {} + }, + "title": "FluffyChat", + "@title": { + "description": "Title for the application", + "type": "String", + "placeholders": {} + }, + "skip": "Omisser", + "@skip": { + "type": "String", + "placeholders": {} + }, + "status": "Statu", + "@status": { + "type": "String", + "placeholders": {} + }, + "unverified": "Ínverificat", + "@unverified": {}, + "deviceId": "ID de aparate", + "@deviceId": { + "type": "String", + "placeholders": {} + }, + "editDisplayname": "Redacter li visibil nómine", + "@editDisplayname": { + "type": "String", + "placeholders": {} + }, + "inviteContact": "Invitar un contacte", + "@inviteContact": { + "type": "String", + "placeholders": {} + }, + "requestPermission": "Demandar li permission", + "@requestPermission": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "Esque vu es cert?", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "@hugContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "@passphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "@pleaseEnterYourPassword": { + "type": "String", + "placeholders": {} + }, + "@jumpToLastReadMessage": {}, + "@allRooms": { + "type": "String", + "placeholders": {} + }, + "@commandHint_cuddle": {}, + "@noEncryptionForPublicRooms": { + "type": "String", + "placeholders": {} + }, + "@reportErrorDescription": {}, + "@setPermissionsLevel": { + "type": "String", + "placeholders": {} + }, + "@inviteContactToGroup": { + "type": "String", + "placeholders": { + "groupName": { + "type": "String" + } + } + }, + "@chatHasBeenAddedToThisSpace": {}, + "@removeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "@unsupportedAndroidVersion": {}, + "@youAreNoLongerParticipatingInThisChat": { + "type": "String", + "placeholders": {} + }, + "@indexedDbErrorLong": {}, + "@oneClientLoggedOut": {}, + "@toggleMuted": { + "type": "String", + "placeholders": {} + }, + "@unsupportedAndroidVersionLong": {}, + "@kicked": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@verifySuccess": { + "type": "String", + "placeholders": {} + }, + "@startFirstChat": {}, + "@sentAPicture": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "@setColorTheme": {}, + "@commandHint_create": { + "type": "String", + "description": "Usage hint for the command /create" + }, + "@singlesignon": { + "type": "String", + "placeholders": {} + }, + "@sentAFile": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@youAcceptedTheInvitation": {}, + "@noMatrixServer": { + "type": "String", + "placeholders": { + "server1": { + "type": "String" + }, + "server2": { + "type": "String" + } + } + }, + "@userAndOthersAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "@youInvitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "@userIsTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@openAppToReadMessages": { + "type": "String", + "placeholders": {} + }, + "@sentAVideo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@banUserDescription": {}, + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "@waitingPartnerAcceptRequest": { + "type": "String", + "placeholders": {} + }, + "@writeAMessage": { + "type": "String", + "placeholders": {} + }, + "@removeDevicesDescription": {}, + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "@separateChatTypes": { + "type": "String", + "placeholders": {} + }, + "@tryAgain": {}, + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "@youKickedAndBanned": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "@unbanUserDescription": {}, + "@userAndUserAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "username2": { + "type": "String" + } + } + }, + "@pleaseClickOnLink": { + "type": "String", + "placeholders": {} + }, + "@pickImage": { + "type": "String", + "placeholders": {} + }, + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "@youRejectedTheInvitation": {}, + "@otherCallingPermissions": {}, + "@messagesStyle": {}, + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@widgetUrlError": {}, + "@emailOrUsername": {}, + "@newSpaceDescription": {}, + "@chatDescription": {}, + "@callingAccountDetails": {}, + "@pleaseFollowInstructionsOnWeb": { + "type": "String", + "placeholders": {} + }, + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@encryptThisChat": {}, + "@incorrectPassphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "@emoteWarnNeedToPick": { + "type": "String", + "placeholders": {} + }, + "@reopenChat": {}, + "@pleaseEnterRecoveryKey": {}, + "@toggleFavorite": { + "type": "String", + "placeholders": {} + }, + "@widgetNameError": {}, + "@addToBundle": {}, + "@spaceIsPublic": { + "type": "String", + "placeholders": {} + }, + "@removeAllOtherDevices": { + "type": "String", + "placeholders": {} + }, + "@noKeyForThisMessage": {}, + "@enableEncryptionWarning": { + "type": "String", + "placeholders": {} + }, + "@inviteText": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "link": { + "type": "String" + } + } + }, + "@errorObtainingLocation": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@hydrateTor": {}, + "@pushNotificationsNotAvailable": {}, + "@storeInAppleKeyChain": {}, + "@replaceRoomWithNewerVersion": { + "type": "String", + "placeholders": {} + }, + "@hydrate": {}, + "@invalidServerName": {}, + "@chatPermissions": {}, + "@wipeChatBackup": { + "type": "String", + "placeholders": {} + }, + "@storeInAndroidKeystore": {}, + "@hideRedactedEvents": { + "type": "String", + "placeholders": {} + }, + "@signInWithPassword": {}, + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "@weSentYouAnEmail": { + "type": "String", + "placeholders": {} + }, + "@needPantalaimonWarning": { + "type": "String", + "placeholders": {} + }, + "@makeAdminDescription": {}, + "@noEmotesFound": { + "type": "String", + "placeholders": {} + }, + "@synchronizingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "@transferFromAnotherDevice": { + "type": "String", + "placeholders": {} + }, + "@passwordHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "@goToTheNewRoom": { + "type": "String", + "placeholders": {} + }, + "@saveKeyManuallyDescription": {}, + "@editBundlesForAccount": {}, + "@whyIsThisMessageEncrypted": {}, + "@unreadChats": { + "type": "String", + "placeholders": { + "unreadCount": { + "type": "int" + } + } + }, + "@rejectedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@setChatDescription": {}, + "@userLeftTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@importFromZipFile": {}, + "@dehydrateWarning": {}, + "@noOtherDevicesFound": {}, + "@whoIsAllowedToJoinThisGroup": { + "type": "String", + "placeholders": {} + }, + "@seenByUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@storeSecurlyOnThisDevice": {}, + "@yourChatBackupHasBeenSetUp": {}, + "@redactedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@videoCallsBetaWarning": {}, + "@unmuteChat": { + "type": "String", + "placeholders": {} + }, + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@redactedAnEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@compareEmojiMatch": { + "type": "String", + "placeholders": {} + }, + "@logInTo": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "@signInWith": { + "type": "String", + "placeholders": { + "provider": { + "type": "String" + } + } + }, + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@fileIsTooBigForServer": {}, + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "@newMessageInFluffyChat": { + "type": "String", + "placeholders": {} + }, + "@readUpToHere": {}, + "@unlockOldMessages": {}, + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@optionalRedactReason": {}, + "@waitingPartnerEmoji": { + "type": "String", + "placeholders": {} + }, + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "@tryToSendAgain": { + "type": "String", + "placeholders": {} + }, + "@guestsCanJoin": { + "type": "String", + "placeholders": {} + }, + "@dehydrate": {}, + "@locationPermissionDeniedNotice": { + "type": "String", + "placeholders": {} + }, + "@hasWithdrawnTheInvitationFor": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "@visibleForAllParticipants": { + "type": "String", + "placeholders": {} + }, + "@sendAsText": { + "type": "String" + }, + "@archiveRoomDescription": {}, + "@exportEmotePack": {}, + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "@switchToAccount": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "@setAsCanonicalAlias": { + "type": "String", + "placeholders": {} + }, + "@whyDoYouWantToReportThis": { + "type": "String", + "placeholders": {} + }, + "@locationDisabledNotice": { + "type": "String", + "placeholders": {} + }, + "@placeCall": {}, + "@removedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@experimentalVideoCalls": {}, + "@pleaseEnterRecoveryKeyDescription": {}, + "@guestsAreForbidden": { + "type": "String", + "placeholders": {} + }, + "@withTheseAddressesRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "@inviteContactToGroupQuestion": {}, + "@redactedByBecause": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "reason": { + "type": "String" + } + } + }, + "@youHaveWithdrawnTheInvitationFor": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "@appearOnTopDetails": {}, + "@roomHasBeenUpgraded": { + "type": "String", + "placeholders": {} + }, + "@enableEmotesGlobally": { + "type": "String", + "placeholders": {} + }, + "@pleaseChooseAPasscode": { + "type": "String", + "placeholders": {} + }, + "@noPasswordRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@sharedTheLocation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@onlineKeyBackupEnabled": { + "type": "String", + "placeholders": {} + }, + "@unbannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "@confirmEventUnpin": {}, + "@youInvitedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "@kickedAndBanned": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "@noConnectionToTheServer": { + "type": "String", + "placeholders": {} + }, + "@fileHasBeenSavedAt": { + "type": "String", + "placeholders": { + "path": { + "type": "String" + } + } + }, + "@unbanFromChat": { + "type": "String", + "placeholders": {} + }, + "@commandMissing": { + "type": "String", + "placeholders": { + "command": { + "type": "String" + } + }, + "description": "State that {command} is not a valid /command." + }, + "@redactMessageDescription": {}, + "@commandHint_discardsession": { + "type": "String", + "description": "Usage hint for the command /discardsession" + }, + "@invalidInput": {}, + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "@dehydrateTorLong": {}, + "@yourPublicKey": { + "type": "String", + "placeholders": {} + }, + "@tooManyRequestsWarning": { + "type": "String", + "placeholders": {} + }, + "@kickFromChat": { + "type": "String", + "placeholders": {} + }, + "@commandHint_myroomnick": { + "type": "String", + "description": "Usage hint for the command /myroomnick" + }, + "@doNotShowAgain": {}, + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@report": {}, + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "@howOffensiveIsThisContent": { + "type": "String", + "placeholders": {} + }, + "@serverRequiresEmail": {}, + "@hideUnimportantStateEvents": {}, + "@sentCallInformations": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "@addToSpaceDescription": {}, + "@googlyEyesContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "@youBannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "@theyDontMatch": { + "type": "String", + "placeholders": {} + }, + "@youHaveBeenBannedFromThisChat": { + "type": "String", + "placeholders": {} + }, + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "@addChatDescription": {}, + "@sentAnAudio": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@commandHint_myroomavatar": { + "type": "String", + "description": "Usage hint for the command /myroomavatar" + }, + "@hasKnocked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "@openLinkInBrowser": {}, + "@appLock": { + "type": "String", + "placeholders": {} + }, + "@commandHint_react": { + "type": "String", + "description": "Usage hint for the command /react" + }, + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@pleaseEnterYourUsername": { + "type": "String", + "placeholders": {} + }, + "@disableEncryptionWarning": {}, + "@directChat": {}, + "@encryptionNotEnabled": { + "type": "String", + "placeholders": {} + }, + "@wrongPinEntered": { + "type": "String", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "@sendTypingNotifications": {}, + "@inviteGroupChat": {}, + "@appearOnTop": {}, + "@invitePrivateChat": {}, + "@verifyTitle": { + "type": "String", + "placeholders": {} + }, + "@foregroundServiceRunning": {}, + "@enterAnEmailAddress": { + "type": "String", + "placeholders": {} + }, + "@commandHint_kick": { + "type": "String", + "description": "Usage hint for the command /kick" + }, + "@commandHint_unban": { + "type": "String", + "description": "Usage hint for the command /unban" + }, + "@unknownEncryptionAlgorithm": { + "type": "String", + "placeholders": {} + }, + "@commandHint_ban": { + "type": "String", + "description": "Usage hint for the command /ban" + }, + "@importEmojis": {}, + "@wasDirectChatDisplayName": { + "type": "String", + "placeholders": { + "oldDisplayName": { + "type": "String" + } + } + }, + "@noChatDescriptionYet": {}, + "@defaultPermissionLevel": { + "type": "String", + "placeholders": {} + }, + "@removeFromBundle": {}, + "@numUsersTyping": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@whoCanPerformWhichAction": { + "type": "String", + "placeholders": {} + }, + "@learnMore": {}, + "@iHaveClickedOnLink": { + "type": "String", + "placeholders": {} + }, + "@notAnImage": {}, + "@chatDescriptionHasBeenChanged": {}, + "@bundleName": {}, + "@dehydrateTor": {}, + "@removeFromSpace": {}, + "@commandHint_op": { + "type": "String", + "description": "Usage hint for the command /op" + }, + "@commandHint_join": { + "type": "String", + "description": "Usage hint for the command /join" + }, + "@roomUpgradeDescription": {}, + "@commandHint_invite": { + "type": "String", + "description": "Usage hint for the command /invite" + }, + "@userSentUnknownEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "type": { + "type": "String" + } + } + }, + "@pleaseEnterANumber": {}, + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "@youKicked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@profileNotFound": {}, + "@jump": {}, + "@reactedWith": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "reaction": { + "type": "String" + } + } + }, + "@sorryThatsNotPossible": {}, + "@oopsSomethingWentWrong": { + "type": "String", + "placeholders": {} + }, + "@loadCountMoreParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@shareInviteLink": {}, + "@commandHint_markasdm": {}, + "@recoveryKeyLost": {}, + "@cuddleContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "@deviceKeys": {}, + "@waitingPartnerNumbers": { + "type": "String", + "placeholders": {} + }, + "@noGoogleServicesWarning": { + "type": "String", + "placeholders": {} + }, + "@emoteKeyboardNoRecents": { + "type": "String", + "placeholders": {} + }, + "@setCustomEmotes": { + "type": "String", + "placeholders": {} + }, + "@startedACall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "@emoteInvalid": { + "type": "String", + "placeholders": {} + }, + "@notificationsEnabledForThisAccount": { + "type": "String", + "placeholders": {} + }, + "@visibilityOfTheChatHistory": { + "type": "String", + "placeholders": {} + }, + "@setTheme": {}, + "@youJoinedTheChat": {}, + "@openVideoCamera": { + "type": "String", + "placeholders": {} + }, + "@chatBackupDescription": { + "type": "String", + "placeholders": {} + }, + "@statusExampleMessage": { + "type": "String", + "placeholders": {} + }, + "@markAsRead": {}, + "@sentASticker": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@errorAddingWidget": {}, + "@commandHint_dm": { + "type": "String", + "description": "Usage hint for the command /dm" + }, + "@commandHint_hug": {}, + "@replace": {}, + "@oopsPushError": { + "type": "String", + "placeholders": {} + }, + "@youUnbannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "@deactivateAccountWarning": { + "type": "String", + "placeholders": {} + }, + "@joinedTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@visibleForEveryone": { + "type": "String", + "placeholders": {} + }, + "@pleaseEnter4Digits": { + "type": "String", + "placeholders": {} + }, + "@unknownEvent": { + "type": "String", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "@pleaseEnterYourPin": { + "type": "String", + "placeholders": {} + }, + "@commandHint_googly": {}, + "@pleaseTryAgainLaterOrChooseDifferentServer": {}, + "@createGroup": {}, + "@hydrateTorLong": {}, + "@contentHasBeenReported": { + "type": "String", + "placeholders": {} + }, + "@noBackupWarning": {}, + "@storeInSecureStorageDescription": {}, + "@kickUserDescription": {}, + "@sendAMessage": { + "type": "String", + "placeholders": {} + }, + "@importNow": {}, + "@setInvitationLink": { + "type": "String", + "placeholders": {} + }, + "@pinMessage": {}, + "@screenSharingDetail": {}, + "@invite": {}, + "@enableMultiAccounts": {}, + "@emotePacks": { + "type": "String", + "placeholders": {} + }, + "@indexedDbErrorTitle": {}, + "@endedTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + } +} diff --git a/lib/l10n/intl_it.arb b/lib/l10n/intl_it.arb new file mode 100644 index 0000000..20e359f --- /dev/null +++ b/lib/l10n/intl_it.arb @@ -0,0 +1,3386 @@ +{ + "@@last_modified": "2021-08-14 12:41:09.992206", + "about": "Informazioni", + "@about": { + "type": "String", + "placeholders": {} + }, + "accept": "Accetta", + "@accept": { + "type": "String", + "placeholders": {} + }, + "acceptedTheInvitation": "👍 {username} ha accettato l'invito", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "account": "Account", + "@account": { + "type": "String", + "placeholders": {} + }, + "activatedEndToEndEncryption": "🔐 {username} ha abilitato la crittografia end to end", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "addEmail": "Aggiungi e-mail", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "admin": "Amministratore", + "@admin": { + "type": "String", + "placeholders": {} + }, + "alias": "alias", + "@alias": { + "type": "String", + "placeholders": {} + }, + "all": "Tutto", + "@all": { + "type": "String", + "placeholders": {} + }, + "answeredTheCall": "{senderName} ha risposto alla chiamata", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "anyoneCanJoin": "Tutti possono partecipare", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "appLock": "Blocco dell'app", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "archive": "Archivia", + "@archive": { + "type": "String", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "Gli utenti ospiti possono partecipare", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "Sei sicuro/a?", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "areYouSureYouWantToLogout": "Sei sicuro/a di voler uscire?", + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "askSSSSSign": "Per far accedere l'altra persona, per favore inserisci la tua frase segreta o chiave di recupero.", + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "askVerificationRequest": "Accettare questa richiesta di verifica da {username}?", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "badServerLoginTypesException": "L'homeserver supporta i tipi di accesso:\n{serverVersions}\nMa questa applicazione supporta solo:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "badServerVersionsException": "L'homeserver supporta le versioni Spec:\n{serverVersions}\nMa questa applicazione supporta solo {supportedVersions}", + "@badServerVersionsException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "banFromChat": "Bandisci dalla chat", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "banned": "Bandito", + "@banned": { + "type": "String", + "placeholders": {} + }, + "bannedUser": "{username} ha bandito {targetName}", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "blockDevice": "Blocca dispositivo", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "blocked": "Bloccato", + "@blocked": { + "type": "String", + "placeholders": {} + }, + "botMessages": "Messaggi bot", + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "cancel": "Annulla", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "changeDeviceName": "Cambia nome dispositivo", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "changedTheChatAvatar": "{username} ha cambiato l'avatar della discussione", + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheChatDescriptionTo": "{username} ha cambiato la descrizione della chat in: '{description}'", + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "changedTheChatNameTo": "{username} ha cambiato il nome della discussione in: '{chatname}'", + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "changedTheChatPermissions": "{username} ha cambiato i permessi della chat", + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheDisplaynameTo": "{username} ha cambiato nome in: '{displayname}'", + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "changedTheGuestAccessRules": "{username} ha cambiato le regole di accesso per ospiti", + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheGuestAccessRulesTo": "{username} ha cambiato le regole di accesso per ospiti con: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheHistoryVisibility": "{username} ha cambiato la visibilità della cronologia", + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheHistoryVisibilityTo": "{username} ha cambiato la visibilità della cronologia in: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheJoinRules": "{username} ha cambiato le regole per unirsi", + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheJoinRulesTo": "{username} ha cambiato le regole per unirsi in: {joinRules}", + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "changedTheProfileAvatar": "{username} ha cambiato il suo avatar", + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomAliases": "{username} ha modificato gli alias della stanza", + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomInvitationLink": "{username} ha cambiato il link di invito", + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changePassword": "Cambia la password", + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "changeTheHomeserver": "Cambia il server principale", + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "changeTheme": "Cambia il tuo stile", + "@changeTheme": { + "type": "String", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "Cambia il nome del gruppo", + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "channelCorruptedDecryptError": "La crittografia è corrotta", + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "chat": "Chat", + "@chat": { + "type": "String", + "placeholders": {} + }, + "chatBackup": "Backup delle discussioni", + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "chatBackupDescription": "I tuoi vecchi messaggi sono protetti da una chiave di sicurezza. Assicurati di non perderla.", + "@chatBackupDescription": { + "type": "String", + "placeholders": {} + }, + "chatDetails": "Dettagli chat", + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "chats": "Discussioni", + "@chats": { + "type": "String", + "placeholders": {} + }, + "chooseAStrongPassword": "Scegli una password complessa", + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "close": "Chiudi", + "@close": { + "type": "String", + "placeholders": {} + }, + "compareEmojiMatch": "Per favore confronta gli emoji", + "@compareEmojiMatch": { + "type": "String", + "placeholders": {} + }, + "compareNumbersMatch": "Per favore confronta i numeri", + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "configureChat": "Configura la discussione", + "@configureChat": { + "type": "String", + "placeholders": {} + }, + "confirm": "Conferma", + "@confirm": { + "type": "String", + "placeholders": {} + }, + "connect": "Connetti", + "@connect": { + "type": "String", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "Il contatto è stato invitato nel gruppo", + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "containsDisplayName": "Contiene nome visibile", + "@containsDisplayName": { + "type": "String", + "placeholders": {} + }, + "containsUserName": "Contiene nome utente", + "@containsUserName": { + "type": "String", + "placeholders": {} + }, + "contentHasBeenReported": "Il contenuto è stato segnalato agli amministratori del server", + "@contentHasBeenReported": { + "type": "String", + "placeholders": {} + }, + "copiedToClipboard": "Copiato negli Appunti", + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "copy": "Copia", + "@copy": { + "type": "String", + "placeholders": {} + }, + "copyToClipboard": "Copia negli appunti", + "@copyToClipboard": { + "type": "String", + "placeholders": {} + }, + "couldNotDecryptMessage": "Impossibile decriptare messaggio: {error}", + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "countParticipants": "{count} partecipanti", + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "create": "Crea", + "@create": { + "type": "String", + "placeholders": {} + }, + "createdTheChat": "💬 {username} ha creato la chat", + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "currentlyActive": "Attualmente attivo", + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "darkTheme": "Scuro", + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "dateWithoutYear": "{day}/{month}", + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "dateWithYear": "{day}/{month}/{year}", + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "deactivateAccountWarning": "Disabiliterà il tuo account. Non puoi tornare indietro! Sei sicuro/a?", + "@deactivateAccountWarning": { + "type": "String", + "placeholders": {} + }, + "defaultPermissionLevel": "Livello di autorizzazione predefinito per i nuovi utenti", + "@defaultPermissionLevel": { + "type": "String", + "placeholders": {} + }, + "delete": "Cancella", + "@delete": { + "type": "String", + "placeholders": {} + }, + "deleteAccount": "Elimina l'account", + "@deleteAccount": { + "type": "String", + "placeholders": {} + }, + "deleteMessage": "Elimina il messaggio", + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "device": "Dispositivo", + "@device": { + "type": "String", + "placeholders": {} + }, + "deviceId": "ID del dispositivo", + "@deviceId": { + "type": "String", + "placeholders": {} + }, + "devices": "Dispositivi", + "@devices": { + "type": "String", + "placeholders": {} + }, + "directChats": "Chat dirette", + "@directChats": { + "type": "String", + "placeholders": {} + }, + "displaynameHasBeenChanged": "Il nominativo è stato cambiato", + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "downloadFile": "Scarica il file", + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "edit": "Modifica", + "@edit": { + "type": "String", + "placeholders": {} + }, + "editBlockedServers": "Modifica i server bloccati", + "@editBlockedServers": { + "type": "String", + "placeholders": {} + }, + "editDisplayname": "Modifica il nominativo", + "@editDisplayname": { + "type": "String", + "placeholders": {} + }, + "editRoomAvatar": "Modifica l'avatar della stanza", + "@editRoomAvatar": { + "type": "String", + "placeholders": {} + }, + "emoteExists": "L'emote già esiste!", + "@emoteExists": { + "type": "String", + "placeholders": {} + }, + "emoteInvalid": "Shortcode emote invalido!", + "@emoteInvalid": { + "type": "String", + "placeholders": {} + }, + "emotePacks": "Pacchetti emotes della stanza", + "@emotePacks": { + "type": "String", + "placeholders": {} + }, + "emoteSettings": "Impostazioni emote", + "@emoteSettings": { + "type": "String", + "placeholders": {} + }, + "emoteShortcode": "Scorciatoia emote", + "@emoteShortcode": { + "type": "String", + "placeholders": {} + }, + "emoteWarnNeedToPick": "Devi scegliere una scorciatoia emote e aggiungere un immagine!", + "@emoteWarnNeedToPick": { + "type": "String", + "placeholders": {} + }, + "emptyChat": "Discussione vuota", + "@emptyChat": { + "type": "String", + "placeholders": {} + }, + "enableEmotesGlobally": "Abilita i pacchetti emotes globalmente", + "@enableEmotesGlobally": { + "type": "String", + "placeholders": {} + }, + "enableEncryption": "Abilita la crittografia", + "@enableEncryption": { + "type": "String", + "placeholders": {} + }, + "enableEncryptionWarning": "Non potrai disabilitare la crittografia in futuro. Sei sicuro?", + "@enableEncryptionWarning": { + "type": "String", + "placeholders": {} + }, + "encrypted": "Crittografato", + "@encrypted": { + "type": "String", + "placeholders": {} + }, + "encryption": "Crittografia", + "@encryption": { + "type": "String", + "placeholders": {} + }, + "encryptionNotEnabled": "Crittografia non abilitata", + "@encryptionNotEnabled": { + "type": "String", + "placeholders": {} + }, + "endedTheCall": "{senderName} è entrato in chiamata", + "@endedTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "enterAnEmailAddress": "Inserisci un indirizzo e-mail", + "@enterAnEmailAddress": { + "type": "String", + "placeholders": {} + }, + "enterYourHomeserver": "Inserisci il tuo server principale", + "@enterYourHomeserver": { + "type": "String", + "placeholders": {} + }, + "everythingReady": "Tutto pronto!", + "@everythingReady": { + "type": "String", + "placeholders": {} + }, + "extremeOffensive": "Estremamente offensivo", + "@extremeOffensive": { + "type": "String", + "placeholders": {} + }, + "fileName": "Nome del file", + "@fileName": { + "type": "String", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "String", + "placeholders": {} + }, + "fontSize": "Dimensione carattere", + "@fontSize": { + "type": "String", + "placeholders": {} + }, + "forward": "Inoltra", + "@forward": { + "type": "String", + "placeholders": {} + }, + "fromJoining": "Dall'adesione", + "@fromJoining": { + "type": "String", + "placeholders": {} + }, + "fromTheInvitation": "Dall'invito", + "@fromTheInvitation": { + "type": "String", + "placeholders": {} + }, + "goToTheNewRoom": "Vai nella nuova stanza", + "@goToTheNewRoom": { + "type": "String", + "placeholders": {} + }, + "group": "Gruppo", + "@group": { + "type": "String", + "placeholders": {} + }, + "groupIsPublic": "Il gruppo è pubblico", + "@groupIsPublic": { + "type": "String", + "placeholders": {} + }, + "groups": "Gruppi", + "@groups": { + "type": "String", + "placeholders": {} + }, + "groupWith": "Gruppo con {displayname}", + "@groupWith": { + "type": "String", + "placeholders": { + "displayname": { + "type": "String" + } + } + }, + "guestsAreForbidden": "Gli ospiti sono vietati", + "@guestsAreForbidden": { + "type": "String", + "placeholders": {} + }, + "guestsCanJoin": "Gli ospiti possono partecipare", + "@guestsCanJoin": { + "type": "String", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "{username} ha ritirato l'invito per {targetName}", + "@hasWithdrawnTheInvitationFor": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "help": "Aiuto", + "@help": { + "type": "String", + "placeholders": {} + }, + "hideRedactedEvents": "Nascondi gli eventi eliminati", + "@hideRedactedEvents": { + "type": "String", + "placeholders": {} + }, + "hideUnknownEvents": "Nascondi gli eventi sconosciuti", + "@hideUnknownEvents": { + "type": "String", + "placeholders": {} + }, + "howOffensiveIsThisContent": "Quanto è offensivo questo contenuto?", + "@howOffensiveIsThisContent": { + "type": "String", + "placeholders": {} + }, + "id": "ID", + "@id": { + "type": "String", + "placeholders": {} + }, + "identity": "Identità", + "@identity": { + "type": "String", + "placeholders": {} + }, + "ignore": "Ignora", + "@ignore": { + "type": "String", + "placeholders": {} + }, + "ignoredUsers": "Utenti ignorati", + "@ignoredUsers": { + "type": "String", + "placeholders": {} + }, + "iHaveClickedOnLink": "Ho cliccato sul collegamento", + "@iHaveClickedOnLink": { + "type": "String", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "Frase segrata o chiave di ripristino errate", + "@incorrectPassphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "inoffensive": "Inoffensivo", + "@inoffensive": { + "type": "String", + "placeholders": {} + }, + "inviteContact": "Invita contatto", + "@inviteContact": { + "type": "String", + "placeholders": {} + }, + "inviteContactToGroup": "Invita un contatto a {groupName}", + "@inviteContactToGroup": { + "type": "String", + "placeholders": { + "groupName": { + "type": "String" + } + } + }, + "invited": "Invitato/a", + "@invited": { + "type": "String", + "placeholders": {} + }, + "invitedUser": "📩 {username} ha invitato {targetName}", + "@invitedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "invitedUsersOnly": "Solo utenti invitati", + "@invitedUsersOnly": { + "type": "String", + "placeholders": {} + }, + "inviteForMe": "Invita per me", + "@inviteForMe": { + "type": "String", + "placeholders": {} + }, + "inviteText": "{username} ti ha invitato/a a FluffyChat.\n1. Visita fluffychat.im e installa l'applicazione\n2. Iscriviti o accedi\n3. Apri il collegamento di invito: \n {link}", + "@inviteText": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "link": { + "type": "String" + } + } + }, + "isTyping": "sta scrivendo…", + "@isTyping": { + "type": "String", + "placeholders": {} + }, + "joinedTheChat": "👋 {username} si è unito/a alla chat", + "@joinedTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "joinRoom": "Unisciti alla stanza", + "@joinRoom": { + "type": "String", + "placeholders": {} + }, + "kicked": "👞 {username} ha espulso {targetName}", + "@kicked": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickedAndBanned": "🙅 {username} ha espulso e bandito {targetName}", + "@kickedAndBanned": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickFromChat": "Espelli dalla chat", + "@kickFromChat": { + "type": "String", + "placeholders": {} + }, + "lastActiveAgo": "Ultima attività: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "String", + "placeholders": { + "localizedTimeShort": { + "type": "String" + } + } + }, + "leave": "Abbandona", + "@leave": { + "type": "String", + "placeholders": {} + }, + "leftTheChat": "Ha lasciato la chat", + "@leftTheChat": { + "type": "String", + "placeholders": {} + }, + "license": "Licenza", + "@license": { + "type": "String", + "placeholders": {} + }, + "lightTheme": "Chiaro", + "@lightTheme": { + "type": "String", + "placeholders": {} + }, + "loadCountMoreParticipants": "Carica altri {count} partecipanti", + "@loadCountMoreParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "loadingPleaseWait": "Caricamento… Attendere prego.", + "@loadingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "loadMore": "Carica di più…", + "@loadMore": { + "type": "String", + "placeholders": {} + }, + "login": "Accedi", + "@login": { + "type": "String", + "placeholders": {} + }, + "logInTo": "Accedi a {homeserver}", + "@logInTo": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "logout": "Esci", + "@logout": { + "type": "String", + "placeholders": {} + }, + "memberChanges": "Cambiamenti di membri", + "@memberChanges": { + "type": "String", + "placeholders": {} + }, + "mention": "Menzione", + "@mention": { + "type": "String", + "placeholders": {} + }, + "messages": "Messaggi", + "@messages": { + "type": "String", + "placeholders": {} + }, + "moderator": "Moderatore", + "@moderator": { + "type": "String", + "placeholders": {} + }, + "muteChat": "Silenzia discussione", + "@muteChat": { + "type": "String", + "placeholders": {} + }, + "needPantalaimonWarning": "Tieni presente che per ora hai bisogno di Pantalaimon per utilizzare la crittografia dall'inizio alla fine.", + "@needPantalaimonWarning": { + "type": "String", + "placeholders": {} + }, + "newChat": "Nuova discussione", + "@newChat": { + "type": "String", + "placeholders": {} + }, + "newMessageInFluffyChat": "💬 Nuovo messaggio in FluffyChat", + "@newMessageInFluffyChat": { + "type": "String", + "placeholders": {} + }, + "newVerificationRequest": "Nuova richiesta di verifica!", + "@newVerificationRequest": { + "type": "String", + "placeholders": {} + }, + "next": "Avanti", + "@next": { + "type": "String", + "placeholders": {} + }, + "no": "No", + "@no": { + "type": "String", + "placeholders": {} + }, + "noConnectionToTheServer": "Nessuna connessione al server", + "@noConnectionToTheServer": { + "type": "String", + "placeholders": {} + }, + "noEmotesFound": "Nessun emote trovato. 😕", + "@noEmotesFound": { + "type": "String", + "placeholders": {} + }, + "noEncryptionForPublicRooms": "Puoi attivare la crittografia solo quando la stanza non è più accessibile pubblicamente.", + "@noEncryptionForPublicRooms": { + "type": "String", + "placeholders": {} + }, + "noGoogleServicesWarning": "Firebase Cloud Messaging non sembra essere disponibile sul tuo dispositivo. Per continuare a ricevere notifiche push, ti consigliamo di installare ntfy. Con ntfy o un altro provider Unified Push puoi ricevere notifiche push in modo sicuro per i dati. Puoi scaricare ntfy dal PlayStore o da F-Droid.", + "@noGoogleServicesWarning": { + "type": "String", + "placeholders": {} + }, + "none": "Nessuno", + "@none": { + "type": "String", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "Non hai ancora aggiunto un modo per recuperare la tua password.", + "@noPasswordRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "noPermission": "Nessuna autorizzazione", + "@noPermission": { + "type": "String", + "placeholders": {} + }, + "noRoomsFound": "Nessuna stanza trovata…", + "@noRoomsFound": { + "type": "String", + "placeholders": {} + }, + "notifications": "Notifiche", + "@notifications": { + "type": "String", + "placeholders": {} + }, + "notificationsEnabledForThisAccount": "Notifiche abilitate per questo account", + "@notificationsEnabledForThisAccount": { + "type": "String", + "placeholders": {} + }, + "numUsersTyping": "{count} utenti stanno scrivendo…", + "@numUsersTyping": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "offensive": "Offensivo", + "@offensive": { + "type": "String", + "placeholders": {} + }, + "offline": "Fuori linea", + "@offline": { + "type": "String", + "placeholders": {} + }, + "ok": "Ok", + "@ok": { + "type": "String", + "placeholders": {} + }, + "online": "In linea", + "@online": { + "type": "String", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "Il backup delle chiavi in linea è abilitato", + "@onlineKeyBackupEnabled": { + "type": "String", + "placeholders": {} + }, + "oopsSomethingWentWrong": "Ops, qualcosa è andato storto…", + "@oopsSomethingWentWrong": { + "type": "String", + "placeholders": {} + }, + "openAppToReadMessages": "Apri l'app per leggere i messaggi", + "@openAppToReadMessages": { + "type": "String", + "placeholders": {} + }, + "openCamera": "Apri fotocamera", + "@openCamera": { + "type": "String", + "placeholders": {} + }, + "participant": "Partecipante", + "@participant": { + "type": "String", + "placeholders": {} + }, + "passphraseOrKey": "frase segreta o chiave di recupero", + "@passphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "password": "Password", + "@password": { + "type": "String", + "placeholders": {} + }, + "passwordForgotten": "Password dimenticata", + "@passwordForgotten": { + "type": "String", + "placeholders": {} + }, + "passwordHasBeenChanged": "La password è stata cambiata", + "@passwordHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "passwordRecovery": "Recupero della password", + "@passwordRecovery": { + "type": "String", + "placeholders": {} + }, + "people": "Persone", + "@people": { + "type": "String", + "placeholders": {} + }, + "pickImage": "Scegli un'immagine", + "@pickImage": { + "type": "String", + "placeholders": {} + }, + "pin": "Fissa", + "@pin": { + "type": "String", + "placeholders": {} + }, + "play": "Riproduci {fileName}", + "@play": { + "type": "String", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "pleaseChooseAPasscode": "Si prega di scegliere un codice di accesso", + "@pleaseChooseAPasscode": { + "type": "String", + "placeholders": {} + }, + "pleaseClickOnLink": "Clicca sul collegamenti nell'e-mail e poi procedi.", + "@pleaseClickOnLink": { + "type": "String", + "placeholders": {} + }, + "pleaseEnter4Digits": "Inserisci 4 cifre o lascia vuoto per disabilitare il blocco dell'app.", + "@pleaseEnter4Digits": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPassword": "Inserisci la tua password", + "@pleaseEnterYourPassword": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourUsername": "Inserisci il tuo nome utente", + "@pleaseEnterYourUsername": { + "type": "String", + "placeholders": {} + }, + "pleaseFollowInstructionsOnWeb": "Segui le istruzioni sul sito web e tocca Avanti.", + "@pleaseFollowInstructionsOnWeb": { + "type": "String", + "placeholders": {} + }, + "privacy": "Privacy", + "@privacy": { + "type": "String", + "placeholders": {} + }, + "publicRooms": "Stanze pubbliche", + "@publicRooms": { + "type": "String", + "placeholders": {} + }, + "pushRules": "Regole notifiche", + "@pushRules": { + "type": "String", + "placeholders": {} + }, + "reason": "Motivo", + "@reason": { + "type": "String", + "placeholders": {} + }, + "recording": "Registrazione", + "@recording": { + "type": "String", + "placeholders": {} + }, + "redactedAnEvent": "{username} ha eliminato un evento", + "@redactedAnEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "redactMessage": "Elimina un messaggio", + "@redactMessage": { + "type": "String", + "placeholders": {} + }, + "reject": "Rifiuta", + "@reject": { + "type": "String", + "placeholders": {} + }, + "rejectedTheInvitation": "{username} ha rifiutato l'invito", + "@rejectedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "rejoin": "Riunisciti", + "@rejoin": { + "type": "String", + "placeholders": {} + }, + "remove": "Rimuovi", + "@remove": { + "type": "String", + "placeholders": {} + }, + "removeAllOtherDevices": "Rimuovi tutti gli altri dispositivi", + "@removeAllOtherDevices": { + "type": "String", + "placeholders": {} + }, + "removedBy": "Rimosso da {username}", + "@removedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "removeDevice": "Rimuovi il dispositivo", + "@removeDevice": { + "type": "String", + "placeholders": {} + }, + "unbanFromChat": "Rimuovi il ban dalla chat", + "@unbanFromChat": { + "type": "String", + "placeholders": {} + }, + "replaceRoomWithNewerVersion": "Sostituisci la stanza con la versione più recente", + "@replaceRoomWithNewerVersion": { + "type": "String", + "placeholders": {} + }, + "reply": "Rispondi", + "@reply": { + "type": "String", + "placeholders": {} + }, + "reportMessage": "Segnala il messaggio", + "@reportMessage": { + "type": "String", + "placeholders": {} + }, + "requestPermission": "Richiedi l'autorizzazione", + "@requestPermission": { + "type": "String", + "placeholders": {} + }, + "roomHasBeenUpgraded": "La stanza è stata aggiornata", + "@roomHasBeenUpgraded": { + "type": "String", + "placeholders": {} + }, + "roomVersion": "Versione della stanza", + "@roomVersion": { + "type": "String", + "placeholders": {} + }, + "search": "Cerca", + "@search": { + "type": "String", + "placeholders": {} + }, + "security": "Sicurezza", + "@security": { + "type": "String", + "placeholders": {} + }, + "seenByUser": "Visto da {username}", + "@seenByUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "send": "Invia", + "@send": { + "type": "String", + "placeholders": {} + }, + "sendAMessage": "Invia un messaggio", + "@sendAMessage": { + "type": "String", + "placeholders": {} + }, + "sendAudio": "Invia un file audio", + "@sendAudio": { + "type": "String", + "placeholders": {} + }, + "sendFile": "Invia un file", + "@sendFile": { + "type": "String", + "placeholders": {} + }, + "sendImage": "Invia un'immagine", + "@sendImage": { + "type": "String", + "placeholders": {} + }, + "sendMessages": "Invia messaggi", + "@sendMessages": { + "type": "String", + "placeholders": {} + }, + "sendOriginal": "Invia l'originale", + "@sendOriginal": { + "type": "String", + "placeholders": {} + }, + "sendVideo": "Invia un video", + "@sendVideo": { + "type": "String", + "placeholders": {} + }, + "sentAFile": "📁 {username} ha inviato un file", + "@sentAFile": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAnAudio": "🎤 {username} ha inviato un file audio", + "@sentAnAudio": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAPicture": "🖼️ {username} ha inviato un'immagine", + "@sentAPicture": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentASticker": "😊 {username} ha inviato un adesivo", + "@sentASticker": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAVideo": "🎥 {username} ha inviato un video", + "@sentAVideo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentCallInformations": "{senderName} ha inviato informazioni sulla chiamata", + "@sentCallInformations": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "setCustomEmotes": "Imposta emoticon personalizzate", + "@setCustomEmotes": { + "type": "String", + "placeholders": {} + }, + "setInvitationLink": "Imposta il collegamento di invito", + "@setInvitationLink": { + "type": "String", + "placeholders": {} + }, + "setPermissionsLevel": "Imposta il livello di autorizzazione", + "@setPermissionsLevel": { + "type": "String", + "placeholders": {} + }, + "setStatus": "Imposta lo stato", + "@setStatus": { + "type": "String", + "placeholders": {} + }, + "settings": "Impostazioni", + "@settings": { + "type": "String", + "placeholders": {} + }, + "share": "Condividi", + "@share": { + "type": "String", + "placeholders": {} + }, + "sharedTheLocation": "{username} ha condiviso la sua posizione", + "@sharedTheLocation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "showPassword": "Mostra la password", + "@showPassword": { + "type": "String", + "placeholders": {} + }, + "skip": "Ignora", + "@skip": { + "type": "String", + "placeholders": {} + }, + "sourceCode": "Codice sorgente", + "@sourceCode": { + "type": "String", + "placeholders": {} + }, + "startedACall": "{senderName} ha iniziato una chiamata", + "@startedACall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "status": "Stato", + "@status": { + "type": "String", + "placeholders": {} + }, + "statusExampleMessage": "Come stai oggi?", + "@statusExampleMessage": { + "type": "String", + "placeholders": {} + }, + "submit": "Invia", + "@submit": { + "type": "String", + "placeholders": {} + }, + "systemTheme": "Sistema", + "@systemTheme": { + "type": "String", + "placeholders": {} + }, + "theyDontMatch": "Non corrispondono", + "@theyDontMatch": { + "type": "String", + "placeholders": {} + }, + "theyMatch": "Corrispondono", + "@theyMatch": { + "type": "String", + "placeholders": {} + }, + "title": "FluffyChat", + "@title": { + "description": "Title for the application", + "type": "String", + "placeholders": {} + }, + "toggleFavorite": "Attiva/disattiva preferito", + "@toggleFavorite": { + "type": "String", + "placeholders": {} + }, + "toggleMuted": "Attiva/disattiva il silenziatore", + "@toggleMuted": { + "type": "String", + "placeholders": {} + }, + "toggleUnread": "Segna come letto / non letto", + "@toggleUnread": { + "type": "String", + "placeholders": {} + }, + "tooManyRequestsWarning": "Troppe richieste. Per favore riprova più tardi!", + "@tooManyRequestsWarning": { + "type": "String", + "placeholders": {} + }, + "transferFromAnotherDevice": "Trasferimento da un altro dispositivo", + "@transferFromAnotherDevice": { + "type": "String", + "placeholders": {} + }, + "tryToSendAgain": "Prova a inviare di nuovo", + "@tryToSendAgain": { + "type": "String", + "placeholders": {} + }, + "unavailable": "Non disponibile", + "@unavailable": { + "type": "String", + "placeholders": {} + }, + "unbannedUser": "{username} ha rimosso il bando di {targetName}", + "@unbannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "unblockDevice": "Sblocca il dispositivo", + "@unblockDevice": { + "type": "String", + "placeholders": {} + }, + "unknownDevice": "Dispositivo sconosciuto", + "@unknownDevice": { + "type": "String", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "Algoritmo di crittografia sconosciuto", + "@unknownEncryptionAlgorithm": { + "type": "String", + "placeholders": {} + }, + "unknownEvent": "Evento sconosciuto '{type}'", + "@unknownEvent": { + "type": "String", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "unmuteChat": "Riattiva l'audio della discussione", + "@unmuteChat": { + "type": "String", + "placeholders": {} + }, + "unpin": "Rimuovi", + "@unpin": { + "type": "String", + "placeholders": {} + }, + "unreadChats": "{unreadCount, plural, =1{1 discussione non letta} other{{unreadCount} discussioni non lette}}", + "@unreadChats": { + "type": "String", + "placeholders": { + "unreadCount": { + "type": "int" + } + } + }, + "userAndOthersAreTyping": "{username} e {count} altri stanno scrivendo…", + "@userAndOthersAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "userAndUserAreTyping": "{username} e {username2} stanno scrivendo…", + "@userAndUserAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "username2": { + "type": "String" + } + } + }, + "userIsTyping": "{username} sta scrivendo…", + "@userIsTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "userLeftTheChat": "🚪 {username} ha abbandonato la chat", + "@userLeftTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "username": "Nome utente", + "@username": { + "type": "String", + "placeholders": {} + }, + "userSentUnknownEvent": "{username} ha inviato un evento {type}", + "@userSentUnknownEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "type": { + "type": "String" + } + } + }, + "verified": "Verificato", + "@verified": { + "type": "String", + "placeholders": {} + }, + "verify": "Verifica", + "@verify": { + "type": "String", + "placeholders": {} + }, + "verifyStart": "Avvia la verifica", + "@verifyStart": { + "type": "String", + "placeholders": {} + }, + "verifySuccess": "Hai verificato con successo!", + "@verifySuccess": { + "type": "String", + "placeholders": {} + }, + "verifyTitle": "Verifica dell'altro account", + "@verifyTitle": { + "type": "String", + "placeholders": {} + }, + "videoCall": "Videochiamata", + "@videoCall": { + "type": "String", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "Visibilità della cronologia della discussione", + "@visibilityOfTheChatHistory": { + "type": "String", + "placeholders": {} + }, + "visibleForAllParticipants": "Visibile a tutti i partecipanti", + "@visibleForAllParticipants": { + "type": "String", + "placeholders": {} + }, + "visibleForEveryone": "Visibile a tutti", + "@visibleForEveryone": { + "type": "String", + "placeholders": {} + }, + "voiceMessage": "Messaggio vocale", + "@voiceMessage": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "In attesa che il partner accetti la richiesta…", + "@waitingPartnerAcceptRequest": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerEmoji": "In attesa che il partner accetti l'emoji…", + "@waitingPartnerEmoji": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerNumbers": "In attesa che il partner accetti i numeri…", + "@waitingPartnerNumbers": { + "type": "String", + "placeholders": {} + }, + "wallpaper": "Immagine di sfondo:", + "@wallpaper": { + "type": "String", + "placeholders": {} + }, + "warning": "Attenzione!", + "@warning": { + "type": "String", + "placeholders": {} + }, + "weSentYouAnEmail": "Ti abbiamo inviato un'e-mail", + "@weSentYouAnEmail": { + "type": "String", + "placeholders": {} + }, + "whoCanPerformWhichAction": "Chi può eseguire quale azione", + "@whoCanPerformWhichAction": { + "type": "String", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "Chi è autorizzato a unirsi a questo gruppo", + "@whoIsAllowedToJoinThisGroup": { + "type": "String", + "placeholders": {} + }, + "whyDoYouWantToReportThis": "Perché vuoi segnalarlo?", + "@whyDoYouWantToReportThis": { + "type": "String", + "placeholders": {} + }, + "wipeChatBackup": "Cancellare il backup della discussione per creare una nuova chiave di ripristino?", + "@wipeChatBackup": { + "type": "String", + "placeholders": {} + }, + "withTheseAddressesRecoveryDescription": "Con questi indirizzi puoi recuperare la tua password se necessario.", + "@withTheseAddressesRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "writeAMessage": "Scrivi un messaggio…", + "@writeAMessage": { + "type": "String", + "placeholders": {} + }, + "yes": "Sì", + "@yes": { + "type": "String", + "placeholders": {} + }, + "you": "Tu", + "@you": { + "type": "String", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "Non stai più partecipando a questa chat", + "@youAreNoLongerParticipatingInThisChat": { + "type": "String", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "Sei stato/a bandito/a da questa chat", + "@youHaveBeenBannedFromThisChat": { + "type": "String", + "placeholders": {} + }, + "yourPublicKey": "La tua chiave pubblica", + "@yourPublicKey": { + "type": "String", + "placeholders": {} + }, + "singlesignon": "Accesso singolo", + "@singlesignon": { + "type": "String", + "placeholders": {} + }, + "setAsCanonicalAlias": "Imposta come alias principale", + "@setAsCanonicalAlias": { + "type": "String", + "placeholders": {} + }, + "removeYourAvatar": "Rimuovi il tuo avatar", + "@removeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "register": "Registrati", + "@register": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPin": "Per favore inserisci il tuo PIN", + "@pleaseEnterYourPin": { + "type": "String", + "placeholders": {} + }, + "pleaseChoose": "Si prega di scegliere", + "@pleaseChoose": { + "type": "String", + "placeholders": {} + }, + "or": "O", + "@or": { + "type": "String", + "placeholders": {} + }, + "oopsPushError": "Ops! Purtroppo si è verificato un errore durante l'impostazione delle notifiche push.", + "@oopsPushError": { + "type": "String", + "placeholders": {} + }, + "editRoomAliases": "Modifica gli alias della stanza", + "@editRoomAliases": { + "type": "String", + "placeholders": {} + }, + "clearArchive": "Cancella archivio", + "@clearArchive": {}, + "changeYourAvatar": "Cambia il tuo avatar", + "@changeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "allChats": "Tutte le chat", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "addToSpace": "Aggiungi a uno spazio", + "@addToSpace": {}, + "commandHint_leave": "Abbandona questa stanza", + "@commandHint_leave": { + "type": "String", + "description": "Usage hint for the command /leave" + }, + "commandHint_ban": "Banna l'utente specificato da questa stanza", + "@commandHint_ban": { + "type": "String", + "description": "Usage hint for the command /ban" + }, + "sendSticker": "Invia adesivo", + "@sendSticker": { + "type": "String", + "placeholders": {} + }, + "commandHint_html": "Invia testo formattato in HTML", + "@commandHint_html": { + "type": "String", + "description": "Usage hint for the command /html" + }, + "commandHint_plain": "Invia testo non formattato", + "@commandHint_plain": { + "type": "String", + "description": "Usage hint for the command /plain" + }, + "commandHint_send": "Invia testo", + "@commandHint_send": { + "type": "String", + "description": "Usage hint for the command /send" + }, + "locationDisabledNotice": "I servizi di localizzazione sono disabilitati. Per favore abilitali per poter condividere la tua posizione.", + "@locationDisabledNotice": { + "type": "String", + "placeholders": {} + }, + "saveFile": "Salva file", + "@saveFile": { + "type": "String", + "placeholders": {} + }, + "serverRequiresEmail": "Questo server ha bisogno di validare la tua email per la registrazione.", + "@serverRequiresEmail": {}, + "openInMaps": "Apri in maps", + "@openInMaps": { + "type": "String", + "placeholders": {} + }, + "scanQrCode": "Scansiona codice QR", + "@scanQrCode": {}, + "addAccount": "Aggiungi account", + "@addAccount": {}, + "unverified": "Non verificato", + "@unverified": {}, + "sendAsText": "Invia come testo", + "@sendAsText": { + "type": "String" + }, + "repeatPassword": "Ripeti password", + "@repeatPassword": {}, + "autoplayImages": "Riproduci automaticamente adesivi ed emote animati", + "@autoplayImages": { + "type": "String", + "placeholder": {} + }, + "cantOpenUri": "Impossibile aprire l'URI {uri}", + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "commandInvalid": "Comando non valido", + "@commandInvalid": { + "type": "String" + }, + "link": "Link", + "@link": {}, + "shareLocation": "Condividi posizione", + "@shareLocation": { + "type": "String", + "placeholders": {} + }, + "yourChatBackupHasBeenSetUp": "Il tuo backup delle chat è stato configurato.", + "@yourChatBackupHasBeenSetUp": {}, + "hugContent": "{senderName} ti abbraccia", + "@hugContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "jumpToLastReadMessage": "Salta all'ultimo messaggio letto", + "@jumpToLastReadMessage": {}, + "allRooms": "Tutte le chat di gruppo", + "@allRooms": { + "type": "String", + "placeholders": {} + }, + "obtainingLocation": "Ottengo la posizione…", + "@obtainingLocation": { + "type": "String", + "placeholders": {} + }, + "commandHint_cuddle": "Invia una coccola", + "@commandHint_cuddle": {}, + "widgetVideo": "Video", + "@widgetVideo": {}, + "dismiss": "Chiudi", + "@dismiss": {}, + "reportErrorDescription": "😭 Oh no. Qualcosa è andato storto. Se vuoi, puoi segnalare questo bug agli sviluppatori.", + "@reportErrorDescription": {}, + "chatHasBeenAddedToThisSpace": "La chat è stata aggiunta a questo spazio", + "@chatHasBeenAddedToThisSpace": {}, + "unsupportedAndroidVersion": "Versione di Android non supportata", + "@unsupportedAndroidVersion": {}, + "widgetJitsi": "Jitsi Meet", + "@widgetJitsi": {}, + "messageType": "Tipo del Messaggio", + "@messageType": {}, + "indexedDbErrorLong": "Sfortunatamente l'archiviazione dei messaggi non è abilitata in modalità privata per impostazione predefinita.\nPer favore visita\n - about:config\n - imposta dom.indexedDB.privateBrowsing.enabled su true\nAltrimenti, non è possibile eseguire FluffyChat.", + "@indexedDbErrorLong": {}, + "oneClientLoggedOut": "Uno dei tuoi client è stato disconnesso", + "@oneClientLoggedOut": {}, + "startFirstChat": "Inizia la tua prima chat", + "@startFirstChat": {}, + "callingAccount": "Account di chiamata", + "@callingAccount": {}, + "setColorTheme": "Imposta tema colore:", + "@setColorTheme": {}, + "nextAccount": "Account successivo", + "@nextAccount": {}, + "commandHint_create": "Crea una chat di gruppo vuota\nUtilizza --no-encryption per disattivare la criptazione", + "@commandHint_create": { + "type": "String", + "description": "Usage hint for the command /create" + }, + "allSpaces": "Tutti gli spazi", + "@allSpaces": {}, + "supposedMxid": "Dovrebbe essere {mxid}", + "@supposedMxid": { + "type": "String", + "placeholders": { + "mxid": { + "type": "String" + } + } + }, + "user": "Utente", + "@user": {}, + "youAcceptedTheInvitation": "👍 Hai accettato l'invito", + "@youAcceptedTheInvitation": {}, + "noMatrixServer": "{server1} non è un server matrix, vuoi invece usare {server2}?", + "@noMatrixServer": { + "type": "String", + "placeholders": { + "server1": { + "type": "String" + }, + "server2": { + "type": "String" + } + } + }, + "youInvitedBy": "📩 Sei stato invitato/a da {user}", + "@youInvitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "banUserDescription": "L'utente sarà bannato dalla chat e non sarà in grado di rientrare finché non verrà sbannato.", + "@banUserDescription": {}, + "widgetEtherpad": "Nota di testo", + "@widgetEtherpad": {}, + "removeDevicesDescription": "Sarai disconnesso da questo dispositivo e non potrai più ricevere messaggi.", + "@removeDevicesDescription": {}, + "separateChatTypes": "Separare le chat dirette e i gruppi", + "@separateChatTypes": { + "type": "String", + "placeholders": {} + }, + "tryAgain": "Riprova", + "@tryAgain": {}, + "youKickedAndBanned": "🙅 Hai rimosso e bannato {user}", + "@youKickedAndBanned": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "unbanUserDescription": "L'utente potrà rientrare nella chat.", + "@unbanUserDescription": {}, + "sendOnEnter": "Invia quando premi Invio", + "@sendOnEnter": {}, + "youRejectedTheInvitation": "Hai rifiutato l'invito", + "@youRejectedTheInvitation": {}, + "otherCallingPermissions": "Microfono, fotocamera e altri permessi di FluffyChat", + "@otherCallingPermissions": {}, + "messagesStyle": "Messaggi:", + "@messagesStyle": {}, + "widgetUrlError": "Questo non è un URL valido.", + "@widgetUrlError": {}, + "emailOrUsername": "Email o nome utente", + "@emailOrUsername": {}, + "newSpaceDescription": "Gli spazi ti permettono di consolidare le tue chat e di creare comunità private o pubbliche.", + "@newSpaceDescription": {}, + "chatDescription": "Descrizione della chat", + "@chatDescription": {}, + "callingAccountDetails": "Dai l'autorizzazione a FluffyChat di usare l'app di composizione Android nativa.", + "@callingAccountDetails": {}, + "enterSpace": "Unirsi allo spazio", + "@enterSpace": {}, + "encryptThisChat": "Cifra questa chat", + "@encryptThisChat": {}, + "previousAccount": "Account precedente", + "@previousAccount": {}, + "reopenChat": "Riapri la chat", + "@reopenChat": {}, + "pleaseEnterRecoveryKey": "Per favore inserisci la tua chiave di recupero:", + "@pleaseEnterRecoveryKey": {}, + "widgetNameError": "Per favore fornire un nome da visualizzare.", + "@widgetNameError": {}, + "addToBundle": "Aggiungi al bundle", + "@addToBundle": {}, + "spaceIsPublic": "Lo spazio è pubblico", + "@spaceIsPublic": { + "type": "String", + "placeholders": {} + }, + "addWidget": "Aggiungi widget", + "@addWidget": {}, + "countFiles": "{count} file", + "@countFiles": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "noKeyForThisMessage": "Questo può accadere se il messaggio è stato inviato prima che hai fatto l'accesso in questo dispositivo.\n\nÈ anche possibile che il mittente abbia bloccato il tuo dispositivo o che qualcosa sia andato storto con la tua connessione ad internet.\n\nSei in grado di leggere il messaggio su altre sessioni? Allora puoi trasferire il messaggio da lì! Vai su Impostazioni > Dispositivi e verifica che i tuoi dispositivi siano verificati l'un l'altro. Quando aprirai la stanza la prossima volta ed entrambe le sessioni sono in primo piano, le chiavi saranno trasmesse automaticamente.\n\nNon vuoi perdere le chiavi quando ti disconnetti o cambi dispositivo? Assicurati di aver attivato il backup delle chat nelle impostazioni.", + "@noKeyForThisMessage": {}, + "commandHint_markasgroup": "Segna come gruppo", + "@commandHint_markasgroup": {}, + "errorObtainingLocation": "Errore cercando di ottenere la posizione: {error}", + "@errorObtainingLocation": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "hydrateTor": "Utenti TOR: Importa l'esportazione della sessione", + "@hydrateTor": {}, + "pushNotificationsNotAvailable": "Notifiche push non disponibili", + "@pushNotificationsNotAvailable": {}, + "storeInAppleKeyChain": "Salva nel portachiavi di Apple", + "@storeInAppleKeyChain": {}, + "hydrate": "Ripristina dal file di backup", + "@hydrate": {}, + "invalidServerName": "Nome server non valido", + "@invalidServerName": {}, + "chatPermissions": "Permessi della chat", + "@chatPermissions": {}, + "sender": "Mittente", + "@sender": {}, + "storeInAndroidKeystore": "Salva nel KeyStore di Android", + "@storeInAndroidKeystore": {}, + "signInWithPassword": "Accedi con la password", + "@signInWithPassword": {}, + "makeAdminDescription": "Una volta che fai questo utente amministratore, potresti non essere in grado di rimuoverlo, in quanto avrà i tuoi stessi privilegi.", + "@makeAdminDescription": {}, + "synchronizingPleaseWait": "Sincronizzazione... Attendere prego.", + "@synchronizingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "commandHint_clearcache": "Pulisci cache", + "@commandHint_clearcache": { + "type": "String", + "description": "Usage hint for the command /clearcache" + }, + "saveKeyManuallyDescription": "Salva questa chiave manualmente attivando la finestra di condivisione o gli appunti.", + "@saveKeyManuallyDescription": {}, + "editBundlesForAccount": "Modifica i bundle per questo account", + "@editBundlesForAccount": {}, + "whyIsThisMessageEncrypted": "Perché questo messaggio è illeggibile?", + "@whyIsThisMessageEncrypted": {}, + "setChatDescription": "Imposta la descrizione della chat", + "@setChatDescription": {}, + "spaceName": "Nome dello spazio", + "@spaceName": { + "type": "String", + "placeholders": {} + }, + "importFromZipFile": "Importa da file .zip", + "@importFromZipFile": {}, + "dehydrateWarning": "Questa azione non può essere annullata. Assicurarsi di aver salvato il file di backup.", + "@dehydrateWarning": {}, + "noOtherDevicesFound": "Nessun altro dispositivo trovato", + "@noOtherDevicesFound": {}, + "redactedBy": "Rimosso da {username}", + "@redactedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "videoCallsBetaWarning": "Nota che le video chiamate sono attualmente in beta. Potrebbero non funzionare come previsto o non funzionare del tutto su alcune piattaforme.", + "@videoCallsBetaWarning": {}, + "signInWith": "Accedi con {provider}", + "@signInWith": { + "type": "String", + "placeholders": { + "provider": { + "type": "String" + } + } + }, + "fileIsTooBigForServer": "Impossibile inviare! Il server supporta solo allegati fino a {max}.", + "@fileIsTooBigForServer": {}, + "homeserver": "Homeserver", + "@homeserver": {}, + "callingPermissions": "Permessi di chiamata", + "@callingPermissions": {}, + "readUpToHere": "Letto fino a qui", + "@readUpToHere": {}, + "start": "Inizio", + "@start": {}, + "unlockOldMessages": "Sblocca i vecchi messaggi", + "@unlockOldMessages": {}, + "numChats": "{number} chat", + "@numChats": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "optionalRedactReason": "(Opzionale) Ragione per rimuovere questo messaggio...", + "@optionalRedactReason": {}, + "dehydrate": "Esporta la sessione e cancella il dispositivo", + "@dehydrate": {}, + "locationPermissionDeniedNotice": "Permesso per accedere alla posizione negato. Per favore concedilo per essere in grado di condividere la tua posizione.", + "@locationPermissionDeniedNotice": { + "type": "String", + "placeholders": {} + }, + "archiveRoomDescription": "Questa chat sarà archiviata. Gli altri utenti saranno in grado di vedere che hai abbandonato la chat.", + "@archiveRoomDescription": {}, + "exportEmotePack": "Esporta pack di Emote come .zip", + "@exportEmotePack": {}, + "switchToAccount": "Passa all'account {number}", + "@switchToAccount": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "experimentalVideoCalls": "Video chiamate sperimentali", + "@experimentalVideoCalls": {}, + "pleaseEnterRecoveryKeyDescription": "Per sbloccare i tuoi vecchi messaggi, per favore inserisci la tua chiave di recupero che è stata generata nella tua sessione precedente. La tua chiave di recupero NON è la tua password.", + "@pleaseEnterRecoveryKeyDescription": {}, + "inviteContactToGroupQuestion": "Vuoi invitare {contact} nella chat \"{groupName}\"?", + "@inviteContactToGroupQuestion": {}, + "redactedByBecause": "Rimosso da {username} per: \"{reason}\"", + "@redactedByBecause": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "reason": { + "type": "String" + } + } + }, + "youHaveWithdrawnTheInvitationFor": "Hai revocato l'invito per {user}", + "@youHaveWithdrawnTheInvitationFor": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "appearOnTopDetails": "Permetti all'app di apparire in alto (non necessario se hai già impostato Fluffychat come account di chiamata)", + "@appearOnTopDetails": {}, + "enterRoom": "Unirsi alla stanza", + "@enterRoom": {}, + "reportUser": "Segnala utente", + "@reportUser": {}, + "confirmEventUnpin": "Sei sicuro di voler permanentemente sfissare l'evento?", + "@confirmEventUnpin": {}, + "youInvitedUser": "📩 Hai invitato {user}", + "@youInvitedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "fileHasBeenSavedAt": "Il file è stato salvato in {path}", + "@fileHasBeenSavedAt": { + "type": "String", + "placeholders": { + "path": { + "type": "String" + } + } + }, + "commandMissing": "{command} non è un comando.", + "@commandMissing": { + "type": "String", + "placeholders": { + "command": { + "type": "String" + } + }, + "description": "State that {command} is not a valid /command." + }, + "redactMessageDescription": "Questo messaggio sarà rimosso per tutti i partecipanti di questa conversazione. Questa operazione non può essere annullata.", + "@redactMessageDescription": {}, + "recoveryKey": "Chiave di recupero", + "@recoveryKey": {}, + "commandHint_discardsession": "Scarta sessione", + "@commandHint_discardsession": { + "type": "String", + "description": "Usage hint for the command /discardsession" + }, + "invalidInput": "Contenuto non valido!", + "@invalidInput": {}, + "dehydrateTorLong": "Per gli utenti TOR, è raccomandato esportare la sessione prima di chiudere la finestra.", + "@dehydrateTorLong": {}, + "commandHint_myroomnick": "Imposta il nome visualizzato per questa stanza", + "@commandHint_myroomnick": { + "type": "String", + "description": "Usage hint for the command /myroomnick" + }, + "doNotShowAgain": "Non mostrare più", + "@doNotShowAgain": {}, + "report": "segnala", + "@report": {}, + "hideUnimportantStateEvents": "Nascondi gli eventi di stato non importanti", + "@hideUnimportantStateEvents": {}, + "screenSharingTitle": "condivisione schermo", + "@screenSharingTitle": {}, + "widgetCustom": "Personalizzati", + "@widgetCustom": {}, + "addToSpaceDescription": "Seleziona una spazio a cui aggiungere questa chat.", + "@addToSpaceDescription": {}, + "googlyEyesContent": "{senderName} ti ha inviato degli occhi finti", + "@googlyEyesContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "youBannedUser": "Hai bannato {user}", + "@youBannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "addChatDescription": "Aggiungi una descrizione chat...", + "@addChatDescription": {}, + "commandHint_myroomavatar": "Importa la foto profilo per questa stanza ( mxc-uri)", + "@commandHint_myroomavatar": { + "type": "String", + "description": "Usage hint for the command /myroomavatar" + }, + "hasKnocked": "🚪 {user} ha bussato", + "@hasKnocked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "publish": "Pubblicare", + "@publish": {}, + "openLinkInBrowser": "Apri il collegamento nel browser", + "@openLinkInBrowser": {}, + "commandHint_react": "Rispondi con una reazione", + "@commandHint_react": { + "type": "String", + "description": "Usage hint for the command /react" + }, + "commandHint_me": "Descriviti", + "@commandHint_me": { + "type": "String", + "description": "Usage hint for the command /me" + }, + "messageInfo": "Informazioni del messaggio", + "@messageInfo": {}, + "disableEncryptionWarning": "Per motivi di sicurezza non puoi disabilitare la crittografia in una chat, se era stata abilitata in precedenza.", + "@disableEncryptionWarning": {}, + "directChat": "Chat diretta", + "@directChat": {}, + "wrongPinEntered": "È stato inserito il pin sbagliato! Riprova tra {seconds} secondi...", + "@wrongPinEntered": { + "type": "String", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "sendTypingNotifications": "Invia notifiche di scrittura", + "@sendTypingNotifications": {}, + "inviteGroupChat": "📨 Invita a una chat di gruppo", + "@inviteGroupChat": {}, + "appearOnTop": "Appare in alto", + "@appearOnTop": {}, + "invitePrivateChat": "📨 Invita a una chat privata", + "@invitePrivateChat": {}, + "foregroundServiceRunning": "Questa notifica viene mostrata quando il servizio in primo piano è in esecuzione.", + "@foregroundServiceRunning": {}, + "voiceCall": "Chiamata vocale", + "@voiceCall": {}, + "commandHint_kick": "Rimuovi l'utente fornito da questa stanza", + "@commandHint_kick": { + "type": "String", + "description": "Usage hint for the command /kick" + }, + "createNewSpace": "Nuovo spazio", + "@createNewSpace": { + "type": "String", + "placeholders": {} + }, + "commandHint_unban": "Sbanna l'utente fornito da questa stanza", + "@commandHint_unban": { + "type": "String", + "description": "Usage hint for the command /unban" + }, + "importEmojis": "Importa Emoji", + "@importEmojis": {}, + "wasDirectChatDisplayName": "Chat vuota (era {oldDisplayName})", + "@wasDirectChatDisplayName": { + "type": "String", + "placeholders": { + "oldDisplayName": { + "type": "String" + } + } + }, + "noChatDescriptionYet": "La descrizione della chat non è ancora stata creata.", + "@noChatDescriptionYet": {}, + "removeFromBundle": "Rimuovi da questo bundle", + "@removeFromBundle": {}, + "confirmMatrixId": "Per eliminare il tuo account, conferma il tuo Matrix ID.", + "@confirmMatrixId": {}, + "learnMore": "Scopri di più", + "@learnMore": {}, + "notAnImage": "Non è un file immagine.", + "@notAnImage": {}, + "users": "Utenti", + "@users": {}, + "openGallery": "Apri la galleria", + "@openGallery": {}, + "chatDescriptionHasBeenChanged": "Descrizione della chat cambiata", + "@chatDescriptionHasBeenChanged": {}, + "newGroup": "Nuovo gruppo", + "@newGroup": {}, + "bundleName": "Nome del bundle", + "@bundleName": {}, + "dehydrateTor": "Utenti TOR: Esporta la sessione", + "@dehydrateTor": {}, + "removeFromSpace": "Rimuovi dallo spazio", + "@removeFromSpace": {}, + "commandHint_op": "Imposta il livello di privilegi dell'utente specificato (predefinito: 50)", + "@commandHint_op": { + "type": "String", + "description": "Usage hint for the command /op" + }, + "commandHint_join": "Unisciti alla stanza fornita", + "@commandHint_join": { + "type": "String", + "description": "Usage hint for the command /join" + }, + "roomUpgradeDescription": "Questa chat sarà ricreata con la nuova versione della stanza. Tutti i partecipanti saranno avvertiti che devono passare alla nuova chat. Puoi leggere di più riguardo le versioni delle stanze su https://spec.matrix.org/latest/rooms/", + "@roomUpgradeDescription": {}, + "commandHint_invite": "Invia l utente fornito in questa stanza", + "@commandHint_invite": { + "type": "String", + "description": "Usage hint for the command /invite" + }, + "pleaseEnterANumber": "Per favore inserisci un numero maggiore di 0", + "@pleaseEnterANumber": {}, + "youKicked": "👞 Hai rimosso {user}", + "@youKicked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "profileNotFound": "Impossibile trovare l'utente sul server. Forse c'è un problema di connessione oppure l'utente non esiste.", + "@profileNotFound": {}, + "jump": "Salta", + "@jump": {}, + "reactedWith": "{sender} ha reagito con {reaction}", + "@reactedWith": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "reaction": { + "type": "String" + } + } + }, + "sorryThatsNotPossible": "Scusa... questo non è possibile", + "@sorryThatsNotPossible": {}, + "videoWithSize": "Video ({size})", + "@videoWithSize": { + "type": "String", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "shareInviteLink": "Condividi link d'invito", + "@shareInviteLink": {}, + "commandHint_markasdm": "Contrassegna questo Matrix ID come stanza di messaggi diretti", + "@commandHint_markasdm": {}, + "recoveryKeyLost": "Chiave di recupero smarrita?", + "@recoveryKeyLost": {}, + "cuddleContent": "{senderName} ti coccola", + "@cuddleContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "deviceKeys": "Chiavi del dispositivo:", + "@deviceKeys": {}, + "emoteKeyboardNoRecents": "Le emoticon recentemente usate appariranno qui...", + "@emoteKeyboardNoRecents": { + "type": "String", + "placeholders": {} + }, + "setTheme": "Imposta tema:", + "@setTheme": {}, + "youJoinedTheChat": "Sei entrato/a nella chat", + "@youJoinedTheChat": {}, + "openVideoCamera": "Apri la fotocamera per un video", + "@openVideoCamera": { + "type": "String", + "placeholders": {} + }, + "markAsRead": "Segna come letto", + "@markAsRead": {}, + "widgetName": "Nome", + "@widgetName": {}, + "errorAddingWidget": "Errore aggiungendo il widget.", + "@errorAddingWidget": {}, + "commandHint_dm": "Avvia una chat diretta\nUsa --no-encryption per disabilitare la crittografia", + "@commandHint_dm": { + "type": "String", + "description": "Usage hint for the command /dm" + }, + "commandHint_hug": "Invia un abbraccio", + "@commandHint_hug": {}, + "replace": "Sostituisci", + "@replace": {}, + "youUnbannedUser": "Hai sbannato {user}", + "@youUnbannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "newSpace": "Nuovo spazio", + "@newSpace": {}, + "emojis": "Emoji", + "@emojis": {}, + "commandHint_googly": "Invia degli occhi finti", + "@commandHint_googly": {}, + "pleaseTryAgainLaterOrChooseDifferentServer": "Per favore riprova più tardi o scegli un server diverso.", + "@pleaseTryAgainLaterOrChooseDifferentServer": {}, + "createGroup": "Crea gruppo", + "@createGroup": {}, + "hydrateTorLong": "Hai esportato la tua sessione l'ultima volta con TOR? Importala velocemente e continua a chattare.", + "@hydrateTorLong": {}, + "time": "Tempo", + "@time": {}, + "custom": "Personalizzato", + "@custom": {}, + "noBackupWarning": "Attenzione! Senza abilitare il backup della chat, perderai l'accesso ai tuoi messaggi crittografati. Si consiglia vivamente di abilitare il backup della chat prima di disconnettersi.", + "@noBackupWarning": {}, + "storeInSecureStorageDescription": "Salva la chiave di recupero nell'archivio sicuro di questo dispositivo.", + "@storeInSecureStorageDescription": {}, + "openChat": "Apri la Chat", + "@openChat": {}, + "kickUserDescription": "L'utente è stato rimosso, ma non bannato. Nelle chat pubbliche, l'utente potrà rientrare quando vuole.", + "@kickUserDescription": {}, + "importNow": "Importa ora", + "@importNow": {}, + "pinMessage": "Fissa alla stanza", + "@pinMessage": {}, + "invite": "Invitare", + "@invite": {}, + "enableMultiAccounts": "(BETA) Abilita account multipli su questo dispositivo", + "@enableMultiAccounts": {}, + "indexedDbErrorTitle": "Problemi con la modalità privata", + "@indexedDbErrorTitle": {}, + "unsupportedAndroidVersionLong": "Questa funzionalità richiede una versione di Android più recente. Si prega di verificare la presenza di aggiornamenti o supporto per Lineage OS.", + "@unsupportedAndroidVersionLong": {}, + "storeSecurlyOnThisDevice": "Salva in modo sicuro su questo dispositivo", + "@storeSecurlyOnThisDevice": {}, + "screenSharingDetail": "Stai condividendo il tuo schermo in FuffyChat", + "@screenSharingDetail": {}, + "placeCall": "Fai una chiamata", + "@placeCall": {}, + "blockListDescription": "Puoi bloccare gli utenti che ti disturbano. Non sarai più in grado di ricevere messaggi o inviti alle stanze dalle persone che hai bloccato.", + "@blockListDescription": {}, + "blockedUsers": "Utenti bloccati", + "@blockedUsers": {}, + "blockUsername": "Nome utente da ignorare", + "@blockUsername": {}, + "createGroupAndInviteUsers": "Crea un gruppo e invita gli utenti", + "@createGroupAndInviteUsers": {}, + "startConversation": "Inizia una conversazione", + "@startConversation": {}, + "groupCanBeFoundViaSearch": "Il gruppo può essere cercato", + "@groupCanBeFoundViaSearch": {}, + "noUsersFoundWithQuery": "Sfortunatamente non è stato trovato nessun utente con \"{query}\". Per favore controlla se hai fatto un errore di battitura.", + "@noUsersFoundWithQuery": { + "type": "String", + "placeholders": { + "query": { + "type": "String" + } + } + }, + "block": "Blocca", + "@block": {}, + "yourGlobalUserIdIs": "Il tuo ID dell'utente globale è: ", + "@yourGlobalUserIdIs": {}, + "commandHint_sendraw": "Manda un json grezzo", + "@commandHint_sendraw": {}, + "wrongRecoveryKey": "Mi dispiace... questa non sembra essere la chiave di recupero corretta.", + "@wrongRecoveryKey": {}, + "groupName": "Nome gruppo", + "@groupName": {}, + "databaseMigrationTitle": "Il database è ottimizzato", + "@databaseMigrationTitle": {}, + "searchChatsRooms": "Cerca per #chat, @utenti...", + "@searchChatsRooms": {}, + "databaseMigrationBody": "Attendere prego. L'operazione potrebbe richiedere un momento.", + "@databaseMigrationBody": {}, + "youInvitedToBy": "📩 Sei stato invitato tramite link in:\n{alias}", + "@youInvitedToBy": { + "placeholders": { + "alias": { + "type": "String" + } + } + }, + "addChatOrSubSpace": "Aggiungi chat o sottospazio", + "@addChatOrSubSpace": {}, + "subspace": "Sottospazio", + "@subspace": {}, + "publicSpaces": "Spazio pubblico", + "@publicSpaces": {}, + "hidePresences": "Nascondere l'elenco degli stati?", + "@hidePresences": {}, + "pleaseEnterYourCurrentPassword": "Per favore inserisci la tua password attuale", + "@pleaseEnterYourCurrentPassword": {}, + "passwordIsWrong": "La password inserita è sbagliata", + "@passwordIsWrong": {}, + "databaseBuildErrorBody": "Impossibile costruire il database SQlite. L'applicazione proverà ad usare il database legacy per ora. Per favore segnala questo errore agli sviluppatori su {url}. Il messaggio di errore è: {error}", + "@databaseBuildErrorBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "select": "Seleziona", + "@select": {}, + "newPassword": "Nuova password", + "@newPassword": {}, + "pleaseChooseAStrongPassword": "Per favore scegli una password forte", + "@pleaseChooseAStrongPassword": {}, + "thisDevice": "Questo dispositivo:", + "@thisDevice": {}, + "forwardMessageTo": "Inoltra messaggio in {roomName}?", + "@forwardMessageTo": { + "type": "String", + "placeholders": { + "roomName": { + "type": "String" + } + } + }, + "verifyOtherUser": "🔐 Verifica altro utente", + "@verifyOtherUser": {}, + "verifyOtherUserDescription": "Se verifichi un altro utente, puoi essere certo di sapere a chi stai realmente scrivendo. 💪\n\nQuando inizi una verifica, tu e l'altro utente vedrete un popup nell'app. Lì vedrai una serie di emoji o numeri che dovrai confrontare tra loro.\n\nIl modo migliore per farlo è incontrarsi o avviare una videochiamata. 👭", + "@verifyOtherUserDescription": {}, + "verifyOtherDevice": "🔐 Verifica altro dispositivo", + "@verifyOtherDevice": {}, + "verifyOtherDeviceDescription": "Quando verifichi un altro dispositivo, questi dispositivi possono scambiarsi le chiavi, aumentando la tua sicurezza complessiva. 💪 Quando inizi una verifica, apparirà un popup nell'app su entrambi i dispositivi. Lì vedrai una serie di emoji o numeri che dovrai confrontare tra loro. È meglio avere entrambi i dispositivi a portata di mano prima di iniziare la verifica. 🤳", + "@verifyOtherDeviceDescription": {}, + "discover": "Scopri", + "@discover": {}, + "presencesToggle": "Mostra i messaggi di stato di altri utenti", + "@presencesToggle": { + "type": "String", + "placeholders": {} + }, + "publicLink": "Link pubblico", + "@publicLink": {}, + "leaveEmptyToClearStatus": "Lascia vuoto per cancellare il tuo stato.", + "@leaveEmptyToClearStatus": {}, + "decline": "Declina", + "@decline": {}, + "transparent": "Trasparente", + "@transparent": {}, + "incomingMessages": "Messaggi in arrivo", + "@incomingMessages": {}, + "noChatsFoundHere": "Nessuna chat trovata. Inizia una nuova chat con qualcuno usando il pulsante qui sotto. ⤵️", + "@noChatsFoundHere": {}, + "joinedChats": "Chat a cui partecipi", + "@joinedChats": {}, + "unread": "Non letti", + "@unread": {}, + "space": "Spazio", + "@space": {}, + "spaces": "Spazi", + "@spaces": {}, + "notifyMeFor": "Avvisami per", + "@notifyMeFor": {}, + "invitedBy": "📩 Invitato da {user}", + "@invitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "knock": "Bussa", + "@knock": {}, + "hideInvalidOrUnknownMessageFormats": "Nascondi formati di messaggi non validi o sconosciuti", + "@hideInvalidOrUnknownMessageFormats": {}, + "overview": "Panoramica", + "@overview": {}, + "presenceStyle": "Presenza:", + "@presenceStyle": { + "type": "String", + "placeholders": {} + }, + "swipeRightToLeftToReply": "Scorri da destra a sinistra per rispondere", + "@swipeRightToLeftToReply": {}, + "globalChatId": "ID chat globale", + "@globalChatId": {}, + "hideMemberChangesInPublicChats": "Nascondi le modifiche dei membri nelle chat pubbliche", + "@hideMemberChangesInPublicChats": {}, + "hideMemberChangesInPublicChatsBody": "Per migliorare la leggibilità, non mostrare nella cronologia della chat se qualcuno si unisce o abbandona una chat pubblica.", + "@hideMemberChangesInPublicChatsBody": {}, + "userWouldLikeToChangeTheChat": "{user} vorrebbe unirsi alla chat.", + "@userWouldLikeToChangeTheChat": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "noPublicLinkHasBeenCreatedYet": "Non è stato ancora creato alcun link pubblico", + "@noPublicLinkHasBeenCreatedYet": {}, + "appLockDescription": "Blocca l'app con un codice PIN quando non è in uso", + "@appLockDescription": {}, + "noOneCanJoin": "Nessuno può unirsi", + "@noOneCanJoin": {}, + "usersMustKnock": "Gli utenti devono bussare", + "@usersMustKnock": {}, + "alwaysUse24HourFormat": "disattivato", + "@alwaysUse24HourFormat": { + "description": "Set to true to always display time of day in 24 hour format." + }, + "accessAndVisibility": "Accesso e visibilità", + "@accessAndVisibility": {}, + "accessAndVisibilityDescription": "Chi è autorizzato a partecipare a questa chat e come è possibile scoprirla.", + "@accessAndVisibilityDescription": {}, + "calls": "Chiamate", + "@calls": {}, + "customEmojisAndStickers": "Emoji e adesivi personalizzati", + "@customEmojisAndStickers": {}, + "customEmojisAndStickersBody": "Aggiungi o condividi emoji o adesivi personalizzati che possono essere utilizzati in qualsiasi chat.", + "@customEmojisAndStickersBody": {}, + "hideRedactedMessages": "Mostra i messaggi rimossi", + "@hideRedactedMessages": {}, + "hideRedactedMessagesBody": "Se qualcuno rimuove un messaggio, il messaggio non sarà più visibile nella chat.", + "@hideRedactedMessagesBody": {}, + "passwordRecoverySettings": "Impostazioni di recupero password", + "@passwordRecoverySettings": {}, + "noMoreChatsFound": "Non sono state trovate altre chat...", + "@noMoreChatsFound": {}, + "countChatsAndCountParticipants": "{chats} chat e {participants} partecipanti", + "@countChatsAndCountParticipants": { + "type": "String", + "placeholders": { + "chats": { + "type": "int" + }, + "participants": { + "type": "int" + } + } + }, + "stickers": "Adesivi", + "@stickers": {}, + "searchMore": "Cerca di più...", + "@searchMore": {}, + "sessionLostBody": "La tua sessione è andata persa. Segnala questo errore agli sviluppatori all'indirizzo {url}. Il messaggio di errore è: {error}", + "@sessionLostBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "formattedMessagesDescription": "Visualizza contenuti di messaggi complessi, come testo in grassetto, utilizzando il markdown.", + "@formattedMessagesDescription": {}, + "canceledKeyVerification": "{sender} ha annullato la verifica della chiave", + "@canceledKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "chatPermissionsDescription": "Definisci quale livello di privilegi è necessario per determinate azioni in questa chat. I livelli di privilegi 0, 50 e 100 rappresentano solitamente utenti, moderatori e amministratori, ma qualsiasi valore intermedio è possibile.", + "@chatPermissionsDescription": {}, + "passwordsDoNotMatch": "Le password non corrispondono", + "@passwordsDoNotMatch": {}, + "initAppError": "Si è verificato un errore durante l'inizializzazione dell'app", + "@initAppError": {}, + "startedKeyVerification": "{sender} ha avviato la verifica della chiave", + "@startedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "chatCanBeDiscoveredViaSearchOnServer": "La chat può essere trovata tramite la ricerca su {server}", + "@chatCanBeDiscoveredViaSearchOnServer": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "unreadChatsInApp": "{appname}: {unread} chat non lette", + "@unreadChatsInApp": { + "type": "String", + "placeholders": { + "appname": { + "type": "String" + }, + "unread": { + "type": "String" + } + } + }, + "thereAreCountUsersBlocked": "Al momento ci sono {count} utenti bloccati.", + "@thereAreCountUsersBlocked": { + "type": "String", + "count": {} + }, + "nothingFound": "Non è stato trovato nulla...", + "@nothingFound": {}, + "joinSpace": "Unisciti allo spazio", + "@joinSpace": {}, + "commandHint_ignore": "Ignora il Matrix ID fornito", + "@commandHint_ignore": {}, + "commandHint_unignore": "Ignora il Matrix ID specificato", + "@commandHint_unignore": {}, + "noDatabaseEncryption": "La crittografia del database non è supportata su questa piattaforma", + "@noDatabaseEncryption": {}, + "knocking": "Bussare", + "@knocking": {}, + "sendReadReceipts": "Invia ricevute di lettura", + "@sendReadReceipts": {}, + "knockRestricted": "Limitato al bussare", + "@knockRestricted": {}, + "restricted": "Limitato", + "@restricted": {}, + "publicChatAddresses": "Indirizzi di chat pubblici", + "@publicChatAddresses": {}, + "createNewAddress": "Crea un nuovo indirizzo", + "@createNewAddress": {}, + "userRole": "Ruolo utente", + "@userRole": {}, + "minimumPowerLevel": "{level} è il livello minimo di privilegi.", + "@minimumPowerLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "String" + } + } + }, + "searchIn": "Cerca nella chat \"{chat}\"...", + "@searchIn": { + "type": "String", + "placeholders": { + "chat": { + "type": "String" + } + } + }, + "gallery": "Galleria", + "@gallery": {}, + "formattedMessages": "Messaggi formattati", + "@formattedMessages": {}, + "files": "File", + "@files": {}, + "restoreSessionBody": "L'app ora tenta di ripristinare la sessione dal backup. Segnala questo errore agli sviluppatori all'indirizzo {url}. Il messaggio di errore è: {error}", + "@restoreSessionBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "acceptedKeyVerification": "{sender} ha accettato la verifica della chiave", + "@acceptedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "completedKeyVerification": "{sender} ha completato la verifica della chiave", + "@completedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "isReadyForKeyVerification": "{sender} è pronto per la verifica della chiave", + "@isReadyForKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "searchForUsers": "Cerca @utenti...", + "@searchForUsers": {}, + "sendTypingNotificationsDescription": "Gli altri partecipanti alla chat possono vedere quando stai scrivendo un nuovo messaggio.", + "@sendTypingNotificationsDescription": {}, + "sendReadReceiptsDescription": "Gli altri partecipanti alla chat possono vedere quando hai letto un messaggio.", + "@sendReadReceiptsDescription": {}, + "requestedKeyVerification": "{sender} ha richiesto la verifica della chiave", + "@requestedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "changeTheChatPermissions": "Cambia i permessi della chat", + "@changeTheChatPermissions": {}, + "changeTheVisibilityOfChatHistory": "Cambia la visibilità della cronologia chat", + "@changeTheVisibilityOfChatHistory": {}, + "changeTheCanonicalRoomAlias": "Cambia l'indirizzo principale della chat pubblica", + "@changeTheCanonicalRoomAlias": {}, + "sendRoomNotifications": "Invia notifiche alla @stanza", + "@sendRoomNotifications": {}, + "sendCanceled": "Invio annullato", + "@sendCanceled": {}, + "calculatingFileSize": "Calcolo della dimensione del file...", + "@calculatingFileSize": {}, + "prepareSendingAttachment": "Preparazione per l'invio dell'allegato...", + "@prepareSendingAttachment": {}, + "sendingAttachment": "Invio allegato...", + "@sendingAttachment": {}, + "compressVideo": "Compressione video...", + "@compressVideo": {}, + "generatingVideoThumbnail": "Generazione miniatura video...", + "@generatingVideoThumbnail": {}, + "sendingAttachmentCountOfCount": "Invio dell'allegato {index} di {length}...", + "@sendingAttachmentCountOfCount": { + "type": "integer", + "placeholders": { + "index": { + "type": "int" + }, + "length": { + "type": "int" + } + } + }, + "serverLimitReached": "Limite server raggiunto! Attendere {seconds} secondi...", + "@serverLimitReached": { + "type": "integer", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "oneOfYourDevicesIsNotVerified": "Uno dei tuoi dispositivi non è verificato", + "@oneOfYourDevicesIsNotVerified": {}, + "noticeChatBackupDeviceVerification": "Nota: quando colleghi tutti i tuoi dispositivi al backup della chat, vengono verificati automaticamente.", + "@noticeChatBackupDeviceVerification": {}, + "moderatorLevel": "{level} - Moderatore", + "@moderatorLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "changeTheDescriptionOfTheGroup": "Cambia la descrizione della chat", + "@changeTheDescriptionOfTheGroup": {}, + "updateInstalled": "🎉 Aggiornamento {version} installato!", + "@updateInstalled": { + "type": "String", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "inviteOtherUsers": "Invita altri utenti a questa chat", + "@inviteOtherUsers": {}, + "userLevel": "{level} - Utente", + "@userLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "adminLevel": "{level} - Amministratore", + "@adminLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "changeGeneralChatSettings": "Modifica le impostazioni generali della chat", + "@changeGeneralChatSettings": {}, + "loginWithMatrixId": "Accedi con il Matrix ID", + "@loginWithMatrixId": {}, + "homeserverDescription": "Tutti i tuoi dati sono archiviati sull'homeserver, proprio come un provider di posta elettronica. Puoi scegliere quale homeserver vuoi usare, mentre puoi comunque comunicare con tutti. Scopri di più su https://matrix.org.", + "@homeserverDescription": {}, + "discoverHomeservers": "Scopri gli homeserver", + "@discoverHomeservers": {}, + "whatIsAHomeserver": "Cos'è un homeserver?", + "@whatIsAHomeserver": {}, + "changelog": "Registro delle modifiche", + "@changelog": {}, + "doesNotSeemToBeAValidHomeserver": "Non sembra essere un homeserver compatibile. URL sbagliato?", + "@doesNotSeemToBeAValidHomeserver": {}, + "goToSpace": "Vai allo spazio: {space}", + "@goToSpace": { + "type": "String", + "space": {} + }, + "markAsUnread": "Contrassegna come non letto", + "@markAsUnread": {}, + "aboutHomeserver": "Informazioni su {homeserver}", + "@aboutHomeserver": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "continueText": "Continua", + "@continueText": {}, + "welcomeText": "Hey Hey 👋 Questa è FluffyChat. Puoi accedere a qualsiasi homeserver compatibile con https://matrix.org. E poi chattare con chiunque. È un'enorme rete di messaggistica decentralizzata!", + "@welcomeText": {}, + "blur": "Sfocatura:", + "@blur": {}, + "opacity": "Opacità:", + "@opacity": {}, + "setWallpaper": "Imposta sfondo", + "@setWallpaper": {}, + "manageAccount": "Gestisci account", + "@manageAccount": {}, + "noContactInformationProvided": "Il server non fornisce alcuna informazione di contatto valida", + "@noContactInformationProvided": {}, + "contactServerAdmin": "Contatta l'amministratore del server", + "@contactServerAdmin": {}, + "contactServerSecurity": "Contatta la sicurezza del server", + "@contactServerSecurity": {}, + "supportPage": "Pagina di supporto", + "@supportPage": {}, + "serverInformation": "Informazioni sul server:", + "@serverInformation": {}, + "name": "Nome", + "@name": {}, + "version": "Versione", + "@version": {}, + "website": "Sito web", + "@website": {}, + "boldText": "Testo in grassetto", + "@boldText": {}, + "italicText": "Testo in corsivo", + "@italicText": {}, + "strikeThrough": "Barrato", + "@strikeThrough": {}, + "pleaseFillOut": "Si prega di compilare", + "@pleaseFillOut": {}, + "invalidUrl": "URL non valido", + "@invalidUrl": {}, + "addLink": "Aggiungi collegamento", + "@addLink": {}, + "unableToJoinChat": "Impossibile partecipare alla chat. Forse l'altra parte ha già chiuso la conversazione.", + "@unableToJoinChat": {}, + "sendImages": "Invia {count} immagine", + "@sendImages": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "compress": "Comprimere", + "@compress": {}, + "contentNotificationSettings": "Impostazioni del contenuto di notifica", + "@contentNotificationSettings": {}, + "generalNotificationSettings": "Impostazioni di notifica generale", + "@generalNotificationSettings": {}, + "roomNotificationSettings": "Impostazioni di notifica della stanza", + "@roomNotificationSettings": {}, + "userSpecificNotificationSettings": "Impostazioni di notifica specifiche dell'utente", + "@userSpecificNotificationSettings": {}, + "otherNotificationSettings": "Altre impostazioni di notifica", + "@otherNotificationSettings": {}, + "notificationRuleContainsUserName": "Contiene il nome utente", + "@notificationRuleContainsUserName": {}, + "notificationRuleContainsUserNameDescription": "Notifica l'utente quando un messaggio contiene il proprio nome utente.", + "@notificationRuleContainsUserNameDescription": {}, + "notificationRuleMaster": "Silenzia tutte le notifiche", + "@notificationRuleMaster": {}, + "notificationRuleMasterDescription": "Sovrascive tutte le altre regole e disabilita tutte le notifiche.", + "@notificationRuleMasterDescription": {}, + "notificationRuleSuppressNotices": "Silenziare i messaggi automatizzati", + "@notificationRuleSuppressNotices": {}, + "notificationRuleSuppressNoticesDescription": "Silenzia le notifiche da client automatizzati come i bot.", + "@notificationRuleSuppressNoticesDescription": {}, + "notificationRuleInviteForMeDescription": "Notifica l'utente quando viene invitato a una stanza.", + "@notificationRuleInviteForMeDescription": {}, + "notificationRuleMemberEvent": "Eventi per i membri", + "@notificationRuleMemberEvent": {}, + "notificationRuleInviteForMe": "Inviti per me", + "@notificationRuleInviteForMe": {}, + "notificationRuleIsUserMentionDescription": "Notifica l'utente quando viene menzionato direttamente in un messaggio.", + "@notificationRuleIsUserMentionDescription": {}, + "notificationRuleContainsDisplayNameDescription": "Notifica l'utente quando un messaggio contiene il proprio nome visualizzato.", + "@notificationRuleContainsDisplayNameDescription": {}, + "notificationRuleIsRoomMention": "Menzioni della stanza", + "@notificationRuleIsRoomMention": {}, + "notificationRuleIsUserMention": "Menzioni dell'utente", + "@notificationRuleIsUserMention": {}, + "notificationRuleRoomnotif": "Notifiche della stanza", + "@notificationRuleRoomnotif": {}, + "notificationRuleRoomnotifDescription": "Notifica l'utente quando un messaggio contiene '@room'.", + "@notificationRuleRoomnotifDescription": {}, + "notificationRuleTombstone": "Tombstone", + "@notificationRuleTombstone": {}, + "notificationRuleTombstoneDescription": "Notifica all'utente i messaggi di disattivazione della stanza.", + "@notificationRuleTombstoneDescription": {}, + "notificationRuleReaction": "Reazioni", + "@notificationRuleReaction": {}, + "notificationRuleReactionDescription": "Silenzia le notifiche per le reazioni.", + "@notificationRuleReactionDescription": {}, + "notificationRuleRoomServerAcl": "ACL del server della stanza", + "@notificationRuleRoomServerAcl": {}, + "notificationRuleRoomServerAclDescription": "Silenzia le notifiche per gli elenchi di controllo degli accessi del server della stanza (ACL).", + "@notificationRuleRoomServerAclDescription": {}, + "notificationRuleSuppressEdits": "Silenzia le modifiche", + "@notificationRuleSuppressEdits": {}, + "notificationRuleSuppressEditsDescription": "Silenzia le notifiche per i messaggi modificati.", + "@notificationRuleSuppressEditsDescription": {}, + "notificationRuleCallDescription": "Notifica all'utente le chiamate.", + "@notificationRuleCallDescription": {}, + "notificationRuleEncryptedRoomOneToOne": "Stanze crittografate One-to-One", + "@notificationRuleEncryptedRoomOneToOne": {}, + "notificationRuleRoomOneToOne": "Stanze One-to-One", + "@notificationRuleRoomOneToOne": {}, + "notificationRuleRoomOneToOneDescription": "Notifica all'utente i messaggi nelle stanze one-to-one.", + "@notificationRuleRoomOneToOneDescription": {}, + "notificationRuleMessage": "Messaggi", + "@notificationRuleMessage": {}, + "notificationRuleMessageDescription": "Notifica all'utente i messaggi generali.", + "@notificationRuleMessageDescription": {}, + "notificationRuleEncryptedDescription": "Notifica all'utente i messaggi nelle stanze crittografate.", + "@notificationRuleEncryptedDescription": {}, + "notificationRuleEncrypted": "Crittografate", + "@notificationRuleEncrypted": {}, + "notificationRuleJitsi": "Jitsi", + "@notificationRuleJitsi": {}, + "notificationRuleJitsiDescription": "Notifica all'utente gli eventi del widget Jitsi.", + "@notificationRuleJitsiDescription": {}, + "notificationRuleServerAcl": "Silenziare gli eventi ACL del server", + "@notificationRuleServerAcl": {}, + "notificationRuleServerAclDescription": "Silenzia le notifiche per gli eventi ACL del server.", + "@notificationRuleServerAclDescription": {}, + "unknownPushRule": "Regola push '{rule}' sconosciuta", + "@unknownPushRule": { + "type": "String", + "placeholders": { + "rule": { + "type": "String" + } + } + }, + "deletePushRuleCanNotBeUndone": "Se si elimina questa impostazione di notifica, questo non può essere annullato.", + "@deletePushRuleCanNotBeUndone": {}, + "more": "Di più", + "@more": {}, + "newChatRequest": "📩 Nuova richiesta di chat", + "@newChatRequest": {}, + "shareKeysWith": "Condividi le chiavi con...", + "@shareKeysWith": {}, + "shareKeysWithDescription": "Quali dispositivi dovrebbero essere fidati in modo che possano leggere i tuoi messaggi in chat crittografate?", + "@shareKeysWithDescription": {}, + "allDevices": "Tutti i dispositivi", + "@allDevices": {}, + "crossVerifiedDevicesIfEnabled": "Verifica incrociata dei dispositivi, se abilitata", + "@crossVerifiedDevicesIfEnabled": {}, + "crossVerifiedDevices": "Dispositivi con verifica incrociata", + "@crossVerifiedDevices": {}, + "verifiedDevicesOnly": "Solo dispositivi verificati", + "@verifiedDevicesOnly": {}, + "appWantsToUseForLogin": "Usa '{server}' per accedere", + "@appWantsToUseForLogin": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "open": "Apri", + "@open": {}, + "appWantsToUseForLoginDescription": "Con la presente consenti all'app e al sito web di condividere informazioni su di te.", + "@appWantsToUseForLoginDescription": {}, + "appIntroduction": "FluffyChat ti consente di chattare con i tuoi amici attraverso diverse app di messaggistica. Ulteriori informazioni su https://matrix.org o semplicemente tocca *Continua*.", + "@appIntroduction": {}, + "waitingForServer": "In attesa del server...", + "@waitingForServer": {}, + "synchronizingPleaseWaitCounter": " Sincronizzazione… ({percentage}%)", + "@synchronizingPleaseWaitCounter": { + "type": "String", + "placeholders": { + "percentage": { + "type": "String" + } + } + }, + "notificationRuleMemberEventDescription": "Silenzia le notifiche per gli eventi dei membri.", + "@notificationRuleMemberEventDescription": {}, + "notificationRuleContainsDisplayName": "Contiene nome visualizzato", + "@notificationRuleContainsDisplayName": {}, + "notificationRuleIsRoomMentionDescription": "Notifica l'utente quando c'è una menzione della stanza.", + "@notificationRuleIsRoomMentionDescription": {}, + "notificationRuleCall": "Chiamate", + "@notificationRuleCall": {}, + "notificationRuleEncryptedRoomOneToOneDescription": "Notifica all'utente i messaggi in stanze crittografate one-to-one.", + "@notificationRuleEncryptedRoomOneToOneDescription": {}, + "previous": "Precedente", + "@previous": {}, + "otherPartyNotLoggedIn": "L'altra parte non è attualmente connessa e quindi non può ricevere messaggi!", + "@otherPartyNotLoggedIn": {}, + "takeAPhoto": "Scatta una foto", + "@takeAPhoto": {}, + "recordAVideo": "Registra un video", + "@recordAVideo": {}, + "notSupportedOnThisDevice": "Non supportato su questo dispositivo", + "@notSupportedOnThisDevice": {}, + "enterNewChat": "Inizia nuova chat", + "@enterNewChat": {}, + "setCustomPermissionLevel": "Imposta livello di permesso personalizzato", + "@setCustomPermissionLevel": {}, + "setPermissionsLevelDescription": "Scegli un ruolo predefinito qui sotto o inserisci un livello di permesso personalizzato tra 0 e 100.", + "@setPermissionsLevelDescription": {}, + "ignoreUser": "Ignora utente", + "@ignoreUser": {}, + "normalUser": "Utente normale", + "@normalUser": {}, + "commandHint_roomupgrade": "Aggiorna questa stanza alla versione specificata", + "@commandHint_roomupgrade": {}, + "optionalMessage": "Messaggio (opzionale)...", + "@optionalMessage": {}, + "approve": "Approva", + "@approve": {}, + "youHaveKnocked": "Hai bussato", + "@youHaveKnocked": {}, + "pleaseWaitUntilInvited": "Ora attendi, finché qualcuno dalla stanza non ti invita.", + "@pleaseWaitUntilInvited": {}, + "checkList": "Checklist", + "@checkList": {}, + "countInvited": "{count} invitati", + "@countInvited": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "sentVoiceMessage": "🎙️ {duration} - Messaggio vocale da {sender}", + "@sentVoiceMessage": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "duration": { + "type": "String" + } + } + }, + "commandHint_logout": "Disconnetti questo dispositivo", + "@commandHint_logout": {}, + "commandHint_logoutall": "Disconnetti tutti i dispositivi attivi", + "@commandHint_logoutall": {}, + "displayNavigationRail": "Mostra barra di navigazione su mobile", + "@displayNavigationRail": {}, + "customReaction": "Reazione personalizzata", + "@customReaction": {}, + "moreEvents": "Altri eventi", + "@moreEvents": {} +} diff --git a/lib/l10n/intl_ja.arb b/lib/l10n/intl_ja.arb new file mode 100644 index 0000000..3cf02e2 --- /dev/null +++ b/lib/l10n/intl_ja.arb @@ -0,0 +1,2408 @@ +{ + "@@locale": "ja", + "@@last_modified": "2021-08-14 12:41:09.978060", + "about": "このアプリについて", + "@about": { + "type": "String", + "placeholders": {} + }, + "accept": "承諾する", + "@accept": { + "type": "String", + "placeholders": {} + }, + "acceptedTheInvitation": "👍{username}が招待を承諾しました", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "account": "アカウント", + "@account": { + "type": "String", + "placeholders": {} + }, + "activatedEndToEndEncryption": "🔐{username}がエンドツーエンド暗号化を有効にしました", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "addEmail": "Eメールを追加", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "admin": "管理者", + "@admin": { + "type": "String", + "placeholders": {} + }, + "alias": "エイリアス", + "@alias": { + "type": "String", + "placeholders": {} + }, + "all": "すべて", + "@all": { + "type": "String", + "placeholders": {} + }, + "answeredTheCall": "{senderName}は通話に出ました", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "anyoneCanJoin": "誰でも参加できる", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "appLock": "アプリのロック", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "archive": "アーカイブ", + "@archive": { + "type": "String", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "ゲストユーザーの参加を許可する", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "これでよろしいですか?", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "areYouSureYouWantToLogout": "ログアウトしてよろしいですか?", + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "askSSSSSign": "他の人を署名するためにはパスフレーズやリカバリーキーを入力してください。", + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "askVerificationRequest": "{username}の検証リクエストを承認しますか?", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "badServerLoginTypesException": "ホームサーバーでサポートされているログインタイプ:\n{serverVersions}\nアプリがサポートしているログインタイプ:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "badServerVersionsException": "ホームサーバーでサポートされているバージョン:\n{serverVersions}\nアプリでは{supportedVersions}しかサポートされていません", + "@badServerVersionsException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "banFromChat": "チャットからBANする", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "banned": "BANされています", + "@banned": { + "type": "String", + "placeholders": {} + }, + "bannedUser": "{username}が{targetName}をBANしました", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "blockDevice": "デバイスをブロックする", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "blocked": "ブロックしました", + "@blocked": { + "type": "String", + "placeholders": {} + }, + "botMessages": "ボットメッセージ", + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "cancel": "キャンセル", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "changeDeviceName": "デバイス名を変更", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "changedTheChatAvatar": "{username}がチャットアバターを変更しました", + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheChatDescriptionTo": "{username}がチャットの説明を「{description}」に変更しました", + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "changedTheChatNameTo": "{username}がチャットの名前を「{chatname}」に変更しました", + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "changedTheChatPermissions": "{username}がチャットの権限を変更しました", + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheDisplaynameTo": "{username}が表示名を「{displayname}」に変更しました", + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "changedTheGuestAccessRules": "{username}がゲストのアクセスルールを変更しました", + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheGuestAccessRulesTo": "{username}がゲストのアクセスルールを{rules}に変更しました", + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheHistoryVisibility": "{username}が履歴の表示設定を変更しました", + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheHistoryVisibilityTo": "{username}が履歴の表示設定を{rules}に変更しました", + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheJoinRules": "{username}が参加ルールを変更しました", + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheJoinRulesTo": "{username}が参加ルールを{joinRules}に変更しました", + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "changedTheProfileAvatar": "{username}がアバターを変更しました", + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomAliases": "{username}が部屋のエイリアスを変更しました", + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomInvitationLink": "{username}が招待リンクを変更しました", + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changePassword": "パスワードを変更", + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "changeTheHomeserver": "ホームサーバーの変更", + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "changeTheme": "スタイルを変更する", + "@changeTheme": { + "type": "String", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "グループの名前を変更する", + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "channelCorruptedDecryptError": "暗号が破損しています", + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "chat": "チャット", + "@chat": { + "type": "String", + "placeholders": {} + }, + "chatBackup": "チャットのバックアップ", + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "chatBackupDescription": "古いメッセージはリカバリーキーで保護されます。紛失しないようにご注意ください。", + "@chatBackupDescription": { + "type": "String", + "placeholders": {} + }, + "chatDetails": "チャットの詳細", + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "chats": "チャット", + "@chats": { + "type": "String", + "placeholders": {} + }, + "chooseAStrongPassword": "強いパスワードを選択してください", + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "clearArchive": "アーカイブを消去", + "@clearArchive": {}, + "close": "閉じる", + "@close": { + "type": "String", + "placeholders": {} + }, + "compareEmojiMatch": "表示されている絵文字が他のデバイスで表示されているものと一致するか確認してください:", + "@compareEmojiMatch": { + "type": "String", + "placeholders": {} + }, + "compareNumbersMatch": "表示されている数字が他のデバイスで表示されているものと一致するか確認してください:", + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "configureChat": "チャットの設定", + "@configureChat": { + "type": "String", + "placeholders": {} + }, + "confirm": "確認", + "@confirm": { + "type": "String", + "placeholders": {} + }, + "connect": "接続", + "@connect": { + "type": "String", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "連絡先に登録された人が招待されました", + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "containsDisplayName": "表示名を含んでいます", + "@containsDisplayName": { + "type": "String", + "placeholders": {} + }, + "containsUserName": "ユーザー名を含んでいます", + "@containsUserName": { + "type": "String", + "placeholders": {} + }, + "contentHasBeenReported": "サーバー管理者に通報されました", + "@contentHasBeenReported": { + "type": "String", + "placeholders": {} + }, + "copiedToClipboard": "クリップボードにコピーされました", + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "copy": "コピー", + "@copy": { + "type": "String", + "placeholders": {} + }, + "copyToClipboard": "クリップボードにコピー", + "@copyToClipboard": { + "type": "String", + "placeholders": {} + }, + "couldNotDecryptMessage": "メッセージを解読できませんでした: {error}", + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "countParticipants": "{count}名の参加者", + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "create": "作成", + "@create": { + "type": "String", + "placeholders": {} + }, + "createdTheChat": "💬 {username}がチャットを作成しました", + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "currentlyActive": "現在アクティブです", + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "darkTheme": "ダーク", + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "dateWithoutYear": "{month}-{day}", + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "dateWithYear": "{year}/{month}/{day}", + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "deactivateAccountWarning": "あなたのアカウントを無効化します。この操作は元に戻せません!よろしいですか?", + "@deactivateAccountWarning": { + "type": "String", + "placeholders": {} + }, + "defaultPermissionLevel": "デフォルトの権限レベル", + "@defaultPermissionLevel": { + "type": "String", + "placeholders": {} + }, + "delete": "削除", + "@delete": { + "type": "String", + "placeholders": {} + }, + "deleteAccount": "アカウントの削除", + "@deleteAccount": { + "type": "String", + "placeholders": {} + }, + "deleteMessage": "メッセージの削除", + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "device": "デバイス", + "@device": { + "type": "String", + "placeholders": {} + }, + "deviceId": "デバイスID", + "@deviceId": { + "type": "String", + "placeholders": {} + }, + "devices": "デバイス", + "@devices": { + "type": "String", + "placeholders": {} + }, + "directChats": "ダイレクトチャット", + "@directChats": { + "type": "String", + "placeholders": {} + }, + "displaynameHasBeenChanged": "表示名が変更されました", + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "downloadFile": "ファイルのダウンロード", + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "edit": "編集", + "@edit": { + "type": "String", + "placeholders": {} + }, + "editBlockedServers": "ブロックしたサーバーを編集", + "@editBlockedServers": { + "type": "String", + "placeholders": {} + }, + "editDisplayname": "表示名を編集", + "@editDisplayname": { + "type": "String", + "placeholders": {} + }, + "editRoomAliases": "ルームエイリアスを編集", + "@editRoomAliases": { + "type": "String", + "placeholders": {} + }, + "editRoomAvatar": "部屋のアバターを編集する", + "@editRoomAvatar": { + "type": "String", + "placeholders": {} + }, + "emoteExists": "Emoteはすでに存在します!", + "@emoteExists": { + "type": "String", + "placeholders": {} + }, + "emoteInvalid": "不正なEmoteショートコード!", + "@emoteInvalid": { + "type": "String", + "placeholders": {} + }, + "emotePacks": "部屋のEmoteパック", + "@emotePacks": { + "type": "String", + "placeholders": {} + }, + "emoteSettings": "Emote設定", + "@emoteSettings": { + "type": "String", + "placeholders": {} + }, + "emoteShortcode": "Emoteショートコード", + "@emoteShortcode": { + "type": "String", + "placeholders": {} + }, + "emoteWarnNeedToPick": "Emoteショートコードと画像を選択してください!", + "@emoteWarnNeedToPick": { + "type": "String", + "placeholders": {} + }, + "emptyChat": "空のチャット", + "@emptyChat": { + "type": "String", + "placeholders": {} + }, + "enableEmotesGlobally": "emoteをグローバルに有効にする", + "@enableEmotesGlobally": { + "type": "String", + "placeholders": {} + }, + "enableEncryption": "暗号化を有効にする", + "@enableEncryption": { + "type": "String", + "placeholders": {} + }, + "enableEncryptionWarning": "一度暗号化を有効にするともとに戻せません。よろしいですか?", + "@enableEncryptionWarning": { + "type": "String", + "placeholders": {} + }, + "encrypted": "暗号化", + "@encrypted": { + "type": "String", + "placeholders": {} + }, + "encryption": "暗号化", + "@encryption": { + "type": "String", + "placeholders": {} + }, + "encryptionNotEnabled": "暗号化されていません", + "@encryptionNotEnabled": { + "type": "String", + "placeholders": {} + }, + "endedTheCall": "{senderName}は通話を切断しました", + "@endedTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "enterAnEmailAddress": "メールアドレスを入力してください", + "@enterAnEmailAddress": { + "type": "String", + "placeholders": {} + }, + "enterYourHomeserver": "ホームサーバーを入力してください", + "@enterYourHomeserver": { + "type": "String", + "placeholders": {} + }, + "everythingReady": "すべての準備は完了しました!", + "@everythingReady": { + "type": "String", + "placeholders": {} + }, + "extremeOffensive": "とても攻撃的", + "@extremeOffensive": { + "type": "String", + "placeholders": {} + }, + "fileName": "ファイル名", + "@fileName": { + "type": "String", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "String", + "placeholders": {} + }, + "fontSize": "フォントサイズ", + "@fontSize": { + "type": "String", + "placeholders": {} + }, + "forward": "進む", + "@forward": { + "type": "String", + "placeholders": {} + }, + "fromJoining": "参加時点から閲覧可能", + "@fromJoining": { + "type": "String", + "placeholders": {} + }, + "fromTheInvitation": "招待時点から閲覧可能", + "@fromTheInvitation": { + "type": "String", + "placeholders": {} + }, + "goToTheNewRoom": "新規ルームへ", + "@goToTheNewRoom": { + "type": "String", + "placeholders": {} + }, + "group": "グループ", + "@group": { + "type": "String", + "placeholders": {} + }, + "groupIsPublic": "グループは公開されています", + "@groupIsPublic": { + "type": "String", + "placeholders": {} + }, + "groups": "グループ", + "@groups": { + "type": "String", + "placeholders": {} + }, + "groupWith": "{displayname}とグループを作成する", + "@groupWith": { + "type": "String", + "placeholders": { + "displayname": { + "type": "String" + } + } + }, + "guestsAreForbidden": "ゲストは許可されていません", + "@guestsAreForbidden": { + "type": "String", + "placeholders": {} + }, + "guestsCanJoin": "ゲストが許可されています", + "@guestsCanJoin": { + "type": "String", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "{targetName}の招待を{username}が取り下げました", + "@hasWithdrawnTheInvitationFor": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "help": "ヘルプ", + "@help": { + "type": "String", + "placeholders": {} + }, + "hideRedactedEvents": "編集済みイベントを非表示にする", + "@hideRedactedEvents": { + "type": "String", + "placeholders": {} + }, + "hideUnknownEvents": "不明なイベントを非表示にする", + "@hideUnknownEvents": { + "type": "String", + "placeholders": {} + }, + "howOffensiveIsThisContent": "どのくらい攻撃的でしたか?", + "@howOffensiveIsThisContent": { + "type": "String", + "placeholders": {} + }, + "id": "ID", + "@id": { + "type": "String", + "placeholders": {} + }, + "identity": "アイデンティティ", + "@identity": { + "type": "String", + "placeholders": {} + }, + "ignore": "無視する", + "@ignore": { + "type": "String", + "placeholders": {} + }, + "ignoredUsers": "無視されたユーザー", + "@ignoredUsers": { + "type": "String", + "placeholders": {} + }, + "iHaveClickedOnLink": "リンクをクリックしました", + "@iHaveClickedOnLink": { + "type": "String", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "パスフレーズかリカバリーキーが間違っています", + "@incorrectPassphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "inoffensive": "非攻撃的", + "@inoffensive": { + "type": "String", + "placeholders": {} + }, + "inviteContact": "連絡先から招待する", + "@inviteContact": { + "type": "String", + "placeholders": {} + }, + "inviteContactToGroup": "連絡先から{groupName}に招待する", + "@inviteContactToGroup": { + "type": "String", + "placeholders": { + "groupName": { + "type": "String" + } + } + }, + "invited": "招待されました", + "@invited": { + "type": "String", + "placeholders": {} + }, + "invitedUser": "📩 {username} が {targetName} を招待しました", + "@invitedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "invitedUsersOnly": "招待されたユーザーのみ", + "@invitedUsersOnly": { + "type": "String", + "placeholders": {} + }, + "inviteForMe": "自分への招待", + "@inviteForMe": { + "type": "String", + "placeholders": {} + }, + "inviteText": "{username}がFluffyChatにあなたを招待しました. \n1. FluffyChatをインストールしてください: https://fluffychat.im \n2. 新しくアカウントを作成するかサインインしてください\n3. 招待リンクを開いてください: {link}", + "@inviteText": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "link": { + "type": "String" + } + } + }, + "isTyping": "が入力しています…", + "@isTyping": { + "type": "String", + "placeholders": {} + }, + "joinedTheChat": "👋 {username} がチャットに参加しました", + "@joinedTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "joinRoom": "部屋に参加", + "@joinRoom": { + "type": "String", + "placeholders": {} + }, + "kicked": "👞 {username} は {targetName} をキックしました", + "@kicked": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickedAndBanned": "🙅 {username} が {targetName} をキックしブロックしました", + "@kickedAndBanned": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickFromChat": "チャットからキックする", + "@kickFromChat": { + "type": "String", + "placeholders": {} + }, + "lastActiveAgo": "最終アクティブ: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "String", + "placeholders": { + "localizedTimeShort": { + "type": "String" + } + } + }, + "leave": "退室する", + "@leave": { + "type": "String", + "placeholders": {} + }, + "leftTheChat": "退室しました", + "@leftTheChat": { + "type": "String", + "placeholders": {} + }, + "license": "ライセンス", + "@license": { + "type": "String", + "placeholders": {} + }, + "lightTheme": "ライト", + "@lightTheme": { + "type": "String", + "placeholders": {} + }, + "loadCountMoreParticipants": "あと{count}名参加者を読み込む", + "@loadCountMoreParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "loadingPleaseWait": "読み込み中…お待ちください。", + "@loadingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "loadMore": "更に読み込む…", + "@loadMore": { + "type": "String", + "placeholders": {} + }, + "login": "ログイン", + "@login": { + "type": "String", + "placeholders": {} + }, + "logInTo": "{homeserver}にログインする", + "@logInTo": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "logout": "ログアウト", + "@logout": { + "type": "String", + "placeholders": {} + }, + "memberChanges": "メンバーの変更", + "@memberChanges": { + "type": "String", + "placeholders": {} + }, + "mention": "メンション", + "@mention": { + "type": "String", + "placeholders": {} + }, + "messages": "メッセージ", + "@messages": { + "type": "String", + "placeholders": {} + }, + "moderator": "モデレータ", + "@moderator": { + "type": "String", + "placeholders": {} + }, + "muteChat": "チャットのミュート", + "@muteChat": { + "type": "String", + "placeholders": {} + }, + "needPantalaimonWarning": "現時点では、エンドツーエンドの暗号化を使用するにはPantalaimonが必要であることに注意してください。", + "@needPantalaimonWarning": { + "type": "String", + "placeholders": {} + }, + "newChat": "新規チャット", + "@newChat": { + "type": "String", + "placeholders": {} + }, + "newMessageInFluffyChat": "💬 FluffyChatに新しいメッセージがあります", + "@newMessageInFluffyChat": { + "type": "String", + "placeholders": {} + }, + "newVerificationRequest": "認証リクエスト!", + "@newVerificationRequest": { + "type": "String", + "placeholders": {} + }, + "next": "次へ", + "@next": { + "type": "String", + "placeholders": {} + }, + "no": "いいえ", + "@no": { + "type": "String", + "placeholders": {} + }, + "noConnectionToTheServer": "サーバーに接続できません", + "@noConnectionToTheServer": { + "type": "String", + "placeholders": {} + }, + "noEmotesFound": "Emoteは見つかりませんでした😕", + "@noEmotesFound": { + "type": "String", + "placeholders": {} + }, + "noEncryptionForPublicRooms": "ルームを非公開にした後暗号化を有効にできます。", + "@noEncryptionForPublicRooms": { + "type": "String", + "placeholders": {} + }, + "noGoogleServicesWarning": "あなたのスマホにはGoogleサービスがないようですね。プライバシーを保護するための良い選択です!プッシュ通知を受け取るには https://microg.org/ または https://unifiedpush.org/ を使うことをお勧めします。", + "@noGoogleServicesWarning": { + "type": "String", + "placeholders": {} + }, + "none": "なし", + "@none": { + "type": "String", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "パスワードを回復する方法をまだ追加していません。", + "@noPasswordRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "noPermission": "権限がありません", + "@noPermission": { + "type": "String", + "placeholders": {} + }, + "noRoomsFound": "部屋は見つかりませんでした…", + "@noRoomsFound": { + "type": "String", + "placeholders": {} + }, + "notifications": "通知", + "@notifications": { + "type": "String", + "placeholders": {} + }, + "notificationsEnabledForThisAccount": "このアカウントでは通知が有効です", + "@notificationsEnabledForThisAccount": { + "type": "String", + "placeholders": {} + }, + "numUsersTyping": "{count}人が入力中…", + "@numUsersTyping": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "offensive": "攻撃的", + "@offensive": { + "type": "String", + "placeholders": {} + }, + "offline": "オフライン", + "@offline": { + "type": "String", + "placeholders": {} + }, + "ok": "OK", + "@ok": { + "type": "String", + "placeholders": {} + }, + "online": "オンライン", + "@online": { + "type": "String", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "オンライン鍵バックアップは使用されています", + "@onlineKeyBackupEnabled": { + "type": "String", + "placeholders": {} + }, + "oopsSomethingWentWrong": "おっと、何かがうまくいきませんでした…", + "@oopsSomethingWentWrong": { + "type": "String", + "placeholders": {} + }, + "openAppToReadMessages": "アプリを開いてメッセージを確認してください", + "@openAppToReadMessages": { + "type": "String", + "placeholders": {} + }, + "openCamera": "カメラを開く", + "@openCamera": { + "type": "String", + "placeholders": {} + }, + "participant": "参加者", + "@participant": { + "type": "String", + "placeholders": {} + }, + "passphraseOrKey": "パスフレーズかリカバリーキー", + "@passphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "password": "パスワード", + "@password": { + "type": "String", + "placeholders": {} + }, + "passwordForgotten": "パスワードを忘れた", + "@passwordForgotten": { + "type": "String", + "placeholders": {} + }, + "passwordHasBeenChanged": "パスワードが変更されました", + "@passwordHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "passwordRecovery": "パスワードリカバリー", + "@passwordRecovery": { + "type": "String", + "placeholders": {} + }, + "people": "人々", + "@people": { + "type": "String", + "placeholders": {} + }, + "pickImage": "画像を選択してください", + "@pickImage": { + "type": "String", + "placeholders": {} + }, + "pin": "ピン", + "@pin": { + "type": "String", + "placeholders": {} + }, + "play": "{fileName}を再生する", + "@play": { + "type": "String", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "pleaseChooseAPasscode": "パスコードを選んでください", + "@pleaseChooseAPasscode": { + "type": "String", + "placeholders": {} + }, + "pleaseClickOnLink": "メールのリンクから進めてください。", + "@pleaseClickOnLink": { + "type": "String", + "placeholders": {} + }, + "pleaseEnter4Digits": "アプリのロック用に4桁の数字を入力してください。空欄の場合は無効になります。", + "@pleaseEnter4Digits": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPassword": "パスワードを入力してください", + "@pleaseEnterYourPassword": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPin": "PINを入力してください", + "@pleaseEnterYourPin": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourUsername": "ユーザー名を入力してください", + "@pleaseEnterYourUsername": { + "type": "String", + "placeholders": {} + }, + "pleaseFollowInstructionsOnWeb": "ウェブサイトにあるやり方を見てから次をタップしてください。", + "@pleaseFollowInstructionsOnWeb": { + "type": "String", + "placeholders": {} + }, + "privacy": "プライバシー", + "@privacy": { + "type": "String", + "placeholders": {} + }, + "publicRooms": "公開された部屋", + "@publicRooms": { + "type": "String", + "placeholders": {} + }, + "pushRules": "ルールを追加する", + "@pushRules": { + "type": "String", + "placeholders": {} + }, + "reason": "理由", + "@reason": { + "type": "String", + "placeholders": {} + }, + "recording": "録音中", + "@recording": { + "type": "String", + "placeholders": {} + }, + "redactedAnEvent": "{username}がイベントを編集しました", + "@redactedAnEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "redactMessage": "メッセージを書く", + "@redactMessage": { + "type": "String", + "placeholders": {} + }, + "reject": "拒否", + "@reject": { + "type": "String", + "placeholders": {} + }, + "rejectedTheInvitation": "{username}は招待を拒否しました", + "@rejectedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "rejoin": "再参加", + "@rejoin": { + "type": "String", + "placeholders": {} + }, + "remove": "消去", + "@remove": { + "type": "String", + "placeholders": {} + }, + "removeAllOtherDevices": "他のデバイスをすべて削除", + "@removeAllOtherDevices": { + "type": "String", + "placeholders": {} + }, + "removedBy": "{username}によって削除されました", + "@removedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "removeDevice": "デバイスの削除", + "@removeDevice": { + "type": "String", + "placeholders": {} + }, + "unbanFromChat": "チャットからのブロックを解除する", + "@unbanFromChat": { + "type": "String", + "placeholders": {} + }, + "replaceRoomWithNewerVersion": "部屋を新しいバージョンに変更する", + "@replaceRoomWithNewerVersion": { + "type": "String", + "placeholders": {} + }, + "reply": "返信", + "@reply": { + "type": "String", + "placeholders": {} + }, + "reportMessage": "メッセージを通報", + "@reportMessage": { + "type": "String", + "placeholders": {} + }, + "requestPermission": "権限を要求する", + "@requestPermission": { + "type": "String", + "placeholders": {} + }, + "roomHasBeenUpgraded": "部屋はアップグレードされました", + "@roomHasBeenUpgraded": { + "type": "String", + "placeholders": {} + }, + "roomVersion": "ルームバージョン", + "@roomVersion": { + "type": "String", + "placeholders": {} + }, + "search": "検索", + "@search": { + "type": "String", + "placeholders": {} + }, + "security": "セキュリティ", + "@security": { + "type": "String", + "placeholders": {} + }, + "seenByUser": "{username}が既読", + "@seenByUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "send": "送信", + "@send": { + "type": "String", + "placeholders": {} + }, + "sendAMessage": "メッセージを送信", + "@sendAMessage": { + "type": "String", + "placeholders": {} + }, + "sendAudio": "音声の送信", + "@sendAudio": { + "type": "String", + "placeholders": {} + }, + "sendFile": "ファイルを送信", + "@sendFile": { + "type": "String", + "placeholders": {} + }, + "sendImage": "画像の送信", + "@sendImage": { + "type": "String", + "placeholders": {} + }, + "sendMessages": "メッセージを送る", + "@sendMessages": { + "type": "String", + "placeholders": {} + }, + "sendOriginal": "オリジナルの送信", + "@sendOriginal": { + "type": "String", + "placeholders": {} + }, + "sendVideo": "動画を送信", + "@sendVideo": { + "type": "String", + "placeholders": {} + }, + "sentAFile": "📁 {username}はファイルを送信しました", + "@sentAFile": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAnAudio": "🎤 {username}は音声を送信しました", + "@sentAnAudio": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAPicture": "🖼️ {username}は画像を送信しました", + "@sentAPicture": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentASticker": "😊 {username}はステッカーを送信しました", + "@sentASticker": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAVideo": "🎥 {username}は動画を送信しました", + "@sentAVideo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentCallInformations": "{senderName}は通話情報を送信しました", + "@sentCallInformations": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "setAsCanonicalAlias": "メインエイリアスに設定", + "@setAsCanonicalAlias": { + "type": "String", + "placeholders": {} + }, + "setCustomEmotes": "カスタムエモートの設定", + "@setCustomEmotes": { + "type": "String", + "placeholders": {} + }, + "setInvitationLink": "招待リンクを設定する", + "@setInvitationLink": { + "type": "String", + "placeholders": {} + }, + "setPermissionsLevel": "権限レベルをセット", + "@setPermissionsLevel": { + "type": "String", + "placeholders": {} + }, + "setStatus": "ステータスの設定", + "@setStatus": { + "type": "String", + "placeholders": {} + }, + "settings": "設定", + "@settings": { + "type": "String", + "placeholders": {} + }, + "share": "共有", + "@share": { + "type": "String", + "placeholders": {} + }, + "sharedTheLocation": "{username}は現在地を共有しました", + "@sharedTheLocation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "showPassword": "パスワードを表示", + "@showPassword": { + "type": "String", + "placeholders": {} + }, + "skip": "スキップ", + "@skip": { + "type": "String", + "placeholders": {} + }, + "sourceCode": "ソースコード", + "@sourceCode": { + "type": "String", + "placeholders": {} + }, + "startedACall": "{senderName}は通話を開始しました", + "@startedACall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "status": "ステータス", + "@status": { + "type": "String", + "placeholders": {} + }, + "statusExampleMessage": "お元気ですか?", + "@statusExampleMessage": { + "type": "String", + "placeholders": {} + }, + "submit": "送信", + "@submit": { + "type": "String", + "placeholders": {} + }, + "systemTheme": "システム", + "@systemTheme": { + "type": "String", + "placeholders": {} + }, + "theyDontMatch": "違います", + "@theyDontMatch": { + "type": "String", + "placeholders": {} + }, + "theyMatch": "一致しています", + "@theyMatch": { + "type": "String", + "placeholders": {} + }, + "title": "FluffyChat", + "@title": { + "description": "Title for the application", + "type": "String", + "placeholders": {} + }, + "toggleFavorite": "お気に入り切り替え", + "@toggleFavorite": { + "type": "String", + "placeholders": {} + }, + "toggleMuted": "ミュート切り替え", + "@toggleMuted": { + "type": "String", + "placeholders": {} + }, + "toggleUnread": "既読/未読にマーク", + "@toggleUnread": { + "type": "String", + "placeholders": {} + }, + "tooManyRequestsWarning": "リクエストが多すぎます。また後で試してみてください!", + "@tooManyRequestsWarning": { + "type": "String", + "placeholders": {} + }, + "transferFromAnotherDevice": "違うデバイスから移行する", + "@transferFromAnotherDevice": { + "type": "String", + "placeholders": {} + }, + "tryToSendAgain": "送信し直してみる", + "@tryToSendAgain": { + "type": "String", + "placeholders": {} + }, + "unavailable": "不在", + "@unavailable": { + "type": "String", + "placeholders": {} + }, + "unbannedUser": "{username}が{targetName}のBANを解除しました", + "@unbannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "unblockDevice": "デバイスをブロック解除する", + "@unblockDevice": { + "type": "String", + "placeholders": {} + }, + "unknownDevice": "未知デバイス", + "@unknownDevice": { + "type": "String", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "未知の暗号化アルゴリズム", + "@unknownEncryptionAlgorithm": { + "type": "String", + "placeholders": {} + }, + "unknownEvent": "未知のイベント'{type}'", + "@unknownEvent": { + "type": "String", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "unmuteChat": "チャットをミュート解除する", + "@unmuteChat": { + "type": "String", + "placeholders": {} + }, + "unpin": "ピンを外す", + "@unpin": { + "type": "String", + "placeholders": {} + }, + "unreadChats": "{unreadCount, plural, =1{1件の未読メッセージ} other{{unreadCount}件の未読メッセージ}}", + "@unreadChats": { + "type": "String", + "placeholders": { + "unreadCount": { + "type": "int" + } + } + }, + "userAndOthersAreTyping": "{username}と他{count}名が入力しています…", + "@userAndOthersAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "userAndUserAreTyping": "{username}と{username2}が入力しています…", + "@userAndUserAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "username2": { + "type": "String" + } + } + }, + "userIsTyping": "{username}が入力しています…", + "@userIsTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "userLeftTheChat": "🚪 {username}はチャットから退室しました", + "@userLeftTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "username": "ユーザー名", + "@username": { + "type": "String", + "placeholders": {} + }, + "userSentUnknownEvent": "{username}は{type}イベントを送信しました", + "@userSentUnknownEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "type": { + "type": "String" + } + } + }, + "verified": "検証済み", + "@verified": { + "type": "String", + "placeholders": {} + }, + "verify": "確認", + "@verify": { + "type": "String", + "placeholders": {} + }, + "verifyStart": "確認を始める", + "@verifyStart": { + "type": "String", + "placeholders": {} + }, + "verifySuccess": "確認が完了しました!", + "@verifySuccess": { + "type": "String", + "placeholders": {} + }, + "verifyTitle": "他のアカウントを確認中", + "@verifyTitle": { + "type": "String", + "placeholders": {} + }, + "videoCall": "音声通話", + "@videoCall": { + "type": "String", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "チャット履歴の表示", + "@visibilityOfTheChatHistory": { + "type": "String", + "placeholders": {} + }, + "visibleForAllParticipants": "すべての参加者が閲覧可能", + "@visibleForAllParticipants": { + "type": "String", + "placeholders": {} + }, + "visibleForEveryone": "すべての人が閲覧可能", + "@visibleForEveryone": { + "type": "String", + "placeholders": {} + }, + "voiceMessage": "ボイスメッセージ", + "@voiceMessage": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "パートナーのリクエスト承諾待ちです…", + "@waitingPartnerAcceptRequest": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerEmoji": "パートナーの絵文字承諾待ちです…", + "@waitingPartnerEmoji": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerNumbers": "パートナーの数字承諾待ちです…", + "@waitingPartnerNumbers": { + "type": "String", + "placeholders": {} + }, + "wallpaper": "壁紙", + "@wallpaper": { + "type": "String", + "placeholders": {} + }, + "warning": "警告!", + "@warning": { + "type": "String", + "placeholders": {} + }, + "weSentYouAnEmail": "あなたにメールを送信しました", + "@weSentYouAnEmail": { + "type": "String", + "placeholders": {} + }, + "whoCanPerformWhichAction": "誰がどの操作を実行できるか", + "@whoCanPerformWhichAction": { + "type": "String", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "誰がこのチャットに入れますか", + "@whoIsAllowedToJoinThisGroup": { + "type": "String", + "placeholders": {} + }, + "whyDoYouWantToReportThis": "これを通報する理由", + "@whyDoYouWantToReportThis": { + "type": "String", + "placeholders": {} + }, + "wipeChatBackup": "チャットのバックアップを消去して、新しいリカバリーキーを作りますか?", + "@wipeChatBackup": { + "type": "String", + "placeholders": {} + }, + "withTheseAddressesRecoveryDescription": "これらのアドレスを使用すると、パスワードを回復することができます。", + "@withTheseAddressesRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "writeAMessage": "メッセージを入力してください…", + "@writeAMessage": { + "type": "String", + "placeholders": {} + }, + "yes": "はい", + "@yes": { + "type": "String", + "placeholders": {} + }, + "you": "あなた", + "@you": { + "type": "String", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "あなたはもうこのチャットの参加者ではありません", + "@youAreNoLongerParticipatingInThisChat": { + "type": "String", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "チャットからBANされてしまいました", + "@youHaveBeenBannedFromThisChat": { + "type": "String", + "placeholders": {} + }, + "yourPublicKey": "あなたの公開鍵", + "@yourPublicKey": { + "type": "String", + "placeholders": {} + }, + "allChats": "すべて会話", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "addToSpace": "スペースに追加", + "@addToSpace": {}, + "cantOpenUri": "URIが開けません {uri}", + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "repeatPassword": "パスワードを繰り返そ", + "@repeatPassword": {}, + "autoplayImages": "GIFを自動的に再生する", + "@autoplayImages": { + "type": "String", + "placeholder": {} + }, + "yourChatBackupHasBeenSetUp": "チャットバックアップを設定ました。", + "@yourChatBackupHasBeenSetUp": {}, + "sendOnEnter": "Enterで送信", + "@sendOnEnter": {}, + "changeYourAvatar": "アバタるを変化しする", + "@changeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "chatHasBeenAddedToThisSpace": "このスペースにチャットが追加されました", + "@chatHasBeenAddedToThisSpace": {}, + "commandHint_ban": "このユーザーを禁止する", + "@commandHint_ban": { + "type": "String", + "description": "Usage hint for the command /ban" + }, + "commandHint_clearcache": "キャッシュをクリアする", + "@commandHint_clearcache": { + "type": "String", + "description": "Usage hint for the command /clearcache" + }, + "commandInvalid": "コマンドが無効", + "@commandInvalid": { + "type": "String" + }, + "commandHint_create": "空のグループチャットを作成\n暗号化を無効にするには、--no-encryption を使用", + "@commandHint_create": { + "type": "String", + "description": "Usage hint for the command /create" + }, + "commandHint_discardsession": "セッションを破棄", + "@commandHint_discardsession": { + "type": "String", + "description": "Usage hint for the command /discardsession" + }, + "confirmMatrixId": "アカウントを削除するには、Matrix IDを確認してください。", + "@confirmMatrixId": {}, + "commandHint_markasgroup": "グループとしてマーク", + "@commandHint_markasgroup": {}, + "commandHint_join": "指定した部屋に参加", + "@commandHint_join": { + "type": "String", + "description": "Usage hint for the command /join" + }, + "commandHint_send": "テキストを送信", + "@commandHint_send": { + "type": "String", + "description": "Usage hint for the command /send" + }, + "hydrate": "バックアップファイルから復元", + "@hydrate": {}, + "commandHint_html": "HTML形式のテキストを送信", + "@commandHint_html": { + "type": "String", + "description": "Usage hint for the command /html" + }, + "commandHint_invite": "指定したユーザーをこの部屋に招待", + "@commandHint_invite": { + "type": "String", + "description": "Usage hint for the command /invite" + }, + "commandMissing": "{command} はコマンドではありません。", + "@commandMissing": { + "type": "String", + "placeholders": { + "command": { + "type": "String" + } + }, + "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": { + "type": "String" + } + } + }, + "youJoinedTheChat": "チャットに参加しました", + "@youJoinedTheChat": {}, + "youHaveWithdrawnTheInvitationFor": "{user} への招待を取り下げました", + "@youHaveWithdrawnTheInvitationFor": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "users": "ユーザー", + "@users": {}, + "youRejectedTheInvitation": "招待を拒否しました", + "@youRejectedTheInvitation": {}, + "screenSharingDetail": "FuffyChatで画面を共有しています", + "@screenSharingDetail": {}, + "homeserver": "ホームサーバー", + "@homeserver": {}, + "scanQrCode": "QRコードをスキャン", + "@scanQrCode": {}, + "obtainingLocation": "位置情報を取得しています…", + "@obtainingLocation": { + "type": "String", + "placeholders": {} + }, + "addToBundle": "バンドルに追加", + "@addToBundle": {}, + "removeFromBundle": "このバンドルから削除", + "@removeFromBundle": {}, + "bundleName": "バンドル名", + "@bundleName": {}, + "noMatrixServer": "{server1} はMatrixのサーバーではありません。代わりに {server2} を使用しますか?", + "@noMatrixServer": { + "type": "String", + "placeholders": { + "server1": { + "type": "String" + }, + "server2": { + "type": "String" + } + } + }, + "openVideoCamera": "ビデオ用にカメラを開く", + "@openVideoCamera": { + "type": "String", + "placeholders": {} + }, + "link": "リンク", + "@link": {}, + "or": "または", + "@or": { + "type": "String", + "placeholders": {} + }, + "register": "登録", + "@register": { + "type": "String", + "placeholders": {} + }, + "removeYourAvatar": "アバターを削除する", + "@removeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "saveFile": "ファイルを保存", + "@saveFile": { + "type": "String", + "placeholders": {} + }, + "recoveryKey": "リカバリーキー", + "@recoveryKey": {}, + "singlesignon": "シングルサインオン", + "@singlesignon": { + "type": "String", + "placeholders": {} + }, + "spaceIsPublic": "スペースは公開されています", + "@spaceIsPublic": { + "type": "String", + "placeholders": {} + }, + "spaceName": "スペース名", + "@spaceName": { + "type": "String", + "placeholders": {} + }, + "startFirstChat": "最初のチャットを開始する", + "@startFirstChat": {}, + "addToSpaceDescription": "このチャットを追加するスペースを選択してください。", + "@addToSpaceDescription": {}, + "messageInfo": "メッセージの情報", + "@messageInfo": {}, + "openGallery": "ギャラリーを開く", + "@openGallery": {}, + "removeFromSpace": "スペースから削除", + "@removeFromSpace": {}, + "pleaseEnterRecoveryKeyDescription": "古いメッセージを解除するには、以前のセッションで生成されたリカバリーキーを入力してください。リカバリーキーはパスワードではありません。", + "@pleaseEnterRecoveryKeyDescription": {}, + "videoWithSize": "ビデオ ({size})", + "@videoWithSize": { + "type": "String", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "openChat": "チャットを開く", + "@openChat": {}, + "experimentalVideoCalls": "実験的なビデオ通話", + "@experimentalVideoCalls": {}, + "emailOrUsername": "メールアドレスまたはユーザー名", + "@emailOrUsername": {}, + "switchToAccount": "アカウント {number} に切り替える", + "@switchToAccount": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "nextAccount": "次のアカウント", + "@nextAccount": {}, + "youAcceptedTheInvitation": "👍 招待を承諾しました", + "@youAcceptedTheInvitation": {}, + "errorAddingWidget": "ウィジェットの追加中にエラーが発生しました。", + "@errorAddingWidget": {}, + "widgetNameError": "表示名を入力してください。", + "@widgetNameError": {}, + "youUnbannedUser": "{user} の禁止を解除しました", + "@youUnbannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youInvitedBy": "📩 {user} から招待されました", + "@youInvitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youKicked": "👞 {user} をキックしました", + "@youKicked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youKickedAndBanned": "🙅 {user} をキックしてブロックしました", + "@youKickedAndBanned": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "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": { + "type": "int" + } + } + }, + "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": "String", + "placeholders": {} + }, + "synchronizingPleaseWait": "同期中...お待ちください。", + "@synchronizingPleaseWait": { + "type": "String", + "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": { + "type": "String" + } + } + }, + "reactedWith": "{sender} が {reaction} で反応しました", + "@reactedWith": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "reaction": { + "type": "String" + } + } + }, + "createNewSpace": "新しいスペース", + "@createNewSpace": { + "type": "String", + "placeholders": {} + }, + "widgetUrlError": "有効なURLではありません。", + "@widgetUrlError": {}, + "reportUser": "ユーザーを報告", + "@reportUser": {}, + "errorObtainingLocation": "位置情報の取得中にエラーが発生しました: {error}", + "@errorObtainingLocation": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "pinMessage": "部屋にピン留めする", + "@pinMessage": {}, + "previousAccount": "前のアカウント", + "@previousAccount": {}, + "pleaseChoose": "選択してください", + "@pleaseChoose": { + "type": "String", + "placeholders": {} + }, + "oopsPushError": "おっと!残念ながら、プッシュ通知の設定中にエラーが発生しました。", + "@oopsPushError": { + "type": "String", + "placeholders": {} + }, + "noOtherDevicesFound": "他のデバイスが見つかりません", + "@noOtherDevicesFound": {}, + "recoveryKeyLost": "リカバリーキーを紛失した場合", + "@recoveryKeyLost": {}, + "shareLocation": "位置情報の共有", + "@shareLocation": { + "type": "String", + "placeholders": {} + }, + "time": "時間", + "@time": {}, + "sendAsText": "テキストとして送信", + "@sendAsText": { + "type": "String" + }, + "commandHint_googly": "ぎょろ目を送る", + "@commandHint_googly": {}, + "commandHint_hug": "ハグを送る", + "@commandHint_hug": {}, + "encryptThisChat": "このチャットを暗号化する", + "@encryptThisChat": {}, + "commandHint_markasdm": "ダイレクトメッセージの部屋としてマークする", + "@commandHint_markasdm": {}, + "commandHint_dm": "ダイレクトチャットを開始する\n暗号化を無効にするには、--no-encryptionを使用してください", + "@commandHint_dm": { + "type": "String", + "description": "Usage hint for the command /dm" + }, + "commandHint_leave": "この部屋を退出", + "@commandHint_leave": { + "type": "String", + "description": "Usage hint for the command /leave" + }, + "commandHint_myroomavatar": "この部屋の写真を設定する (mxc-uriで)", + "@commandHint_myroomavatar": { + "type": "String", + "description": "Usage hint for the command /myroomavatar" + }, + "commandHint_myroomnick": "この部屋の表示名を設定する", + "@commandHint_myroomnick": { + "type": "String", + "description": "Usage hint for the command /myroomnick" + }, + "commandHint_plain": "書式設定されていないテキストを送信する", + "@commandHint_plain": { + "type": "String", + "description": "Usage hint for the command /plain" + }, + "commandHint_react": "リアクションとして返信を送信する", + "@commandHint_react": { + "type": "String", + "description": "Usage hint for the command /react" + }, + "dehydrateTor": "TOR ユーザー: セッションをエクスポート", + "@dehydrateTor": {}, + "hydrateTor": "TOR ユーザー: セッションのエクスポートをインポート", + "@hydrateTor": {}, + "locationDisabledNotice": "位置情報サービスが無効になっています。位置情報を共有できるようにするには、位置情報サービスを有効にしてください。", + "@locationDisabledNotice": { + "type": "String", + "placeholders": {} + }, + "locationPermissionDeniedNotice": "位置情報の権限が拒否されました。位置情報を共有できるように許可してください。", + "@locationPermissionDeniedNotice": { + "type": "String", + "placeholders": {} + }, + "deviceKeys": "デバイスキー:", + "@deviceKeys": {}, + "sorryThatsNotPossible": "申し訳ありません...それは不可能です", + "@sorryThatsNotPossible": {}, + "wasDirectChatDisplayName": "空のチャット (以前は {oldDisplayName})", + "@wasDirectChatDisplayName": { + "type": "String", + "placeholders": { + "oldDisplayName": { + "type": "String" + } + } + }, + "doNotShowAgain": "今後表示しない", + "@doNotShowAgain": {}, + "hideUnimportantStateEvents": "重要でない状態イベントを非表示にする", + "@hideUnimportantStateEvents": {}, + "numChats": "{number} チャット", + "@numChats": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "allSpaces": "すべてのスペース", + "@allSpaces": {}, + "enterRoom": "部屋に入る", + "@enterRoom": {}, + "enterSpace": "スペースに入る", + "@enterSpace": {}, + "newSpace": "新しいスペース", + "@newSpace": {}, + "reopenChat": "チャットを再開する", + "@reopenChat": {}, + "signInWith": "{provider}でログイン", + "@signInWith": { + "type": "String", + "placeholders": { + "provider": { + "type": "String" + } + } + }, + "signInWithPassword": "パスワードでログイン", + "@signInWithPassword": {} +} diff --git a/lib/l10n/intl_ka.arb b/lib/l10n/intl_ka.arb new file mode 100644 index 0000000..6ef2516 --- /dev/null +++ b/lib/l10n/intl_ka.arb @@ -0,0 +1,832 @@ +{ + "alias": "მეტსახელი", + "@alias": { + "type": "String", + "placeholders": {} + }, + "appLockDescription": "პინკოდის გამოყენების გარეშე აპლიკაციის ბლოკირება", + "@appLockDescription": {}, + "commandHint_hug": "მეგობრული ჩახუტვის გაგზავნა", + "@commandHint_hug": {}, + "areYouSure": "დარწმუნებული ხართ?", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "areYouSureYouWantToLogout": "დარწმუნებული ხართ, რომ გამოსვლა გსურთ?", + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "hugContent": "{senderName} მეგობრულად გეხუტება", + "@hugContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "askSSSSSign": "სხვა მომხმარებლის დადასტურებლად, გთხოვთ, ჩაწეროთ თქვენი ან საიდუმლო ფრაზა, ან აღდგენის გასაღები.", + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "autoplayImages": "ანიმირებული სტიკერებისა და ემოჯების ავტომატური ჩართვა", + "@autoplayImages": { + "type": "String", + "placeholder": {} + }, + "banFromChat": "ჩატიდან გაგდება და ბლოკირება", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "banned": "დაბლოკილია", + "@banned": { + "type": "String", + "placeholders": {} + }, + "badServerLoginTypesException": "ამ სერვერს აქვს შესვლის მეთოდების მხარდაჭერა:\n{serverVersions}\nმაგრამ ამ აპლიკაციას აქვს მხარდაჭერა მხოლოდ:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "sendOnEnter": "გაგზავნა enter-ის დაჭერისას", + "@sendOnEnter": {}, + "bannedUser": "{username} დაბლოკა {targetName}", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "blockDevice": "მოწყობილების ბლოკირება", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "blocked": "დაბლოკილია", + "@blocked": { + "type": "String", + "placeholders": {} + }, + "botMessages": "ბოტის შეტყობინებები", + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "cancel": "გაუქმება", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "changedTheHistoryVisibilityTo": "{username} შეცვალა ისტორიის ხილვადობა: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheJoinRules": "{username} გაწევრიანების წესები შეცვალა", + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheProfileAvatar": "{username} შეცვალა პროფილის ფოტო", + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "chat": "ჩატი", + "@chat": { + "type": "String", + "placeholders": {} + }, + "changeYourAvatar": "პროფილის ფოტოს შეცვლა", + "@changeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "yourChatBackupHasBeenSetUp": "თქვენი ჩატის სარეზერვო საშუალება კონფიგურირებული იქნა.", + "@yourChatBackupHasBeenSetUp": {}, + "channelCorruptedDecryptError": "დაშიფვრა დაზიანდა", + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "chatBackupDescription": "თქვენი ძველი შეტყობინებები დაცულია აღდგების გასაღებით. არ დაკარგოთ ის.", + "@chatBackupDescription": { + "type": "String", + "placeholders": {} + }, + "commandHint_discardsession": "სესიის გაუქმება", + "@commandHint_discardsession": { + "type": "String", + "description": "Usage hint for the command /discardsession" + }, + "commandHint_invite": "მოცემული მომხმარებლის მოწვევა ამ ოთახში", + "@commandHint_invite": { + "type": "String", + "description": "Usage hint for the command /invite" + }, + "commandHint_plain": "არაფორმატირებული ტექსტის გაგზავნა", + "@commandHint_plain": { + "type": "String", + "description": "Usage hint for the command /plain" + }, + "commandHint_send": "ტექსტის გაგზავნა", + "@commandHint_send": { + "type": "String", + "description": "Usage hint for the command /send" + }, + "commandMissing": "{command} არაა ბრძანება.", + "@commandMissing": { + "type": "String", + "placeholders": { + "command": { + "type": "String" + } + }, + "description": "State that {command} is not a valid /command." + }, + "confirm": "დადასტურება", + "@confirm": { + "type": "String", + "placeholders": {} + }, + "connect": "დაკავშირება", + "@connect": { + "type": "String", + "placeholders": {} + }, + "countParticipants": "{count} მონაწილე", + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "createGroup": "ჯგუფის შექმნა", + "@createGroup": {}, + "deactivateAccountWarning": "ეს გააუქმებს თქვენს ანგარიშს. ამის გაუქმება შეუძლებელია. დარწმუნებული ხართ?", + "@deactivateAccountWarning": { + "type": "String", + "placeholders": {} + }, + "devices": "მოწყობილებები", + "@devices": { + "type": "String", + "placeholders": {} + }, + "darkTheme": "ბნელი", + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "chatPermissions": "ჩატის უფლებები", + "@chatPermissions": {}, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "editRoomAliases": "ოთახის მეტსახელების შეცვლა", + "@editRoomAliases": { + "type": "String", + "placeholders": {} + }, + "emoteExists": "ეს ემოცია უკვე არსებობს!", + "@emoteExists": { + "type": "String", + "placeholders": {} + }, + "emoteInvalid": "ემოციის არასწორი მოკლე კოდი!", + "@emoteInvalid": { + "type": "String", + "placeholders": {} + }, + "importNow": "იმპორტი", + "@importNow": {}, + "importEmojis": "ემოჯის იმპორტი", + "@importEmojis": {}, + "importFromZipFile": "იმპორტი .zip ფაილიდან", + "@importFromZipFile": {}, + "exportEmotePack": "ემოციების .zip ფაილში ექსპორტი", + "@exportEmotePack": {}, + "replace": "ჩანაცვლება", + "@replace": {}, + "accept": "თანხმობა", + "@accept": { + "type": "String", + "placeholders": {} + }, + "acceptedTheInvitation": "👍 {username} მიიღო მოწვევა", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "account": "ანგარიში", + "@account": { + "type": "String", + "placeholders": {} + }, + "addEmail": "ელ.ფოსტის დამატება", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "confirmMatrixId": "გთხოვთ, დაადასტუროთ თქვენი Matrix ID ანგარიშის წაშლისათვის.", + "@confirmMatrixId": {}, + "addChatDescription": "ჩატის აღწერილობის დამატება...", + "@addChatDescription": {}, + "addToSpace": "სივრცეში დამატება", + "@addToSpace": {}, + "admin": "ადმინი", + "@admin": { + "type": "String", + "placeholders": {} + }, + "all": "ყველა", + "@all": { + "type": "String", + "placeholders": {} + }, + "allChats": "ყველა ჩატი", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "commandHint_cuddle": "ჩახუტების გაგზავნა", + "@commandHint_cuddle": {}, + "answeredTheCall": "{senderName} უპასუხა ზარს", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "anyoneCanJoin": "ყველას შეუძლია გაწევრიანება", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "appLock": "აპლიკაციის ბლოკირება", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "archive": "არქივი", + "@archive": { + "type": "String", + "placeholders": {} + }, + "commandHint_googly": "გამოშტერილი თვალების გაგზავნა", + "@commandHint_googly": {}, + "googlyEyesContent": "{senderName} გამოშტერილ თვალებს გიგზავნის", + "@googlyEyesContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "cuddleContent": "{senderName} გეხუტება", + "@cuddleContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "areGuestsAllowedToJoin": "შეუძლიათ თუ არა სტუმარ მომხმარებლებს გაწევრიანება", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "askVerificationRequest": "მიიღებთ {username} დადასტურების მოთხოვნას?", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sendTypingNotifications": "წერის შეტყობინების გაგზავნა", + "@sendTypingNotifications": {}, + "cantOpenUri": "ვერ იხსნება ბმული {uri}", + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "changeDeviceName": "მოწყობილების გადარქმევა", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "changedTheChatAvatar": "{username} ჩატის ფოტო შეცვალა", + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheChatDescriptionTo": "{username} ჩატის ახალი აღწერილობა დააყენა: '{description}'", + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "changedTheChatNameTo": "{username} ჩატი გადაარქვა: '{chatname}'", + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "changedTheChatPermissions": "{username} ჩატის უფლებები შეცვალა", + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheGuestAccessRules": "{username} შეცვალა სტუმრების წვდომის წესები", + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheGuestAccessRulesTo": "{username} შეცვალა სტუმრების წვდომის წესები: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheHistoryVisibility": "{username} შეცვალა ისტორიის ხილვადობა", + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheJoinRulesTo": "{username} გაწევრიანების წესები შეცვალა: {joinRules}", + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "changedTheRoomAliases": "{username} ოთახის მეტსახელები შეცვალა", + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomInvitationLink": "{username} მოწვევის ბმული შეცვალა", + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changePassword": "პაროლის შეცვლა", + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "changeTheHomeserver": "სახლის სერვერის შეცვლა", + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "changeTheme": "სტილის შეცვლა", + "@changeTheme": { + "type": "String", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "ჯგუფის გადარქმევა", + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "chatBackup": "ჩატის სარეზერვო საშუალება", + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "chatDetails": "ჩატის დეტალები", + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "chatHasBeenAddedToThisSpace": "ჩატი დაემატა ამ სივრცეს", + "@chatHasBeenAddedToThisSpace": {}, + "chats": "ჩატები", + "@chats": { + "type": "String", + "placeholders": {} + }, + "chooseAStrongPassword": "ძლიერი პაროლი აარჩიეთ", + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "clearArchive": "არქივის გაწმენდა", + "@clearArchive": {}, + "close": "დახურვა", + "@close": { + "type": "String", + "placeholders": {} + }, + "commandHint_markasgroup": "აღნიშვნა, როგორც ჯგუფის", + "@commandHint_markasgroup": {}, + "commandHint_ban": "მოცემული მომხმარებლის ბლოკირება ამ ოთახში", + "@commandHint_ban": { + "type": "String", + "description": "Usage hint for the command /ban" + }, + "commandHint_clearcache": "­ქეშის გაწმენდა", + "@commandHint_clearcache": { + "type": "String", + "description": "Usage hint for the command /clearcache" + }, + "commandHint_join": "მოცემულ ოთახში გაწევრიანება", + "@commandHint_join": { + "type": "String", + "description": "Usage hint for the command /join" + }, + "commandHint_kick": "მოცემული მომხმარებლის წაშლა ამ ოთახიდან", + "@commandHint_kick": { + "type": "String", + "description": "Usage hint for the command /kick" + }, + "commandHint_leave": "ამ ოთახიდან გასვლა", + "@commandHint_leave": { + "type": "String", + "description": "Usage hint for the command /leave" + }, + "commandHint_me": "აღწერეთ თქვენი თავი", + "@commandHint_me": { + "type": "String", + "description": "Usage hint for the command /me" + }, + "commandHint_unban": "ამ ოთახში მომხმარებლისგან ბლოკის მოხსნა", + "@commandHint_unban": { + "type": "String", + "description": "Usage hint for the command /unban" + }, + "commandInvalid": "არასწორი ბრძანება", + "@commandInvalid": { + "type": "String" + }, + "compareEmojiMatch": "გთხოვთ, შეადაროთ ეს ემოჯი", + "@compareEmojiMatch": { + "type": "String", + "placeholders": {} + }, + "compareNumbersMatch": "გთხოვთ, შეადაროთ ეს რიცხვები", + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "configureChat": "ჩატის კონფიგურაცია", + "@configureChat": { + "type": "String", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "კონტაქტი მოწვეული იქნა ჯგუფში", + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "containsUserName": "შეიცავს სახელს", + "@containsUserName": { + "type": "String", + "placeholders": {} + }, + "copiedToClipboard": "კოპირებულია ბუფერში", + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "copy": "კოპირება", + "@copy": { + "type": "String", + "placeholders": {} + }, + "copyToClipboard": "კოპირება ბუფერში", + "@copyToClipboard": { + "type": "String", + "placeholders": {} + }, + "couldNotDecryptMessage": "შეტყობინების გაშიფვრის შეცდომა: {error}", + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "create": "შექმნა", + "@create": { + "type": "String", + "placeholders": {} + }, + "createdTheChat": "💬 {username} შექმნა ჩატი", + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "createNewSpace": "ახალი სივრცე", + "@createNewSpace": { + "type": "String", + "placeholders": {} + }, + "currentlyActive": "ახლა აქტიურია", + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "dateWithoutYear": "{day}-{month}", + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "dateWithYear": "{day}-{month}-{year}", + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "delete": "წაშლა", + "@delete": { + "type": "String", + "placeholders": {} + }, + "deleteAccount": "ანგარიშის წაშლა", + "@deleteAccount": { + "type": "String", + "placeholders": {} + }, + "deleteMessage": "შეტყობინების წაშლა", + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "device": "მოწყობილება", + "@device": { + "type": "String", + "placeholders": {} + }, + "deviceId": "მოწყობილების ID", + "@deviceId": { + "type": "String", + "placeholders": {} + }, + "directChats": "პირდაპირი ჩატები", + "@directChats": { + "type": "String", + "placeholders": {} + }, + "allRooms": "ყველა ჯგუფური ჩატები", + "@allRooms": { + "type": "String", + "placeholders": {} + }, + "downloadFile": "ფაილის ჩატვირთვა", + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "edit": "რედაქტირება", + "@edit": { + "type": "String", + "placeholders": {} + }, + "editBlockedServers": "ბლოკირებული სერვერების რედაქტირება", + "@editBlockedServers": { + "type": "String", + "placeholders": {} + }, + "editRoomAvatar": "ოთახის ფოტოს შეცვლა", + "@editRoomAvatar": { + "type": "String", + "placeholders": {} + }, + "emoteSettings": "ემოციების პარამეტრები", + "@emoteSettings": { + "type": "String", + "placeholders": {} + }, + "globalChatId": "გლობალური ჩატის ID", + "@globalChatId": {}, + "repeatPassword": "გაიმეორეთ პაროლი", + "@repeatPassword": {}, + "notAnImage": "ფაილი არაა სურათი.", + "@notAnImage": {}, + "remove": "წაშლა", + "@remove": { + "type": "String", + "placeholders": {} + }, + "activatedEndToEndEncryption": "🔐 {username} გააქტიურა end to end დაშიფვრა", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "supposedMxid": "ეს უნდა იყოს {mxid}", + "@supposedMxid": { + "type": "String", + "placeholders": { + "mxid": { + "type": "String" + } + } + }, + "about": "შესახებ", + "@about": { + "type": "String", + "placeholders": {} + }, + "changedTheDisplaynameTo": "{username} შეცვალა ნაჩვენები სახელი: '{displayname}'", + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "commandHint_create": "ცარიელი ჯგუფური ჩატის შექმნა\nგამოიყენეთ --no-encryption გაშიფვრის გასათიშად", + "@commandHint_create": { + "type": "String", + "description": "Usage hint for the command /create" + }, + "commandHint_dm": "პირდაპირი ჩატის დაწყება\nგამოიყენეთ --no-encryption გაშიფვრის გასათიშად", + "@commandHint_dm": { + "type": "String", + "description": "Usage hint for the command /dm" + }, + "commandHint_html": "HTML ფორმატირებული ტექსტის გაგზავნა", + "@commandHint_html": { + "type": "String", + "description": "Usage hint for the command /html" + }, + "commandHint_myroomavatar": "თქვენი ფოტოს დაყენება ამ ოთახისათვის(mxc-uri-ს დახმარებით)", + "@commandHint_myroomavatar": { + "type": "String", + "description": "Usage hint for the command /myroomavatar" + }, + "commandHint_myroomnick": "ამ ოთახისათვის ნაჩვენები სახელის დაყენება", + "@commandHint_myroomnick": { + "type": "String", + "description": "Usage hint for the command /myroomnick" + }, + "commandHint_op": "მოცემული მომხმარებლისათვის უფლებების დონის დაყენება (ჩვეულებრივ: 50)", + "@commandHint_op": { + "type": "String", + "description": "Usage hint for the command /op" + }, + "commandHint_react": "რეაქციის სახით პასუხის გაგზავნა", + "@commandHint_react": { + "type": "String", + "description": "Usage hint for the command /react" + }, + "containsDisplayName": "ნაჩვენებ სახელს შეიცავს", + "@containsDisplayName": { + "type": "String", + "placeholders": {} + }, + "contentHasBeenReported": "ეს კონტენტი გაგზავნილ იქნა სერვერის ადმინისტრატორებთან", + "@contentHasBeenReported": { + "type": "String", + "placeholders": {} + }, + "defaultPermissionLevel": "ნაგულისხმევი უფლების დონე", + "@defaultPermissionLevel": { + "type": "String", + "placeholders": {} + }, + "displaynameHasBeenChanged": "ნაჩვენები სახელი შეიცვალა", + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "editDisplayname": "ნაჩვენები სახელის შეცვლა", + "@editDisplayname": { + "type": "String", + "placeholders": {} + } +} diff --git a/lib/l10n/intl_ko.arb b/lib/l10n/intl_ko.arb new file mode 100644 index 0000000..2697a15 --- /dev/null +++ b/lib/l10n/intl_ko.arb @@ -0,0 +1,3295 @@ +{ + "@@last_modified": "2021-08-14 12:41:09.975135", + "about": "소개", + "@about": { + "type": "String", + "placeholders": {} + }, + "accept": "수락", + "@accept": { + "type": "String", + "placeholders": {} + }, + "allChats": "모든 채팅", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "cantOpenUri": "URI {uri}를 열 수 없습니다", + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "chats": "채팅", + "@chats": { + "type": "String", + "placeholders": {} + }, + "commandHint_ban": "이 방에서 주어진 유저 영구 추방하기", + "@commandHint_ban": { + "type": "String", + "description": "Usage hint for the command /ban" + }, + "commandHint_html": "HTML 형식의 문자 보내기", + "@commandHint_html": { + "type": "String", + "description": "Usage hint for the command /html" + }, + "commandHint_invite": "주어진 유저 이 룸에 초대하기", + "@commandHint_invite": { + "type": "String", + "description": "Usage hint for the command /invite" + }, + "commandHint_leave": "이 룸 나가기", + "@commandHint_leave": { + "type": "String", + "description": "Usage hint for the command /leave" + }, + "commandHint_me": "자신을 소개하세요", + "@commandHint_me": { + "type": "String", + "description": "Usage hint for the command /me" + }, + "commandHint_plain": "형식이 지정되지 않은 문자 보내기", + "@commandHint_plain": { + "type": "String", + "description": "Usage hint for the command /plain" + }, + "commandHint_send": "문자 보내기", + "@commandHint_send": { + "type": "String", + "description": "Usage hint for the command /send" + }, + "commandHint_unban": "주어진 유저를 이 방에서 영구추방 해제하기", + "@commandHint_unban": { + "type": "String", + "description": "Usage hint for the command /unban" + }, + "loadMore": "더 불러오기…", + "@loadMore": { + "type": "String", + "placeholders": {} + }, + "loadCountMoreParticipants": "{count}명의 참가자 더 표시", + "@loadCountMoreParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "lightTheme": "라이트", + "@lightTheme": { + "type": "String", + "placeholders": {} + }, + "license": "라이선스", + "@license": { + "type": "String", + "placeholders": {} + }, + "help": "도움", + "@help": { + "type": "String", + "placeholders": {} + }, + "guestsCanJoin": "게스트가 참가할 수 있음", + "@guestsCanJoin": { + "type": "String", + "placeholders": {} + }, + "groups": "그룹 채팅", + "@groups": { + "type": "String", + "placeholders": {} + }, + "groupIsPublic": "그룹 채팅 공개", + "@groupIsPublic": { + "type": "String", + "placeholders": {} + }, + "group": "그룹 채팅", + "@group": { + "type": "String", + "placeholders": {} + }, + "goToTheNewRoom": "새로운 방 가기", + "@goToTheNewRoom": { + "type": "String", + "placeholders": {} + }, + "fromTheInvitation": "초대받은 후부터", + "@fromTheInvitation": { + "type": "String", + "placeholders": {} + }, + "fromJoining": "참가시점 이후로", + "@fromJoining": { + "type": "String", + "placeholders": {} + }, + "forward": "전달", + "@forward": { + "type": "String", + "placeholders": {} + }, + "fontSize": "폰트 크기", + "@fontSize": { + "type": "String", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "String", + "placeholders": {} + }, + "fileName": "파일 이름", + "@fileName": { + "type": "String", + "placeholders": {} + }, + "extremeOffensive": "매우 공격적임", + "@extremeOffensive": { + "type": "String", + "placeholders": {} + }, + "everythingReady": "모든 것이 준비됐어요!", + "@everythingReady": { + "type": "String", + "placeholders": {} + }, + "enterYourHomeserver": "당신의 홈서버를 입력하세요", + "@enterYourHomeserver": { + "type": "String", + "placeholders": {} + }, + "homeserver": "홈서버", + "@homeserver": {}, + "enterAnEmailAddress": "이메일 주소 입력", + "@enterAnEmailAddress": { + "type": "String", + "placeholders": {} + }, + "endedTheCall": "{senderName} 이 통화를 종료했습니다", + "@endedTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "encryptionNotEnabled": "암호화가 비활성화됨", + "@encryptionNotEnabled": { + "type": "String", + "placeholders": {} + }, + "encryption": "암호화", + "@encryption": { + "type": "String", + "placeholders": {} + }, + "encrypted": "암호화됨", + "@encrypted": { + "type": "String", + "placeholders": {} + }, + "enableEncryptionWarning": "당신은 다시 암호화를 비활성화할 수 없습니다. 확실한가요?", + "@enableEncryptionWarning": { + "type": "String", + "placeholders": {} + }, + "enableEncryption": "암호화 사용", + "@enableEncryption": { + "type": "String", + "placeholders": {} + }, + "enableEmotesGlobally": "이모트 팩 항상 사용하기", + "@enableEmotesGlobally": { + "type": "String", + "placeholders": {} + }, + "emptyChat": "빈 채팅", + "@emptyChat": { + "type": "String", + "placeholders": {} + }, + "emoteWarnNeedToPick": "이모트 단축키와 이미지를 골라야 합니다!", + "@emoteWarnNeedToPick": { + "type": "String", + "placeholders": {} + }, + "emoteShortcode": "이모트 단축키", + "@emoteShortcode": { + "type": "String", + "placeholders": {} + }, + "emoteSettings": "이모트 설정", + "@emoteSettings": { + "type": "String", + "placeholders": {} + }, + "emotePacks": "방을 위한 이모트 팩", + "@emotePacks": { + "type": "String", + "placeholders": {} + }, + "emoteInvalid": "올바르지 않은 이모트 단축키!", + "@emoteInvalid": { + "type": "String", + "placeholders": {} + }, + "emoteExists": "이모트가 이미 존재합니다!", + "@emoteExists": { + "type": "String", + "placeholders": {} + }, + "editRoomAvatar": "방 아바타 수정", + "@editRoomAvatar": { + "type": "String", + "placeholders": {} + }, + "editRoomAliases": "방 별명 수정", + "@editRoomAliases": { + "type": "String", + "placeholders": {} + }, + "editDisplayname": "표시 이름 수정", + "@editDisplayname": { + "type": "String", + "placeholders": {} + }, + "edit": "수정", + "@edit": { + "type": "String", + "placeholders": {} + }, + "downloadFile": "파일 다운로드", + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "displaynameHasBeenChanged": "표시 이름이 변경되었습니다", + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "devices": "기기", + "@devices": { + "type": "String", + "placeholders": {} + }, + "deviceId": "기기 ID", + "@deviceId": { + "type": "String", + "placeholders": {} + }, + "device": "기기", + "@device": { + "type": "String", + "placeholders": {} + }, + "deleteMessage": "메시지 삭제", + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "deleteAccount": "계정 삭제", + "@deleteAccount": { + "type": "String", + "placeholders": {} + }, + "delete": "삭제", + "@delete": { + "type": "String", + "placeholders": {} + }, + "defaultPermissionLevel": "새로 참가하는 유저들의 기본 권한 레벨", + "@defaultPermissionLevel": { + "type": "String", + "placeholders": {} + }, + "deactivateAccountWarning": "이것은 당신의 계정을 비활성화할 것입니다. 이것은 되돌릴 수 없습니다! 확실한가요?", + "@deactivateAccountWarning": { + "type": "String", + "placeholders": {} + }, + "currentlyActive": "현재 활동 중", + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "createNewSpace": "새로운 스페이스", + "@createNewSpace": { + "type": "String", + "placeholders": {} + }, + "createdTheChat": "💬 {username}님이 채팅을 생성함", + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "create": "생성", + "@create": { + "type": "String", + "placeholders": {} + }, + "countParticipants": "{count} 참여자", + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "couldNotDecryptMessage": "메시지 복호화할 수 없음: {error}", + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "copyToClipboard": "클립보드에 복사", + "@copyToClipboard": { + "type": "String", + "placeholders": {} + }, + "copy": "복사", + "@copy": { + "type": "String", + "placeholders": {} + }, + "copiedToClipboard": "클립보드에 복사됨", + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "contentHasBeenReported": "콘텐츠가 서버 운영자에게 신고되었습니다", + "@contentHasBeenReported": { + "type": "String", + "placeholders": {} + }, + "containsUserName": "내 아이디 포함", + "@containsUserName": { + "type": "String", + "placeholders": {} + }, + "containsDisplayName": "내 닉네임 포함", + "@containsDisplayName": { + "type": "String", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "연락처가 채팅에 초대되었습니다", + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "connect": "연결", + "@connect": { + "type": "String", + "placeholders": {} + }, + "confirm": "확인", + "@confirm": { + "type": "String", + "placeholders": {} + }, + "configureChat": "채팅 설정", + "@configureChat": { + "type": "String", + "placeholders": {} + }, + "compareNumbersMatch": "아래의 숫자가 일치하는지 비교하세요", + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "compareEmojiMatch": "아래의 이모지가 일치하는지 비교하세요", + "@compareEmojiMatch": { + "type": "String", + "placeholders": {} + }, + "commandMissing": "{command} 는 명령어가 아닙니다.", + "@commandMissing": { + "type": "String", + "placeholders": { + "command": { + "type": "String" + } + }, + "description": "State that {command} is not a valid /command." + }, + "commandInvalid": "잘못된 명령어", + "@commandInvalid": { + "type": "String" + }, + "commandHint_react": "답장 반응으로 보내기", + "@commandHint_react": { + "type": "String", + "description": "Usage hint for the command /react" + }, + "commandHint_op": "주어진 유저의 권한 레벨 설정 (기본:50)", + "@commandHint_op": { + "type": "String", + "description": "Usage hint for the command /op" + }, + "commandHint_myroomnick": "이 방의 표시 이름 설정하기", + "@commandHint_myroomnick": { + "type": "String", + "description": "Usage hint for the command /myroomnick" + }, + "commandHint_myroomavatar": "이 방의 사진 설정하기 (by mxc-uri)", + "@commandHint_myroomavatar": { + "type": "String", + "description": "Usage hint for the command /myroomavatar" + }, + "commandHint_kick": "주어진 유저 방에서 삭제하기", + "@commandHint_kick": { + "type": "String", + "description": "Usage hint for the command /kick" + }, + "commandHint_join": "주어진 방 참가하기", + "@commandHint_join": { + "type": "String", + "description": "Usage hint for the command /join" + }, + "close": "닫기", + "@close": { + "type": "String", + "placeholders": {} + }, + "clearArchive": "저장 지우기", + "@clearArchive": {}, + "chooseAStrongPassword": "안전한 비밀번호를 설정하세요", + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "chatHasBeenAddedToThisSpace": "이 스페이스에 채팅이 추가되었습니다", + "@chatHasBeenAddedToThisSpace": {}, + "chatDetails": "채팅 정보", + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "chatBackupDescription": "당신의 오래된 메시지는 보안 키로 보호됩니다. 이 키를 잃어버리지 마세요.", + "@chatBackupDescription": { + "type": "String", + "placeholders": {} + }, + "chatBackup": "채팅 백업", + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "chat": "채팅", + "@chat": { + "type": "String", + "placeholders": {} + }, + "channelCorruptedDecryptError": "암호화가 손상되었습니다", + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "changeYourAvatar": "아바타 바꾸기", + "@changeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "채팅의 이름 바꾸기", + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "changeTheme": "스타일 바꾸기", + "@changeTheme": { + "type": "String", + "placeholders": {} + }, + "changeTheHomeserver": "홈서버 바꾸기", + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "changePassword": "비밀번호 바꾸기", + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "changedTheRoomInvitationLink": "{username}님이 초대 링크를 바꿈", + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomAliases": "{username}님이 방 별명을 바꿈", + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheProfileAvatar": "{username}님이 자신의 아바타를 바꿈", + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheJoinRulesTo": "{username}님이 참가 규칙을 {joinRules} 로 바꿈", + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "changedTheJoinRules": "{username}님이 참가 규칙을 바꿈", + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheHistoryVisibilityTo": "{username}님이 대화 기록 설정을 {rules} 로 바꿈", + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheHistoryVisibility": "{username}님이 대화 기록 설정을 변경함", + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheGuestAccessRulesTo": "{username}님이 게스트 접근 규칙을 {rules} 로 변경함", + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheGuestAccessRules": "{username}님이 게스트 접근 규칙을 변경함", + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheDisplaynameTo": "{username}님이 닉네임을 '{displayname}' 로 바꿈", + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "changedTheChatPermissions": "{username}님이 채팅 권한을 바꿈", + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheChatNameTo": "{username}님이 채팅 이름을 '{chatname}' 으로 바꿈", + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "changedTheChatDescriptionTo": "{username}님이 채팅 설명을 '{description}' 으로 변경함", + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "changedTheChatAvatar": "{username}님이 채팅 아바타를 바꿈", + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changeDeviceName": "기기 이름 바꾸기", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "cancel": "취소", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "botMessages": "봇 메시지", + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "blocked": "차단됨", + "@blocked": { + "type": "String", + "placeholders": {} + }, + "blockDevice": "기기 차단", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "bannedUser": "{username}님이 {targetName}님을 영구 추방함", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "banned": "영구 추방됨", + "@banned": { + "type": "String", + "placeholders": {} + }, + "banFromChat": "채팅에서 영구 추방", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "badServerVersionsException": "이 홈서버가 지원하는 Spec 버전:\n{serverVersions}\n하지만 이 앱은 {supportedVersions}만 지원합니다", + "@badServerVersionsException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "sendOnEnter": "엔터로 보내기", + "@sendOnEnter": {}, + "badServerLoginTypesException": "홈서버가 지원하는 로그인 유형:\n{serverVersions}\n하지만 이 앱에서 지원하는 것은:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "autoplayImages": "자동으로 움직이는 스티커와 이모트 재생", + "@autoplayImages": { + "type": "String", + "placeholder": {} + }, + "askVerificationRequest": "{username}님의 인증 요청을 수락할까요?", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "askSSSSSign": "다른 사람을 서명하기 위해서, 저장 비밀번호나 복구 키를 입력해주세요.", + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "areYouSureYouWantToLogout": "로그아웃하고 싶은 것이 확실한가요?", + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "확실한가요?", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "게스트 유저의 참가 여부", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "archive": "저장", + "@archive": { + "type": "String", + "placeholders": {} + }, + "appLock": "앱 잠금", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "anyoneCanJoin": "누구나 참가할 수 있음", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "answeredTheCall": "{senderName}님이 전화에 응답했습니다", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "alias": "별명", + "@alias": { + "type": "String", + "placeholders": {} + }, + "admin": "운영자", + "@admin": { + "type": "String", + "placeholders": {} + }, + "addToSpace": "스페이스에 추가", + "@addToSpace": {}, + "addEmail": "이메일 추가", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "activatedEndToEndEncryption": "🔐 {username}님이 종단간 암호화를 활성화함", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "account": "계정", + "@account": { + "type": "String", + "placeholders": {} + }, + "acceptedTheInvitation": "👍 {username}님이 초대를 수락함", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "ignore": "무시", + "@ignore": { + "type": "String", + "placeholders": {} + }, + "identity": "신원", + "@identity": { + "type": "String", + "placeholders": {} + }, + "id": "ID", + "@id": { + "type": "String", + "placeholders": {} + }, + "howOffensiveIsThisContent": "이 콘텐츠가 얼마나 모욕적인가요?", + "@howOffensiveIsThisContent": { + "type": "String", + "placeholders": {} + }, + "hideUnknownEvents": "알 수 없는 이벤트 숨기기", + "@hideUnknownEvents": { + "type": "String", + "placeholders": {} + }, + "hideRedactedEvents": "지워진 이벤트 숨기기", + "@hideRedactedEvents": { + "type": "String", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "{username}님이 {targetName}님에 대한 초대를 철회함", + "@hasWithdrawnTheInvitationFor": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "guestsAreForbidden": "게스트가 들어올 수 없음", + "@guestsAreForbidden": { + "type": "String", + "placeholders": {} + }, + "groupWith": "{displayname}님과의 그룹", + "@groupWith": { + "type": "String", + "placeholders": { + "displayname": { + "type": "String" + } + } + }, + "errorObtainingLocation": "위치 얻는 중 오류: {error}", + "@errorObtainingLocation": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "editBlockedServers": "차단된 서버 수정", + "@editBlockedServers": { + "type": "String", + "placeholders": {} + }, + "directChats": "다이렉트 채팅", + "@directChats": { + "type": "String", + "placeholders": {} + }, + "dateWithYear": "{year}-{month}-{day}", + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "dateWithoutYear": "{month}-{day}", + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "darkTheme": "다크", + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "yes": "확인", + "@yes": { + "type": "String", + "placeholders": {} + }, + "writeAMessage": "메시지 작성…", + "@writeAMessage": { + "type": "String", + "placeholders": {} + }, + "withTheseAddressesRecoveryDescription": "이 주소로 당신의 비밀번호를 복구할 수 있습니다.", + "@withTheseAddressesRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "wipeChatBackup": "새로운 복구키를 생성하기 위해 채팅 백업을 초기화할까요?", + "@wipeChatBackup": { + "type": "String", + "placeholders": {} + }, + "whyDoYouWantToReportThis": "왜 이것을 신고하려고 하나요?", + "@whyDoYouWantToReportThis": { + "type": "String", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "참가 제한 설정", + "@whoIsAllowedToJoinThisGroup": { + "type": "String", + "placeholders": {} + }, + "whoCanPerformWhichAction": "누가 어떤 행동을 할 수 있는지", + "@whoCanPerformWhichAction": { + "type": "String", + "placeholders": {} + }, + "weSentYouAnEmail": "우리가 당신에게 이메일을 보냈습니다", + "@weSentYouAnEmail": { + "type": "String", + "placeholders": {} + }, + "warning": "경고!", + "@warning": { + "type": "String", + "placeholders": {} + }, + "wallpaper": "배경:", + "@wallpaper": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerNumbers": "상대가 숫자를 수락하길 기다리는 중…", + "@waitingPartnerNumbers": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerEmoji": "상대가 이모지를 수락하길 기다리는 중…", + "@waitingPartnerEmoji": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "상대가 요청을 수락하길 기다리는 중…", + "@waitingPartnerAcceptRequest": { + "type": "String", + "placeholders": {} + }, + "voiceMessage": "음성 메시지", + "@voiceMessage": { + "type": "String", + "placeholders": {} + }, + "visibleForEveryone": "모두에게 보임", + "@visibleForEveryone": { + "type": "String", + "placeholders": {} + }, + "visibleForAllParticipants": "모든 참가자에게 보임", + "@visibleForAllParticipants": { + "type": "String", + "placeholders": {} + }, + "videoCall": "영상 통화", + "@videoCall": { + "type": "String", + "placeholders": {} + }, + "verifyTitle": "다른 계정 확인 중", + "@verifyTitle": { + "type": "String", + "placeholders": {} + }, + "verifySuccess": "성공적으로 확인했어요!", + "@verifySuccess": { + "type": "String", + "placeholders": {} + }, + "verifyStart": "확인 시작", + "@verifyStart": { + "type": "String", + "placeholders": {} + }, + "verify": "확인", + "@verify": { + "type": "String", + "placeholders": {} + }, + "verified": "확인됨", + "@verified": { + "type": "String", + "placeholders": {} + }, + "username": "유저 이름", + "@username": { + "type": "String", + "placeholders": {} + }, + "userLeftTheChat": "🚪 {username}님이 채팅을 나감", + "@userLeftTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "userIsTyping": "{username}님이 입력 중…", + "@userIsTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "userAndUserAreTyping": "{username}님과 {username2}님이 입력 중…", + "@userAndUserAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "username2": { + "type": "String" + } + } + }, + "userAndOthersAreTyping": "{username}님 + {count}명이 입력 중…", + "@userAndOthersAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "unpin": "고정 해제", + "@unpin": { + "type": "String", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "알 수 없는 암호화 알고리즘", + "@unknownEncryptionAlgorithm": { + "type": "String", + "placeholders": {} + }, + "unblockDevice": "기기 차단 해제", + "@unblockDevice": { + "type": "String", + "placeholders": {} + }, + "pin": "고정", + "@pin": { + "type": "String", + "placeholders": {} + }, + "pickImage": "이미지 고르기", + "@pickImage": { + "type": "String", + "placeholders": {} + }, + "passwordRecovery": "비밀번호 복구", + "@passwordRecovery": { + "type": "String", + "placeholders": {} + }, + "passwordForgotten": "비밀번호 까먹음", + "@passwordForgotten": { + "type": "String", + "placeholders": {} + }, + "password": "비밀번호", + "@password": { + "type": "String", + "placeholders": {} + }, + "participant": "참여자", + "@participant": { + "type": "String", + "placeholders": {} + }, + "openInMaps": "지도에서 열기", + "@openInMaps": { + "type": "String", + "placeholders": {} + }, + "addAccount": "계정 추가", + "@addAccount": {}, + "openCamera": "카메라 열기", + "@openCamera": { + "type": "String", + "placeholders": {} + }, + "openAppToReadMessages": "앱을 열어서 메시지를 읽으세요", + "@openAppToReadMessages": { + "type": "String", + "placeholders": {} + }, + "oopsSomethingWentWrong": "앗, 무언가가 잘못되었습니다…", + "@oopsSomethingWentWrong": { + "type": "String", + "placeholders": {} + }, + "oopsPushError": "앗! 안타깝게도, 푸시 알림을 설정하는 중 오류가 발생했습니다.", + "@oopsPushError": { + "type": "String", + "placeholders": {} + }, + "online": "온라인", + "@online": { + "type": "String", + "placeholders": {} + }, + "ok": "확인", + "@ok": { + "type": "String", + "placeholders": {} + }, + "offline": "오프라인", + "@offline": { + "type": "String", + "placeholders": {} + }, + "offensive": "모욕적임", + "@offensive": { + "type": "String", + "placeholders": {} + }, + "obtainingLocation": "위치 얻는 중…", + "@obtainingLocation": { + "type": "String", + "placeholders": {} + }, + "numUsersTyping": "{count}명이 입력 중…", + "@numUsersTyping": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notificationsEnabledForThisAccount": "이 계정에서 알림이 활성화되었습니다", + "@notificationsEnabledForThisAccount": { + "type": "String", + "placeholders": {} + }, + "notifications": "알림", + "@notifications": { + "type": "String", + "placeholders": {} + }, + "noPermission": "권한 없음", + "@noPermission": { + "type": "String", + "placeholders": {} + }, + "scanQrCode": "QR 코드 스캔", + "@scanQrCode": {}, + "noMatrixServer": "{server1}은 matrix 서버가 아닙니다, {server2}를 대신 사용할까요?", + "@noMatrixServer": { + "type": "String", + "placeholders": { + "server1": { + "type": "String" + }, + "server2": { + "type": "String" + } + } + }, + "next": "다음", + "@next": { + "type": "String", + "placeholders": {} + }, + "logInTo": "{homeserver} 에 로그인", + "@logInTo": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "login": "로그인", + "@login": { + "type": "String", + "placeholders": {} + }, + "locationPermissionDeniedNotice": "위치 권한이 거부되었습니다. 위치를 공유하기 위해서 허용해주세요.", + "@locationPermissionDeniedNotice": { + "type": "String", + "placeholders": {} + }, + "locationDisabledNotice": "위치 서비스가 비활성화되었습니다. 위치를 공유하려면 활성화시켜주세요.", + "@locationDisabledNotice": { + "type": "String", + "placeholders": {} + }, + "no": "아니요", + "@no": { + "type": "String", + "placeholders": {} + }, + "newVerificationRequest": "새로운 확인 요청!", + "@newVerificationRequest": { + "type": "String", + "placeholders": {} + }, + "newMessageInFluffyChat": "💬 FluffyChat에서 새로운 메시지", + "@newMessageInFluffyChat": { + "type": "String", + "placeholders": {} + }, + "newChat": "새 채팅", + "@newChat": { + "type": "String", + "placeholders": {} + }, + "muteChat": "채팅 음소거", + "@muteChat": { + "type": "String", + "placeholders": {} + }, + "messages": "메시지", + "@messages": { + "type": "String", + "placeholders": {} + }, + "mention": "멘션", + "@mention": { + "type": "String", + "placeholders": {} + }, + "logout": "로그아웃", + "@logout": { + "type": "String", + "placeholders": {} + }, + "unreadChats": "{unreadCount, plural, =1{읽지 않은 채팅 1} other{{unreadCount} 개}}", + "@unreadChats": { + "type": "String", + "placeholders": { + "unreadCount": { + "type": "int" + } + } + }, + "unavailable": "사용할 수 없음", + "@unavailable": { + "type": "String", + "placeholders": {} + }, + "all": "모두", + "@all": { + "type": "String", + "placeholders": {} + }, + "yourPublicKey": "당신의 공개 키", + "@yourPublicKey": { + "type": "String", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "당신은 이 채팅에서 영구 추방되었습니다", + "@youHaveBeenBannedFromThisChat": { + "type": "String", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "당신은 더 이상 이 채팅에 참여하지 않습니다", + "@youAreNoLongerParticipatingInThisChat": { + "type": "String", + "placeholders": {} + }, + "you": "당신", + "@you": { + "type": "String", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "대화 기록 설정", + "@visibilityOfTheChatHistory": { + "type": "String", + "placeholders": {} + }, + "userSentUnknownEvent": "{username}님이 {type} 이벤트 보냄", + "@userSentUnknownEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "type": { + "type": "String" + } + } + }, + "unmuteChat": "음소거 해제", + "@unmuteChat": { + "type": "String", + "placeholders": {} + }, + "unknownEvent": "알 수 없는 이벤트 '{type}'", + "@unknownEvent": { + "type": "String", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "unknownDevice": "알 수 없는 기기", + "@unknownDevice": { + "type": "String", + "placeholders": {} + }, + "unbannedUser": "{username}님이 {targetName}님에대한 영구추방을 해제함", + "@unbannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "tryToSendAgain": "다시 보내도록 시도", + "@tryToSendAgain": { + "type": "String", + "placeholders": {} + }, + "transferFromAnotherDevice": "다른 기기에서 가져오기", + "@transferFromAnotherDevice": { + "type": "String", + "placeholders": {} + }, + "tooManyRequestsWarning": "너무 많은 요청. 잠시 후에 다시 시도해주세요!", + "@tooManyRequestsWarning": { + "type": "String", + "placeholders": {} + }, + "toggleUnread": "메시지 안/읽음 으로 표시", + "@toggleUnread": { + "type": "String", + "placeholders": {} + }, + "toggleMuted": "음소거 토글", + "@toggleMuted": { + "type": "String", + "placeholders": {} + }, + "toggleFavorite": "즐겨찾기 토글", + "@toggleFavorite": { + "type": "String", + "placeholders": {} + }, + "title": "FluffyChat", + "@title": { + "description": "Title for the application", + "type": "String", + "placeholders": {} + }, + "theyMatch": "일치합니다", + "@theyMatch": { + "type": "String", + "placeholders": {} + }, + "theyDontMatch": "일치하지 않습니다", + "@theyDontMatch": { + "type": "String", + "placeholders": {} + }, + "systemTheme": "시스템", + "@systemTheme": { + "type": "String", + "placeholders": {} + }, + "synchronizingPleaseWait": "동기화 중... 기다려주세요.", + "@synchronizingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "submit": "제출", + "@submit": { + "type": "String", + "placeholders": {} + }, + "statusExampleMessage": "오늘은 어떤 기분인가요?", + "@statusExampleMessage": { + "type": "String", + "placeholders": {} + }, + "status": "상태", + "@status": { + "type": "String", + "placeholders": {} + }, + "startedACall": "{senderName} 가 통화 시작함", + "@startedACall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "spaceName": "스페이스 이름", + "@spaceName": { + "type": "String", + "placeholders": {} + }, + "spaceIsPublic": "스페이스 공개", + "@spaceIsPublic": { + "type": "String", + "placeholders": {} + }, + "singlesignon": "단일 계정 로그인(SSO)", + "@singlesignon": { + "type": "String", + "placeholders": {} + }, + "pushRules": "푸시 규칙", + "@pushRules": { + "type": "String", + "placeholders": {} + }, + "lastActiveAgo": "마지막 활동: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "String", + "placeholders": { + "localizedTimeShort": { + "type": "String" + } + } + }, + "ignoredUsers": "무시된 사용자", + "@ignoredUsers": { + "type": "String", + "placeholders": {} + }, + "pleaseEnter4Digits": "4자리 숫자를 입력하거나 앱 잠금을 사용하지 않도록 하려면 비워두세요.", + "@pleaseEnter4Digits": { + "type": "String", + "placeholders": {} + }, + "pleaseChooseAPasscode": "비밀번호를 골라주세요", + "@pleaseChooseAPasscode": { + "type": "String", + "placeholders": {} + }, + "pleaseChoose": "선택해주세요", + "@pleaseChoose": { + "type": "String", + "placeholders": {} + }, + "play": "{fileName} 재생", + "@play": { + "type": "String", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "people": "사람들", + "@people": { + "type": "String", + "placeholders": {} + }, + "passwordHasBeenChanged": "비밀번호가 변경됨", + "@passwordHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "passphraseOrKey": "비밀번호나 복구 키", + "@passphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "or": "이나", + "@or": { + "type": "String", + "placeholders": {} + }, + "serverRequiresEmail": "이 서버는 가입을 위해 당신의 이메일을 확인해야 합니다.", + "@serverRequiresEmail": {}, + "enableMultiAccounts": "(베타) 이 기기에서 다중 계정 활성화", + "@enableMultiAccounts": {}, + "bundleName": "번들 이름", + "@bundleName": {}, + "removeFromBundle": "이 번들에서 삭제", + "@removeFromBundle": {}, + "addToBundle": "번들에 추가", + "@addToBundle": {}, + "editBundlesForAccount": "이 계정의 번들 수정", + "@editBundlesForAccount": {}, + "oneClientLoggedOut": "당신의 클라이언트 중 하나가 로그아웃 됨", + "@oneClientLoggedOut": {}, + "onlineKeyBackupEnabled": "온라인 키 백업이 활성화됨", + "@onlineKeyBackupEnabled": { + "type": "String", + "placeholders": {} + }, + "noRoomsFound": "아무 방도 발견되지 않았어요…", + "@noRoomsFound": { + "type": "String", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "당신은 비밀번호를 복구할 방법을 추가하지 않았습니다.", + "@noPasswordRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "none": "없음", + "@none": { + "type": "String", + "placeholders": {} + }, + "noGoogleServicesWarning": "이 휴대폰에 Firebase Cloud Messaging 서비스가 없는 것 같습니다. FluffyChat에서 푸시 알림을 받으려면 ntfy 사용을 추천합니다. ntfy 혹은 다른 푸시 알림 제공자를 사용하면 알림을 보안적인 방법으로 받을 수 있습니다. ntfy는 PlayStore와 F-Droid에서 설치 가능합니다.", + "@noGoogleServicesWarning": { + "type": "String", + "placeholders": {} + }, + "noEncryptionForPublicRooms": "당신은 방이 공개적으로 접근 가능하지 않을 때만 암호화를 켤 수 있습니다.", + "@noEncryptionForPublicRooms": { + "type": "String", + "placeholders": {} + }, + "noEmotesFound": "이모트 발견되지 않음. 😕", + "@noEmotesFound": { + "type": "String", + "placeholders": {} + }, + "noConnectionToTheServer": "서버에 연결 없음", + "@noConnectionToTheServer": { + "type": "String", + "placeholders": {} + }, + "needPantalaimonWarning": "지금 종단간 암호화를 사용하기 위해서는 Pantalaimon이 필요하다는 것을 알아주세요.", + "@needPantalaimonWarning": { + "type": "String", + "placeholders": {} + }, + "moderator": "관리자", + "@moderator": { + "type": "String", + "placeholders": {} + }, + "memberChanges": "참가자 변경", + "@memberChanges": { + "type": "String", + "placeholders": {} + }, + "loadingPleaseWait": "로딩 중... 기다려 주세요.", + "@loadingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "leftTheChat": "채팅을 나갔습니다", + "@leftTheChat": { + "type": "String", + "placeholders": {} + }, + "leave": "나가기", + "@leave": { + "type": "String", + "placeholders": {} + }, + "sourceCode": "소스 코드", + "@sourceCode": { + "type": "String", + "placeholders": {} + }, + "skip": "스킵", + "@skip": { + "type": "String", + "placeholders": {} + }, + "showPassword": "비밀번호 보이기", + "@showPassword": { + "type": "String", + "placeholders": {} + }, + "shareLocation": "위치 보내기", + "@shareLocation": { + "type": "String", + "placeholders": {} + }, + "sharedTheLocation": "{username}님이 위치를 공유함", + "@sharedTheLocation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "share": "공유", + "@share": { + "type": "String", + "placeholders": {} + }, + "settings": "설정", + "@settings": { + "type": "String", + "placeholders": {} + }, + "setStatus": "상태 설정", + "@setStatus": { + "type": "String", + "placeholders": {} + }, + "setPermissionsLevel": "권한 레벨 설정", + "@setPermissionsLevel": { + "type": "String", + "placeholders": {} + }, + "setInvitationLink": "초대 링크 설정", + "@setInvitationLink": { + "type": "String", + "placeholders": {} + }, + "setCustomEmotes": "맞춤 이모트 설정", + "@setCustomEmotes": { + "type": "String", + "placeholders": {} + }, + "setAsCanonicalAlias": "주 별명으로 설정", + "@setAsCanonicalAlias": { + "type": "String", + "placeholders": {} + }, + "sentCallInformations": "{senderName} 이 통화 정보 보냄", + "@sentCallInformations": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "sentAVideo": "🎥 {username}님이 영상을 보냄", + "@sentAVideo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sendOriginal": "원본 보내기", + "@sendOriginal": { + "type": "String", + "placeholders": {} + }, + "sendMessages": "메시지 보내기", + "@sendMessages": { + "type": "String", + "placeholders": {} + }, + "sendImage": "이미지 보내기", + "@sendImage": { + "type": "String", + "placeholders": {} + }, + "sendFile": "파일 보내기", + "@sendFile": { + "type": "String", + "placeholders": {} + }, + "sendAudio": "오디오 보내기", + "@sendAudio": { + "type": "String", + "placeholders": {} + }, + "sendAsText": "텍스트로 보내기", + "@sendAsText": { + "type": "String" + }, + "sendAMessage": "메시지 보내기", + "@sendAMessage": { + "type": "String", + "placeholders": {} + }, + "send": "보내기", + "@send": { + "type": "String", + "placeholders": {} + }, + "seenByUser": "{username}님이 읽음", + "@seenByUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "security": "보안", + "@security": { + "type": "String", + "placeholders": {} + }, + "search": "검색", + "@search": { + "type": "String", + "placeholders": {} + }, + "saveFile": "파일 저장", + "@saveFile": { + "type": "String", + "placeholders": {} + }, + "roomVersion": "방 버전", + "@roomVersion": { + "type": "String", + "placeholders": {} + }, + "roomHasBeenUpgraded": "방이 업그레이드되었습니다", + "@roomHasBeenUpgraded": { + "type": "String", + "placeholders": {} + }, + "requestPermission": "권한 요청", + "@requestPermission": { + "type": "String", + "placeholders": {} + }, + "reason": "이유", + "@reason": { + "type": "String", + "placeholders": {} + }, + "publicRooms": "공개 방", + "@publicRooms": { + "type": "String", + "placeholders": {} + }, + "privacy": "프라이버시", + "@privacy": { + "type": "String", + "placeholders": {} + }, + "pleaseFollowInstructionsOnWeb": "웹사이트의 가이드를 따르고 다음 버튼을 눌러주세요.", + "@pleaseFollowInstructionsOnWeb": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourUsername": "유저 이름을 입력해주세요", + "@pleaseEnterYourUsername": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPin": "PIN을 입력해주세요", + "@pleaseEnterYourPin": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPassword": "비밀번호를 입력해주세요", + "@pleaseEnterYourPassword": { + "type": "String", + "placeholders": {} + }, + "joinRoom": "방 참가하기", + "@joinRoom": { + "type": "String", + "placeholders": {} + }, + "joinedTheChat": "👋 {username}님이 채팅에 참가함", + "@joinedTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "isTyping": "입력 중…", + "@isTyping": { + "type": "String", + "placeholders": {} + }, + "inviteText": "{username}님이 당신을 FluffyChat에 초대했습니다.\n1. FluffyChat 설치: https://fluffychat.im \n2. 가입하거나 로그인 \n3. 초대 링크 열기: \n {link}", + "@inviteText": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "link": { + "type": "String" + } + } + }, + "inviteForMe": "초대됨", + "@inviteForMe": { + "type": "String", + "placeholders": {} + }, + "invitedUsersOnly": "초대된 유저만", + "@invitedUsersOnly": { + "type": "String", + "placeholders": {} + }, + "invitedUser": "📩 {username}님이 {targetName}님을 초대함", + "@invitedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "invited": "초대됨", + "@invited": { + "type": "String", + "placeholders": {} + }, + "inviteContactToGroup": "연락처를 {groupName}에 초대", + "@inviteContactToGroup": { + "type": "String", + "placeholders": { + "groupName": { + "type": "String" + } + } + }, + "inviteContact": "연락처 초대", + "@inviteContact": { + "type": "String", + "placeholders": {} + }, + "inoffensive": "모욕적이지 않음", + "@inoffensive": { + "type": "String", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "올바르지 않은 복구 키나 비밀번호", + "@incorrectPassphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "iHaveClickedOnLink": "링크를 클릭했어요", + "@iHaveClickedOnLink": { + "type": "String", + "placeholders": {} + }, + "sentASticker": "😊 {username}님이 스티커를 보냄", + "@sentASticker": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAPicture": "🖼️ {username}님이 사진을 보냄", + "@sentAPicture": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAnAudio": "🎤 {username}님이 오디오를 보냄", + "@sentAnAudio": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAFile": "📁 {username}님이 파일을 보냄", + "@sentAFile": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sendVideo": "영상 보내기", + "@sendVideo": { + "type": "String", + "placeholders": {} + }, + "sendSticker": "스티커 보내기", + "@sendSticker": { + "type": "String", + "placeholders": {} + }, + "reportMessage": "메시지 신고", + "@reportMessage": { + "type": "String", + "placeholders": {} + }, + "reply": "답장", + "@reply": { + "type": "String", + "placeholders": {} + }, + "replaceRoomWithNewerVersion": "방 새로운 버전으로 대체하기", + "@replaceRoomWithNewerVersion": { + "type": "String", + "placeholders": {} + }, + "removeYourAvatar": "아바타 지우기", + "@removeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "unbanFromChat": "채팅에서 영구추방 해제됨", + "@unbanFromChat": { + "type": "String", + "placeholders": {} + }, + "removeDevice": "기기 삭제", + "@removeDevice": { + "type": "String", + "placeholders": {} + }, + "removedBy": "{username}에 의해 지워짐", + "@removedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "removeAllOtherDevices": "모든 다른 기기에서 지우기", + "@removeAllOtherDevices": { + "type": "String", + "placeholders": {} + }, + "remove": "지우기", + "@remove": { + "type": "String", + "placeholders": {} + }, + "rejoin": "다시 참가", + "@rejoin": { + "type": "String", + "placeholders": {} + }, + "rejectedTheInvitation": "{username}님이 초대를 거절함", + "@rejectedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "reject": "거절", + "@reject": { + "type": "String", + "placeholders": {} + }, + "register": "가입", + "@register": { + "type": "String", + "placeholders": {} + }, + "redactMessage": "메시지 지우기", + "@redactMessage": { + "type": "String", + "placeholders": {} + }, + "redactedAnEvent": "{username}님이 이벤트를 지움", + "@redactedAnEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "recording": "녹음", + "@recording": { + "type": "String", + "placeholders": {} + }, + "pleaseClickOnLink": "이메일의 링크를 클릭하고 진행해주세요.", + "@pleaseClickOnLink": { + "type": "String", + "placeholders": {} + }, + "kickFromChat": "채팅에서 추방", + "@kickFromChat": { + "type": "String", + "placeholders": {} + }, + "kickedAndBanned": "🙅 {username}님이 {targetName}님을 추방하고 차단함", + "@kickedAndBanned": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kicked": "👞 {username}님이 {targetName}님을 추방함", + "@kicked": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "link": "링크", + "@link": {}, + "unverified": "확인되지 않음", + "@unverified": {}, + "yourChatBackupHasBeenSetUp": "당신의 채팅 백업이 설정되었습니다.", + "@yourChatBackupHasBeenSetUp": {}, + "time": "시간", + "@time": {}, + "messageType": "메시지 유형", + "@messageType": {}, + "openGallery": "갤러리 열기", + "@openGallery": {}, + "sender": "발신자", + "@sender": {}, + "messageInfo": "메시지 정보", + "@messageInfo": {}, + "repeatPassword": "비밀번호 다시 입력", + "@repeatPassword": {}, + "start": "시작", + "@start": {}, + "removeFromSpace": "스페이스에서 삭제", + "@removeFromSpace": {}, + "addToSpaceDescription": "이 채팅을 추가할 스페이스를 선택하세요.", + "@addToSpaceDescription": {}, + "commandHint_discardsession": "세션 삭제", + "@commandHint_discardsession": { + "type": "String", + "description": "Usage hint for the command /discardsession" + }, + "commandHint_dm": "다이렉트 채팅 시작\t\n--no-encryption을 사용해 암호화 비활성화", + "@commandHint_dm": { + "type": "String", + "description": "Usage hint for the command /dm" + }, + "commandHint_clearcache": "캐시 지우기", + "@commandHint_clearcache": { + "type": "String", + "description": "Usage hint for the command /clearcache" + }, + "commandHint_create": "빈 그룹 채팅을 생성\n--no-encryption을 사용해 암호화를 비활성화", + "@commandHint_create": { + "type": "String", + "description": "Usage hint for the command /create" + }, + "openVideoCamera": "영상용 카메라 열기", + "@openVideoCamera": { + "type": "String", + "placeholders": {} + }, + "publish": "공개", + "@publish": {}, + "videoWithSize": "영상 ({size})", + "@videoWithSize": { + "type": "String", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "dismiss": "닫기", + "@dismiss": {}, + "markAsRead": "읽음으로 표시하기", + "@markAsRead": {}, + "reportUser": "유저 신고", + "@reportUser": {}, + "openChat": "채팅 열기", + "@openChat": {}, + "reactedWith": "{sender}가 {reaction}로 반응함", + "@reactedWith": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "reaction": { + "type": "String" + } + } + }, + "confirmEventUnpin": "이벤트를 영구적으로 고정 해제할 것이 확실한가요?", + "@confirmEventUnpin": {}, + "pinMessage": "방에 고정", + "@pinMessage": {}, + "emojis": "이모지", + "@emojis": {}, + "voiceCall": "음성 통화", + "@voiceCall": {}, + "placeCall": "전화 걸기", + "@placeCall": {}, + "experimentalVideoCalls": "실험적인 영상 통화", + "@experimentalVideoCalls": {}, + "unsupportedAndroidVersion": "지원되지 않는 안드로이드 버전", + "@unsupportedAndroidVersion": {}, + "unsupportedAndroidVersionLong": "이 기능은 새로운 안드로이드 버전을 요구합니다. Lineage OS 지원이나 업데이트를 확인해주세요.", + "@unsupportedAndroidVersionLong": {}, + "videoCallsBetaWarning": "영상 통화는 베타임을 확인해주세요. 의도한 대로 작동하지 않거나 모든 플랫폼에서 작동하지 않을 수 있습니다.", + "@videoCallsBetaWarning": {}, + "emailOrUsername": "이메일이나 유저 이름", + "@emailOrUsername": {}, + "confirmMatrixId": "계정을 삭제하려면 Matrix ID를 입력해 주세요.", + "@confirmMatrixId": {}, + "commandHint_googly": "왕눈이 눈알 보내기", + "@commandHint_googly": {}, + "googlyEyesContent": "{senderName} 님이 왕눈이 눈알을 보냈습니다", + "@googlyEyesContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "commandHint_markasgroup": "그룹 채팅으로 만들기", + "@commandHint_markasgroup": {}, + "dehydrate": "세션을 내보내고 기기 초기화 하기", + "@dehydrate": {}, + "dehydrateWarning": "이 동작은 되돌릴 수 없습니다. 백업 파일을 꼭 안전하게 보관하세요.", + "@dehydrateWarning": {}, + "hugContent": "{senderName}님이 당신을 허그합니다", + "@hugContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "jumpToLastReadMessage": "마지막으로 읽은 메시지로 이동", + "@jumpToLastReadMessage": {}, + "allRooms": "모든 그룹 채팅", + "@allRooms": { + "type": "String", + "placeholders": {} + }, + "commandHint_cuddle": "미소 보내기", + "@commandHint_cuddle": {}, + "widgetVideo": "영상", + "@widgetVideo": {}, + "reportErrorDescription": "😭 이런. 무언가 잘못되었습니다. 원한다면, 개발자에게 버그를 신고할 수 있습니다.", + "@reportErrorDescription": {}, + "widgetJitsi": "Jitsi Meet", + "@widgetJitsi": {}, + "indexedDbErrorLong": "메시지 저장은 기본적으로 사생활 보호 모드에서 사용할 수 없습니다.\n- about:config 로 이동\n- dom.indexedDB.privateBrowsing.enabled 를 true로 설정\n그렇지 않으면 FluffyChat을 실행할 수 없습니다.", + "@indexedDbErrorLong": {}, + "startFirstChat": "첫 번째 채팅을 시작하기", + "@startFirstChat": {}, + "callingAccount": "통화 계정", + "@callingAccount": {}, + "setColorTheme": "색상 테마 설정:", + "@setColorTheme": {}, + "nextAccount": "다음 계정", + "@nextAccount": {}, + "allSpaces": "모든 스페이스", + "@allSpaces": {}, + "supposedMxid": "{mxid} 이어야 함", + "@supposedMxid": { + "type": "String", + "placeholders": { + "mxid": { + "type": "String" + } + } + }, + "user": "유저", + "@user": {}, + "youAcceptedTheInvitation": "👍 초대를 수락했습니다", + "@youAcceptedTheInvitation": {}, + "youInvitedBy": "📩 {user}님에 의해 초대되었습니다", + "@youInvitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "banUserDescription": "유저는 채팅에서 영구 추방되며 추방 해제 전까지 채팅을 다시 입력할 수 없습니다.", + "@banUserDescription": {}, + "widgetEtherpad": "텍스트 메모", + "@widgetEtherpad": {}, + "removeDevicesDescription": "이 기기에서 로그아웃되며 더 이상 메시지를 받을 수 없습니다.", + "@removeDevicesDescription": {}, + "separateChatTypes": "다이렉트 채팅과 그룹 채팅 분리", + "@separateChatTypes": { + "type": "String", + "placeholders": {} + }, + "tryAgain": "다시 시도하기", + "@tryAgain": {}, + "youKickedAndBanned": "🙅 {user}님을 영구 추방했습니다", + "@youKickedAndBanned": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "unbanUserDescription": "유저가 다시 채팅을 입력할 수 있습니다.", + "@unbanUserDescription": {}, + "youRejectedTheInvitation": "초대를 거부했습니다", + "@youRejectedTheInvitation": {}, + "otherCallingPermissions": "마이크, 카메라 그리고 다름 FluffyChat 권한", + "@otherCallingPermissions": {}, + "messagesStyle": "메세지:", + "@messagesStyle": {}, + "widgetUrlError": "유효한 URL이 아닙니다.", + "@widgetUrlError": {}, + "newSpaceDescription": "스페이스를 사용하면 채팅을 통합하고 비공개 또는 공개 커뮤니티를 구축할 수 있습니다.", + "@newSpaceDescription": {}, + "chatDescription": "채팅 설명", + "@chatDescription": {}, + "callingAccountDetails": "FluffyChat이 android 전화앱을 사용 할 수 있도록 허가.", + "@callingAccountDetails": {}, + "enterSpace": "스페이스에 입장", + "@enterSpace": {}, + "encryptThisChat": "이 채팅을 암호화", + "@encryptThisChat": {}, + "previousAccount": "이전 계정", + "@previousAccount": {}, + "reopenChat": "채팅 다시 열기", + "@reopenChat": {}, + "pleaseEnterRecoveryKey": "당신의 복구키를 입력하세요:", + "@pleaseEnterRecoveryKey": {}, + "widgetNameError": "표시 이름을 입력하세요.", + "@widgetNameError": {}, + "addWidget": "위젯 추가", + "@addWidget": {}, + "countFiles": "{count}개의 파일", + "@countFiles": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "noKeyForThisMessage": "이것은 이 메시지가 당신이 이 기기를 서명하기 전에 발송되었기 때문에 일어났을 수 있습니다.\n\n이것은 또한 발송자가 당신의 기기를 차단하였거나 혹은 인터넷 연결이 잘못되었을 수 있습니다.\n\n다른 세션에서 이 메시지를 읽을 수 있나요? 그렇다면 그 메시지를 옮길 수 있습니다! 설정 > 기기로 가서 기기를 서로 증명하세요. 다음번에 방을 열었을 때 두 세션이 모두 작동중이라면, 키가 자동으로 옮겨질것입니다.\n\n로그아웃하거나 기기를 바꿀 때 키를 잃고싶지 않으신가요? 설정에서 채팅 백업을 사용중인지 확인하세요.", + "@noKeyForThisMessage": {}, + "hydrateTor": "TOR 사용자: 내보낸 세션 불러오기", + "@hydrateTor": {}, + "pushNotificationsNotAvailable": "푸시 알림 사용 불가", + "@pushNotificationsNotAvailable": {}, + "storeInAppleKeyChain": "Apple KeyChain에 저장하기", + "@storeInAppleKeyChain": {}, + "hydrate": "백업 파일로부터 가져오기", + "@hydrate": {}, + "invalidServerName": "잘못된 서버 이름", + "@invalidServerName": {}, + "chatPermissions": "채팅 권한", + "@chatPermissions": {}, + "storeInAndroidKeystore": "Android KeyStore에 저장하기", + "@storeInAndroidKeystore": {}, + "signInWithPassword": "비밀번호로 로그인", + "@signInWithPassword": {}, + "makeAdminDescription": "유저를 한 번 관리자로 만들면, 당신과 같은 권한을 가지기때문에 권한 회수가 불가능합니다.", + "@makeAdminDescription": {}, + "saveKeyManuallyDescription": "공유나 클립보드를 이용해 수동으로 키를 저장합니다.", + "@saveKeyManuallyDescription": {}, + "whyIsThisMessageEncrypted": "왜 이 메시지를 읽을 수 없나요?", + "@whyIsThisMessageEncrypted": {}, + "setChatDescription": "채팅 설명 설정", + "@setChatDescription": {}, + "importFromZipFile": ".zip 파일에서 불러오기", + "@importFromZipFile": {}, + "noOtherDevicesFound": "다른 기기 발견되지 않음", + "@noOtherDevicesFound": {}, + "redactedBy": "{username}님이 삭제함", + "@redactedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "signInWith": "{provider}로 로그인", + "@signInWith": { + "type": "String", + "placeholders": { + "provider": { + "type": "String" + } + } + }, + "fileIsTooBigForServer": "전송에 실패했습니다. 서버는 {max}가 넘는 파일을 지원하지 않습니다.", + "@fileIsTooBigForServer": {}, + "callingPermissions": "통화 권한", + "@callingPermissions": {}, + "readUpToHere": "여기까지 읽음", + "@readUpToHere": {}, + "unlockOldMessages": "오래된 메시지 잠금 해제하기", + "@unlockOldMessages": {}, + "numChats": "{number}개의 채팅", + "@numChats": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "optionalRedactReason": "(선택) 이 메시지를 편집하는 이유...", + "@optionalRedactReason": {}, + "archiveRoomDescription": "채팅이 보관함으로 이동합니다. 다른 유저들은 당신이 떠난다는것을 볼 수 있습니다.", + "@archiveRoomDescription": {}, + "exportEmotePack": ".zip 파일로 이모트 내보내기", + "@exportEmotePack": {}, + "switchToAccount": "계정 {number}로 전환", + "@switchToAccount": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "pleaseEnterRecoveryKeyDescription": "오래된 메시지를 잠금 해제하려면, 이전 세션에서 생성된 복호화 키를 입력하세요. 복호화 키는 비밀번호가 아닙니다.", + "@pleaseEnterRecoveryKeyDescription": {}, + "inviteContactToGroupQuestion": "{contact} 를 \"{groupName}\"에 초대할까요?", + "@inviteContactToGroupQuestion": {}, + "redactedByBecause": "{username}님이 삭제함. 사유: \"{reason}\"", + "@redactedByBecause": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "reason": { + "type": "String" + } + } + }, + "youHaveWithdrawnTheInvitationFor": "{user}님에 대한 초대를 철회함", + "@youHaveWithdrawnTheInvitationFor": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "appearOnTopDetails": "앱이 상단에 표시되도록 허용 (이미 FluffyChat을 통화 계정으로 설정한 경우에는 필요하지 않음)", + "@appearOnTopDetails": {}, + "enterRoom": "방에 입장", + "@enterRoom": {}, + "youInvitedUser": "📩 {user}님을 초대했습니다", + "@youInvitedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "fileHasBeenSavedAt": "{path}에 파일 저장됨", + "@fileHasBeenSavedAt": { + "type": "String", + "placeholders": { + "path": { + "type": "String" + } + } + }, + "redactMessageDescription": "메시지는 이 대화의 모든 참여자에게 삭제될 것 입니다. 되돌릴 수 없습니다.", + "@redactMessageDescription": {}, + "recoveryKey": "복구키", + "@recoveryKey": {}, + "invalidInput": "잘못된 입력!", + "@invalidInput": {}, + "dehydrateTorLong": "TOR 사용자들은 창을 닫기 전에 세션을 내보내는것이 권장됩니다.", + "@dehydrateTorLong": {}, + "doNotShowAgain": "다시 보지 않기", + "@doNotShowAgain": {}, + "report": "신고", + "@report": {}, + "hideUnimportantStateEvents": "중요하지 않은 상태 이벤트 숨기기", + "@hideUnimportantStateEvents": {}, + "screenSharingTitle": "화면 공유", + "@screenSharingTitle": {}, + "widgetCustom": "사용자 정의", + "@widgetCustom": {}, + "youBannedUser": "{user}님을 영구 추방함", + "@youBannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "addChatDescription": "채팅 설명 추가하기...", + "@addChatDescription": {}, + "hasKnocked": "🚪 {user}님이 참가를 요청했습니다", + "@hasKnocked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "openLinkInBrowser": "브라우저에서 링크 열기", + "@openLinkInBrowser": {}, + "disableEncryptionWarning": "보안상의 이유로 암호화가 활성화된 채팅에서 암호화를 비활성화 할 수 없습니다.", + "@disableEncryptionWarning": {}, + "directChat": "다이렉트 채팅", + "@directChat": {}, + "wrongPinEntered": "잘못된 pin입니다! {seconds}초 후에 다시 시도하세요...", + "@wrongPinEntered": { + "type": "String", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "sendTypingNotifications": "입력 알림 보내기", + "@sendTypingNotifications": {}, + "inviteGroupChat": "📨 그룹 채팅에 초대", + "@inviteGroupChat": {}, + "appearOnTop": "상단에 표시", + "@appearOnTop": {}, + "invitePrivateChat": "📨 비공개 채팅에 초대", + "@invitePrivateChat": {}, + "foregroundServiceRunning": "이 알림은 백그라운드 서비스가 실행중일때 표시됩니다.", + "@foregroundServiceRunning": {}, + "importEmojis": "이모지 불러오기", + "@importEmojis": {}, + "wasDirectChatDisplayName": "빈 채팅 (전 {oldDisplayName})", + "@wasDirectChatDisplayName": { + "type": "String", + "placeholders": { + "oldDisplayName": { + "type": "String" + } + } + }, + "noChatDescriptionYet": "채팅 설명이 아직 추가되지 않음.", + "@noChatDescriptionYet": {}, + "learnMore": "더 알아보기", + "@learnMore": {}, + "notAnImage": "이미지 파일이 아닙니다.", + "@notAnImage": {}, + "users": "유저", + "@users": {}, + "chatDescriptionHasBeenChanged": "채팅 설명 변경됨", + "@chatDescriptionHasBeenChanged": {}, + "newGroup": "새 그룹 채팅", + "@newGroup": {}, + "dehydrateTor": "TOR 사용자: 세션 내보내기", + "@dehydrateTor": {}, + "roomUpgradeDescription": "채팅이 새로운 방 버전으로 다시 생성됩니다. 모든 참가자는 새로운 채팅으로 전환해야합니다. https://spec.matrix.org/latest/rooms/ 에서 방 버전에 대해 자세히 알아볼 수 있습니다.", + "@roomUpgradeDescription": {}, + "pleaseEnterANumber": "0보다 큰 숫자를 입력하세요", + "@pleaseEnterANumber": {}, + "youKicked": "👞 {user}님을 추방했습니다", + "@youKicked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "profileNotFound": "유저를 서버에서 찾을 수 있습니다. 연결 문제가 있거나 유저가 존재하지 않을 수 있습니다.", + "@profileNotFound": {}, + "jump": "점프", + "@jump": {}, + "sorryThatsNotPossible": "죄송합니다...그것은 불가능합니다", + "@sorryThatsNotPossible": {}, + "shareInviteLink": "초대 링크 공유", + "@shareInviteLink": {}, + "commandHint_markasdm": "Matrix ID를 위한 다이렉트 메시지 방으로 표시", + "@commandHint_markasdm": {}, + "recoveryKeyLost": "복구키를 분실하셨나요?", + "@recoveryKeyLost": {}, + "cuddleContent": "{senderName} 님이 당신에게 미소짓습니다", + "@cuddleContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "deviceKeys": "기기 키:", + "@deviceKeys": {}, + "emoteKeyboardNoRecents": "최근 사용한 이모트가 여기 나타납니다...", + "@emoteKeyboardNoRecents": { + "type": "String", + "placeholders": {} + }, + "setTheme": "테마 설정:", + "@setTheme": {}, + "youJoinedTheChat": "채팅에 참가하였습니다", + "@youJoinedTheChat": {}, + "widgetName": "이름", + "@widgetName": {}, + "errorAddingWidget": "위젯 추가중 오류 발생.", + "@errorAddingWidget": {}, + "commandHint_hug": "허그 보내기", + "@commandHint_hug": {}, + "replace": "대체", + "@replace": {}, + "youUnbannedUser": "{user}님의 영구 추방을 해제했습니다", + "@youUnbannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "newSpace": "새 스페이스", + "@newSpace": {}, + "pleaseTryAgainLaterOrChooseDifferentServer": "나중에 다시 시도하거나 다른 서버를 선택하십시오.", + "@pleaseTryAgainLaterOrChooseDifferentServer": {}, + "createGroup": "새 그룹 채팅", + "@createGroup": {}, + "hydrateTorLong": "지난 TOR 이용에서 세션을 내보내셨나요? 빠르게 불러오고 채팅을 계속하세요.", + "@hydrateTorLong": {}, + "custom": "커스텀", + "@custom": {}, + "noBackupWarning": "경고! 채팅 백업을 켜지 않을경우, 당신은 암호화된 메시지에 대한 접근권한을 잃을것 입니다. 로그아웃 하기 전에 채팅을 백업하는것이 강력히 권장됩니다.", + "@noBackupWarning": {}, + "storeInSecureStorageDescription": "이 기기의 보안 스토리지에 복구키를 저장합니다.", + "@storeInSecureStorageDescription": {}, + "kickUserDescription": "유저는 채팅에서 추방되지만 영구 추방되지 않습니다. 공개 채팅의 경우, 언제든 유저가 다시 참가할 수 있습니다.", + "@kickUserDescription": {}, + "importNow": "지금 불러오기", + "@importNow": {}, + "invite": "초대", + "@invite": {}, + "indexedDbErrorTitle": "사생활 보호 모드의 문제", + "@indexedDbErrorTitle": {}, + "storeSecurlyOnThisDevice": "이 기기에 안전하게 저장", + "@storeSecurlyOnThisDevice": {}, + "screenSharingDetail": "FluffyChat에 당신의 화면을 공유하는중", + "@screenSharingDetail": {}, + "blockUsername": "유저 이름 무시", + "@blockUsername": {}, + "block": "차단", + "@block": {}, + "blockedUsers": "차단된 유저", + "@blockedUsers": {}, + "groupName": "그룹 채팅 이름", + "@groupName": {}, + "commandHint_sendraw": "raw json 전송", + "@commandHint_sendraw": {}, + "pleaseChooseAStrongPassword": "강력한 비밀번호를 사용하세요", + "@pleaseChooseAStrongPassword": {}, + "addChatOrSubSpace": "채팅 또는 하위 스페이스 추가", + "@addChatOrSubSpace": {}, + "subspace": "하위 스페이스", + "@subspace": {}, + "youInvitedToBy": "📩 링크를 통해 초대되셨습니다:\n{alias}", + "@youInvitedToBy": { + "placeholders": { + "alias": { + "type": "String" + } + } + }, + "databaseMigrationBody": "잠시만 기다리세요. 시간이 걸릴 수 있습니다.", + "@databaseMigrationBody": {}, + "select": "선택", + "@select": {}, + "joinSpace": "스페이스 참가", + "@joinSpace": {}, + "decline": "거절", + "@decline": {}, + "formattedMessagesDescription": "마크다운을 이용한 볼드등의 서식이 있는 메시지를 봅니다.", + "@formattedMessagesDescription": {}, + "completedKeyVerification": "{sender}가 키 검증을 완료함", + "@completedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "canceledKeyVerification": "{sender}가 키 검증을 취소함", + "@canceledKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "createGroupAndInviteUsers": "그룹 채팅을 생성하고 유저를 초대", + "@createGroupAndInviteUsers": {}, + "passwordsDoNotMatch": "비밀번호가 일치하지 않습니다", + "@passwordsDoNotMatch": {}, + "passwordIsWrong": "비밀번호가 틀립니다", + "@passwordIsWrong": {}, + "publicLink": "공개 링크", + "@publicLink": {}, + "thisDevice": "이 기기:", + "@thisDevice": {}, + "sendReadReceipts": "읽음 확인 보내기", + "@sendReadReceipts": {}, + "sendReadReceiptsDescription": "채팅의 다른 참가자들이 당신이 메시지를 읽었는지 볼 수 있습니다.", + "@sendReadReceiptsDescription": {}, + "verifyOtherUser": "🔐 다른 유저 확인", + "@verifyOtherUser": {}, + "hidePresences": "상태 목록을 숨길까요?", + "@hidePresences": {}, + "searchChatsRooms": "#chats, @users 검색...", + "@searchChatsRooms": {}, + "groupCanBeFoundViaSearch": "검색으로 그룹 채팅을 찾을 수 있음", + "@groupCanBeFoundViaSearch": {}, + "restoreSessionBody": "앱이 백업에서 세션을 복원하려 시도중입니다. {url} 에서 개발자에게 오류를 신고하세요. 오류 메시지는 다음과 같습니다: {error}", + "@restoreSessionBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "acceptedKeyVerification": "{sender}가 키 검증을 수락함", + "@acceptedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "presencesToggle": "다른 유저의 상태 메시지 표시", + "@presencesToggle": { + "type": "String", + "placeholders": {} + }, + "wrongRecoveryKey": "죄송합니다... 올바른 복구키가 아닌것 같습니다.", + "@wrongRecoveryKey": {}, + "newPassword": "새 비밀번호", + "@newPassword": {}, + "searchForUsers": "@users 검색...", + "@searchForUsers": {}, + "leaveEmptyToClearStatus": "비워서 상태를 지우세요.", + "@leaveEmptyToClearStatus": {}, + "commandHint_ignore": "주어진 matrix ID를 무시", + "@commandHint_ignore": {}, + "commandHint_unignore": "주어진 matrix ID 무시 해제", + "@commandHint_unignore": {}, + "blockListDescription": "당신은 당신을 방해하는 유저들을 차단할 수 있습니다. 당신은 당신의 개인 차단 목록에 있는 어떠한 유저의 메시지와 방 초대도 받지 않을것 입니다.", + "@blockListDescription": {}, + "presenceStyle": "상태:", + "@presenceStyle": { + "type": "String", + "placeholders": {} + }, + "sessionLostBody": "세션을 잃었습니다. {url} 에서 개발자에게 오류를 신고하세요. 오류 메시지는 다음과 같습니다: {error}", + "@sessionLostBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "yourGlobalUserIdIs": "글로벌 유저 ID: ", + "@yourGlobalUserIdIs": {}, + "noUsersFoundWithQuery": "안타깝게도 \"{query}\"로 유저를 찾을 수 없습니다. 오타가 없는지 확인하십시오.", + "@noUsersFoundWithQuery": { + "type": "String", + "placeholders": { + "query": { + "type": "String" + } + } + }, + "nothingFound": "아무것도 찾지 못했습니다...", + "@nothingFound": {}, + "startConversation": "대화 시작", + "@startConversation": {}, + "databaseMigrationTitle": "데이터베이스가 최적화됨", + "@databaseMigrationTitle": {}, + "pleaseEnterYourCurrentPassword": "현재 비밀번호 입력", + "@pleaseEnterYourCurrentPassword": {}, + "publicSpaces": "공개 스페이스들", + "@publicSpaces": {}, + "initAppError": "앱 초기화중 오류 발생", + "@initAppError": {}, + "databaseBuildErrorBody": "SQlite 데이터베이스를 구축할 수 없습니다. 현재 레거시 데이터베이스 사용을 시도중입니다. {url} 에서 개발자에게 오류를 신고하세요. 오류 메시지는 다음과 같습니다: {error}", + "@databaseBuildErrorBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "sendTypingNotificationsDescription": "채팅의 다른 참가자들이 당신이 새 메시지를 입력중인것을 볼 수 있습니다.", + "@sendTypingNotificationsDescription": {}, + "formattedMessages": "형식이 지정된 메시지", + "@formattedMessages": {}, + "forwardMessageTo": "{roomName}에 메시지를 전달할까요?", + "@forwardMessageTo": { + "type": "String", + "placeholders": { + "roomName": { + "type": "String" + } + } + }, + "verifyOtherDevice": "🔐 다른 기기를 확인", + "@verifyOtherDevice": {}, + "verifyOtherUserDescription": "다른 유저를 확인하면, 당신은 당신이 누구에게 말하고있는지 알 수 있습니다. 💪\n\n확인을 시작할 때, 다른 유저는 앱에서 팝업을 볼 수 있습니다. 당신은 그런 다음 서로 비교해야 이모지 또는 숫자의 목록을 볼 수 있습니다.\n\n이 작업을 수행하는 가장 좋은 방법은 직접 만나거나 영상통화를 하는것입니다. 👭", + "@verifyOtherUserDescription": {}, + "verifyOtherDeviceDescription": "다른 장치를 확인하면, 장치와 키를 교환하고, 전반적인 보안을 증가시킵니다. 💪 확인을 시작하면 팝업은 두 장치에 나타납니다. 그런 다음 서로 비교해야 이모지 또는 숫자의 목록를 볼 수 있습니다. 확인을 시작하기 전에 모든 장치를 준비하세요. 🤳", + "@verifyOtherDeviceDescription": {}, + "isReadyForKeyVerification": "{sender}가 키 검증 준비를 완료함", + "@isReadyForKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "requestedKeyVerification": "{sender}가 키 검증을 요청함", + "@requestedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "startedKeyVerification": "{sender}가 키 검증을 시작함", + "@startedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "transparent": "투명", + "@transparent": {}, + "incomingMessages": "메시지 수신함", + "@incomingMessages": {}, + "stickers": "스티커", + "@stickers": {}, + "discover": "탐색", + "@discover": {}, + "unreadChatsInApp": "{appname}: {unread}개의 읽지 않은 채팅", + "@unreadChatsInApp": { + "type": "String", + "placeholders": { + "appname": { + "type": "String" + }, + "unread": { + "type": "String" + } + } + }, + "appLockDescription": "앱을 사용하지 않을 때 pin으로 잠금", + "@appLockDescription": {}, + "calls": "전화", + "@calls": {}, + "globalChatId": "글로벌 채팅 ID", + "@globalChatId": {}, + "customEmojisAndStickers": "커스텀 이모지와 스티커", + "@customEmojisAndStickers": {}, + "accessAndVisibilityDescription": "채팅에 참가 할 수 있는 사람과 채팅을 볼 수 있는 범위", + "@accessAndVisibilityDescription": {}, + "accessAndVisibility": "채팅 가입과 대화 기록", + "@accessAndVisibility": {}, + "customEmojisAndStickersBody": "모든 채팅에서 사용할 수있는 커스텀 이모지와 스티커를 추가하거나 공유합니다.", + "@customEmojisAndStickersBody": {}, + "hideRedactedMessages": "삭제된 메시지 숨기기", + "@hideRedactedMessages": {}, + "hideRedactedMessagesBody": "누군가가 메시지를 삭제하면 메시지를 더 이상 볼 수 없습니다.", + "@hideRedactedMessagesBody": {}, + "hideInvalidOrUnknownMessageFormats": "잘못되거나 알 수 없는 메시지 형식 숨김", + "@hideInvalidOrUnknownMessageFormats": {}, + "overview": "개요", + "@overview": {}, + "notifyMeFor": "나에게 알림", + "@notifyMeFor": {}, + "passwordRecoverySettings": "비밀번호 복구 설정", + "@passwordRecoverySettings": {}, + "hideMemberChangesInPublicChats": "공개 채팅에서의 참가자 변화 숨김", + "@hideMemberChangesInPublicChats": {}, + "userWouldLikeToChangeTheChat": "{user}님이 참가를 희망합니다.", + "@userWouldLikeToChangeTheChat": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "noPublicLinkHasBeenCreatedYet": "공개 링크가 아직 생성되지 않았음", + "@noPublicLinkHasBeenCreatedYet": {}, + "knock": "참가 요청", + "@knock": {}, + "usersMustKnock": "유저들이 참가를 허가받아야함", + "@usersMustKnock": {}, + "knocking": "참가 요청중", + "@knocking": {}, + "chatCanBeDiscoveredViaSearchOnServer": "채팅은 {server} 에서 검색하여 찾을 수 있습니다.", + "@chatCanBeDiscoveredViaSearchOnServer": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "noOneCanJoin": "아무도 참가할 수 없음", + "@noOneCanJoin": {}, + "thereAreCountUsersBlocked": "{count}명의 차단된 유저가 있습니다.", + "@thereAreCountUsersBlocked": { + "type": "String", + "count": {} + }, + "minimumPowerLevel": "{level}은 최소 권한 레벨입니다.", + "@minimumPowerLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "String" + } + } + }, + "noDatabaseEncryption": "데이터베이스 암호화는 이 플랫폼에서 지원되지 않음", + "@noDatabaseEncryption": {}, + "publicChatAddresses": "공개 채팅 주소", + "@publicChatAddresses": {}, + "userRole": "유저 역할", + "@userRole": {}, + "createNewAddress": "새 주소 만들기", + "@createNewAddress": {}, + "hideMemberChangesInPublicChatsBody": "공개 채팅에 누군가가 참가하거나 떠날때 타임라인에 표시하지 않습니다.", + "@hideMemberChangesInPublicChatsBody": {}, + "searchMore": "더 검색...", + "@searchMore": {}, + "files": "파일", + "@files": {}, + "searchIn": "{chat}에서 검색...", + "@searchIn": { + "type": "String", + "placeholders": { + "chat": { + "type": "String" + } + } + }, + "gallery": "갤러리", + "@gallery": {}, + "restricted": "스페이스 멤버로 제한", + "@restricted": {}, + "knockRestricted": "스페이스 멤버만 참가 요청 가능", + "@knockRestricted": {}, + "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": "String", + "space": {} + }, + "markAsUnread": "읽지 않음으로 표시", + "@markAsUnread": {}, + "countChatsAndCountParticipants": "{chats} 채팅과 {participants} 참여자", + "@countChatsAndCountParticipants": { + "type": "String", + "placeholders": { + "chats": { + "type": "int" + }, + "participants": { + "type": "int" + } + } + }, + "joinedChats": "참가한 채팅", + "@joinedChats": {}, + "noMoreChatsFound": "채팅을 찾을 수 없습니다...", + "@noMoreChatsFound": {}, + "moderatorLevel": "{level} - 관리자", + "@moderatorLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "adminLevel": "{level} - 운영자", + "@adminLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "invitedBy": "📩 {user}님이 나를 초대함", + "@invitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "userLevel": "{level} - 유저", + "@userLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "noChatsFoundHere": "대화가 발견되지 않았습니다. 아래 버튼을 사용하여 새 대화를 시작해 보세요. ⤵️", + "@noChatsFoundHere": {}, + "changeTheVisibilityOfChatHistory": "채팅 기록 표시 여부 바꾸기", + "@changeTheVisibilityOfChatHistory": {}, + "changeTheCanonicalRoomAlias": "메인 공개 채팅 주소 바꾸기", + "@changeTheCanonicalRoomAlias": {}, + "sendCanceled": "전송 최소됨", + "@sendCanceled": {}, + "homeserverDescription": "당신의 모든 데이터는 이메일과 흡사하게 당신의 홈서버에 저장됩니다. 당신이 소통하고 싶은 사람들과 다른 서버를 사용해도 무관하니 당신이 원하는 홈서버를 선택해도 됩니다. https://matrix.org에서 자세히 알아보세요.", + "@homeserverDescription": {}, + "sendingAttachmentCountOfCount": "첨부파일 {length}개중 {index}번째 전송 중...", + "@sendingAttachmentCountOfCount": { + "type": "integer", + "placeholders": { + "index": { + "type": "int" + }, + "length": { + "type": "int" + } + } + }, + "serverLimitReached": "서버 한도에 도달했습니다! {seconds}초 기다리는 중...", + "@serverLimitReached": { + "type": "integer", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "noContactInformationProvided": "서버가 유효한 연락처 정보를 제공하지 않음", + "@noContactInformationProvided": {}, + "welcomeText": "안녕하세요 👋 FluffyChat이에요. 당신은 htpps://matrix.org와 호환되는 모든 홈서버를 사용할 수 있어요. 그리고 모두와 대화해보세요. 거대한 분산 대화망이니까요!", + "@welcomeText": {}, + "changeGeneralChatSettings": "일반 채팅 설정 번경하기", + "@changeGeneralChatSettings": {}, + "inviteOtherUsers": "다른 사용자를 이 채팅에 초대하기", + "@inviteOtherUsers": {}, + "changeTheChatPermissions": "채팅 권한 바꾸기", + "@changeTheChatPermissions": {}, + "calculatingFileSize": "파일 크기 계산 중...", + "@calculatingFileSize": {}, + "prepareSendingAttachment": "첨부된 파일 전송 준비 중...", + "@prepareSendingAttachment": {}, + "oneOfYourDevicesIsNotVerified": "당신의 기기 중 하나가 인증되지 않았음", + "@oneOfYourDevicesIsNotVerified": {}, + "noticeChatBackupDeviceVerification": "참고: 모든 기기에 채팅 백업을 설정하면 자동으로 서로 인증됩니다.", + "@noticeChatBackupDeviceVerification": {}, + "opacity": "불투명:", + "@opacity": {}, + "setWallpaper": "배경화면 설정하기", + "@setWallpaper": {}, + "manageAccount": "계정 관리하기", + "@manageAccount": {}, + "aboutHomeserver": "{homeserver}의 대해서", + "@aboutHomeserver": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "contactServerAdmin": "서버 관리자에게 연락하기", + "@contactServerAdmin": {}, + "contactServerSecurity": "서버 보안 관리자에게 연락하기", + "@contactServerSecurity": {}, + "supportPage": "지원 페이지", + "@supportPage": {}, + "name": "이름", + "@name": {}, + "serverInformation": "서버 정보:", + "@serverInformation": {}, + "version": "버전", + "@version": {}, + "website": "웹사이트", + "@website": {}, + "changeTheDescriptionOfTheGroup": "채팅 설명 바꾸기", + "@changeTheDescriptionOfTheGroup": {}, + "sendRoomNotifications": "@room 알림 보내기", + "@sendRoomNotifications": {}, + "chatPermissionsDescription": "이 채팅에서 특정 작업에 요구할 권한 레벨을 정의합니다. 권한 레벨 0, 50, 100은 일반적으로 유저, 관리자, 운영자를 나타내지만, 모든 숫자가 가능합니다.", + "@chatPermissionsDescription": {}, + "loginWithMatrixId": "Matrix-ID로 로그인", + "@loginWithMatrixId": {}, + "discoverHomeservers": "홈서버 찾아보기", + "@discoverHomeservers": {}, + "whatIsAHomeserver": "홈서버가 무엇인가요?", + "@whatIsAHomeserver": {}, + "doesNotSeemToBeAValidHomeserver": "호환되는 홈서버가 아닌 것 같습니다. URL을 올바르게 입력됐나요?", + "@doesNotSeemToBeAValidHomeserver": {}, + "continueText": "계속하기", + "@continueText": {}, + "updateInstalled": "🎉 {version} 업데이트가 설치되었습니다!", + "@updateInstalled": { + "type": "String", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "changelog": "변경 기록", + "@changelog": {}, + "sendingAttachment": "첨부된 파일 전송 중...", + "@sendingAttachment": {}, + "generatingVideoThumbnail": "영상 썸네일 만드는 중...", + "@generatingVideoThumbnail": {}, + "compressVideo": "영상 압축 중...", + "@compressVideo": {}, + "blur": "블러:", + "@blur": {}, + "sendImages": "이미지 {count}개 보내기", + "@sendImages": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "italicText": "기울어진 글꼴", + "@italicText": {}, + "boldText": "두꺼운 글꼴", + "@boldText": {}, + "appWantsToUseForLoginDescription": "웹사이트와 당신에 대한 정보를 공유하게됩니다.", + "@appWantsToUseForLoginDescription": {}, + "appWantsToUseForLogin": "'{server}'로 로그인", + "@appWantsToUseForLogin": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "otherPartyNotLoggedIn": "다른 구성원이 현재 로그인하지 않아 메시지를 수신하지 못합니다!", + "@otherPartyNotLoggedIn": {}, + "open": "열기", + "@open": {}, + "unableToJoinChat": "채팅에 참가할 수 없습니다. 다른 구성원이 이미 대화를 종료했을 수 있습니다.", + "@unableToJoinChat": {}, + "compress": "압축", + "@compress": {}, + "invalidUrl": "유효하지 않은 url", + "@invalidUrl": {}, + "addLink": "링크 추가", + "@addLink": {}, + "strikeThrough": "취소선", + "@strikeThrough": {}, + "pleaseFillOut": "작성해주세요", + "@pleaseFillOut": {}, + "previous": "이전", + "@previous": {}, + "newChatRequest": "📩 새 채팅 요청", + "@newChatRequest": {}, + "appIntroduction": "FluffyChat는 다른 메신저들을 사용하는 친구들과도 채팅할 수 있습니다. https://matrix.org에 방문하거나 *계속*을 눌러 자세한 정보를 확인하세요.", + "@appIntroduction": {}, + "synchronizingPleaseWaitCounter": " 동기화중… ({percentage}%)", + "@synchronizingPleaseWaitCounter": { + "type": "String", + "placeholders": { + "percentage": { + "type": "String" + } + } + }, + "waitingForServer": "서버를 기다리는중...", + "@waitingForServer": {}, + "contentNotificationSettings": "콘텐츠 알림 설정", + "@contentNotificationSettings": {}, + "generalNotificationSettings": "일반 알림 설정", + "@generalNotificationSettings": {}, + "roomNotificationSettings": "채팅방 알림 설정", + "@roomNotificationSettings": {}, + "otherNotificationSettings": "기타 알림 설정", + "@otherNotificationSettings": {}, + "notificationRuleContainsUserName": "유저 이름을 포함함", + "@notificationRuleContainsUserName": {}, + "notificationRuleMaster": "모든 알림 음소거", + "@notificationRuleMaster": {}, + "notificationRuleContainsUserNameDescription": "메시지가 유저의 이름을 포함할때 알림합니다.", + "@notificationRuleContainsUserNameDescription": {}, + "notificationRuleMasterDescription": "모든 규칙을 무시하고 모든 알림을 비활성화합니다.", + "@notificationRuleMasterDescription": {}, + "notificationRuleSuppressNotices": "자동화된 메시지 무시", + "@notificationRuleSuppressNotices": {}, + "notificationRuleSuppressNoticesDescription": "봇을 비롯한 자동화된 메시지로부터 발생하는 알림을 무시합니다.", + "@notificationRuleSuppressNoticesDescription": {}, + "notificationRuleInviteForMe": "초대를 받음", + "@notificationRuleInviteForMe": {}, + "notificationRuleInviteForMeDescription": "채팅방에 초대받았을 때 알림합니다.", + "@notificationRuleInviteForMeDescription": {}, + "notificationRuleMemberEvent": "멤버 이벤트", + "@notificationRuleMemberEvent": {}, + "notificationRuleMemberEventDescription": "멤버 이벤트로 발생하는 알림을 무시합니다.", + "@notificationRuleMemberEventDescription": {}, + "notificationRuleIsUserMentionDescription": "유저가 메시지에 멘션됐을 때 알림합니다.", + "@notificationRuleIsUserMentionDescription": {}, + "notificationRuleContainsDisplayName": "표시 이름을 포함함", + "@notificationRuleContainsDisplayName": {}, + "notificationRuleIsUserMention": "유저가 멘션됨", + "@notificationRuleIsUserMention": {}, + "notificationRuleContainsDisplayNameDescription": "메시지에 표시 이름이 포함되면 알림합니다.", + "@notificationRuleContainsDisplayNameDescription": {}, + "notificationRuleIsRoomMention": "방 멘션", + "@notificationRuleIsRoomMention": {}, + "notificationRuleIsRoomMentionDescription": "방 멘션이 있을경우 알림합니다.", + "@notificationRuleIsRoomMentionDescription": {}, + "notificationRuleRoomnotif": "방 알림", + "@notificationRuleRoomnotif": {}, + "notificationRuleRoomnotifDescription": "메시지가 '@room'을 포함하면 알림합니다.", + "@notificationRuleRoomnotifDescription": {}, + "notificationRuleTombstone": "비활성화", + "@notificationRuleTombstone": {}, + "notificationRuleTombstoneDescription": "채팅방 비활성화 메시지를 알림합니다.", + "@notificationRuleTombstoneDescription": {}, + "notificationRuleReaction": "반응", + "@notificationRuleReaction": {}, + "notificationRuleReactionDescription": "반응으로 발생하는 알림을 무시합니다.", + "@notificationRuleReactionDescription": {}, + "notificationRuleRoomServerAcl": "채팅방 서버 ACL", + "@notificationRuleRoomServerAcl": {}, + "notificationRuleRoomServerAclDescription": "채팅방 서버의 접근 권한(ACL)으로부터 오는 알림을 무시합니다.", + "@notificationRuleRoomServerAclDescription": {}, + "notificationRuleSuppressEdits": "수정 음소거", + "@notificationRuleSuppressEdits": {}, + "notificationRuleSuppressEditsDescription": "수정된 메시지로부터 오는 알림을 무시합니다.", + "@notificationRuleSuppressEditsDescription": {}, + "notificationRuleCall": "전화", + "@notificationRuleCall": {}, + "setCustomPermissionLevel": "사용자 지정 권한 수준 설정", + "@setCustomPermissionLevel": {}, + "setPermissionsLevelDescription": "아래에서 미리 정의된 역할을 선택하거나 0부터 100 사이의 사용자 지정 권한 수준을 입력해 주세요.", + "@setPermissionsLevelDescription": {}, + "ignoreUser": "사용자 무시", + "@ignoreUser": {}, + "normalUser": "일반 사용자", + "@normalUser": {}, + "commandHint_roomupgrade": "이 방을 주어진 방 버전으로 업그레이드합니다", + "@commandHint_roomupgrade": {}, + "checkList": "체크리스트", + "@checkList": {}, + "countInvited": "{count}초대받은", + "@countInvited": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + } +} diff --git a/lib/l10n/intl_lt.arb b/lib/l10n/intl_lt.arb new file mode 100644 index 0000000..44f5681 --- /dev/null +++ b/lib/l10n/intl_lt.arb @@ -0,0 +1,2417 @@ +{ + "commandHint_leave": "Palikti pokalbių kambarį", + "@commandHint_leave": { + "type": "String", + "description": "Usage hint for the command /leave" + }, + "confirm": "Patvirtinti", + "@confirm": { + "type": "String", + "placeholders": {} + }, + "cancel": "Atšaukti", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "edit": "Redaguoti", + "@edit": { + "type": "String", + "placeholders": {} + }, + "downloadFile": "Atsisiųsti failą", + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "about": "Apie", + "@about": { + "type": "String", + "placeholders": {} + }, + "all": "Visi", + "@all": { + "type": "String", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "String", + "placeholders": {} + }, + "fileName": "Failo vardas", + "@fileName": { + "type": "String", + "placeholders": {} + }, + "changePassword": "Keisti slaptažodį", + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "close": "Uždaryti", + "@close": { + "type": "String", + "placeholders": {} + }, + "archive": "Archyvas", + "@archive": { + "type": "String", + "placeholders": {} + }, + "skip": "Praleisti", + "@skip": { + "type": "String", + "placeholders": {} + }, + "share": "Bendrinti", + "@share": { + "type": "String", + "placeholders": {} + }, + "showPassword": "Rodyti slaptažodį", + "@showPassword": { + "type": "String", + "placeholders": {} + }, + "time": "Laikas", + "@time": {}, + "settings": "Nustatytmai", + "@settings": { + "type": "String", + "placeholders": {} + }, + "sender": "Siuntėjas", + "@sender": {}, + "yes": "Taip", + "@yes": { + "type": "String", + "placeholders": {} + }, + "you": "Jūs", + "@you": { + "type": "String", + "placeholders": {} + }, + "logout": "Atsijungti", + "@logout": { + "type": "String", + "placeholders": {} + }, + "messages": "Žinutės", + "@messages": { + "type": "String", + "placeholders": {} + }, + "scanQrCode": "Nuskanuokite QR kodą", + "@scanQrCode": {}, + "ok": "OK", + "@ok": { + "type": "String", + "placeholders": {} + }, + "addAccount": "Pridėti paskyrą", + "@addAccount": {}, + "or": "Arba", + "@or": { + "type": "String", + "placeholders": {} + }, + "password": "Slaptažodis", + "@password": { + "type": "String", + "placeholders": {} + }, + "passwordHasBeenChanged": "Slaptažodis pakeistas", + "@passwordHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPassword": "Įveskite savo slaptažodį", + "@pleaseEnterYourPassword": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourUsername": "Įveskite savo vartotojo vardą", + "@pleaseEnterYourUsername": { + "type": "String", + "placeholders": {} + }, + "reply": "Atsakyti", + "@reply": { + "type": "String", + "placeholders": {} + }, + "blockDevice": "Blokuoti įrenginį", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "blocked": "Užblokuotas", + "@blocked": { + "type": "String", + "placeholders": {} + }, + "chooseAStrongPassword": "Pasirinkite saugų slaptažodį", + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "deleteMessage": "Ištrinti žinutę", + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "device": "Įrenginys", + "@device": { + "type": "String", + "placeholders": {} + }, + "deviceId": "Įrenginio ID", + "@deviceId": { + "type": "String", + "placeholders": {} + }, + "devices": "Įrenginiai", + "@devices": { + "type": "String", + "placeholders": {} + }, + "homeserver": "Namų serveris", + "@homeserver": {}, + "enterYourHomeserver": "Įveskite namų serverį", + "@enterYourHomeserver": { + "type": "String", + "placeholders": {} + }, + "everythingReady": "Viskas paruošta!", + "@everythingReady": { + "type": "String", + "placeholders": {} + }, + "fontSize": "Šrifto dydis", + "@fontSize": { + "type": "String", + "placeholders": {} + }, + "clearArchive": "Išvalyti archyvą", + "@clearArchive": {}, + "create": "Sukurti", + "@create": { + "type": "String", + "placeholders": {} + }, + "connect": "Prisijungti", + "@connect": { + "type": "String", + "placeholders": {} + }, + "people": "Žmonės", + "@people": { + "type": "String", + "placeholders": {} + }, + "moderator": "Moderatorius", + "@moderator": { + "type": "String", + "placeholders": {} + }, + "muteChat": "Nutildyti pokalbį", + "@muteChat": { + "type": "String", + "placeholders": {} + }, + "newChat": "Naujas pokalbis", + "@newChat": { + "type": "String", + "placeholders": {} + }, + "none": "Nė vienas", + "@none": { + "type": "String", + "placeholders": {} + }, + "noPermission": "Nėra leidimo", + "@noPermission": { + "type": "String", + "placeholders": {} + }, + "noRoomsFound": "Nerasta kambarių…", + "@noRoomsFound": { + "type": "String", + "placeholders": {} + }, + "notifications": "Pranešimai", + "@notifications": { + "type": "String", + "placeholders": {} + }, + "notificationsEnabledForThisAccount": "Pranešimai aktyvuoti šitai paskyrai", + "@notificationsEnabledForThisAccount": { + "type": "String", + "placeholders": {} + }, + "obtainingLocation": "Gaunama vieta…", + "@obtainingLocation": { + "type": "String", + "placeholders": {} + }, + "offensive": "Agresyvus", + "@offensive": { + "type": "String", + "placeholders": {} + }, + "offline": "Neprisijungta", + "@offline": { + "type": "String", + "placeholders": {} + }, + "online": "Prisijungta", + "@online": { + "type": "String", + "placeholders": {} + }, + "oopsPushError": "Oi! Deja, nustatant tiesioginius pranešimus įvyko klaida.", + "@oopsPushError": { + "type": "String", + "placeholders": {} + }, + "oopsSomethingWentWrong": "Oi, kažkas nutiko ne taip…", + "@oopsSomethingWentWrong": { + "type": "String", + "placeholders": {} + }, + "openAppToReadMessages": "Atidarykite programėlę, kad perskaityti žinutes", + "@openAppToReadMessages": { + "type": "String", + "placeholders": {} + }, + "link": "Nuoroda", + "@link": {}, + "participant": "Dalyvis", + "@participant": { + "type": "String", + "placeholders": {} + }, + "passphraseOrKey": "Slapta frazė arba atkūrimo raktas", + "@passphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "passwordForgotten": "Slaptažodis užmirštas", + "@passwordForgotten": { + "type": "String", + "placeholders": {} + }, + "passwordRecovery": "Slaptažodžio atkūrimas", + "@passwordRecovery": { + "type": "String", + "placeholders": {} + }, + "pickImage": "Pasirinkite paveiksliuką", + "@pickImage": { + "type": "String", + "placeholders": {} + }, + "pin": "Prisegti", + "@pin": { + "type": "String", + "placeholders": {} + }, + "pleaseChoose": "Prašome pasirinkti", + "@pleaseChoose": { + "type": "String", + "placeholders": {} + }, + "pleaseChooseAPasscode": "Pasirinkite slaptą kodą", + "@pleaseChooseAPasscode": { + "type": "String", + "placeholders": {} + }, + "pleaseClickOnLink": "Paspauskite nuorodą el. pašte ir tęskite toliau.", + "@pleaseClickOnLink": { + "type": "String", + "placeholders": {} + }, + "pleaseEnter4Digits": "Įveskite 4 skaitmenis arba palikite tuščią, jei norite išjungti programėlės užraktą.", + "@pleaseEnter4Digits": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPin": "Įveskite savo PIN kodą", + "@pleaseEnterYourPin": { + "type": "String", + "placeholders": {} + }, + "pleaseFollowInstructionsOnWeb": "Vadovaukitės svetainėje pateiktais nurodymais ir bakstelėkite Toliau.", + "@pleaseFollowInstructionsOnWeb": { + "type": "String", + "placeholders": {} + }, + "privacy": "Privatumas", + "@privacy": { + "type": "String", + "placeholders": {} + }, + "publicRooms": "Vieši kambariai", + "@publicRooms": { + "type": "String", + "placeholders": {} + }, + "reason": "Priežastis", + "@reason": { + "type": "String", + "placeholders": {} + }, + "recording": "Įrašymas", + "@recording": { + "type": "String", + "placeholders": {} + }, + "redactMessage": "Pašalinti žinutę", + "@redactMessage": { + "type": "String", + "placeholders": {} + }, + "register": "Registruotis", + "@register": { + "type": "String", + "placeholders": {} + }, + "reject": "Atmesti", + "@reject": { + "type": "String", + "placeholders": {} + }, + "rejoin": "Vėl prisijungti", + "@rejoin": { + "type": "String", + "placeholders": {} + }, + "remove": "Pašalinti", + "@remove": { + "type": "String", + "placeholders": {} + }, + "removeAllOtherDevices": "Pašalinti visus kitus įrenginius", + "@removeAllOtherDevices": { + "type": "String", + "placeholders": {} + }, + "removeDevice": "Pašalinti įrenginį", + "@removeDevice": { + "type": "String", + "placeholders": {} + }, + "removeYourAvatar": "Pašalinti savo avatarą", + "@removeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "replaceRoomWithNewerVersion": "Pakeisti kambarį naujesne versija", + "@replaceRoomWithNewerVersion": { + "type": "String", + "placeholders": {} + }, + "requestPermission": "Prašyti leidimo", + "@requestPermission": { + "type": "String", + "placeholders": {} + }, + "roomHasBeenUpgraded": "Kambarys buvo atnaujintas", + "@roomHasBeenUpgraded": { + "type": "String", + "placeholders": {} + }, + "roomVersion": "Kambario versija", + "@roomVersion": { + "type": "String", + "placeholders": {} + }, + "search": "Ieškoti", + "@search": { + "type": "String", + "placeholders": {} + }, + "accept": "Sutinku", + "@accept": { + "type": "String", + "placeholders": {} + }, + "repeatPassword": "Pakartokite slaptažodį", + "@repeatPassword": {}, + "addEmail": "Pridėti el. paštą", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "admin": "Administratorius", + "@admin": { + "type": "String", + "placeholders": {} + }, + "alias": "slapyvardis", + "@alias": { + "type": "String", + "placeholders": {} + }, + "allChats": "Visi pokalbiai", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "anyoneCanJoin": "Bet kas gali prisijungti", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "Ar esate tikri?", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "areYouSureYouWantToLogout": "Ar tikrai norite atsijungti?", + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "changeTheHomeserver": "Pakeisti namų serverį", + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "changeTheme": "Keisti savo stilių", + "@changeTheme": { + "type": "String", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "Keisti grupės pavadinimą", + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "changeYourAvatar": "Keisti savo avatarą", + "@changeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "chat": "Pokalbis", + "@chat": { + "type": "String", + "placeholders": {} + }, + "chatDetails": "Pokalbio detalės", + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "chats": "Pokalbiai", + "@chats": { + "type": "String", + "placeholders": {} + }, + "commandHint_ban": "Užblokuoti vartotoją šiame kambaryje", + "@commandHint_ban": { + "type": "String", + "description": "Usage hint for the command /ban" + }, + "commandHint_clearcache": "Išvalyti laikiną talpyklą", + "@commandHint_clearcache": { + "type": "String", + "description": "Usage hint for the command /clearcache" + }, + "commandHint_discardsession": "Atmesti sesiją", + "@commandHint_discardsession": { + "type": "String", + "description": "Usage hint for the command /discardsession" + }, + "commandHint_html": "Siųsti tekstą HTML formatu", + "@commandHint_html": { + "type": "String", + "description": "Usage hint for the command /html" + }, + "commandHint_invite": "Pakviesti vartotoją į šitą kambarį", + "@commandHint_invite": { + "type": "String", + "description": "Usage hint for the command /invite" + }, + "commandHint_join": "Prisijungti prie nurodyto kambario", + "@commandHint_join": { + "type": "String", + "description": "Usage hint for the command /join" + }, + "commandHint_kick": "Pašalinti vartotoja iš šito kambario", + "@commandHint_kick": { + "type": "String", + "description": "Usage hint for the command /kick" + }, + "commandHint_myroomnick": "Nustatyti savo rodomą vardą šiame kambaryje", + "@commandHint_myroomnick": { + "type": "String", + "description": "Usage hint for the command /myroomnick" + }, + "commandHint_plain": "Siųsti neformatuotą tekstą", + "@commandHint_plain": { + "type": "String", + "description": "Usage hint for the command /plain" + }, + "commandHint_send": "Siųsti tekstą", + "@commandHint_send": { + "type": "String", + "description": "Usage hint for the command /send" + }, + "commandHint_unban": "Atblokuoti vartotoją šiame kambaryje", + "@commandHint_unban": { + "type": "String", + "description": "Usage hint for the command /unban" + }, + "commandInvalid": "Neteisinga komanda", + "@commandInvalid": { + "type": "String" + }, + "configureChat": "Konfigūruoti pokalbį", + "@configureChat": { + "type": "String", + "placeholders": {} + }, + "copiedToClipboard": "Nukopijuota į iškarpinę", + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "copy": "Kopijuoti", + "@copy": { + "type": "String", + "placeholders": {} + }, + "copyToClipboard": "Koipjuoti į iškarpinę", + "@copyToClipboard": { + "type": "String", + "placeholders": {} + }, + "currentlyActive": "Šiuo metu aktyvus", + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "darkTheme": "Tamsi", + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "delete": "Ištrinti", + "@delete": { + "type": "String", + "placeholders": {} + }, + "deleteAccount": "Panaikinti paskyra", + "@deleteAccount": { + "type": "String", + "placeholders": {} + }, + "directChats": "Tiesioginiai pokalbiai", + "@directChats": { + "type": "String", + "placeholders": {} + }, + "encrypted": "Užšifruotas", + "@encrypted": { + "type": "String", + "placeholders": {} + }, + "encryptionNotEnabled": "Šifravimas aktyvuotas", + "@encryptionNotEnabled": { + "type": "String", + "placeholders": {} + }, + "enterAnEmailAddress": "Įveskite el. pašto adresą", + "@enterAnEmailAddress": { + "type": "String", + "placeholders": {} + }, + "extremeOffensive": "Itin įžeidžiantis", + "@extremeOffensive": { + "type": "String", + "placeholders": {} + }, + "forward": "Toliau", + "@forward": { + "type": "String", + "placeholders": {} + }, + "fromJoining": "Nuo prisijungimo", + "@fromJoining": { + "type": "String", + "placeholders": {} + }, + "fromTheInvitation": "Nuo pakvietimo", + "@fromTheInvitation": { + "type": "String", + "placeholders": {} + }, + "goToTheNewRoom": "Eiti į naują kambarį", + "@goToTheNewRoom": { + "type": "String", + "placeholders": {} + }, + "group": "Grupė", + "@group": { + "type": "String", + "placeholders": {} + }, + "groupIsPublic": "Grupė yra vieša", + "@groupIsPublic": { + "type": "String", + "placeholders": {} + }, + "groups": "Grupės", + "@groups": { + "type": "String", + "placeholders": {} + }, + "guestsAreForbidden": "Svečiams draudžiama", + "@guestsAreForbidden": { + "type": "String", + "placeholders": {} + }, + "guestsCanJoin": "Svečiai gali prisijungti", + "@guestsCanJoin": { + "type": "String", + "placeholders": {} + }, + "help": "Pagalba", + "@help": { + "type": "String", + "placeholders": {} + }, + "hideRedactedEvents": "Slėpti pašalintus įvykius", + "@hideRedactedEvents": { + "type": "String", + "placeholders": {} + }, + "hideUnknownEvents": "Slėpti nežinomus įvykius", + "@hideUnknownEvents": { + "type": "String", + "placeholders": {} + }, + "identity": "Tapatybė", + "@identity": { + "type": "String", + "placeholders": {} + }, + "ignore": "Ignoruoti", + "@ignore": { + "type": "String", + "placeholders": {} + }, + "ignoredUsers": "Ignoruoti vartotojai", + "@ignoredUsers": { + "type": "String", + "placeholders": {} + }, + "leave": "Palikti", + "@leave": { + "type": "String", + "placeholders": {} + }, + "memberChanges": "Narių pokyčiai", + "@memberChanges": { + "type": "String", + "placeholders": {} + }, + "mention": "Paminėti", + "@mention": { + "type": "String", + "placeholders": {} + }, + "encryption": "Šifravimas", + "@encryption": { + "type": "String", + "placeholders": {} + }, + "enableEncryption": "Aktyvuoti šifravimą", + "@enableEncryption": { + "type": "String", + "placeholders": {} + }, + "editBlockedServers": "Redaguoti blokuotus serverius", + "@editBlockedServers": { + "type": "String", + "placeholders": {} + }, + "login": "Prisijungti", + "@login": { + "type": "String", + "placeholders": {} + }, + "sendOnEnter": "Išsiųsti paspaudus Enter", + "@sendOnEnter": {}, + "banFromChat": "Užblokuoti iš pokalbio", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "banned": "Užblokuotas", + "@banned": { + "type": "String", + "placeholders": {} + }, + "changeDeviceName": "Pakeisti įrenginio vardą", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "yourChatBackupHasBeenSetUp": "Jūsų pokalbio atsarginė kopija buvo nustatyta.", + "@yourChatBackupHasBeenSetUp": {}, + "chatBackup": "Pokalbio atsargine kopija", + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "commandHint_me": "Apibūdinkite save", + "@commandHint_me": { + "type": "String", + "description": "Usage hint for the command /me" + }, + "displaynameHasBeenChanged": "Rodomas vardas buvo pakeistas", + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "editDisplayname": "Redaguoti rodomą vardą", + "@editDisplayname": { + "type": "String", + "placeholders": {} + }, + "editRoomAliases": "Redaguoti kambario pseudonimus", + "@editRoomAliases": { + "type": "String", + "placeholders": {} + }, + "editRoomAvatar": "Redaguoti kambario avatarą", + "@editRoomAvatar": { + "type": "String", + "placeholders": {} + }, + "howOffensiveIsThisContent": "Kiek įžeižiantis šis turinys?", + "@howOffensiveIsThisContent": { + "type": "String", + "placeholders": {} + }, + "id": "ID", + "@id": { + "type": "String", + "placeholders": {} + }, + "iHaveClickedOnLink": "Aš paspaudžiau nuorodą", + "@iHaveClickedOnLink": { + "type": "String", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "Neteisinga slaptafrazė arba atkūrimo raktas", + "@incorrectPassphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "inoffensive": "Neįžeidžiantis", + "@inoffensive": { + "type": "String", + "placeholders": {} + }, + "inviteContact": "Pakviesti kontaktą", + "@inviteContact": { + "type": "String", + "placeholders": {} + }, + "invited": "Pakviestas", + "@invited": { + "type": "String", + "placeholders": {} + }, + "invitedUsersOnly": "Tik pakviesti vartotojai", + "@invitedUsersOnly": { + "type": "String", + "placeholders": {} + }, + "isTyping": "rašo…", + "@isTyping": { + "type": "String", + "placeholders": {} + }, + "joinRoom": "Prisijungti prie kambario", + "@joinRoom": { + "type": "String", + "placeholders": {} + }, + "kickFromChat": "Išmesti iš pokalbio", + "@kickFromChat": { + "type": "String", + "placeholders": {} + }, + "leftTheChat": "Paliko pokalbį", + "@leftTheChat": { + "type": "String", + "placeholders": {} + }, + "license": "Licencija", + "@license": { + "type": "String", + "placeholders": {} + }, + "lightTheme": "Šviesi", + "@lightTheme": { + "type": "String", + "placeholders": {} + }, + "loadingPleaseWait": "Kraunama… Prašome palaukti.", + "@loadingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "loadMore": "Rodyti daugiau…", + "@loadMore": { + "type": "String", + "placeholders": {} + }, + "newMessageInFluffyChat": "💬 Nauja žinutė FluffyChat'e", + "@newMessageInFluffyChat": { + "type": "String", + "placeholders": {} + }, + "newVerificationRequest": "Nauja patvirtinimo užklausa!", + "@newVerificationRequest": { + "type": "String", + "placeholders": {} + }, + "next": "Toliau", + "@next": { + "type": "String", + "placeholders": {} + }, + "no": "Ne", + "@no": { + "type": "String", + "placeholders": {} + }, + "noConnectionToTheServer": "Nėra ryšio su serveriu", + "@noConnectionToTheServer": { + "type": "String", + "placeholders": {} + }, + "setInvitationLink": "Nustatyti pakvietimo nuorodą", + "@setInvitationLink": { + "type": "String", + "placeholders": {} + }, + "singlesignon": "Vienkartinis prisijungimas", + "@singlesignon": { + "type": "String", + "placeholders": {} + }, + "sourceCode": "Programinis kodas", + "@sourceCode": { + "type": "String", + "placeholders": {} + }, + "spaceIsPublic": "Erdvė yra vieša", + "@spaceIsPublic": { + "type": "String", + "placeholders": {} + }, + "spaceName": "Erdvės pavadinimas", + "@spaceName": { + "type": "String", + "placeholders": {} + }, + "status": "Būsena", + "@status": { + "type": "String", + "placeholders": {} + }, + "statusExampleMessage": "Kaip sekasi šiandien?", + "@statusExampleMessage": { + "type": "String", + "placeholders": {} + }, + "submit": "Pateikti", + "@submit": { + "type": "String", + "placeholders": {} + }, + "synchronizingPleaseWait": "Sinchronizuojama… Prašome palaukti.", + "@synchronizingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "transferFromAnotherDevice": "Perkėlimas iš kito įrenginio", + "@transferFromAnotherDevice": { + "type": "String", + "placeholders": {} + }, + "verify": "Patvirtinti", + "@verify": { + "type": "String", + "placeholders": {} + }, + "verifyStart": "Pradėti patvirtinimą", + "@verifyStart": { + "type": "String", + "placeholders": {} + }, + "verifySuccess": "Jūs sėkmingai patvirtinote!", + "@verifySuccess": { + "type": "String", + "placeholders": {} + }, + "verifyTitle": "Patvirtinama kita paskyra", + "@verifyTitle": { + "type": "String", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "Pokalbių istorijos matomumas", + "@visibilityOfTheChatHistory": { + "type": "String", + "placeholders": {} + }, + "visibleForAllParticipants": "Matoma visiems dalyviams", + "@visibleForAllParticipants": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "Laukiama, kol dalyvis priims užklausą…", + "@waitingPartnerAcceptRequest": { + "type": "String", + "placeholders": {} + }, + "writeAMessage": "Rašyti žinutę…", + "@writeAMessage": { + "type": "String", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "Jūs nebedalyvaujate šiame pokalbyje", + "@youAreNoLongerParticipatingInThisChat": { + "type": "String", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "Jums buvo uždrausta dalyvauti šiame pokalbyje", + "@youHaveBeenBannedFromThisChat": { + "type": "String", + "placeholders": {} + }, + "messageInfo": "Žinutės informacija", + "@messageInfo": {}, + "removeFromSpace": "Pašalinti iš erdvės", + "@removeFromSpace": {}, + "security": "Apsauga", + "@security": { + "type": "String", + "placeholders": {} + }, + "sendAsText": "Siųsti kaip tekstą", + "@sendAsText": { + "type": "String" + }, + "sendAudio": "Siųsti garso įrašą", + "@sendAudio": { + "type": "String", + "placeholders": {} + }, + "sendImage": "Siųsti paveiksliuką", + "@sendImage": { + "type": "String", + "placeholders": {} + }, + "sendFile": "Sųsti bylą", + "@sendFile": { + "type": "String", + "placeholders": {} + }, + "sendMessages": "Siųsti žinutes", + "@sendMessages": { + "type": "String", + "placeholders": {} + }, + "sendOriginal": "Siųsti originalą", + "@sendOriginal": { + "type": "String", + "placeholders": {} + }, + "sendVideo": "Siųsti video", + "@sendVideo": { + "type": "String", + "placeholders": {} + }, + "separateChatTypes": "Atskirti tiesioginius pokalbius ir grupes", + "@separateChatTypes": { + "type": "String", + "placeholders": {} + }, + "setAsCanonicalAlias": "Nustatyti kaip pagrindinį slapyvardį", + "@setAsCanonicalAlias": { + "type": "String", + "placeholders": {} + }, + "setPermissionsLevel": "Nustatyti leidimų lygį", + "@setPermissionsLevel": { + "type": "String", + "placeholders": {} + }, + "setStatus": "Nustatyti būseną", + "@setStatus": { + "type": "String", + "placeholders": {} + }, + "shareLocation": "Bendrinti vietą", + "@shareLocation": { + "type": "String", + "placeholders": {} + }, + "systemTheme": "Sistema", + "@systemTheme": { + "type": "String", + "placeholders": {} + }, + "unavailable": "Nepasiekiamas", + "@unavailable": { + "type": "String", + "placeholders": {} + }, + "unblockDevice": "Atblokuoti įrenginį", + "@unblockDevice": { + "type": "String", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "Nežinomas šifravimo algoritmas", + "@unknownEncryptionAlgorithm": { + "type": "String", + "placeholders": {} + }, + "unmuteChat": "Įjungti pokalbio garsą", + "@unmuteChat": { + "type": "String", + "placeholders": {} + }, + "unpin": "Atsegti", + "@unpin": { + "type": "String", + "placeholders": {} + }, + "username": "Vartotojo vardas", + "@username": { + "type": "String", + "placeholders": {} + }, + "unverified": "Nepatvirtinta", + "@unverified": {}, + "verified": "Patvirtinta", + "@verified": { + "type": "String", + "placeholders": {} + }, + "videoCall": "Vaizdo skambutis", + "@videoCall": { + "type": "String", + "placeholders": {} + }, + "yourPublicKey": "Jūsų viešasis raktas", + "@yourPublicKey": { + "type": "String", + "placeholders": {} + }, + "addToSpaceDescription": "Pasirinkite erdvę, kad prie jos pridėtumėte šį pokalbį.", + "@addToSpaceDescription": {}, + "start": "Pradžia", + "@start": {}, + "account": "Paskyra", + "@account": { + "type": "String", + "placeholders": {} + }, + "addToSpace": "Pridėti į erdvę", + "@addToSpace": {}, + "appLock": "Programos užraktas", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "Ar svečiams leidžiama prisijungti", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "botMessages": "Botų žinutės", + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "channelCorruptedDecryptError": "Šifravimas buvo sugadintas", + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "chatHasBeenAddedToThisSpace": "Pokalbis buvo pridėtas prie šios erdvės", + "@chatHasBeenAddedToThisSpace": {}, + "compareEmojiMatch": "Palyginkite jaustukus", + "@compareEmojiMatch": { + "type": "String", + "placeholders": {} + }, + "compareNumbersMatch": "Palyginkite skaičius", + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "Kontaktas buvo pakviestas į grupę", + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "contentHasBeenReported": "Apie turinį pranešta serverio administratoriams", + "@contentHasBeenReported": { + "type": "String", + "placeholders": {} + }, + "createNewSpace": "Nauja erdvė", + "@createNewSpace": { + "type": "String", + "placeholders": {} + }, + "deactivateAccountWarning": "Tai deaktyvuos jūsų vartotojo paskyrą. Tai negali būti atšaukta! Ar jūs tuo tikri?", + "@deactivateAccountWarning": { + "type": "String", + "placeholders": {} + }, + "defaultPermissionLevel": "Numatytasis teisių lygis", + "@defaultPermissionLevel": { + "type": "String", + "placeholders": {} + }, + "enableEncryptionWarning": "Šifravimo nebegalėsite išjungti. Ar jūs tuo tikri?", + "@enableEncryptionWarning": { + "type": "String", + "placeholders": {} + }, + "send": "Siųsti", + "@send": { + "type": "String", + "placeholders": {} + }, + "sendAMessage": "Siųsti žinutę", + "@sendAMessage": { + "type": "String", + "placeholders": {} + }, + "toggleUnread": "Pažymėti kaip skaitytą/neskaitytą", + "@toggleUnread": { + "type": "String", + "placeholders": {} + }, + "tooManyRequestsWarning": "Per daug užklausų. Pabandykite dar kartą vėliau!", + "@tooManyRequestsWarning": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerEmoji": "Laukiama, kol dalyvis priims jaustukus…", + "@waitingPartnerEmoji": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerNumbers": "Laukiama, kol dalyvis priims skaičius…", + "@waitingPartnerNumbers": { + "type": "String", + "placeholders": {} + }, + "wallpaper": "Užsklanda", + "@wallpaper": { + "type": "String", + "placeholders": {} + }, + "warning": "Įspėjimas!", + "@warning": { + "type": "String", + "placeholders": {} + }, + "weSentYouAnEmail": "Išsiuntėme jums el. laišką", + "@weSentYouAnEmail": { + "type": "String", + "placeholders": {} + }, + "whoCanPerformWhichAction": "Kas gali atlikti kokį veiksmą", + "@whoCanPerformWhichAction": { + "type": "String", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "Kam leidžiama prisijungti prie šios grupės", + "@whoIsAllowedToJoinThisGroup": { + "type": "String", + "placeholders": {} + }, + "whyDoYouWantToReportThis": "Kodėl norite apie tai pranešti?", + "@whyDoYouWantToReportThis": { + "type": "String", + "placeholders": {} + }, + "wipeChatBackup": "Ištrinti atsarginę pokalbių kopiją, kad sukurti naują atkūrimo raktą?", + "@wipeChatBackup": { + "type": "String", + "placeholders": {} + }, + "withTheseAddressesRecoveryDescription": "Naudodami šiuos adresus galite atkurti savo slaptažodį.", + "@withTheseAddressesRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "messageType": "Žinutės tipas", + "@messageType": {}, + "openGallery": "Atverti galeriją", + "@openGallery": {}, + "unknownDevice": "Nežinomas įrenginys", + "@unknownDevice": { + "type": "String", + "placeholders": {} + }, + "voiceMessage": "Balso žinutė", + "@voiceMessage": { + "type": "String", + "placeholders": {} + }, + "title": "FluffyChat", + "@title": { + "description": "Title for the application", + "type": "String", + "placeholders": {} + }, + "visibleForEveryone": "Matoma visiems", + "@visibleForEveryone": { + "type": "String", + "placeholders": {} + }, + "tryToSendAgain": "Pabandykite išsiųsti dar kartą", + "@tryToSendAgain": { + "type": "String", + "placeholders": {} + }, + "locationPermissionDeniedNotice": "Vietos leidimas atmestas. Suteikite leidimą kad galėtumėte bendrinti savo vietą.", + "@locationPermissionDeniedNotice": { + "type": "String", + "placeholders": {} + }, + "needPantalaimonWarning": "Atminkite, kad norint naudoti end-to-end šifravimą, reikalingas Pantalaimon.", + "@needPantalaimonWarning": { + "type": "String", + "placeholders": {} + }, + "noEncryptionForPublicRooms": "Šifravimą galite suaktyvinti tik tada, kai kambarys nebebus viešai pasiekiamas.", + "@noEncryptionForPublicRooms": { + "type": "String", + "placeholders": {} + }, + "noEmotesFound": "Nerasta jaustukų. 😕", + "@noEmotesFound": { + "type": "String", + "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": "String", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "Dar nepridėjote slaptažodžio atkūrimo būdo.", + "@noPasswordRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "oneClientLoggedOut": "Vienas iš jūsų klientų atsijungė", + "@oneClientLoggedOut": {}, + "onlineKeyBackupEnabled": "Internetinė atsarginė raktų kopija įjungta", + "@onlineKeyBackupEnabled": { + "type": "String", + "placeholders": {} + }, + "openCamera": "Atidarykite kamerą", + "@openCamera": { + "type": "String", + "placeholders": {} + }, + "openVideoCamera": "Atidarykite kamerą vaizdo įrašui", + "@openVideoCamera": { + "type": "String", + "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": "String", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "redactedAnEvent": "{username} pašalino įvykį", + "@redactedAnEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "rejectedTheInvitation": "{username} atmetė kvietimą", + "@rejectedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "removedBy": "Pašalino vartotojas {username}", + "@removedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "unbanFromChat": "Atblokuoti pokalbyje", + "@unbanFromChat": { + "type": "String", + "placeholders": {} + }, + "reportMessage": "Pranešti apie žinutę", + "@reportMessage": { + "type": "String", + "placeholders": {} + }, + "saveFile": "Išsaugoti failą", + "@saveFile": { + "type": "String", + "placeholders": {} + }, + "seenByUser": "Matė {username}", + "@seenByUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sendSticker": "Siųsti lipduką", + "@sendSticker": { + "type": "String", + "placeholders": {} + }, + "sentAFile": "📁 {username} atsiuntė failą", + "@sentAFile": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAnAudio": "🎤 {username} atsiuntė garso įrašą", + "@sentAnAudio": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentASticker": "😊 {username} atsiuntė lipduką", + "@sentASticker": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sharedTheLocation": "{username} bendrino savo vietą", + "@sharedTheLocation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "startedACall": "{senderName} pradėjo skambutį", + "@startedACall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "theyDontMatch": "Jie nesutampa", + "@theyDontMatch": { + "type": "String", + "placeholders": {} + }, + "theyMatch": "Jie sutampa", + "@theyMatch": { + "type": "String", + "placeholders": {} + }, + "unbannedUser": "{username} atblokavo {targetName}", + "@unbannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "unknownEvent": "Nežinomas įvykis '{type}'", + "@unknownEvent": { + "type": "String", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "userAndOthersAreTyping": "{username} ir dar {count} kiti rašo…", + "@userAndOthersAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "userAndUserAreTyping": "{username} ir {username2} rašo…", + "@userAndUserAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "username2": { + "type": "String" + } + } + }, + "userIsTyping": "{username} rašo…", + "@userIsTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "userSentUnknownEvent": "{username} išsiuntė {type} įvykį", + "@userSentUnknownEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "type": { + "type": "String" + } + } + }, + "publish": "Paskelbti", + "@publish": {}, + "openChat": "Atverti pokalbį", + "@openChat": {}, + "reportUser": "Pranešti apie vartotoją", + "@reportUser": {}, + "dismiss": "Atsisakyti", + "@dismiss": {}, + "reactedWith": "{sender} sureagavo su {reaction}", + "@reactedWith": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "reaction": { + "type": "String" + } + } + }, + "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": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "activatedEndToEndEncryption": "🔐 {username} aktyvavo visapusį šifravimą", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "answeredTheCall": "{senderName} atsiliepė į skambutį", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "askVerificationRequest": "Priimti šią patvirtinimo užklausą iš {username}?", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "badServerLoginTypesException": "Namų serveris palaiko šiuos prisijungimo tipus:\n{serverVersions}\nTačiau ši programa palaiko tik:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "badServerVersionsException": "Namų serveris palaiko spec. versijas:\n{serverVersions}\nTačiau ši programa palaiko tik {supportedVersions}", + "@badServerVersionsException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "bannedUser": "{username} užblokavo {targetName}", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "changedTheHistoryVisibility": "{username} pakeitė istorijos matomumą", + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheHistoryVisibilityTo": "{username} pakeitė istorijos matomumą į: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "chatBackupDescription": "Jūsų senos žinutės yra apsaugotos atkūrimo raktu. Pasirūpinkite, kad jo neprarastumėte.", + "@chatBackupDescription": { + "type": "String", + "placeholders": {} + }, + "commandHint_create": "Sukurti tuščią grupinį pokalbį\nNaudokite --no-encryption kad išjungti šifravimą", + "@commandHint_create": { + "type": "String", + "description": "Usage hint for the command /create" + }, + "commandHint_dm": "Pradėti tiesioginį pokalbį\nNaudokite --no-encryption kad išjungti šifravimą", + "@commandHint_dm": { + "type": "String", + "description": "Usage hint for the command /dm" + }, + "commandHint_myroomavatar": "Nustatyti savo nuotrauką šiame kambaryje (su mxc-uri)", + "@commandHint_myroomavatar": { + "type": "String", + "description": "Usage hint for the command /myroomavatar" + }, + "commandHint_op": "Nustatyti naudotojo galios lygį (numatytasis: 50)", + "@commandHint_op": { + "type": "String", + "description": "Usage hint for the command /op" + }, + "commandHint_react": "Siųsti atsakymą kaip reakciją", + "@commandHint_react": { + "type": "String", + "description": "Usage hint for the command /react" + }, + "commandMissing": "{command} nėra komanda.", + "@commandMissing": { + "type": "String", + "placeholders": { + "command": { + "type": "String" + } + }, + "description": "State that {command} is not a valid /command." + }, + "containsDisplayName": "Turi rodomą vardą", + "@containsDisplayName": { + "type": "String", + "placeholders": {} + }, + "containsUserName": "Turi vartotojo vardą", + "@containsUserName": { + "type": "String", + "placeholders": {} + }, + "couldNotDecryptMessage": "Nepavyko iššifruoti pranešimo: {error}", + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "countParticipants": "{count} dalyviai", + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "createdTheChat": "💬 {username} sukūrė pokalbį", + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "emptyChat": "Tuščias pokalbis", + "@emptyChat": { + "type": "String", + "placeholders": {} + }, + "emoteExists": "Jaustukas jau egzistuoja!", + "@emoteExists": { + "type": "String", + "placeholders": {} + }, + "emoteInvalid": "Neteisingas jaustuko trumpasis kodas!", + "@emoteInvalid": { + "type": "String", + "placeholders": {} + }, + "emotePacks": "Jaustukų paketai kambariui", + "@emotePacks": { + "type": "String", + "placeholders": {} + }, + "emoteSettings": "Jaustukų nustatymai", + "@emoteSettings": { + "type": "String", + "placeholders": {} + }, + "emoteShortcode": "Jaustuko trumpasis kodas", + "@emoteShortcode": { + "type": "String", + "placeholders": {} + }, + "emoteWarnNeedToPick": "Turite pasirinkti jaustuko trumpąjį kodą ir paveiksliuką!", + "@emoteWarnNeedToPick": { + "type": "String", + "placeholders": {} + }, + "enableEmotesGlobally": "Įgalinti jaustukų paketą visur", + "@enableEmotesGlobally": { + "type": "String", + "placeholders": {} + }, + "endedTheCall": "{senderName} baigė skambutį", + "@endedTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "errorObtainingLocation": "Klaida nustatant vietą: {error}", + "@errorObtainingLocation": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "groupWith": "Grupė su {displayname}", + "@groupWith": { + "type": "String", + "placeholders": { + "displayname": { + "type": "String" + } + } + }, + "hasWithdrawnTheInvitationFor": "{username} atšaukė {targetName} kvietimą", + "@hasWithdrawnTheInvitationFor": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "inviteForMe": "Pakvietimas man", + "@inviteForMe": { + "type": "String", + "placeholders": {} + }, + "inviteContactToGroup": "Pakviesti kontaktą į {groupName}", + "@inviteContactToGroup": { + "type": "String", + "placeholders": { + "groupName": { + "type": "String" + } + } + }, + "invitedUser": "📩 {username} pakvietė {targetName}", + "@invitedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "inviteText": "{username} pakvietė jus prisijungti prie FluffyChat. \n1. Įdiekite FluffyChat: https://fluffychat.im \n2. Prisiregistruokite arba prisijunkite \n3. Atidarykite pakvietimo nuorodą: {link}", + "@inviteText": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "link": { + "type": "String" + } + } + }, + "joinedTheChat": "👋 {username} prisijungė prie pokalbio", + "@joinedTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "kicked": "👞 {username} išmetė {targetName}", + "@kicked": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickedAndBanned": "🙅 {username} išmetė ir užblokavo {targetName}", + "@kickedAndBanned": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "lastActiveAgo": "Paskutinis aktyvumas: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "String", + "placeholders": { + "localizedTimeShort": { + "type": "String" + } + } + }, + "loadCountMoreParticipants": "Įkelti dar {count} dalyvius", + "@loadCountMoreParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "logInTo": "Prisijungti prie {homeserver}", + "@logInTo": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "toggleFavorite": "Perjungti parankinius", + "@toggleFavorite": { + "type": "String", + "placeholders": {} + }, + "toggleMuted": "Perjungti nutildytą", + "@toggleMuted": { + "type": "String", + "placeholders": {} + }, + "cantOpenUri": "Nepavyksta atidaryti URI {uri}", + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "changedTheChatAvatar": "{username} pakeitė pokalbio avatarą", + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheChatDescriptionTo": "{username} pakeitė pokalbio aprašymą į: '{description}'", + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "changedTheChatNameTo": "{username} pakeitė pokalbio pavadinimą į: '{chatname}'", + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "changedTheChatPermissions": "{username} pakeitė pokalbių leidimus", + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheDisplaynameTo": "{username} pakeitė rodomą vardą į: '{displayname}'", + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "changedTheGuestAccessRules": "{username} pakeitė svečio prieigos taisykles", + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheGuestAccessRulesTo": "{username} pakeitė svečio prieigos taisykles į: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheJoinRules": "{username} pakeitė prisijungimo taisykles", + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheJoinRulesTo": "{username} pakeitė prisijungimo taisykles į: {joinRules}", + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "changedTheProfileAvatar": "{username} pakeitė savo avatarą", + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomAliases": "{username} pakeitė kambario pseudonimus", + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomInvitationLink": "{username} pakeitė pakvietimo nuorodą", + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "videoWithSize": "Vaizdo įrašas ({size})", + "@videoWithSize": { + "type": "String", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "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": { + "type": "String" + } + } + }, + "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": { + "type": "String" + } + } + }, + "youHaveWithdrawnTheInvitationFor": "Jūs atšaukėte kvietimą {user}", + "@youHaveWithdrawnTheInvitationFor": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youInvitedBy": "📩 Jus pakvietė {user}", + "@youInvitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youKicked": "👞 Jūs išmetėte {user}", + "@youKicked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youInvitedUser": "📩 Pakvietėte {user}", + "@youInvitedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youKickedAndBanned": "🙅 Jūs išmetėte ir užblokavote {user}", + "@youKickedAndBanned": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youUnbannedUser": "Jūs atblokavote {user}", + "@youUnbannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "dateWithoutYear": "{month}-{day}", + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "dateWithYear": "{year}-{month}-{day}", + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "locationDisabledNotice": "Vietos nustatymo paslaugos yra išjungtos. Kad galėtumėte bendrinti savo buvimo vietą, įjunkite jas.", + "@locationDisabledNotice": { + "type": "String", + "placeholders": {} + }, + "noMatrixServer": "{server1} nėra Matrix serveris, ar vietoj jo naudoti {server2}?", + "@noMatrixServer": { + "type": "String", + "placeholders": { + "server1": { + "type": "String" + }, + "server2": { + "type": "String" + } + } + }, + "numUsersTyping": "{count} vartotojai rašo…", + "@numUsersTyping": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "enableMultiAccounts": "(BETA) Įgalinkite kelias paskyras šiame įrenginyje", + "@enableMultiAccounts": {}, + "openInMaps": "Atidaryti žemėlapiuose", + "@openInMaps": { + "type": "String", + "placeholders": {} + }, + "sentAPicture": "🖼️ {username} atsiuntė nuotrauką", + "@sentAPicture": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAVideo": "🎥 {username} atsiuntė vaizdo įrašą", + "@sentAVideo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentCallInformations": "{senderName} išsiuntė skambučio informaciją", + "@sentCallInformations": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "setCustomEmotes": "Nustatyti pasirinktinius jaustukus", + "@setCustomEmotes": { + "type": "String", + "placeholders": {} + }, + "userLeftTheChat": "🚪 {username} paliko pokalbį", + "@userLeftTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "markAsRead": "Žymėti kaip skaitytą", + "@markAsRead": {}, + "pushRules": "Tiesioginių pranešimų taisyklės", + "@pushRules": { + "type": "String", + "placeholders": {} + }, + "unreadChats": "{unreadCount, plural, =1{1 unread chat} other{{unreadCount} neperskaityti pokalbiai}}", + "@unreadChats": { + "type": "String", + "placeholders": { + "unreadCount": { + "type": "int" + } + } + }, + "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": "String", + "placeholders": {} + }, + "autoplayImages": "Automatiškai leisti animuotus lipdukus ir jaustukus", + "@autoplayImages": { + "type": "String", + "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": "String", + "placeholders": { + "mxid": { + "type": "String" + } + } + }, + "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": { + "type": "int" + } + } + }, + "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": { + "type": "String" + } + } + }, + "hideUnimportantStateEvents": "Slėpti nesvarbius būsenos įvykius", + "@hideUnimportantStateEvents": {} +} diff --git a/lib/l10n/intl_lv.arb b/lib/l10n/intl_lv.arb new file mode 100644 index 0000000..fb18216 --- /dev/null +++ b/lib/l10n/intl_lv.arb @@ -0,0 +1,3474 @@ +{ + "showPassword": "Rādīt paroli", + "@showPassword": { + "type": "String", + "placeholders": {} + }, + "hugContent": "{senderName} apskauj Tevi", + "@hugContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "darkTheme": "Tumšs", + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "passphraseOrKey": "paroles vārdkopa vai atkopes atslēga", + "@passphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPassword": "Lūgums ievadīt savu paroli", + "@pleaseEnterYourPassword": { + "type": "String", + "placeholders": {} + }, + "theyMatch": "Tās sakrīt", + "@theyMatch": { + "type": "String", + "placeholders": {} + }, + "connect": "Savienot", + "@connect": { + "type": "String", + "placeholders": {} + }, + "jumpToLastReadMessage": "Pārlēkt uz pēdējo izlasīto ziņu", + "@jumpToLastReadMessage": {}, + "allRooms": "Visām kopu tērzēšanām", + "@allRooms": { + "type": "String", + "placeholders": {} + }, + "obtainingLocation": "Iegūst atrašanās vietu…", + "@obtainingLocation": { + "type": "String", + "placeholders": {} + }, + "commandHint_cuddle": "Nosūtīt samīļojienu", + "@commandHint_cuddle": {}, + "chats": "Tērzēšanas", + "@chats": { + "type": "String", + "placeholders": {} + }, + "widgetVideo": "Video", + "@widgetVideo": {}, + "dismiss": "Atmest", + "@dismiss": {}, + "unknownDevice": "Nezināma ierīce", + "@unknownDevice": { + "type": "String", + "placeholders": {} + }, + "emoteShortcode": "Emocijas īskods", + "@emoteShortcode": { + "type": "String", + "placeholders": {} + }, + "noEncryptionForPublicRooms": "Šifrēšanu var iespējot tikai tad, kad istaba vairs nav publiski pieejama.", + "@noEncryptionForPublicRooms": { + "type": "String", + "placeholders": {} + }, + "admin": "Pārvaldītājs", + "@admin": { + "type": "String", + "placeholders": {} + }, + "reportErrorDescription": "😭 Ak nē! Kaut kas nogāja greizi. Ja ir vēlēšanas, par šo nepilnību var ziņot izstrādātājiem.", + "@reportErrorDescription": {}, + "directChats": "Tiešās tērzēšanas", + "@directChats": { + "type": "String", + "placeholders": {} + }, + "setPermissionsLevel": "Iestatīt atļauju līmeni", + "@setPermissionsLevel": { + "type": "String", + "placeholders": {} + }, + "inviteContactToGroup": "Uzaicināt kontaktpersonu {groupName}", + "@inviteContactToGroup": { + "type": "String", + "placeholders": { + "groupName": { + "type": "String" + } + } + }, + "addAccount": "Pievienot kontu", + "@addAccount": {}, + "close": "Aizvērt", + "@close": { + "type": "String", + "placeholders": {} + }, + "configureChat": "Konfigurēt tērzēšanu", + "@configureChat": { + "type": "String", + "placeholders": {} + }, + "chatHasBeenAddedToThisSpace": "Šai vietai tika pievienota tērzēšana", + "@chatHasBeenAddedToThisSpace": {}, + "reply": "Atbildēt", + "@reply": { + "type": "String", + "placeholders": {} + }, + "currentlyActive": "Pašreiz darbīgi", + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "removeYourAvatar": "Noņemt savu attēlu", + "@removeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "unsupportedAndroidVersion": "Neatbalstīta Android versija", + "@unsupportedAndroidVersion": {}, + "device": "Ierīce", + "@device": { + "type": "String", + "placeholders": {} + }, + "blockDevice": "Liegt ierīci", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "commandHint_html": "Nosūtīt ar HTML formatētu tekstu", + "@commandHint_html": { + "type": "String", + "description": "Usage hint for the command /html" + }, + "widgetJitsi": "Jitsi Meet", + "@widgetJitsi": {}, + "youAreNoLongerParticipatingInThisChat": "Tu vairs nepiedalies šajā tērzēšanā", + "@youAreNoLongerParticipatingInThisChat": { + "type": "String", + "placeholders": {} + }, + "encryption": "Šifrēšana", + "@encryption": { + "type": "String", + "placeholders": {} + }, + "messageType": "Ziņas veids", + "@messageType": {}, + "indexedDbErrorLong": "Diemžēl ziņu krātuve pēc noklusējuma nav iespējota privātajā režīmā.\nLūgums apmeklēt\n - about:config\n - iestatīt dom.indexedDB.privateBrowsing.enabled kā true\nPretējā gadījumā nav iespējams palaist FluffyChat.", + "@indexedDbErrorLong": {}, + "oneClientLoggedOut": "Viens no klientiem ir atteicies", + "@oneClientLoggedOut": {}, + "toggleMuted": "Pārslēgt apklusināšanu", + "@toggleMuted": { + "type": "String", + "placeholders": {} + }, + "unsupportedAndroidVersionLong": "Šai iespējai ir nepieciešama jaunāka Android versija. Lūgums pārbaudīt atjauninājumus vai Lineage OS atbalstu.", + "@unsupportedAndroidVersionLong": {}, + "kicked": "👞 {username} izmeta {targetName}", + "@kicked": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "title": "FluffyChat", + "@title": { + "description": "Title for the application", + "type": "String", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "Mainīt kopas nosaukumu", + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "changedTheChatAvatar": "{username} nomainīja tērzēšanas attēlu", + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "verifySuccess": "Apliecināšana bija sekmīga.", + "@verifySuccess": { + "type": "String", + "placeholders": {} + }, + "sendFile": "Nosūtīt datni", + "@sendFile": { + "type": "String", + "placeholders": {} + }, + "newVerificationRequest": "Jauns apliecināšanas pieprasījums.", + "@newVerificationRequest": { + "type": "String", + "placeholders": {} + }, + "startFirstChat": "Uzsāc savu pirmo tērzēšanu", + "@startFirstChat": {}, + "callingAccount": "Zvanīšanas konts", + "@callingAccount": {}, + "requestPermission": "Pieprasīt atļauju", + "@requestPermission": { + "type": "String", + "placeholders": {} + }, + "sentAPicture": "🖼️ {username} nosūtīja attēlu", + "@sentAPicture": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "invited": "Uzaicināts", + "@invited": { + "type": "String", + "placeholders": {} + }, + "changedTheDisplaynameTo": "{username} nomainīja savu attēlojamo vārdu uz '{displayname}'", + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "setColorTheme": "Iestatīt krāsu izskatu:", + "@setColorTheme": {}, + "nextAccount": "Nākamais konts", + "@nextAccount": {}, + "commandHint_create": "Izveidot tukšu kopas tērzēšanu\nLai atspējotu šifrēšanu, jāizmanto --no-encryption", + "@commandHint_create": { + "type": "String", + "description": "Usage hint for the command /create" + }, + "singlesignon": "Vienotā pieteikšanās", + "@singlesignon": { + "type": "String", + "placeholders": {} + }, + "warning": "Uzmanību!", + "@warning": { + "type": "String", + "placeholders": {} + }, + "password": "Parole", + "@password": { + "type": "String", + "placeholders": {} + }, + "allSpaces": "Visas vietas", + "@allSpaces": {}, + "supposedMxid": "Tam būtu jābūt {mxid}", + "@supposedMxid": { + "type": "String", + "placeholders": { + "mxid": { + "type": "String" + } + } + }, + "editDisplayname": "Labot attēlojamo vārdu", + "@editDisplayname": { + "type": "String", + "placeholders": {} + }, + "user": "Lietotājs", + "@user": {}, + "roomVersion": "Istabas versija", + "@roomVersion": { + "type": "String", + "placeholders": {} + }, + "sentAFile": "📁 {username} nosūtīja datni", + "@sentAFile": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "videoCall": "Videozvans", + "@videoCall": { + "type": "String", + "placeholders": {} + }, + "youAcceptedTheInvitation": "👍 Tu pieņēmi uzaicinājumu", + "@youAcceptedTheInvitation": {}, + "banFromChat": "Izslēgt no tērzēšanas", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "noMatrixServer": "{server1} nav Matrix serveris, tā vietā izmantot {server2}?", + "@noMatrixServer": { + "type": "String", + "placeholders": { + "server1": { + "type": "String" + }, + "server2": { + "type": "String" + } + } + }, + "userAndOthersAreTyping": "{username} un {count} citi raksta…", + "@userAndOthersAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "youInvitedBy": "📩 {user} Tevi uzaicināja", + "@youInvitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "userIsTyping": "{username} raksta…", + "@userIsTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "openAppToReadMessages": "Atvērt lietotni, lai lasītu ziņas", + "@openAppToReadMessages": { + "type": "String", + "placeholders": {} + }, + "sentAVideo": "🎥 {username} nosūtīja video", + "@sentAVideo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "banUserDescription": "Lietotājam tiks liegta piekļuve tērzēšanai, un vairs nevarēs vēlreiz pievienoties tērzēšanai, līdz liegums tiks atcelts.", + "@banUserDescription": {}, + "inviteContact": "Uzaicināt kontaktpersonu", + "@inviteContact": { + "type": "String", + "placeholders": {} + }, + "askSSSSSign": "Lai varētu parakstīt otru cilvēku, lūgums ievadīt savu drošo krātuves paroles vārdkopu vai atkopes atslēgu.", + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "widgetEtherpad": "Teksta piezīme", + "@widgetEtherpad": {}, + "waitingPartnerAcceptRequest": "Gaida, līdz biedrs apstiprinās pieprasījumu…", + "@waitingPartnerAcceptRequest": { + "type": "String", + "placeholders": {} + }, + "remove": "Noņemt", + "@remove": { + "type": "String", + "placeholders": {} + }, + "writeAMessage": "Rakstīt ziņu…", + "@writeAMessage": { + "type": "String", + "placeholders": {} + }, + "changeTheme": "Mainīt izskatu", + "@changeTheme": { + "type": "String", + "placeholders": {} + }, + "id": "Id", + "@id": { + "type": "String", + "placeholders": {} + }, + "removeDevicesDescription": "Tu tiksi izrakstīts no šīs ierīces un vairs nevarēsi saņemt ziņas.", + "@removeDevicesDescription": {}, + "changedTheChatDescriptionTo": "{username} nomainīja tērzēšanas aprakstu uz '{description}'", + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "countParticipants": "{count} dalībnieki", + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "separateChatTypes": "Atdalīt tiešās tērzēšanas un kopas", + "@separateChatTypes": { + "type": "String", + "placeholders": {} + }, + "tryAgain": "Jāmēģina vēlreiz", + "@tryAgain": {}, + "areGuestsAllowedToJoin": "Vai vieslietotājiem ir ļauts pievienoties", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "blocked": "Liegta", + "@blocked": { + "type": "String", + "placeholders": {} + }, + "youKickedAndBanned": "🙅 Izraidīji {user} un liedzi piekļuvi", + "@youKickedAndBanned": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "dateWithoutYear": "{day}.{month}.", + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "removeDevice": "Noņemt ierīci", + "@removeDevice": { + "type": "String", + "placeholders": {} + }, + "unbanUserDescription": "Lietotājs varēs atkal pievienoties tērzēšanai, ja mēģinās.", + "@unbanUserDescription": {}, + "userAndUserAreTyping": "{username} un {username2} raksta…", + "@userAndUserAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "username2": { + "type": "String" + } + } + }, + "pleaseClickOnLink": "Lūgums klikšķināt uz saites e-pastā un tad turpināt.", + "@pleaseClickOnLink": { + "type": "String", + "placeholders": {} + }, + "saveFile": "Saglabāt datni", + "@saveFile": { + "type": "String", + "placeholders": {} + }, + "sendOnEnter": "Nosūtīt ar Enter", + "@sendOnEnter": {}, + "pickImage": "Izvēlēties attēlu", + "@pickImage": { + "type": "String", + "placeholders": {} + }, + "answeredTheCall": "{senderName} atbildēja uz zvanu", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "youRejectedTheInvitation": "Tu noraidīji uzaicinājumu", + "@youRejectedTheInvitation": {}, + "otherCallingPermissions": "Mikrofons, kamera un citas FluffyChat atļaujas", + "@otherCallingPermissions": {}, + "messagesStyle": "Ziņas:", + "@messagesStyle": {}, + "couldNotDecryptMessage": "Nevarēja atšifrēt ziņu: {error}", + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "invitedUsersOnly": "Tikai uzaicināti lietotāji", + "@invitedUsersOnly": { + "type": "String", + "placeholders": {} + }, + "link": "Saite", + "@link": {}, + "widgetUrlError": "Tas nav derīgs URL.", + "@widgetUrlError": {}, + "emailOrUsername": "E-pasta adrese vai lietotājvārds", + "@emailOrUsername": {}, + "newSpaceDescription": "Vietas ļauj apvienot tērzēšanas un būvēt privātas vai publiskas kopienas.", + "@newSpaceDescription": {}, + "chatDescription": "Tērzēšanas apraksts", + "@chatDescription": {}, + "callingAccountDetails": "Ļauj FluffyChat izmantot iebūvēto Android zvanīšanas lietotni.", + "@callingAccountDetails": {}, + "next": "Nākamais", + "@next": { + "type": "String", + "placeholders": {} + }, + "pleaseFollowInstructionsOnWeb": "Lūgums sekot norādēm tīmekļvietnē un piesist \"Nākamais\".", + "@pleaseFollowInstructionsOnWeb": { + "type": "String", + "placeholders": {} + }, + "changedTheGuestAccessRules": "{username} nomainīja viesu piekļuves nosacījumus", + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "dateWithYear": "{year}.{month}.{day}", + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "editRoomAliases": "Labot istabu aizstājvārdus", + "@editRoomAliases": { + "type": "String", + "placeholders": {} + }, + "enterSpace": "Ieiet vietā", + "@enterSpace": {}, + "encryptThisChat": "Šifrēt šo tērzēšanu", + "@encryptThisChat": {}, + "fileName": "Datnes nosaukums", + "@fileName": { + "type": "String", + "placeholders": {} + }, + "unavailable": "Nav pieejams", + "@unavailable": { + "type": "String", + "placeholders": {} + }, + "previousAccount": "Iepriekšējais konts", + "@previousAccount": {}, + "publicRooms": "Publiskas istabas", + "@publicRooms": { + "type": "String", + "placeholders": {} + }, + "fromTheInvitation": "No uzaicinājuma", + "@fromTheInvitation": { + "type": "String", + "placeholders": {} + }, + "sendMessages": "Nosūtīt ziņas", + "@sendMessages": { + "type": "String", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "Nepareiza paroles vārdkopa vai atkopes atslēga", + "@incorrectPassphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "emoteWarnNeedToPick": "Nepieciešams izvēlēties emocijas īskodu un attēlu.", + "@emoteWarnNeedToPick": { + "type": "String", + "placeholders": {} + }, + "reopenChat": "Atkārtoti atvērt tērzēšanu", + "@reopenChat": {}, + "pleaseEnterRecoveryKey": "Lūgums ievadīt savu atkopes atslēgu:", + "@pleaseEnterRecoveryKey": {}, + "create": "Izveidot", + "@create": { + "type": "String", + "placeholders": {} + }, + "toggleFavorite": "Pārslēgt iecienīto", + "@toggleFavorite": { + "type": "String", + "placeholders": {} + }, + "no": "Nē", + "@no": { + "type": "String", + "placeholders": {} + }, + "alias": "aizstājvārds", + "@alias": { + "type": "String", + "placeholders": {} + }, + "widgetNameError": "Lūgums norādīt attēlojamo nosaukumu.", + "@widgetNameError": {}, + "inoffensive": "Nav aizskarošs", + "@inoffensive": { + "type": "String", + "placeholders": {} + }, + "unpin": "Atspraust", + "@unpin": { + "type": "String", + "placeholders": {} + }, + "addToBundle": "Pievienot komplektam", + "@addToBundle": {}, + "reportMessage": "Ziņot par ziņu", + "@reportMessage": { + "type": "String", + "placeholders": {} + }, + "spaceIsPublic": "Vieta ir publiska", + "@spaceIsPublic": { + "type": "String", + "placeholders": {} + }, + "addWidget": "Pievienot logrīku", + "@addWidget": {}, + "all": "Viss", + "@all": { + "type": "String", + "placeholders": {} + }, + "removeAllOtherDevices": "Noņemt visas pārējās ierīces", + "@removeAllOtherDevices": { + "type": "String", + "placeholders": {} + }, + "unblockDevice": "Atslēgt ierīci", + "@unblockDevice": { + "type": "String", + "placeholders": {} + }, + "countFiles": "{count} datnes", + "@countFiles": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "noKeyForThisMessage": "Tā var notikt, ja ziņa tika nosūtīta, pirms pieteicies savā kontā šajā ierīcē.\n\nIr arī iespējams, ka sūtītājs noliedza Tavu ierīci vai kaut kas nogāja greizi ar interneta savienojumu.\n\nVai ziņas ir lasāmas citā sesijā? Tad Tu vari pārsūtīt ziņu no tās. Jādodas uz Iestatījumi > Ierīces un jāpārliecinās, ka ierīces viena otru ir apliecinājušas. Kad nākamreiz atvērsi istabu un abas sesijas būs priekšplānā, atslēgas tiks automātiski pārsūtītas.\n\nVai nevēlies zaudēt atslēgas, kad atsakies vai maini ierīces? Jāpārliecinās, ka iestatījumos ir iespējota tērzēšanu rezerves kopija.", + "@noKeyForThisMessage": {}, + "enableEncryptionWarning": "Vairs nebūs iespējams atspējot šifrēšanu. Vai tiešām to darīt?", + "@enableEncryptionWarning": { + "type": "String", + "placeholders": {} + }, + "inviteText": "{username} uzaicināja pievienoties FluffyChat.\n1. Jāapmeklē fluffychat.im un jāuzstāda lietotne \n2. Jāizveido konts vai jāpiesakās \n3. Jāatver uzaicinājuma saite: \n {link}", + "@inviteText": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "link": { + "type": "String" + } + } + }, + "shareLocation": "Kopīgot atrašanās vietu", + "@shareLocation": { + "type": "String", + "placeholders": {} + }, + "reason": "Iemesls", + "@reason": { + "type": "String", + "placeholders": {} + }, + "commandHint_markasgroup": "Atzīmēt kā kopu", + "@commandHint_markasgroup": {}, + "errorObtainingLocation": "Kļūda atrašanās vietas iegūšanā: {error}", + "@errorObtainingLocation": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "hydrateTor": "TOR lietotāji: ievietot sesijas izguvi", + "@hydrateTor": {}, + "pushNotificationsNotAvailable": "Pašpiegādes paziņojumi nav pieejami", + "@pushNotificationsNotAvailable": {}, + "passwordRecovery": "Paroles atkope", + "@passwordRecovery": { + "type": "String", + "placeholders": {} + }, + "storeInAppleKeyChain": "Glabāt Apple KeyChain", + "@storeInAppleKeyChain": {}, + "replaceRoomWithNewerVersion": "Aizvietot istabu ar jaunāku versiju", + "@replaceRoomWithNewerVersion": { + "type": "String", + "placeholders": {} + }, + "hydrate": "Atjaunot no rezerves kopijas datnes", + "@hydrate": {}, + "invalidServerName": "Nederīgs servera nosaukums", + "@invalidServerName": {}, + "chatPermissions": "Tērzēšanas atļaujas", + "@chatPermissions": {}, + "voiceMessage": "Balss ziņa", + "@voiceMessage": { + "type": "String", + "placeholders": {} + }, + "badServerLoginTypesException": "Mājasserveris nodrošina pieteikšanās veidus:\n{serverVersions}\nSavukārt, šī lietotne atbalsta tikai:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "wipeChatBackup": "Notīrīt tērzēšanu rezerves kopiju, lai izveidotu jaunu atkopes atslēgu?", + "@wipeChatBackup": { + "type": "String", + "placeholders": {} + }, + "cantOpenUri": "Nevar atvērt adresi {uri}", + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "sender": "Sūtītājs", + "@sender": {}, + "storeInAndroidKeystore": "Glabāt Android KeyStore", + "@storeInAndroidKeystore": {}, + "hideRedactedEvents": "Paslēpt labošanas notikumus", + "@hideRedactedEvents": { + "type": "String", + "placeholders": {} + }, + "online": "Tiešsaistē", + "@online": { + "type": "String", + "placeholders": {} + }, + "signInWithPassword": "Pieteikties ar paroli", + "@signInWithPassword": {}, + "lastActiveAgo": "Pēdējoreiz tiešsaistē: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "String", + "placeholders": { + "localizedTimeShort": { + "type": "String" + } + } + }, + "changedTheGuestAccessRulesTo": "{username} nomainīja viesu piekļuves nosacījumus uz {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "weSentYouAnEmail": "Mēs nosūtīja e-pasta ziņu", + "@weSentYouAnEmail": { + "type": "String", + "placeholders": {} + }, + "offensive": "Aizskarošs", + "@offensive": { + "type": "String", + "placeholders": {} + }, + "needPantalaimonWarning": "Lūgums ņemt vērā, ka pagaidām ir nepieciešams Pantalaimon, lai izmantotu pilnīgu šifrēšanu.", + "@needPantalaimonWarning": { + "type": "String", + "placeholders": {} + }, + "makeAdminDescription": "Tiklīdz šis lietotājs tiks padarīts par pārvaldītāju, to vairs nevarēs atdarīt, jo tad tam būs tādas pašas atļaujas kā Tev.", + "@makeAdminDescription": {}, + "edit": "Labot", + "@edit": { + "type": "String", + "placeholders": {} + }, + "loadMore": "Ielādēt vēl…", + "@loadMore": { + "type": "String", + "placeholders": {} + }, + "noEmotesFound": "Netika atrasta neviena emocija. 😕", + "@noEmotesFound": { + "type": "String", + "placeholders": {} + }, + "synchronizingPleaseWait": "Sinhronizē... Lūgums uzgaidīt.", + "@synchronizingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "transferFromAnotherDevice": "Pārnest no citas ierīces", + "@transferFromAnotherDevice": { + "type": "String", + "placeholders": {} + }, + "passwordHasBeenChanged": "Parole tikai nomainīta", + "@passwordHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "pushRules": "Pašpiegādes nosacījumi", + "@pushRules": { + "type": "String", + "placeholders": {} + }, + "goToTheNewRoom": "Doties uz jauno istabu", + "@goToTheNewRoom": { + "type": "String", + "placeholders": {} + }, + "commandHint_clearcache": "Iztīrīt kešatmiņu", + "@commandHint_clearcache": { + "type": "String", + "description": "Usage hint for the command /clearcache" + }, + "loadingPleaseWait": "Ielādē... Lūgums uzgaidīt.", + "@loadingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "copy": "Ievietot starpliktuvē", + "@copy": { + "type": "String", + "placeholders": {} + }, + "saveKeyManuallyDescription": "Šo atslēgu var pašrocīgi saglabāt ar sistēmas kopīgošanas dialogloga vai starpliktuves izsaukšanu.", + "@saveKeyManuallyDescription": {}, + "none": "Neviens", + "@none": { + "type": "String", + "placeholders": {} + }, + "editBundlesForAccount": "Labot šī konta komplektus", + "@editBundlesForAccount": {}, + "enableEncryption": "Iespējot šifrēšanu", + "@enableEncryption": { + "type": "String", + "placeholders": {} + }, + "whyIsThisMessageEncrypted": "Kādēļ šī ziņa ir nelasāma?", + "@whyIsThisMessageEncrypted": {}, + "unreadChats": "{unreadCount, plural, zero{{unreadCount} nelasītu tērzēšanu} =1{{unreadCount} nelasīta tērzēšana} other{{unreadCount} nelasītas tērzēšanas}}", + "@unreadChats": { + "type": "String", + "placeholders": { + "unreadCount": { + "type": "int" + } + } + }, + "rejectedTheInvitation": "{username} noraidīja uzaicinājumu", + "@rejectedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "setChatDescription": "Iestatīt tērzēšanas aprakstu", + "@setChatDescription": {}, + "userLeftTheChat": "🚪 {username} pameta tērzēšanu", + "@userLeftTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "spaceName": "Vietas nosaukums", + "@spaceName": { + "type": "String", + "placeholders": {} + }, + "importFromZipFile": "Ievietot no .zip datnes", + "@importFromZipFile": {}, + "toggleUnread": "Atzīmēt kā lasītu/nelasītu", + "@toggleUnread": { + "type": "String", + "placeholders": {} + }, + "or": "Vai", + "@or": { + "type": "String", + "placeholders": {} + }, + "dehydrateWarning": "Šī darbība nav atdarāma. Jānodrošina, ka rezerves kopijas datne tiek droši uzglabāta.", + "@dehydrateWarning": {}, + "sendOriginal": "Nosūtīt sākotnējo", + "@sendOriginal": { + "type": "String", + "placeholders": {} + }, + "noOtherDevicesFound": "Netika atrastas citas ierīces", + "@noOtherDevicesFound": {}, + "whoIsAllowedToJoinThisGroup": "Kuram ir ļauts pievienoties šai kopai", + "@whoIsAllowedToJoinThisGroup": { + "type": "String", + "placeholders": {} + }, + "emptyChat": "Tukša tērzēšana", + "@emptyChat": { + "type": "String", + "placeholders": {} + }, + "seenByUser": "{username} redzēja", + "@seenByUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "storeSecurlyOnThisDevice": "Droši uzglabāt šajā ierīcē", + "@storeSecurlyOnThisDevice": {}, + "yourChatBackupHasBeenSetUp": "Tērzēšanu rezerves kopēšana iestatīta.", + "@yourChatBackupHasBeenSetUp": {}, + "chatBackup": "Tērzēšanu rezerves kopēšana", + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "redactedBy": "Laboja {username}", + "@redactedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "submit": "Iesniegt", + "@submit": { + "type": "String", + "placeholders": {} + }, + "videoCallsBetaWarning": "Lūgums ņemt vērā, ka video zvani pašreiz ir beta stāvoklī. Tie visās platformās var nedarboties kā paredzēs vai pat nedarboties vispār.", + "@videoCallsBetaWarning": {}, + "unmuteChat": "Atcelt tērzēšanas apklusināšanu", + "@unmuteChat": { + "type": "String", + "placeholders": {} + }, + "createdTheChat": "💬 {username} izveidoja tērzēšanu", + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "redactedAnEvent": "{username} laboja notikumu", + "@redactedAnEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "autoplayImages": "Automātiski atskaņot animētas uzlīmes un emocijas", + "@autoplayImages": { + "type": "String", + "placeholder": {} + }, + "compareEmojiMatch": "Lūgums salīdzināt emocijzīmes", + "@compareEmojiMatch": { + "type": "String", + "placeholders": {} + }, + "participant": "Dalībnieks", + "@participant": { + "type": "String", + "placeholders": {} + }, + "logInTo": "PIeteikties {homeserver}", + "@logInTo": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "yes": "Jā", + "@yes": { + "type": "String", + "placeholders": {} + }, + "containsDisplayName": "Satur attēlojamo vārdu", + "@containsDisplayName": { + "type": "String", + "placeholders": {} + }, + "signInWith": "Pieteikties ar {provider}", + "@signInWith": { + "type": "String", + "placeholders": { + "provider": { + "type": "String" + } + } + }, + "username": "Lietotājvārds", + "@username": { + "type": "String", + "placeholders": {} + }, + "changedTheRoomAliases": "{username} nomainīja istabas aizstājvārdus", + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "fileIsTooBigForServer": "Nevar nosūtīt. Serveris nodrošina pielikums līdz {max}.", + "@fileIsTooBigForServer": {}, + "homeserver": "Mājasserveris", + "@homeserver": {}, + "help": "Palīdzība", + "@help": { + "type": "String", + "placeholders": {} + }, + "chatDetails": "Tērzēšanas izvērsums", + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "people": "Cilvēki", + "@people": { + "type": "String", + "placeholders": {} + }, + "changedTheHistoryVisibilityTo": "{username} nomainīja vēstures redzamību uz {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "leftTheChat": "Pameta tērzēšanu", + "@leftTheChat": { + "type": "String", + "placeholders": {} + }, + "verified": "Apliecināta", + "@verified": { + "type": "String", + "placeholders": {} + }, + "repeatPassword": "Atkārtot paroli", + "@repeatPassword": {}, + "setStatus": "Iestatīt stāvokli", + "@setStatus": { + "type": "String", + "placeholders": {} + }, + "groupWith": "Kopa ar {displayname}", + "@groupWith": { + "type": "String", + "placeholders": { + "displayname": { + "type": "String" + } + } + }, + "callingPermissions": "Zvanīšanas atļaujas", + "@callingPermissions": {}, + "delete": "Izdzēst", + "@delete": { + "type": "String", + "placeholders": {} + }, + "newMessageInFluffyChat": "💬 Jauna ziņa FluffyChat", + "@newMessageInFluffyChat": { + "type": "String", + "placeholders": {} + }, + "readUpToHere": "Izlasīts līdz šejienei", + "@readUpToHere": {}, + "start": "Uzsākt", + "@start": {}, + "downloadFile": "Lejupielādēt datni", + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "deviceId": "Ierīces Id", + "@deviceId": { + "type": "String", + "placeholders": {} + }, + "register": "Reģistrēties", + "@register": { + "type": "String", + "placeholders": {} + }, + "unlockOldMessages": "Atslēgt vecās ziņas", + "@unlockOldMessages": {}, + "identity": "Identitāte", + "@identity": { + "type": "String", + "placeholders": {} + }, + "numChats": "{number} tērzēšanas", + "@numChats": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "changedTheJoinRulesTo": "{username} nomainīja pievienošanās nosacījumus uz {joinRules}", + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "recording": "Ieraksta", + "@recording": { + "type": "String", + "placeholders": {} + }, + "changedTheChatPermissions": "{username} nomainīja tērzēšanas atļaujas", + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "moderator": "Moderators", + "@moderator": { + "type": "String", + "placeholders": {} + }, + "optionalRedactReason": "(Pēc izvēles) Ziņas labošanas iemesls...", + "@optionalRedactReason": {}, + "acceptedTheInvitation": "👍 {username} pieņēma uzaicinājumu", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "waitingPartnerEmoji": "Gaida, līdz biedrs apstiprinās emocijzīmes…", + "@waitingPartnerEmoji": { + "type": "String", + "placeholders": {} + }, + "channelCorruptedDecryptError": "Šifrēšana tika bojāta", + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "tryToSendAgain": "Mēģināt nosūtīt vēlreiz", + "@tryToSendAgain": { + "type": "String", + "placeholders": {} + }, + "guestsCanJoin": "Viesi var pievienoties", + "@guestsCanJoin": { + "type": "String", + "placeholders": {} + }, + "ok": "Labi", + "@ok": { + "type": "String", + "placeholders": {} + }, + "copyToClipboard": "Ievietot starpliktuvē", + "@copyToClipboard": { + "type": "String", + "placeholders": {} + }, + "dehydrate": "Izgūt sesiju un iztīrīt ierīci", + "@dehydrate": {}, + "locationPermissionDeniedNotice": "Atrašanās vietas atļauja noliegta. Lūgums nodrošināt to, lai būtu iespējams kopīgot savu atrašanās vietu.", + "@locationPermissionDeniedNotice": { + "type": "String", + "placeholders": {} + }, + "send": "Nosūtīt", + "@send": { + "type": "String", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "{username} atsauca uzaicinājumu {targetName}", + "@hasWithdrawnTheInvitationFor": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "visibleForAllParticipants": "Redzama visiem dalībniekiem", + "@visibleForAllParticipants": { + "type": "String", + "placeholders": {} + }, + "noRoomsFound": "Istabas netika atrastas…", + "@noRoomsFound": { + "type": "String", + "placeholders": {} + }, + "banned": "Izslēgts", + "@banned": { + "type": "String", + "placeholders": {} + }, + "sendAsText": "Nosūtīt kā tekstu", + "@sendAsText": { + "type": "String" + }, + "inviteForMe": "Uzaicinājumu man", + "@inviteForMe": { + "type": "String", + "placeholders": {} + }, + "archiveRoomDescription": "Tērzēšana tiks pārvietota uz arhīvu. Citi lietotāji redzēs, ka pameti tērzēšanu.", + "@archiveRoomDescription": {}, + "exportEmotePack": "Izgūt emociju paku kā .zip", + "@exportEmotePack": {}, + "changedTheChatNameTo": "{username} nomainīja tērzēšanas nosaukumu uz '{chatname}'", + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "sendSticker": "Nosūtīt uzlīmi", + "@sendSticker": { + "type": "String", + "placeholders": {} + }, + "account": "Konts", + "@account": { + "type": "String", + "placeholders": {} + }, + "switchToAccount": "Pārslēgties uz kontu {number}", + "@switchToAccount": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "commandInvalid": "Nederīga komanda", + "@commandInvalid": { + "type": "String" + }, + "setAsCanonicalAlias": "Iestatīt kā galveno aizstājvārdu", + "@setAsCanonicalAlias": { + "type": "String", + "placeholders": {} + }, + "whyDoYouWantToReportThis": "Kādēļ vēlies ziņot par šo?", + "@whyDoYouWantToReportThis": { + "type": "String", + "placeholders": {} + }, + "locationDisabledNotice": "Atrašanās vietas pakalpojumi ir atspējoti. Lūgums tos iespējot, lai būtu iespējams kopīgot savu atrašanās vietu.", + "@locationDisabledNotice": { + "type": "String", + "placeholders": {} + }, + "placeCall": "Veikt zvanu", + "@placeCall": {}, + "removedBy": "Noņēma {username}", + "@removedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomInvitationLink": "{username} nomainīja uzaicinājuma saiti", + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "newChat": "Jauna tērzēšana", + "@newChat": { + "type": "String", + "placeholders": {} + }, + "notifications": "Paziņojumi", + "@notifications": { + "type": "String", + "placeholders": {} + }, + "commandHint_plain": "Nosūtīt neformatētu tekstu", + "@commandHint_plain": { + "type": "String", + "description": "Usage hint for the command /plain" + }, + "emoteSettings": "Emociju iestatījumi", + "@emoteSettings": { + "type": "String", + "placeholders": {} + }, + "experimentalVideoCalls": "Izmēģinājuma video zvani", + "@experimentalVideoCalls": {}, + "openCamera": "Atvērt kameru", + "@openCamera": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterRecoveryKeyDescription": "Lai atslēgtu savas vecās ziņas, lūgums ievadīt savu atkopes atslēgu, kas tika izveidota iepriekšējā sesijā. Atkopes atslēga NAV parole.", + "@pleaseEnterRecoveryKeyDescription": {}, + "guestsAreForbidden": "Viesi nav ļauti", + "@guestsAreForbidden": { + "type": "String", + "placeholders": {} + }, + "mention": "Pieminēt", + "@mention": { + "type": "String", + "placeholders": {} + }, + "openInMaps": "Atvērt kartēs", + "@openInMaps": { + "type": "String", + "placeholders": {} + }, + "withTheseAddressesRecoveryDescription": "Ar šīm adresēm var atjaunot savu paroli.", + "@withTheseAddressesRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "inviteContactToGroupQuestion": "Vai vēlies uzaicināt {contact} uz tērzēšanu \"{groupName}\"?", + "@inviteContactToGroupQuestion": {}, + "emoteExists": "Emocija jau pastāv.", + "@emoteExists": { + "type": "String", + "placeholders": {} + }, + "redactedByBecause": "Laboja {username}, jo: \"{reason}\"", + "@redactedByBecause": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "reason": { + "type": "String" + } + } + }, + "isTyping": "raksta…", + "@isTyping": { + "type": "String", + "placeholders": {} + }, + "youHaveWithdrawnTheInvitationFor": "Tu atsauci {user} uzaicinājumu", + "@youHaveWithdrawnTheInvitationFor": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "chat": "Tērzēšana", + "@chat": { + "type": "String", + "placeholders": {} + }, + "group": "Kopa", + "@group": { + "type": "String", + "placeholders": {} + }, + "leave": "Pamest", + "@leave": { + "type": "String", + "placeholders": {} + }, + "skip": "Izlaist", + "@skip": { + "type": "String", + "placeholders": {} + }, + "appearOnTopDetails": "Ļauj lietotnei parādīties virspusē (nav nepieciešams, ja FluffyChat jau ir iestatīts kā zvanīšanas konts)", + "@appearOnTopDetails": {}, + "roomHasBeenUpgraded": "Istaba tika atjaunināta", + "@roomHasBeenUpgraded": { + "type": "String", + "placeholders": {} + }, + "enterRoom": "Ieiet istabā", + "@enterRoom": {}, + "enableEmotesGlobally": "Iespējot kā vispārēju emociju paku", + "@enableEmotesGlobally": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "Vai tiešām?", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "pleaseChooseAPasscode": "Lūgums izvēlēties piekļuves kodu", + "@pleaseChooseAPasscode": { + "type": "String", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "Vēl nav pievienots paroles atjaunošanas veids.", + "@noPasswordRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "changedTheProfileAvatar": "{username} nomainīja savu attēlu", + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "allChats": "Visas tērzēšanas", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "reportUser": "Ziņot par lietotāju", + "@reportUser": {}, + "sharedTheLocation": "{username} kopīgoja savu atrašanās vietu", + "@sharedTheLocation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "commandHint_send": "Nosūtīt tekstu", + "@commandHint_send": { + "type": "String", + "description": "Usage hint for the command /send" + }, + "onlineKeyBackupEnabled": "Tiešsaistes atslēgas rezerves kopēšana ir iespējota", + "@onlineKeyBackupEnabled": { + "type": "String", + "placeholders": {} + }, + "unbannedUser": "{username} atcēla {targetName} piekļuves liegumu", + "@unbannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "confirmEventUnpin": "Vai tiešām neatgriezeniski atspraust šo notikumu?", + "@confirmEventUnpin": {}, + "badServerVersionsException": "Mājasserveris nodrošina specifikācijas versijas:\n{serverVersions}\nSavukārt, lietotne atbalsta tikai {supportedVersions}", + "@badServerVersionsException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "youInvitedUser": "📩 Tu uzaicināji {user}", + "@youInvitedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "kickedAndBanned": "🙅 {username} izmeta {targetName} un liedza piekļuvi", + "@kickedAndBanned": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "noConnectionToTheServer": "Nav savienojuma ar serveri", + "@noConnectionToTheServer": { + "type": "String", + "placeholders": {} + }, + "fileHasBeenSavedAt": "Datne tika saglabāta {path}", + "@fileHasBeenSavedAt": { + "type": "String", + "placeholders": { + "path": { + "type": "String" + } + } + }, + "license": "Licence", + "@license": { + "type": "String", + "placeholders": {} + }, + "addToSpace": "Pievienot vietai", + "@addToSpace": {}, + "unbanFromChat": "Atcelt liegumu tērzēšanā", + "@unbanFromChat": { + "type": "String", + "placeholders": {} + }, + "commandMissing": "{command} nav komanda.", + "@commandMissing": { + "type": "String", + "placeholders": { + "command": { + "type": "String" + } + }, + "description": "State that {command} is not a valid /command." + }, + "redactMessageDescription": "Ziņa tiks labota visiem šīs sarunas dalībniekiem. To nevar atdarīt.", + "@redactMessageDescription": {}, + "rejoin": "Pievienoties atkārtoti", + "@rejoin": { + "type": "String", + "placeholders": {} + }, + "recoveryKey": "Atkopes atslēga", + "@recoveryKey": {}, + "redactMessage": "Labot ziņu", + "@redactMessage": { + "type": "String", + "placeholders": {} + }, + "forward": "Pārsūtīt", + "@forward": { + "type": "String", + "placeholders": {} + }, + "commandHint_discardsession": "Atmest sesiju", + "@commandHint_discardsession": { + "type": "String", + "description": "Usage hint for the command /discardsession" + }, + "invalidInput": "Nederīga ievade.", + "@invalidInput": {}, + "about": "Par", + "@about": { + "type": "String", + "placeholders": {} + }, + "chooseAStrongPassword": "Jāizvēlas droša parole", + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "dehydrateTorLong": "TOR lietotājiem ir ieteicams izgūt sesiju pirms loga aizvēršanas.", + "@dehydrateTorLong": {}, + "yourPublicKey": "Tava publiskā atslēga", + "@yourPublicKey": { + "type": "String", + "placeholders": {} + }, + "tooManyRequestsWarning": "Pārāk daudz pieprasījumu. Lūdzu, vēlāk mēģini vēlreiz!", + "@tooManyRequestsWarning": { + "type": "String", + "placeholders": {} + }, + "invitedUser": "📩 {username} uzaicināja {targetName}", + "@invitedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickFromChat": "Izmest no tērzēšanas", + "@kickFromChat": { + "type": "String", + "placeholders": {} + }, + "commandHint_myroomnick": "Iestatīt savu attēlojamo vārdu šajā istabā", + "@commandHint_myroomnick": { + "type": "String", + "description": "Usage hint for the command /myroomnick" + }, + "offline": "Bezsaistē", + "@offline": { + "type": "String", + "placeholders": {} + }, + "noPermission": "Nav atļaujas", + "@noPermission": { + "type": "String", + "placeholders": {} + }, + "doNotShowAgain": "Vairs nerādīt", + "@doNotShowAgain": {}, + "activatedEndToEndEncryption": "🔐 {username} iespējoja pilnīgu šifrēšanu", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "report": "Ziņot", + "@report": {}, + "status": "Stāvoklis", + "@status": { + "type": "String", + "placeholders": {} + }, + "compareNumbersMatch": "Lūgums salīdzināt skaitļus", + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "groupIsPublic": "Kopa ir publiska", + "@groupIsPublic": { + "type": "String", + "placeholders": {} + }, + "verifyStart": "Uzsākt apliecināšanu", + "@verifyStart": { + "type": "String", + "placeholders": {} + }, + "memberChanges": "Dalībnieku izmaiņām", + "@memberChanges": { + "type": "String", + "placeholders": {} + }, + "joinRoom": "Pievienoties istabai", + "@joinRoom": { + "type": "String", + "placeholders": {} + }, + "unverified": "Neapliecināta", + "@unverified": {}, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "String", + "placeholders": {} + }, + "howOffensiveIsThisContent": "Cik aizskarošs ir šis saturs?", + "@howOffensiveIsThisContent": { + "type": "String", + "placeholders": {} + }, + "serverRequiresEmail": "Šim serverim ir nepieciešams pārbaudīt Tavu e-pasta adresi reģistrācijai.", + "@serverRequiresEmail": {}, + "hideUnimportantStateEvents": "Paslēpt nebūtiskus stāvokļa notikumus", + "@hideUnimportantStateEvents": {}, + "screenSharingTitle": "ekrāna kopīgošana", + "@screenSharingTitle": {}, + "widgetCustom": "Pielāgots", + "@widgetCustom": {}, + "sentCallInformations": "{senderName} nosūtīja informāciju par zvanu", + "@sentCallInformations": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "addToSpaceDescription": "Atlasīt vietu, kurai pievienot šo tērzēšanu.", + "@addToSpaceDescription": {}, + "googlyEyesContent": "{senderName} sūta izbolītas acis", + "@googlyEyesContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "youBannedUser": "Tu {user} liedzi piekļuvi", + "@youBannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "theyDontMatch": "Tās nesakrīt", + "@theyDontMatch": { + "type": "String", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "Tev tika liegta piekļuve šai tērzēšanai", + "@youHaveBeenBannedFromThisChat": { + "type": "String", + "placeholders": {} + }, + "displaynameHasBeenChanged": "Attēlojamais vārds tika nomainīts", + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "addChatDescription": "Pievienot tērzēšanas aprakstu…", + "@addChatDescription": {}, + "sentAnAudio": "🎤 {username} nosūtīja skaņu", + "@sentAnAudio": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "editRoomAvatar": "Labot istabas attēlu", + "@editRoomAvatar": { + "type": "String", + "placeholders": {} + }, + "encrypted": "Šifrēta", + "@encrypted": { + "type": "String", + "placeholders": {} + }, + "commandHint_leave": "Pamest šo istabu", + "@commandHint_leave": { + "type": "String", + "description": "Usage hint for the command /leave" + }, + "commandHint_myroomavatar": "Iestatīt savu attēlu šajā istabā (ar mxc-uri)", + "@commandHint_myroomavatar": { + "type": "String", + "description": "Usage hint for the command /myroomavatar" + }, + "cancel": "Atcelt", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "hasKnocked": "🚪 {user} pieklauvēja", + "@hasKnocked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "publish": "Publicēt", + "@publish": {}, + "openLinkInBrowser": "Atvērt saiti pārlūkā", + "@openLinkInBrowser": {}, + "clearArchive": "Iztīrīt arhīvu", + "@clearArchive": {}, + "appLock": "Lietotnes aizslēgšana", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "commandHint_react": "Nosūtīt atbildi kā reakciju", + "@commandHint_react": { + "type": "String", + "description": "Usage hint for the command /react" + }, + "changedTheHistoryVisibility": "{username} mainīja vēstures redzamību", + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "commandHint_me": "Apraksti sevi", + "@commandHint_me": { + "type": "String", + "description": "Usage hint for the command /me" + }, + "pleaseEnterYourUsername": "Lūgums ievadīt savu lietotājvārdu", + "@pleaseEnterYourUsername": { + "type": "String", + "placeholders": {} + }, + "messageInfo": "Informācija par ziņu", + "@messageInfo": {}, + "disableEncryptionWarning": "Drošības iemeslu dēļ tērzēšanā nevar atspējot šifrēšanu, ja tā ir pirms tam ir bijusi iespējota.", + "@disableEncryptionWarning": {}, + "directChat": "Tiešā tērzēšana", + "@directChat": {}, + "encryptionNotEnabled": "Šifrēšana nav iespējota", + "@encryptionNotEnabled": { + "type": "String", + "placeholders": {} + }, + "wrongPinEntered": "Ievadīts nepareizs PIN. Lūgums mēģināt vēlreiz pēc {seconds} sekundēm...", + "@wrongPinEntered": { + "type": "String", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "sendTypingNotifications": "Nosūtīt rakstīšanas paziņojumus", + "@sendTypingNotifications": {}, + "lightTheme": "Gaišs", + "@lightTheme": { + "type": "String", + "placeholders": {} + }, + "inviteGroupChat": "📨 Uzaicinājums uz kopas tērzēšanu", + "@inviteGroupChat": {}, + "appearOnTop": "Parādīt virspusē", + "@appearOnTop": {}, + "invitePrivateChat": "📨 Uzaicinājums uz privātu tērzēšanu", + "@invitePrivateChat": {}, + "verifyTitle": "Apliecina citu kontu", + "@verifyTitle": { + "type": "String", + "placeholders": {} + }, + "foregroundServiceRunning": "Šis paziņojums parādās, kad darbojas priekšplāna pakalpojums.", + "@foregroundServiceRunning": {}, + "enterAnEmailAddress": "Jāievada e-pasta adrese", + "@enterAnEmailAddress": { + "type": "String", + "placeholders": {} + }, + "voiceCall": "Balss zvans", + "@voiceCall": {}, + "commandHint_kick": "Noņemt norādīto lietotāju no šīs istabas", + "@commandHint_kick": { + "type": "String", + "description": "Usage hint for the command /kick" + }, + "copiedToClipboard": "Ievietots starpliktuvē", + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "createNewSpace": "Jauna vieta", + "@createNewSpace": { + "type": "String", + "placeholders": {} + }, + "commandHint_unban": "Atcelt norādītā lietotāja izslēgšanu no šīs istabas", + "@commandHint_unban": { + "type": "String", + "description": "Usage hint for the command /unban" + }, + "unknownEncryptionAlgorithm": "Nezināms šifrēšanas algoritms", + "@unknownEncryptionAlgorithm": { + "type": "String", + "placeholders": {} + }, + "commandHint_ban": "Izslēgt norādīto lietotāju no šīs istabas", + "@commandHint_ban": { + "type": "String", + "description": "Usage hint for the command /ban" + }, + "importEmojis": "Ievietot emocijzīmes", + "@importEmojis": {}, + "confirm": "Apstiprināt", + "@confirm": { + "type": "String", + "placeholders": {} + }, + "wasDirectChatDisplayName": "Tukša tērzēšana (bija {oldDisplayName})", + "@wasDirectChatDisplayName": { + "type": "String", + "placeholders": { + "oldDisplayName": { + "type": "String" + } + } + }, + "noChatDescriptionYet": "Tērzēšanas apraksts vēl nav izveidots.", + "@noChatDescriptionYet": {}, + "defaultPermissionLevel": "Noklusējuma atļauju līmenis jauniem lietotājiem", + "@defaultPermissionLevel": { + "type": "String", + "placeholders": {} + }, + "removeFromBundle": "Noņemt no šī komplekta", + "@removeFromBundle": {}, + "numUsersTyping": "{count} lietotāji raksta…", + "@numUsersTyping": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "fontSize": "Fonta izmērs", + "@fontSize": { + "type": "String", + "placeholders": {} + }, + "whoCanPerformWhichAction": "Kurš var veikt kādas darbības", + "@whoCanPerformWhichAction": { + "type": "String", + "placeholders": {} + }, + "confirmMatrixId": "Lūgums apliecināt savu Matrix Id, lai varētu izdzēst savu kontu.", + "@confirmMatrixId": {}, + "learnMore": "Uzzināt vairāk", + "@learnMore": {}, + "iHaveClickedOnLink": "Es uzklikšķināju uz saites", + "@iHaveClickedOnLink": { + "type": "String", + "placeholders": {} + }, + "you": "Tu", + "@you": { + "type": "String", + "placeholders": {} + }, + "notAnImage": "Nav attēla datne.", + "@notAnImage": {}, + "users": "Lietotāji", + "@users": {}, + "openGallery": "Atvērt galeriju", + "@openGallery": {}, + "chatDescriptionHasBeenChanged": "Tērzēšanas apraksts ir mainījies", + "@chatDescriptionHasBeenChanged": {}, + "search": "Meklēt", + "@search": { + "type": "String", + "placeholders": {} + }, + "newGroup": "Jauna kopa", + "@newGroup": {}, + "bundleName": "Komplekta nosaukums", + "@bundleName": {}, + "dehydrateTor": "TOR lietotāji: izgūt sesiju", + "@dehydrateTor": {}, + "removeFromSpace": "Noņemt no vietas", + "@removeFromSpace": {}, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "commandHint_op": "Iestatīt norādītā lietotāja pilnvaru līmeni (noklusējums: 50)", + "@commandHint_op": { + "type": "String", + "description": "Usage hint for the command /op" + }, + "commandHint_join": "Pievienoties norādītajai istabai", + "@commandHint_join": { + "type": "String", + "description": "Usage hint for the command /join" + }, + "sourceCode": "Pirmkods", + "@sourceCode": { + "type": "String", + "placeholders": {} + }, + "roomUpgradeDescription": "Tērzēšana tad tiks atkārtoti izveidota ar jauno istabas versiju. Visiem dalībniekiem tiks paziņots, ka viņiem ir jāpārslēdzas uz jauno tērzēšanu. Vairāk par istabu versijām var atrast https://spec.matrix.org/latest/rooms/", + "@roomUpgradeDescription": {}, + "commandHint_invite": "Uzaicināt norādīto lietotāju šajā istabā", + "@commandHint_invite": { + "type": "String", + "description": "Usage hint for the command /invite" + }, + "userSentUnknownEvent": "{username} nosūtīja notikumu {type}", + "@userSentUnknownEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "type": { + "type": "String" + } + } + }, + "scanQrCode": "Nolasīt kvadrātkodu", + "@scanQrCode": {}, + "logout": "Atteikties", + "@logout": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterANumber": "Lūgums ievadīt skaitli lielāku par 0", + "@pleaseEnterANumber": {}, + "contactHasBeenInvitedToTheGroup": "Kontaktpersona tika uzaicināta kopā", + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "youKicked": "👞 Tu izraidīji {user}", + "@youKicked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "areYouSureYouWantToLogout": "Vai tiešām atteikties?", + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "changedTheJoinRules": "{username} nomainīja pievienošanās nosacījumus", + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "profileNotFound": "Lietotāju serverī nevarēja atrast. Varbūt ir nebūšanas ar savienojumu vai lietotājs nepastāv.", + "@profileNotFound": {}, + "jump": "Pārlēkt", + "@jump": {}, + "groups": "Kopas", + "@groups": { + "type": "String", + "placeholders": {} + }, + "reactedWith": "{sender} atsaucās ar {reaction}", + "@reactedWith": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "reaction": { + "type": "String" + } + } + }, + "bannedUser": "{username} izslēdza {targetName}", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "sorryThatsNotPossible": "Atvaino! Tas nav iespējams", + "@sorryThatsNotPossible": {}, + "videoWithSize": "Video ({size})", + "@videoWithSize": { + "type": "String", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "oopsSomethingWentWrong": "Ups! Kaut kas nogāja greizi…", + "@oopsSomethingWentWrong": { + "type": "String", + "placeholders": {} + }, + "loadCountMoreParticipants": "Ielādēt vēl {count} dalībniekus", + "@loadCountMoreParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "shareInviteLink": "Kopīgot uzaicinājuma saiti", + "@shareInviteLink": {}, + "commandHint_markasdm": "Atzīmēt kā tiešo ziņu istabu norādītajam Matrix Id", + "@commandHint_markasdm": {}, + "recoveryKeyLost": "Pazaudēta atkopes atslēga?", + "@recoveryKeyLost": {}, + "cuddleContent": "{senderName} samīļo Tevi", + "@cuddleContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "askVerificationRequest": "Pieņemt apliecināšanas pieprasījumu no {username}?", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "containsUserName": "Satur lietotājvārdu", + "@containsUserName": { + "type": "String", + "placeholders": {} + }, + "messages": "Ziņas", + "@messages": { + "type": "String", + "placeholders": {} + }, + "login": "Pieteikties", + "@login": { + "type": "String", + "placeholders": {} + }, + "deviceKeys": "Ierīces atslēgas:", + "@deviceKeys": {}, + "waitingPartnerNumbers": "Gaida, līdz biedrs apstiprinās skaitļus…", + "@waitingPartnerNumbers": { + "type": "String", + "placeholders": {} + }, + "noGoogleServicesWarning": "Izskatās, ka Firebase mākoņziņojumapmaiņa nav pieejama šajā ierīcē. Lai joprojām saņemtu pašpiegādes paziņojumus, mēs iesakām uzstādīt ntfy. Ar ntfy vai citu UnifiedPush nodrošinātāju ir iespējams saņemt pašpiegādes paziņojumus drošā veidā. ntfy var lejupielādēt no Play Store vai F-Droid.", + "@noGoogleServicesWarning": { + "type": "String", + "placeholders": {} + }, + "everythingReady": "Viss ir gatavs!", + "@everythingReady": { + "type": "String", + "placeholders": {} + }, + "addEmail": "Pievienot e-pasta adresi", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "emoteKeyboardNoRecents": "Nesen izmantotās emocijas parādīsies šeit...", + "@emoteKeyboardNoRecents": { + "type": "String", + "placeholders": {} + }, + "setCustomEmotes": "Iestatīt pielāgotas emocijas", + "@setCustomEmotes": { + "type": "String", + "placeholders": {} + }, + "startedACall": "{senderName} uzsāka zvanu", + "@startedACall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "emoteInvalid": "Nederīgs emocijas īskods.", + "@emoteInvalid": { + "type": "String", + "placeholders": {} + }, + "systemTheme": "Sistēmas", + "@systemTheme": { + "type": "String", + "placeholders": {} + }, + "notificationsEnabledForThisAccount": "Paziņojumi iespējoti šim kontam", + "@notificationsEnabledForThisAccount": { + "type": "String", + "placeholders": {} + }, + "deleteMessage": "Izdzēst ziņu", + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "Tērzēšanas vēstures redzamība", + "@visibilityOfTheChatHistory": { + "type": "String", + "placeholders": {} + }, + "settings": "Iestatījumi", + "@settings": { + "type": "String", + "placeholders": {} + }, + "setTheme": "Iestatīt izskatu:", + "@setTheme": {}, + "changeTheHomeserver": "Mainīt mājasserveri", + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "youJoinedTheChat": "Tu pievienojies tērzēšanai", + "@youJoinedTheChat": {}, + "wallpaper": "Ekrāntapete:", + "@wallpaper": { + "type": "String", + "placeholders": {} + }, + "openVideoCamera": "Atvērt kameru video uzņemšanai", + "@openVideoCamera": { + "type": "String", + "placeholders": {} + }, + "play": "Atskaņot {fileName}", + "@play": { + "type": "String", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "chatBackupDescription": "Iepriekšējās ziņas ir aizsargātas ar atkopes atslēgu. Lūgums nodrošināt, ka tā netiek pazaudēta.", + "@chatBackupDescription": { + "type": "String", + "placeholders": {} + }, + "changeDeviceName": "Mainīt ierīces nosaukumu", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "passwordForgotten": "Aizmirsta parole", + "@passwordForgotten": { + "type": "String", + "placeholders": {} + }, + "statusExampleMessage": "Kā Tev šodien klājas?", + "@statusExampleMessage": { + "type": "String", + "placeholders": {} + }, + "security": "Drošība", + "@security": { + "type": "String", + "placeholders": {} + }, + "markAsRead": "Atzīmēt kā lasītu", + "@markAsRead": {}, + "sendAudio": "Nosūtīt skaņu", + "@sendAudio": { + "type": "String", + "placeholders": {} + }, + "widgetName": "Nosaukums", + "@widgetName": {}, + "sentASticker": "😊 {username} nosūtīja uzlīmi", + "@sentASticker": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "errorAddingWidget": "Kļūda logrīka pievienošanā.", + "@errorAddingWidget": {}, + "commandHint_dm": "Uzsākt tiešu tērzēšanu\nLai atspējotu šifrēšanu, jāizmanto --no-encryption", + "@commandHint_dm": { + "type": "String", + "description": "Usage hint for the command /dm" + }, + "commandHint_hug": "Nosūtīt apskāvienu", + "@commandHint_hug": {}, + "replace": "Aizstāt", + "@replace": {}, + "reject": "Noraidīt", + "@reject": { + "type": "String", + "placeholders": {} + }, + "extremeOffensive": "Īpaši aizskarošs", + "@extremeOffensive": { + "type": "String", + "placeholders": {} + }, + "editBlockedServers": "Labot liegtos serverus", + "@editBlockedServers": { + "type": "String", + "placeholders": {} + }, + "oopsPushError": "Ups! Diemžēl atgadījās kļūda pašpiegādes paziņojumu iestatīšanas laikā.", + "@oopsPushError": { + "type": "String", + "placeholders": {} + }, + "youUnbannedUser": "Tu atcēli {user} piekļuves liegumu", + "@youUnbannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "deactivateAccountWarning": "Tas atspējos Tavu lietotāja kontu. To nevar atdarīt. Vai tiešām?", + "@deactivateAccountWarning": { + "type": "String", + "placeholders": {} + }, + "archive": "Arhīvs", + "@archive": { + "type": "String", + "placeholders": {} + }, + "joinedTheChat": "👋 {username} pievienojās tērzēšanai", + "@joinedTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "visibleForEveryone": "Redzama visiem", + "@visibleForEveryone": { + "type": "String", + "placeholders": {} + }, + "pleaseEnter4Digits": "Lūgums ievadīt 4 ciparus vai atstāt tukšu, lai atspējotu lietotnes slēgu.", + "@pleaseEnter4Digits": { + "type": "String", + "placeholders": {} + }, + "newSpace": "Jauna vieta", + "@newSpace": {}, + "changePassword": "Nomainīt paroli", + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "devices": "Ierīces", + "@devices": { + "type": "String", + "placeholders": {} + }, + "accept": "Pieņemt", + "@accept": { + "type": "String", + "placeholders": {} + }, + "unknownEvent": "Nezināms notikums '{type}'", + "@unknownEvent": { + "type": "String", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "emojis": "Emocijzīmes", + "@emojis": {}, + "pleaseEnterYourPin": "Lūgums ievadīt savu PIN", + "@pleaseEnterYourPin": { + "type": "String", + "placeholders": {} + }, + "pleaseChoose": "Lūgums izvēlēties", + "@pleaseChoose": { + "type": "String", + "placeholders": {} + }, + "share": "Kopīgot", + "@share": { + "type": "String", + "placeholders": {} + }, + "commandHint_googly": "Nosūtīt izbolītu acu pāri", + "@commandHint_googly": {}, + "pleaseTryAgainLaterOrChooseDifferentServer": "Lūgums vēlāk mēģināt vēlreiz vai izvēlēties citu serveri.", + "@pleaseTryAgainLaterOrChooseDifferentServer": {}, + "createGroup": "Izveidot kopu", + "@createGroup": {}, + "privacy": "Privātums", + "@privacy": { + "type": "String", + "placeholders": {} + }, + "changeYourAvatar": "Mainīt savu attēlu", + "@changeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "sendImage": "Nosūtīt attēlu", + "@sendImage": { + "type": "String", + "placeholders": {} + }, + "hydrateTorLong": "Vai sesija pēdējoreiz tika izgūta TOR? Ātri ievieto to un turpini tērzēšanu!", + "@hydrateTorLong": {}, + "time": "Laiks", + "@time": {}, + "enterYourHomeserver": "Jāievada mājasserveris", + "@enterYourHomeserver": { + "type": "String", + "placeholders": {} + }, + "botMessages": "Robotprogrammatūras ziņām", + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "contentHasBeenReported": "Par saturu tika ziņos servera pārvaldītājiem", + "@contentHasBeenReported": { + "type": "String", + "placeholders": {} + }, + "custom": "Pielāgots", + "@custom": {}, + "noBackupWarning": "Uzmanību! Bez tērzēšanu rezerves kopiju veidošanas iespējošanas tiks zaudēta piekļuve savām šifrētajām ziņām. Ir ļoti ieteicams iespējot tērzēšanu rezerves kopiju veidošanu pirms atteikšanās.", + "@noBackupWarning": {}, + "fromJoining": "No pievienošanās", + "@fromJoining": { + "type": "String", + "placeholders": {} + }, + "verify": "Apliecināt", + "@verify": { + "type": "String", + "placeholders": {} + }, + "sendVideo": "Nosūtīt video", + "@sendVideo": { + "type": "String", + "placeholders": {} + }, + "storeInSecureStorageDescription": "Glabāt atkopes atslēgu šīs ierīces drošajā krātuvē.", + "@storeInSecureStorageDescription": {}, + "openChat": "Atvērt tērzēšanu", + "@openChat": {}, + "kickUserDescription": "Lietotājs ir izmests no tērzēšanas, bet piekļuve nav liegta. Publiskās tērzēšanās lietotājs var atkārtoti pievienoties jebkurā laikā.", + "@kickUserDescription": {}, + "sendAMessage": "Nosūtīt ziņu", + "@sendAMessage": { + "type": "String", + "placeholders": {} + }, + "pin": "PIN", + "@pin": { + "type": "String", + "placeholders": {} + }, + "importNow": "Ievietot tagad", + "@importNow": {}, + "deleteAccount": "Izdzēst kontu", + "@deleteAccount": { + "type": "String", + "placeholders": {} + }, + "setInvitationLink": "Iestatīt uzaicinājumu saiti", + "@setInvitationLink": { + "type": "String", + "placeholders": {} + }, + "pinMessage": "Piespraust istabai", + "@pinMessage": {}, + "screenSharingDetail": "Tu kopīgo savu ekrānu FluffyChat", + "@screenSharingDetail": {}, + "muteChat": "Apklusināt tērzēšanu", + "@muteChat": { + "type": "String", + "placeholders": {} + }, + "invite": "Uzaicināt", + "@invite": {}, + "enableMultiAccounts": "(BETA) Iespējot vairākus kontus šajā ierīcē", + "@enableMultiAccounts": {}, + "anyoneCanJoin": "Ikviens var pievienoties", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "emotePacks": "Emociju pakas istabai", + "@emotePacks": { + "type": "String", + "placeholders": {} + }, + "indexedDbErrorTitle": "Privātā režīma nebūšanas", + "@indexedDbErrorTitle": {}, + "endedTheCall": "{senderName} beidza zvanu", + "@endedTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "appLockDescription": "Aizslēgt lietotni, kad tā netiek izmantota, ar PIN kodu", + "@appLockDescription": {}, + "globalChatId": "Vispārējais tērzēšanas Id", + "@globalChatId": {}, + "accessAndVisibilityDescription": "Kam ir ļauts pievienoties šai tērzēšanai un kā tērzēšana var tikt atklāta.", + "@accessAndVisibilityDescription": {}, + "customEmojisAndStickers": "Pielāgotas emocijzīmes un uzlīmes", + "@customEmojisAndStickers": {}, + "customEmojisAndStickersBody": "Pievienot vai kopīgot pielāgotas emocijzīmes vai uzlīmes, kas var tikt izmantotas jebkurā tērzēšanā.", + "@customEmojisAndStickersBody": {}, + "hideInvalidOrUnknownMessageFormats": "Paslēpt nederīgus vai nezināmus ziņu formātus", + "@hideInvalidOrUnknownMessageFormats": {}, + "blockUsername": "Neņemt vērā lietotājvārdu", + "@blockUsername": {}, + "accessAndVisibility": "Piekļuve un redzamība", + "@accessAndVisibility": {}, + "calls": "Zvani", + "@calls": {}, + "hideRedactedMessages": "Paslēpt labošanas ziņas", + "@hideRedactedMessages": {}, + "hideRedactedMessagesBody": "Ja kāds labo ziņu, tā vairs nebūs redzama tērzēšanā.", + "@hideRedactedMessagesBody": {}, + "blockListDescription": "Ir iespējams atslēgt traucējošus lietotājus. Nebūs iespējams saņem jebkādas ziņas vai uzaicinājumus uz istabām no lietotājiem, kas ir personīgajā izslēgšanas sarakstā.", + "@blockListDescription": {}, + "hideMemberChangesInPublicChatsBody": "Nerādīt tērzēšanas plūsmā, ja kāds pievienojas publiskai tērzēšanai vai pamet to, lai uzlabotu lasāmību.", + "@hideMemberChangesInPublicChatsBody": {}, + "overview": "Pārskats", + "@overview": {}, + "notifyMeFor": "Paziņot man par", + "@notifyMeFor": {}, + "wrongRecoveryKey": "Atvaino... Nešķiet, ka šī būtu pareiza atkopes atslēga.", + "@wrongRecoveryKey": {}, + "block": "Izslēgt", + "@block": {}, + "hideMemberChangesInPublicChats": "Paslēpt dalībnieku izmaiņas publiskajās tērzēšanās", + "@hideMemberChangesInPublicChats": {}, + "passwordRecoverySettings": "Paroles atkopes iestatījumi", + "@passwordRecoverySettings": {}, + "blockedUsers": "Atslēgtie lietotāji", + "@blockedUsers": {}, + "transparent": "Caurspīdīgs", + "@transparent": {}, + "searchForUsers": "Meklēt @lietotājus...", + "@searchForUsers": {}, + "pleaseEnterYourCurrentPassword": "Lūgums ievadīt savu pašreizējo paroli", + "@pleaseEnterYourCurrentPassword": {}, + "publicSpaces": "Publiskas vietas", + "@publicSpaces": {}, + "decline": "Atteikt", + "@decline": {}, + "joinSpace": "Pievienoties vietai", + "@joinSpace": {}, + "createGroupAndInviteUsers": "Izveidot kopu un uzaicināt lietotājus", + "@createGroupAndInviteUsers": {}, + "groupCanBeFoundViaSearch": "Kopu var atrast meklēšanā", + "@groupCanBeFoundViaSearch": {}, + "commandHint_sendraw": "Nosūtīt neapstrādātu JSON", + "@commandHint_sendraw": {}, + "newPassword": "Jauna parole", + "@newPassword": {}, + "forwardMessageTo": "Pārsūtīt ziņu uz {roomName}?", + "@forwardMessageTo": { + "type": "String", + "placeholders": { + "roomName": { + "type": "String" + } + } + }, + "sendReadReceipts": "Nosūtīt lasīšanas atskaites", + "@sendReadReceipts": {}, + "verifyOtherUser": "🔐 Apliecināt otru lietotāju", + "@verifyOtherUser": {}, + "verifyOtherDevice": "🔐 Apliecināt otru ierīci", + "@verifyOtherDevice": {}, + "yourGlobalUserIdIs": "Vispārējais lietotāja Id ir: ", + "@yourGlobalUserIdIs": {}, + "select": "Atlasīt", + "@select": {}, + "initAppError": "Atgadījās kļūda lietotnes sāknēšanas laikā", + "@initAppError": {}, + "formattedMessages": "Formatētas ziņas", + "@formattedMessages": {}, + "canceledKeyVerification": "{sender} atcēla atslēgas apliecināšanu", + "@canceledKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "completedKeyVerification": "{sender} pabeidza atslēgas apliecināšanu", + "@completedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "requestedKeyVerification": "{sender} pieprasīja atslēgas apliecināšanu", + "@requestedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "startedKeyVerification": "{sender} uzsāka atslēgas apliecināšanu", + "@startedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "incomingMessages": "Ienākošās ziņas", + "@incomingMessages": {}, + "isReadyForKeyVerification": "{sender} ir gatavs atslēgas apliecināšanai", + "@isReadyForKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "commandHint_unignore": "Atcelt norādītā Matrix Id neņemšanu vērā", + "@commandHint_unignore": {}, + "commandHint_ignore": "Neņemt vērā norādīto Matrix Id", + "@commandHint_ignore": {}, + "searchChatsRooms": "Meklēt #tērzēšanas, @lietotājus...", + "@searchChatsRooms": {}, + "groupName": "Kopas nosaukums", + "@groupName": {}, + "presenceStyle": "Klātesamība:", + "@presenceStyle": { + "type": "String", + "placeholders": {} + }, + "youInvitedToBy": "📩 Tu tiki uzaicināts ar saiti:\n{alias}", + "@youInvitedToBy": { + "placeholders": { + "alias": { + "type": "String" + } + } + }, + "userWouldLikeToChangeTheChat": "{user} vēlas pievienoties tērzēšanai.", + "@userWouldLikeToChangeTheChat": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "noPublicLinkHasBeenCreatedYet": "Vēl nav izveidota neviena publiska saite", + "@noPublicLinkHasBeenCreatedYet": {}, + "knock": "Pieklauvēt", + "@knock": {}, + "stickers": "Uzlīmes", + "@stickers": {}, + "usersMustKnock": "Lietotājiem jāpieklauvē", + "@usersMustKnock": {}, + "noOneCanJoin": "Neviens nevar pievienoties", + "@noOneCanJoin": {}, + "hidePresences": "Paslēpt stāvokļu sarakstu?", + "@hidePresences": {}, + "knocking": "Klauvē", + "@knocking": {}, + "chatCanBeDiscoveredViaSearchOnServer": "Tērzēšana var tikt atklāta ar meklēšanu {server}", + "@chatCanBeDiscoveredViaSearchOnServer": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "nothingFound": "Nekas netika atrasts...", + "@nothingFound": {}, + "startConversation": "Uzsākt sarunu", + "@startConversation": {}, + "databaseMigrationTitle": "Datubāze ir optimizēta", + "@databaseMigrationTitle": {}, + "leaveEmptyToClearStatus": "Atstāt tukšu, lai notīrītu savu stāvokli.", + "@leaveEmptyToClearStatus": {}, + "pleaseChooseAStrongPassword": "Lūgums izvēlēties spēcīgu paroli", + "@pleaseChooseAStrongPassword": {}, + "passwordIsWrong": "Ievadītā parole ir nepareiza", + "@passwordIsWrong": {}, + "publicLink": "Publiska saite", + "@publicLink": {}, + "thisDevice": "Šī ierīce:", + "@thisDevice": {}, + "acceptedKeyVerification": "{sender} apstiprināja atslēgas apliecināšanu", + "@acceptedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "userRole": "Lietotāja loma", + "@userRole": {}, + "noDatabaseEncryption": "Šajā platformā datubāzes šifrēšana netiek nodrošināta", + "@noDatabaseEncryption": {}, + "presencesToggle": "Rādīt citu lietotāju stāvokļa ziņas", + "@presencesToggle": { + "type": "String", + "placeholders": {} + }, + "databaseMigrationBody": "Lūgums uzgaidīt. Tas var aizņemt kādu brīdi.", + "@databaseMigrationBody": {}, + "passwordsDoNotMatch": "Paroles nesakrīt", + "@passwordsDoNotMatch": {}, + "publicChatAddresses": "Publiskas tērzēšanas adreses", + "@publicChatAddresses": {}, + "createNewAddress": "Izveidot jaunu adresi", + "@createNewAddress": {}, + "minimumPowerLevel": "{level} ir zemākais spēka līmenis.", + "@minimumPowerLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "String" + } + } + }, + "discover": "Atklāt", + "@discover": {}, + "unreadChatsInApp": "{appname}: {unread} nelasītas tērzēšanas", + "@unreadChatsInApp": { + "type": "String", + "placeholders": { + "appname": { + "type": "String" + }, + "unread": { + "type": "String" + } + } + }, + "subspace": "Apakšvieta", + "@subspace": {}, + "addChatOrSubSpace": "Pievienot tērzēšanu vai apakšvietu", + "@addChatOrSubSpace": {}, + "formattedMessagesDescription": "Attēlot bagātinātu ziņu saturu, piemēram, ar Markdown iezīmētu treknrakstu.", + "@formattedMessagesDescription": {}, + "databaseBuildErrorBody": "Nebija iespējams izveidot SQlite datubāzi. Lietotne pagaidām mēģina izmantot iepriekšējo datubāzi. Lūgums ziņot par šo kļūdu izstrādātājiem {url}. Kļūdas ziņojums ir: {error}", + "@databaseBuildErrorBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "sessionLostBody": "Sesija ir zaudēta. Lūgums ziņot par šo kļūdu izstrādātājiem {url}. Kļūdas ziņojums ir: {error}", + "@sessionLostBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "verifyOtherUserDescription": "Ar cita lietotāja apliecināšanu vari pārliecināties, ka zini, kam Tu tiešām raksti. 💪\n\nKad uzsāc apliecināšanu, Tu un otrs lietotājs lietotnē redzēs uznirstošo logu. Tajā jūs redzēsiet dažādas emocijzīmes vai skaitļus, kas ir jāsalīdzina savā starpā.\n\nLabākais veids, kā to izdarīt, ir satikties vai uzsākt videozvanu. 👭", + "@verifyOtherUserDescription": {}, + "sendTypingNotificationsDescription": "Citi tērzēšanas dalībnieki var redzēt, kad raksti jaunu ziņu.", + "@sendTypingNotificationsDescription": {}, + "noUsersFoundWithQuery": "Diemžēl ar \"{query}\" netika atrasts neviens lietotājs. Lūgums pārbaudīt, vai ir pieļauta drukas kļūda.", + "@noUsersFoundWithQuery": { + "type": "String", + "placeholders": { + "query": { + "type": "String" + } + } + }, + "restoreSessionBody": "Lietotne tagad mēģina atjaunot sesiju no rezerves kopijas. Lūgums ziņot par šo kļūdu izstrādātājiem {url}. Kļūdas ziņojums ir: {error}", + "@restoreSessionBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "sendReadReceiptsDescription": "Citi tērzēšanas dalībnieki var redzēt, kad izlasīji ziņu.", + "@sendReadReceiptsDescription": {}, + "thereAreCountUsersBlocked": "Šobrīd ir izslēgti {count} lietotāji.", + "@thereAreCountUsersBlocked": { + "type": "String", + "count": {} + }, + "verifyOtherDeviceDescription": "Kad apliecini citu ierīci, šīs ierīces var apmainīt atslēgas, palielinot vispārējo drošību. 💪 Pēc apliecināšanas uzsākšanas abās ierīcēs lietotnē parādīsies uznirstošais logs. Tajā būs redzamas dažādas emocijzīmes vai skaitļi, kas jāsalīdzina abās ierīcēs. Vislabāk, ja abas ierīces ir pieejamas, pirms tiek uzsākta apliecināšana. 🤳", + "@verifyOtherDeviceDescription": {}, + "swipeRightToLeftToReply": "Pavilkt no labās puses uz kreiso, lai atbildētu", + "@swipeRightToLeftToReply": {}, + "searchIn": "Meklēt tērzēšanā \"{chat}\"...", + "@searchIn": { + "type": "String", + "placeholders": { + "chat": { + "type": "String" + } + } + }, + "searchMore": "Meklēt vairāk...", + "@searchMore": {}, + "gallery": "Galerija", + "@gallery": {}, + "files": "Datnes", + "@files": {}, + "restricted": "Ierobežots", + "@restricted": {}, + "knockRestricted": "Pieklauvēt ierobežotajiem", + "@knockRestricted": {}, + "sendCanceled": "Sūtīšana atcelta", + "@sendCanceled": {}, + "noChatsFoundHere": "Šeit vēl nav tērzēšanu. Jauna saruna ar kādu ir uzsākama ar zemāk esošo pogu. ⤵️", + "@noChatsFoundHere": {}, + "invitedBy": "📩 {user} uzaicināja", + "@invitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "moderatorLevel": "{level} - Moderators", + "@moderatorLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "adminLevel": "{level} - Pārvaldītājs", + "@adminLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "changeTheVisibilityOfChatHistory": "Mainīt tērzēšanas vēstures redzamību", + "@changeTheVisibilityOfChatHistory": {}, + "changeTheCanonicalRoomAlias": "Mainīt tērzēšanas galveno publisko adresi", + "@changeTheCanonicalRoomAlias": {}, + "sendRoomNotifications": "Sūtīt @istaba paziņojumus", + "@sendRoomNotifications": {}, + "changeTheDescriptionOfTheGroup": "Mainīt tērzēšanas aprakstu", + "@changeTheDescriptionOfTheGroup": {}, + "alwaysUse24HourFormat": "nē", + "@alwaysUse24HourFormat": { + "description": "Set to true to always display time of day in 24 hour format." + }, + "userLevel": "{level} - Lietotājs", + "@userLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "goToSpace": "Doties uz vietu: {space}", + "@goToSpace": { + "type": "String", + "space": {} + }, + "changeGeneralChatSettings": "Mainīt vispārējos tērzēšanas iestatījumus", + "@changeGeneralChatSettings": {}, + "inviteOtherUsers": "Uzaicināt šajā tērzēšanā citus lietotājus", + "@inviteOtherUsers": {}, + "changeTheChatPermissions": "Mainīt tērzēšanas atļaujas", + "@changeTheChatPermissions": {}, + "chatPermissionsDescription": "Noteikt, kurš spēka līmenis ir nepieciešams noteiktām darbībām šajā tērzēšanā. Spēka līmeņi 0, 50 un 100 parasti atbilst lietotājiem, moderatoriem un pārvaldītājiem, bet ir iespējams jebkāds iedalījums.", + "@chatPermissionsDescription": {}, + "doesNotSeemToBeAValidHomeserver": "Neizskatās pēc saderīga mājasservera. Nepareizs URL?", + "@doesNotSeemToBeAValidHomeserver": {}, + "loginWithMatrixId": "Pieteikties ar Matrix-Id", + "@loginWithMatrixId": {}, + "discoverHomeservers": "Atklāt mājasserverus", + "@discoverHomeservers": {}, + "whatIsAHomeserver": "Kas ir mājasserveris?", + "@whatIsAHomeserver": {}, + "homeserverDescription": "Visi lietotāja dati tiek glabāti mājasserverī, gluži kā ar e-pasta nodrošinātāju. Ir iespējams izvēlēties, kuru mājasserveri izmantot, saglabājot iespēju sazināties ar ikvienu. Vairāk var uzzināt https://matrix.org.", + "@homeserverDescription": {}, + "updateInstalled": "🎉 Atjauninājums {version} uzstādīts.", + "@updateInstalled": { + "type": "String", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "changelog": "Izmaiņu žurnāls", + "@changelog": {}, + "countChatsAndCountParticipants": "{chats} tērzēšanas un {participants} dalībnieki", + "@countChatsAndCountParticipants": { + "type": "String", + "placeholders": { + "chats": { + "type": "int" + }, + "participants": { + "type": "int" + } + } + }, + "noMoreChatsFound": "Vairs netika atrasta neviena tērzēšana...", + "@noMoreChatsFound": {}, + "joinedChats": "Tērzēšanas, kurās piedalos", + "@joinedChats": {}, + "unread": "Nelasītas", + "@unread": {}, + "space": "Vieta", + "@space": {}, + "spaces": "Vietas", + "@spaces": {}, + "markAsUnread": "Atzīmēt kā nelasītu", + "@markAsUnread": {}, + "sendingAttachment": "Nosūta pielikumu...", + "@sendingAttachment": {}, + "generatingVideoThumbnail": "Izveido video sīktēlu...", + "@generatingVideoThumbnail": {}, + "sendingAttachmentCountOfCount": "Nosūta {index}. pielikumu no {length}...", + "@sendingAttachmentCountOfCount": { + "type": "integer", + "placeholders": { + "index": { + "type": "int" + }, + "length": { + "type": "int" + } + } + }, + "serverLimitReached": "Sasniegts servera ierobežojums. Gaida {seconds} sekundes...", + "@serverLimitReached": { + "type": "integer", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "calculatingFileSize": "Aprēķina datnes lielumu...", + "@calculatingFileSize": {}, + "prepareSendingAttachment": "Sagatavo pielikuma nosūtīšanu...", + "@prepareSendingAttachment": {}, + "compressVideo": "Saspiež video...", + "@compressVideo": {}, + "oneOfYourDevicesIsNotVerified": "Viena no ierīcēm nav apliecināta", + "@oneOfYourDevicesIsNotVerified": {}, + "noticeChatBackupDeviceVerification": "Piezīme: kad visas ierīces tiek savienotas ar tērzēšanu rezerves kopiju, tās tiek automātiski apliecinātas.", + "@noticeChatBackupDeviceVerification": {}, + "continueText": "Turpināt", + "@continueText": {}, + "welcomeText": "Sveicieni! 👋 Šis ir FluffyChat. Tu vari pieteikties jebkurā mājasserverī, kas ir saderīgs ar https://matrix.org. Tad vari tērzēt ar ikvienu. Tas ir milzīgs decentralizētās saziņas tīkls.", + "@welcomeText": {}, + "blur": "Aizmiglojums:", + "@blur": {}, + "setWallpaper": "Iestatīt ekrāntapeti", + "@setWallpaper": {}, + "opacity": "Necaurredzamība:", + "@opacity": {}, + "manageAccount": "Pārvaldīt kontu", + "@manageAccount": {}, + "noContactInformationProvided": "Serveris nesniedz nekādu derīgu saziņas informāciju", + "@noContactInformationProvided": {}, + "serverInformation": "Informācija par serveri:", + "@serverInformation": {}, + "aboutHomeserver": "Par {homeserver}", + "@aboutHomeserver": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "contactServerAdmin": "Sazināties ar servera pārvaldītāju", + "@contactServerAdmin": {}, + "contactServerSecurity": "Sazināties ar servera drošības uzturētājiem", + "@contactServerSecurity": {}, + "supportPage": "Atbalsta lapa", + "@supportPage": {}, + "name": "Nosaukums", + "@name": {}, + "version": "Versija", + "@version": {}, + "website": "Tīmekļvietne", + "@website": {}, + "boldText": "Teksts treknrakstā", + "@boldText": {}, + "strikeThrough": "Pārsvītrots", + "@strikeThrough": {}, + "invalidUrl": "Nederīgs URL", + "@invalidUrl": {}, + "addLink": "Pievienot saiti", + "@addLink": {}, + "italicText": "Teksts slīprakstā", + "@italicText": {}, + "pleaseFillOut": "Lūgums aizpildīt", + "@pleaseFillOut": {}, + "sendImages": "Nosūtīt {count} attēlu(s)", + "@sendImages": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "compress": "Saspiest", + "@compress": {}, + "unableToJoinChat": "Nevarēja pievienoties tērzēšanai. Varbūt otra puse jau ir aizvērusi sarunu.", + "@unableToJoinChat": {}, + "appWantsToUseForLoginDescription": "Ar šo tiek ļauts lietotnei un tīmekļvietnei kopīgot informāciju par Tevi.", + "@appWantsToUseForLoginDescription": {}, + "appIntroduction": "FluffyChat ļauj tērzēt ar draugiem, kuri izmanto dažādas ziņojumapmaiņas lietotnes. Vairāk var uzzināt https://matrix.org vai vienkārši piesitot *Turpināt*.", + "@appIntroduction": {}, + "synchronizingPleaseWaitCounter": " Sinhronizē... ({percentage}%)", + "@synchronizingPleaseWaitCounter": { + "type": "String", + "placeholders": { + "percentage": { + "type": "String" + } + } + }, + "previous": "Iepriekšējais", + "@previous": {}, + "otherPartyNotLoggedIn": "Otra puse pašlaik nav pieteikusies un tādēļ nevar saņemt ziņas.", + "@otherPartyNotLoggedIn": {}, + "appWantsToUseForLogin": "Izmantot '{server}', lai pieteiktos", + "@appWantsToUseForLogin": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "open": "Atvērt", + "@open": {}, + "waitingForServer": "Gaida serveri...", + "@waitingForServer": {}, + "notificationRuleContainsDisplayNameDescription": "Paziņo lietotājam, kad ziņa satur viņa attēlojamo vārdu.", + "@notificationRuleContainsDisplayNameDescription": {}, + "notificationRuleServerAcl": "Apspiest servera ACL notikumus", + "@notificationRuleServerAcl": {}, + "notificationRuleSuppressNoticesDescription": "Apspiež paziņojumus no automatizētiem klientiem, piemēram, robotprogrammatūras.", + "@notificationRuleSuppressNoticesDescription": {}, + "notificationRuleInviteForMeDescription": "Paziņo lietotājam, kad viņš ir uzaicināts pievienoties istabai.", + "@notificationRuleInviteForMeDescription": {}, + "generalNotificationSettings": "Vispārēji paziņojumu iestatījumi", + "@generalNotificationSettings": {}, + "otherNotificationSettings": "Citi paziņojumu iestatījumi", + "@otherNotificationSettings": {}, + "notificationRuleContainsUserName": "Saturs lietotāja vārdu", + "@notificationRuleContainsUserName": {}, + "notificationRuleMasterDescription": "Aizvieto visas pārējās kārtulas un atspējo visus paziņojumus.", + "@notificationRuleMasterDescription": {}, + "notificationRuleInviteForMe": "Uzaicinājums man", + "@notificationRuleInviteForMe": {}, + "notificationRuleMemberEvent": "Dalībnieka notikums", + "@notificationRuleMemberEvent": {}, + "notificationRuleMemberEventDescription": "Apspiež paziņojums par dalības notikumiem.", + "@notificationRuleMemberEventDescription": {}, + "notificationRuleIsUserMentionDescription": "Paziņo lietotājam, kad viņš ziņā ir tieši pieminēts.", + "@notificationRuleIsUserMentionDescription": {}, + "notificationRuleIsRoomMention": "Istabas pieminēšana", + "@notificationRuleIsRoomMention": {}, + "notificationRuleRoomnotif": "Istabas paziņojums", + "@notificationRuleRoomnotif": {}, + "notificationRuleReaction": "Reakcija", + "@notificationRuleReaction": {}, + "notificationRuleRoomServerAcl": "Istabas servera ACL", + "@notificationRuleRoomServerAcl": {}, + "notificationRuleCall": "Zvans", + "@notificationRuleCall": {}, + "notificationRuleCallDescription": "Paziņo lietotājam par zvaniem.", + "@notificationRuleCallDescription": {}, + "deletePushRuleCanNotBeUndone": "Ja tiek izdzēsts šis paziņojuma iestatījums, to nevar atsaukt.", + "@deletePushRuleCanNotBeUndone": {}, + "more": "Vairāk", + "@more": {}, + "roomNotificationSettings": "Istabu paziņojumu iestatījumi", + "@roomNotificationSettings": {}, + "notificationRuleEncrypted": "Šifrēts", + "@notificationRuleEncrypted": {}, + "notificationRuleJitsi": "Jitsi", + "@notificationRuleJitsi": {}, + "notificationRuleIsUserMention": "Lietotāja pieminēšana", + "@notificationRuleIsUserMention": {}, + "notificationRuleIsRoomMentionDescription": "Paziņo lietotājam, kad tiek pieminēta istaba.", + "@notificationRuleIsRoomMentionDescription": {}, + "notificationRuleMessageDescription": "Paziņo lietotājam par vispārējām ziņām.", + "@notificationRuleMessageDescription": {}, + "notificationRuleServerAclDescription": "Apspiež notikumus par servera ACL notikumiem.", + "@notificationRuleServerAclDescription": {}, + "notificationRuleReactionDescription": "Apspiež paziņojums par reakcijām.", + "@notificationRuleReactionDescription": {}, + "unknownPushRule": "Nezināma pašpiegādes kārtula '{rule}'", + "@unknownPushRule": { + "type": "String", + "placeholders": { + "rule": { + "type": "String" + } + } + }, + "newChatRequest": "📩 Jauns tērzēšanas pieprasījums", + "@newChatRequest": {}, + "notificationRuleContainsUserNameDescription": "Paziņo lietotājam, kad ziņa satur viņa lietotājvārdu.", + "@notificationRuleContainsUserNameDescription": {}, + "notificationRuleRoomnotifDescription": "Paziņo lietotājam, kad ziņa satur \"@istaba\".", + "@notificationRuleRoomnotifDescription": {}, + "notificationRuleEncryptedRoomOneToOneDescription": "Paziņo lietotājam par ziņām šifrētās viens pret viens istabās.", + "@notificationRuleEncryptedRoomOneToOneDescription": {}, + "notificationRuleRoomServerAclDescription": "Apspiež paziņojumus par istabas servera piekļuves kontroles sarakstiem (ACL).", + "@notificationRuleRoomServerAclDescription": {}, + "contentNotificationSettings": "Satura paziņojumu iestatījumi", + "@contentNotificationSettings": {}, + "notificationRuleContainsDisplayName": "Satur attēlojamo vārdu", + "@notificationRuleContainsDisplayName": {}, + "notificationRuleRoomOneToOne": "Viens pret viens istaba", + "@notificationRuleRoomOneToOne": {}, + "notificationRuleJitsiDescription": "Paziņo lietotājam par Jitsi logrīka notikumiem.", + "@notificationRuleJitsiDescription": {}, + "notificationRuleSuppressEditsDescription": "Apspiež paziņojumus par labotām ziņām.", + "@notificationRuleSuppressEditsDescription": {}, + "notificationRuleTombstone": "Kapakmens", + "@notificationRuleTombstone": {}, + "notificationRuleTombstoneDescription": "Paziņo lietotājam par istabu aizvēršanas ziņām.", + "@notificationRuleTombstoneDescription": {}, + "notificationRuleSuppressEdits": "Apspiest labojumus", + "@notificationRuleSuppressEdits": {}, + "notificationRuleEncryptedRoomOneToOne": "Šifrēta viens pret viens istaba", + "@notificationRuleEncryptedRoomOneToOne": {}, + "notificationRuleRoomOneToOneDescription": "Paziņo lietotājam par ziņām viens pret viens istabās.", + "@notificationRuleRoomOneToOneDescription": {}, + "notificationRuleMessage": "Ziņa", + "@notificationRuleMessage": {}, + "notificationRuleEncryptedDescription": "Paziņo lietotājam par ziņām šifrētās istabās.", + "@notificationRuleEncryptedDescription": {}, + "userSpecificNotificationSettings": "Lietotāja paziņojumu iestatījumi", + "@userSpecificNotificationSettings": {}, + "notificationRuleMaster": "Apklusināt visus paziņojumus", + "@notificationRuleMaster": {}, + "notificationRuleSuppressNotices": "Apspiest automātiskās ziņas", + "@notificationRuleSuppressNotices": {}, + "crossVerifiedDevices": "Savstarpēji apliecinātas ierīces", + "@crossVerifiedDevices": {}, + "shareKeysWith": "Kopīgot atslēgas ar...", + "@shareKeysWith": {}, + "shareKeysWithDescription": "Kurām ierīcēm vajadzētu uzticēties, lai tajās varētu lasīt ziņas šifrētajās tērzēšanās?", + "@shareKeysWithDescription": {}, + "allDevices": "Visas ierīces", + "@allDevices": {}, + "crossVerifiedDevicesIfEnabled": "Savstarpēji apliecinātas ierīces, ja iespējots", + "@crossVerifiedDevicesIfEnabled": {}, + "verifiedDevicesOnly": "Tikai apliecinātas ierīces", + "@verifiedDevicesOnly": {}, + "optionalMessage": "(Pēc izvēles) Ziņojums...", + "@optionalMessage": {}, + "takeAPhoto": "Uzņemt attēlu", + "@takeAPhoto": {}, + "recordAVideo": "Ierakstīt video", + "@recordAVideo": {}, + "notSupportedOnThisDevice": "Šajā ierīcē nav atbalstīts", + "@notSupportedOnThisDevice": {}, + "enterNewChat": "Ieiet jaunajā tērzēšanā", + "@enterNewChat": {}, + "commandHint_roomupgrade": "Uzlabot šo istabu uz norādīto istabas versiju", + "@commandHint_roomupgrade": {}, + "setCustomPermissionLevel": "Iestatīt pielāgotu atļauju līmeni", + "@setCustomPermissionLevel": {}, + "setPermissionsLevelDescription": "Lūgums zemāk atlasīt iepriekšizveidotu lomu vai ievadīt pielāgotu atļauju līmeni starp 0 un 100.", + "@setPermissionsLevelDescription": {}, + "ignoreUser": "Neņemt vērā lietotāju", + "@ignoreUser": {}, + "normalUser": "Parasts lietotājs", + "@normalUser": {}, + "youHaveKnocked": "Tu pieklauvēji", + "@youHaveKnocked": {}, + "pleaseWaitUntilInvited": "Lūgums tagad uzgaidīt, līdz kāds no istabas uzaicinās Tevi.", + "@pleaseWaitUntilInvited": {}, + "approve": "Apstiprināt", + "@approve": {}, + "checkList": "Pārbaužu saraksts", + "@checkList": {}, + "countInvited": "{count} uzaicināti", + "@countInvited": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "sentVoiceMessage": "🎙️ {duration} - Balss ziņa no {sender}", + "@sentVoiceMessage": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "duration": { + "type": "String" + } + } + }, + "commandHint_logout": "Atteikties pašreizējā ierīcē", + "@commandHint_logout": {}, + "commandHint_logoutall": "Atteikties visās izmantotajās ierīcēs", + "@commandHint_logoutall": {}, + "displayNavigationRail": "Rādīt pārvietošanās sliedi viedierīcēs", + "@displayNavigationRail": {}, + "customReaction": "Pielāgota reakcija", + "@customReaction": {}, + "moreEvents": "Vairāk notikumu", + "@moreEvents": {}, + "declineInvitation": "Noraidīt uzaicinājumu", + "@declineInvitation": {}, + "noMessagesYet": "Vēl nav ziņu", + "@noMessagesYet": {}, + "longPressToRecordVoiceMessage": "Ilga piespiešana, lai ierakstītu balss ziņu.", + "@longPressToRecordVoiceMessage": {}, + "pause": "Apturēt", + "@pause": {}, + "resume": "Atsākt", + "@resume": {}, + "newSubSpace": "Jauna apakšvieta", + "@newSubSpace": {}, + "moveToDifferentSpace": "Pārvietot uz citu vietu", + "@moveToDifferentSpace": {}, + "moveUp": "Pārvietot augšup", + "@moveUp": {}, + "moveDown": "Pārvietot lejup", + "@moveDown": {}, + "removeFromSpaceDescription": "Tērzēšana tiks noņemta no vietas, bet tā joprojām būs redzama tērzēšanu sarakstā.", + "@removeFromSpaceDescription": {}, + "countChats": "{chats} tērzēšanas", + "@countChats": { + "type": "String", + "placeholders": { + "chats": { + "type": "int" + } + } + }, + "spaceMemberOf": "{spaces} dalībnieks", + "@spaceMemberOf": { + "type": "String", + "placeholders": { + "spaces": { + "type": "String" + } + } + }, + "spaceMemberOfCanKnock": "{spaces} dalībnieks var pieklauvēt", + "@spaceMemberOfCanKnock": { + "type": "String", + "placeholders": { + "spaces": { + "type": "String" + } + } + }, + "donate": "Ziedot", + "@donate": {}, + "startedAPoll": "{username} uzsāka aptauju.", + "@startedAPoll": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "poll": "Aptauja", + "@poll": {}, + "startPoll": "Sākt aptauju", + "@startPoll": {}, + "endPoll": "Noslēgt aptauju", + "@endPoll": {}, + "answersVisible": "Atbildes ir redzamas", + "@answersVisible": {}, + "answersHidden": "Atbildes ir paslēptas", + "@answersHidden": {}, + "pollQuestion": "Aptaujas jautājums", + "@pollQuestion": {}, + "answerOption": "Atbildes iespēja", + "@answerOption": {}, + "addAnswerOption": "Pievienot atbildes iespēju", + "@addAnswerOption": {}, + "allowMultipleAnswers": "Atļaut vairākas atbildes", + "@allowMultipleAnswers": {}, + "pollHasBeenEnded": "Aptauja ir noslēgusies", + "@pollHasBeenEnded": {}, + "countVotes": "{count, plural, =0{{count} balsu} =1{{count} balss} other{{count} balsis}}", + "@countVotes": { + "type": "int", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "answersWillBeVisibleWhenPollHasEnded": "Atbildes būs redzams, kad aptauja noslēgsies", + "@answersWillBeVisibleWhenPollHasEnded": {}, + "replyInThread": "Atbildēt pavedienā", + "@replyInThread": {}, + "countReplies": "{count, plural, =0{{count} atbilžu} =1{{count} atbilde} other{{count} atbildes}}", + "@countReplies": { + "type": "int", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "thread": "Pavediens", + "@thread": {}, + "backToMainChat": "Atgriezties galvenajā tērzēšanā", + "@backToMainChat": {} +} diff --git a/lib/l10n/intl_nb.arb b/lib/l10n/intl_nb.arb new file mode 100644 index 0000000..af03494 --- /dev/null +++ b/lib/l10n/intl_nb.arb @@ -0,0 +1,3248 @@ +{ + "@@last_modified": "2021-08-14 12:41:09.967351", + "about": "Om", + "@about": { + "type": "String", + "placeholders": {} + }, + "accept": "Godta", + "@accept": { + "type": "String", + "placeholders": {} + }, + "acceptedTheInvitation": "👍 {username} godtok invitasjonen", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "account": "Konto", + "@account": { + "type": "String", + "placeholders": {} + }, + "activatedEndToEndEncryption": "{username} skrudde på ende-til-ende -kryptering", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "admin": "Administrator", + "@admin": { + "type": "String", + "placeholders": {} + }, + "alias": "alias", + "@alias": { + "type": "String", + "placeholders": {} + }, + "all": "Alle", + "@all": { + "type": "String", + "placeholders": {} + }, + "answeredTheCall": "{senderName} besvarte anropet", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "anyoneCanJoin": "Hvem som helst kan delta", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "appLock": "Programlås", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "archive": "Arkiv", + "@archive": { + "type": "String", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "Skal gjester tillates å ta del", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "Er du sikker?", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "areYouSureYouWantToLogout": "Er du sikker på at du vil logge ut?", + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "askSSSSSign": "For å kunne signere den andre personen, skriv inn ditt sikre lagerpassord eller gjenopprettingsnøkkel.", + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "askVerificationRequest": "Godta denne bekreftelsesforespørselen fra {username}?", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "banFromChat": "Bannlys fra sludring", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "banned": "Bannlyst", + "@banned": { + "type": "String", + "placeholders": {} + }, + "bannedUser": "{username} bannlyste {targetName}", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "blockDevice": "Blokker enhet", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "botMessages": "Bot-meldinger", + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "cancel": "Avbryt", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "changeDeviceName": "Endre enhetsnavn", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "changedTheChatAvatar": "{username} endret sludreavatar", + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheChatDescriptionTo": "{username} endret chatbeskrivelsen til: '{description}'", + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "changedTheChatNameTo": "{username} endret chatnavnet til: '{chatname}'", + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "changedTheChatPermissions": "{username} endret sludretilgangene", + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheDisplaynameTo": "{username} endret visningsnavn til: '{displayname}'", + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "changedTheGuestAccessRules": "{username} endret gjestetilgangsreglene", + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheGuestAccessRulesTo": "{username} endret gjestetilgangsregler til: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheHistoryVisibility": "{username} endret historikksynlighet", + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheHistoryVisibilityTo": "{username} endret historikksynlighet til: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheJoinRules": "{username} endret tilgangsreglene", + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheJoinRulesTo": "{username} endret tilgangsreglene til: {joinRules}", + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "changedTheProfileAvatar": "{username} endret avataren sin", + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomAliases": "{username} endret rom-aliasene", + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomInvitationLink": "{username} endret invitasjonslenken", + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changePassword": "Endre passord", + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "changeTheHomeserver": "Endre hjemmetjener", + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "changeTheme": "Endre din stil", + "@changeTheme": { + "type": "String", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "Endre gruppens navn", + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "channelCorruptedDecryptError": "Krypteringen er skadet", + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "chat": "Sludring", + "@chat": { + "type": "String", + "placeholders": {} + }, + "chatBackup": "Sludringssikkerhetskopi", + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "chatBackupDescription": "Din sludringssikkerhetskopi er sikret med en sikkerhetsnøkkel. Ikke mist den.", + "@chatBackupDescription": { + "type": "String", + "placeholders": {} + }, + "chatDetails": "Sludringsdetaljer", + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "chooseAStrongPassword": "Velg et sterkt passord", + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "close": "Lukk", + "@close": { + "type": "String", + "placeholders": {} + }, + "compareEmojiMatch": "Sammenlign og forsikre at følgende smilefjes samsvarer med de på den andre enheten:", + "@compareEmojiMatch": { + "type": "String", + "placeholders": {} + }, + "compareNumbersMatch": "Sammenlign og forsikre at følgende tall samsvarer med de på den andre enheten:", + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "configureChat": "Sett opp sludring", + "@configureChat": { + "type": "String", + "placeholders": {} + }, + "confirm": "Bekreft", + "@confirm": { + "type": "String", + "placeholders": {} + }, + "connect": "Koble til", + "@connect": { + "type": "String", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "Kontakt invitert til gruppen", + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "containsDisplayName": "Inneholder visningsnavn", + "@containsDisplayName": { + "type": "String", + "placeholders": {} + }, + "containsUserName": "Inneholder brukernavn", + "@containsUserName": { + "type": "String", + "placeholders": {} + }, + "contentHasBeenReported": "Innholdet har blitt rapportert til tjeneradministratorene", + "@contentHasBeenReported": { + "type": "String", + "placeholders": {} + }, + "copiedToClipboard": "Kopiert til utklippstavle", + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "copy": "Kopier", + "@copy": { + "type": "String", + "placeholders": {} + }, + "copyToClipboard": "Kopier til utklippstavle", + "@copyToClipboard": { + "type": "String", + "placeholders": {} + }, + "couldNotDecryptMessage": "Kunne ikke dekryptere melding: {error}", + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "countParticipants": "{count} deltagere", + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "create": "Opprett", + "@create": { + "type": "String", + "placeholders": {} + }, + "createdTheChat": "{username} opprettet sludringen", + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "currentlyActive": "Aktiv nå", + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "darkTheme": "Mørk", + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "dateAndTimeOfDay": "{timeOfDay}, {date}", + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "dateWithoutYear": "{day} {month}", + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "dateWithYear": "{day} {month} {year}", + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "deactivateAccountWarning": "Dette vil skru av din brukerkonto for godt, og kan ikke angres! Er du sikker?", + "@deactivateAccountWarning": { + "type": "String", + "placeholders": {} + }, + "defaultPermissionLevel": "Forvalgt tilgangsnivå", + "@defaultPermissionLevel": { + "type": "String", + "placeholders": {} + }, + "delete": "Slett", + "@delete": { + "type": "String", + "placeholders": {} + }, + "deleteAccount": "Slett konto", + "@deleteAccount": { + "type": "String", + "placeholders": {} + }, + "deleteMessage": "Slett melding", + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "device": "Enhet", + "@device": { + "type": "String", + "placeholders": {} + }, + "deviceId": "Enhets-ID", + "@deviceId": { + "type": "String", + "placeholders": {} + }, + "devices": "Enheter", + "@devices": { + "type": "String", + "placeholders": {} + }, + "directChats": "Direktesludringer", + "@directChats": { + "type": "String", + "placeholders": {} + }, + "displaynameHasBeenChanged": "Visningsnavn endret", + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "downloadFile": "Last ned fil", + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "edit": "Rediger", + "@edit": { + "type": "String", + "placeholders": {} + }, + "editBlockedServers": "Rediger blokkerte tjenere", + "@editBlockedServers": { + "type": "String", + "placeholders": {} + }, + "editDisplayname": "Rediger visningsnavn", + "@editDisplayname": { + "type": "String", + "placeholders": {} + }, + "editRoomAvatar": "Rediger romavatar", + "@editRoomAvatar": { + "type": "String", + "placeholders": {} + }, + "emoteExists": "Smilefjeset finnes allerede!", + "@emoteExists": { + "type": "String", + "placeholders": {} + }, + "emoteInvalid": "Ugyldig smilefjes-kode!", + "@emoteInvalid": { + "type": "String", + "placeholders": {} + }, + "emotePacks": "Smilefjespakker for rommet", + "@emotePacks": { + "type": "String", + "placeholders": {} + }, + "emoteSettings": "Smilefjes-innstillinger", + "@emoteSettings": { + "type": "String", + "placeholders": {} + }, + "emoteShortcode": "Smilefjes-kode", + "@emoteShortcode": { + "type": "String", + "placeholders": {} + }, + "emoteWarnNeedToPick": "Du må velge en smilefjes-kode og et bilde!", + "@emoteWarnNeedToPick": { + "type": "String", + "placeholders": {} + }, + "emptyChat": "Tom sludring", + "@emptyChat": { + "type": "String", + "placeholders": {} + }, + "enableEmotesGlobally": "Skru på smilefjespakke for hele programmet", + "@enableEmotesGlobally": { + "type": "String", + "placeholders": {} + }, + "enableEncryption": "Skru på kryptering", + "@enableEncryption": { + "type": "String", + "placeholders": {} + }, + "enableEncryptionWarning": "Du vil ikke kunne skru av kryptering lenger. Er du sikker?", + "@enableEncryptionWarning": { + "type": "String", + "placeholders": {} + }, + "encrypted": "Kryptert", + "@encrypted": { + "type": "String", + "placeholders": {} + }, + "encryption": "Kryptering", + "@encryption": { + "type": "String", + "placeholders": {} + }, + "encryptionNotEnabled": "Kryptering er ikke påskrudd", + "@encryptionNotEnabled": { + "type": "String", + "placeholders": {} + }, + "endedTheCall": "{senderName} avsluttet samtalen", + "@endedTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "enterAnEmailAddress": "Skriv inn en e-postadresse", + "@enterAnEmailAddress": { + "type": "String", + "placeholders": {} + }, + "enterYourHomeserver": "Skriv inn din hjemmetjener", + "@enterYourHomeserver": { + "type": "String", + "placeholders": {} + }, + "everythingReady": "Alt er klart!", + "@everythingReady": { + "type": "String", + "placeholders": {} + }, + "extremeOffensive": "Veldig", + "@extremeOffensive": { + "type": "String", + "placeholders": {} + }, + "fileName": "Filnavn", + "@fileName": { + "type": "String", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "String", + "placeholders": {} + }, + "fontSize": "Skriftstørrelse", + "@fontSize": { + "type": "String", + "placeholders": {} + }, + "forward": "Videre", + "@forward": { + "type": "String", + "placeholders": {} + }, + "fromJoining": "Fra å ta del", + "@fromJoining": { + "type": "String", + "placeholders": {} + }, + "fromTheInvitation": "Fra invitasjonen", + "@fromTheInvitation": { + "type": "String", + "placeholders": {} + }, + "group": "Gruppe", + "@group": { + "type": "String", + "placeholders": {} + }, + "groupIsPublic": "Gruppen er offentlig", + "@groupIsPublic": { + "type": "String", + "placeholders": {} + }, + "groups": "Grupper", + "@groups": { + "type": "String", + "placeholders": {} + }, + "groupWith": "Gruppe med {displayname}", + "@groupWith": { + "type": "String", + "placeholders": { + "displayname": { + "type": "String" + } + } + }, + "guestsAreForbidden": "Gjester forbudt", + "@guestsAreForbidden": { + "type": "String", + "placeholders": {} + }, + "guestsCanJoin": "Gjester kan ta del", + "@guestsCanJoin": { + "type": "String", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "{username} har trukket tilbake invitasjonen til {targetName}", + "@hasWithdrawnTheInvitationFor": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "help": "Hjelp", + "@help": { + "type": "String", + "placeholders": {} + }, + "hideRedactedEvents": "Skjul tilbaketrukne hendelser", + "@hideRedactedEvents": { + "type": "String", + "placeholders": {} + }, + "hideUnknownEvents": "Skjul ukjente hendelser", + "@hideUnknownEvents": { + "type": "String", + "placeholders": {} + }, + "howOffensiveIsThisContent": "Hvor støtende er innholdet?", + "@howOffensiveIsThisContent": { + "type": "String", + "placeholders": {} + }, + "id": "ID", + "@id": { + "type": "String", + "placeholders": {} + }, + "identity": "Identitet", + "@identity": { + "type": "String", + "placeholders": {} + }, + "ignore": "Ignorer", + "@ignore": { + "type": "String", + "placeholders": {} + }, + "ignoredUsers": "Ignorerte brukere", + "@ignoredUsers": { + "type": "String", + "placeholders": {} + }, + "iHaveClickedOnLink": "Jeg har klikket på lenken", + "@iHaveClickedOnLink": { + "type": "String", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "Feilaktig passord eller gjenopprettingsnøkkel", + "@incorrectPassphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "inoffensive": "Harmløst", + "@inoffensive": { + "type": "String", + "placeholders": {} + }, + "inviteContact": "Inviter kontakt", + "@inviteContact": { + "type": "String", + "placeholders": {} + }, + "inviteContactToGroup": "Inviter kontakt til {groupName}", + "@inviteContactToGroup": { + "type": "String", + "placeholders": { + "groupName": { + "type": "String" + } + } + }, + "invited": "Invitert", + "@invited": { + "type": "String", + "placeholders": {} + }, + "invitedUser": "{username} inviterte {targetName}", + "@invitedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "invitedUsersOnly": "Kun inviterte brukere", + "@invitedUsersOnly": { + "type": "String", + "placeholders": {} + }, + "inviteForMe": "Invitasjon for meg", + "@inviteForMe": { + "type": "String", + "placeholders": {} + }, + "inviteText": "{username} har invitert deg til FluffyChat. \n1. Installer FluffyChat: https://fluffychat.im \n2. Registrer deg eller logg inn \n3. Åpne invitasjonslenken: {link}", + "@inviteText": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "link": { + "type": "String" + } + } + }, + "isTyping": "skriver…", + "@isTyping": { + "type": "String", + "placeholders": {} + }, + "joinedTheChat": "{username}ble med i samtalen", + "@joinedTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "joinRoom": "Ta del i rom", + "@joinRoom": { + "type": "String", + "placeholders": {} + }, + "kicked": "{username} kastet ut {targetName}", + "@kicked": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickedAndBanned": "{username} kastet ut og bannlyste {targetName}", + "@kickedAndBanned": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickFromChat": "Kast ut av sludringen", + "@kickFromChat": { + "type": "String", + "placeholders": {} + }, + "lastActiveAgo": "Sist aktiv: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "String", + "placeholders": { + "localizedTimeShort": { + "type": "String" + } + } + }, + "leave": "Forlat", + "@leave": { + "type": "String", + "placeholders": {} + }, + "leftTheChat": "Forlat sludringen", + "@leftTheChat": { + "type": "String", + "placeholders": {} + }, + "license": "Lisens", + "@license": { + "type": "String", + "placeholders": {} + }, + "lightTheme": "Lys", + "@lightTheme": { + "type": "String", + "placeholders": {} + }, + "loadCountMoreParticipants": "Last inn {count} deltagere til", + "@loadCountMoreParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "loadingPleaseWait": "Laster inn… Vent.", + "@loadingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "loadMore": "Last inn mer…", + "@loadMore": { + "type": "String", + "placeholders": {} + }, + "login": "Logg inn", + "@login": { + "type": "String", + "placeholders": {} + }, + "logInTo": "Logg inn på {homeserver}", + "@logInTo": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "logout": "Logg ut", + "@logout": { + "type": "String", + "placeholders": {} + }, + "memberChanges": "Medlemsendringer", + "@memberChanges": { + "type": "String", + "placeholders": {} + }, + "mention": "Nevn", + "@mention": { + "type": "String", + "placeholders": {} + }, + "messages": "Meldinger", + "@messages": { + "type": "String", + "placeholders": {} + }, + "moderator": "Moderator", + "@moderator": { + "type": "String", + "placeholders": {} + }, + "muteChat": "Forstum sludring", + "@muteChat": { + "type": "String", + "placeholders": {} + }, + "needPantalaimonWarning": "Merk at du trenger Pantalaimon for å bruke ende-til-ende -kryptering inntil videre.", + "@needPantalaimonWarning": { + "type": "String", + "placeholders": {} + }, + "newChat": "Ny sludring", + "@newChat": { + "type": "String", + "placeholders": {} + }, + "newMessageInFluffyChat": "Ny melding i FluffyChat", + "@newMessageInFluffyChat": { + "type": "String", + "placeholders": {} + }, + "newVerificationRequest": "Ny bekreftelsesforespørsel!", + "@newVerificationRequest": { + "type": "String", + "placeholders": {} + }, + "next": "Neste", + "@next": { + "type": "String", + "placeholders": {} + }, + "no": "Nei", + "@no": { + "type": "String", + "placeholders": {} + }, + "noEmotesFound": "Fant ingen smilefjes. 😕", + "@noEmotesFound": { + "type": "String", + "placeholders": {} + }, + "noGoogleServicesWarning": "Bruk https://microg.org/ for å få Google-tjenester (uten at det går ut over personvernet) for å få push-merknader i FluffyChat:", + "@noGoogleServicesWarning": { + "type": "String", + "placeholders": {} + }, + "none": "Ingen", + "@none": { + "type": "String", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "Du har ikke lagt til en måte å gjenopprette passordet ditt på.", + "@noPasswordRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "noPermission": "Ingen tilgang", + "@noPermission": { + "type": "String", + "placeholders": {} + }, + "noRoomsFound": "Fant ingen rom …", + "@noRoomsFound": { + "type": "String", + "placeholders": {} + }, + "notifications": "Merknader", + "@notifications": { + "type": "String", + "placeholders": {} + }, + "notificationsEnabledForThisAccount": "Merknader påslått for denne kontoen", + "@notificationsEnabledForThisAccount": { + "type": "String", + "placeholders": {} + }, + "numUsersTyping": "{count} brukere skriver …", + "@numUsersTyping": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "offensive": "Støtende", + "@offensive": { + "type": "String", + "placeholders": {} + }, + "offline": "Frakoblet", + "@offline": { + "type": "String", + "placeholders": {} + }, + "ok": "OK", + "@ok": { + "type": "String", + "placeholders": {} + }, + "online": "Pålogget", + "@online": { + "type": "String", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "Nettbasert sikkerhetskopiering av nøkler på", + "@onlineKeyBackupEnabled": { + "type": "String", + "placeholders": {} + }, + "oopsSomethingWentWrong": "Oida, noe gikk galt …", + "@oopsSomethingWentWrong": { + "type": "String", + "placeholders": {} + }, + "openAppToReadMessages": "Åpne programmet for å lese meldinger", + "@openAppToReadMessages": { + "type": "String", + "placeholders": {} + }, + "openCamera": "Åpne kamera", + "@openCamera": { + "type": "String", + "placeholders": {} + }, + "participant": "Deltager", + "@participant": { + "type": "String", + "placeholders": {} + }, + "passphraseOrKey": "Passord eller gjenopprettingsnøkkel", + "@passphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "password": "Passord", + "@password": { + "type": "String", + "placeholders": {} + }, + "passwordForgotten": "Passord glemt", + "@passwordForgotten": { + "type": "String", + "placeholders": {} + }, + "passwordHasBeenChanged": "Passord endret", + "@passwordHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "passwordRecovery": "Passordgjenoppretting", + "@passwordRecovery": { + "type": "String", + "placeholders": {} + }, + "pickImage": "Velg bilde", + "@pickImage": { + "type": "String", + "placeholders": {} + }, + "pin": "Fest", + "@pin": { + "type": "String", + "placeholders": {} + }, + "play": "Spill av {fileName}", + "@play": { + "type": "String", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "pleaseClickOnLink": "Klikk på lenken i e-posten og fortsett.", + "@pleaseClickOnLink": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPassword": "Skriv inn passordet ditt", + "@pleaseEnterYourPassword": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourUsername": "Skriv inn brukernavnet ditt", + "@pleaseEnterYourUsername": { + "type": "String", + "placeholders": {} + }, + "pleaseFollowInstructionsOnWeb": "Følg instruksen på nettsiden og trykk på «Neste».", + "@pleaseFollowInstructionsOnWeb": { + "type": "String", + "placeholders": {} + }, + "privacy": "Personvern", + "@privacy": { + "type": "String", + "placeholders": {} + }, + "publicRooms": "Offentlige rom", + "@publicRooms": { + "type": "String", + "placeholders": {} + }, + "pushRules": "Dyttingsregler", + "@pushRules": { + "type": "String", + "placeholders": {} + }, + "reason": "Grunn", + "@reason": { + "type": "String", + "placeholders": {} + }, + "recording": "Opptak", + "@recording": { + "type": "String", + "placeholders": {} + }, + "redactedAnEvent": "{username} har trukket tilbake en hendelse", + "@redactedAnEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "reject": "Avslå", + "@reject": { + "type": "String", + "placeholders": {} + }, + "rejectedTheInvitation": "{username} avslo invitasjonen", + "@rejectedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "rejoin": "Ta del igjen", + "@rejoin": { + "type": "String", + "placeholders": {} + }, + "remove": "Fjern", + "@remove": { + "type": "String", + "placeholders": {} + }, + "removeAllOtherDevices": "Fjern alle andre enheter", + "@removeAllOtherDevices": { + "type": "String", + "placeholders": {} + }, + "removedBy": "Fjernet av {username}", + "@removedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "removeDevice": "Fjern enhet", + "@removeDevice": { + "type": "String", + "placeholders": {} + }, + "unbanFromChat": "Opphev bannlysning", + "@unbanFromChat": { + "type": "String", + "placeholders": {} + }, + "replaceRoomWithNewerVersion": "Erstatt rom med nyere versjon", + "@replaceRoomWithNewerVersion": { + "type": "String", + "placeholders": {} + }, + "reply": "Svar", + "@reply": { + "type": "String", + "placeholders": {} + }, + "reportMessage": "Rapporter melding", + "@reportMessage": { + "type": "String", + "placeholders": {} + }, + "requestPermission": "Forespør tilgang", + "@requestPermission": { + "type": "String", + "placeholders": {} + }, + "roomHasBeenUpgraded": "Rommet har blitt oppgradert", + "@roomHasBeenUpgraded": { + "type": "String", + "placeholders": {} + }, + "search": "Søk", + "@search": { + "type": "String", + "placeholders": {} + }, + "security": "Sikkerhet", + "@security": { + "type": "String", + "placeholders": {} + }, + "seenByUser": "Sett av {username}", + "@seenByUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "send": "Send", + "@send": { + "type": "String", + "placeholders": {} + }, + "sendAMessage": "Send en melding", + "@sendAMessage": { + "type": "String", + "placeholders": {} + }, + "sendAudio": "Send lyd", + "@sendAudio": { + "type": "String", + "placeholders": {} + }, + "sendFile": "Send fil", + "@sendFile": { + "type": "String", + "placeholders": {} + }, + "sendImage": "Send bilde", + "@sendImage": { + "type": "String", + "placeholders": {} + }, + "sendMessages": "Send meldinger", + "@sendMessages": { + "type": "String", + "placeholders": {} + }, + "sendOriginal": "Send original", + "@sendOriginal": { + "type": "String", + "placeholders": {} + }, + "sendVideo": "Send video", + "@sendVideo": { + "type": "String", + "placeholders": {} + }, + "sentAFile": "{username} sendte en fil", + "@sentAFile": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAnAudio": "{username} sendte lyd", + "@sentAnAudio": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAPicture": "{username} sendte et bilde", + "@sentAPicture": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentASticker": "{username} sendte et klistremerke", + "@sentASticker": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAVideo": "{username} sendte en video", + "@sentAVideo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentCallInformations": "{senderName} sendte anropsinfo", + "@sentCallInformations": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "setCustomEmotes": "Sett tilpassede smilefjes", + "@setCustomEmotes": { + "type": "String", + "placeholders": {} + }, + "setInvitationLink": "Sett invitasjonslenke", + "@setInvitationLink": { + "type": "String", + "placeholders": {} + }, + "setPermissionsLevel": "Sett tilgangsnivå", + "@setPermissionsLevel": { + "type": "String", + "placeholders": {} + }, + "setStatus": "Angi status", + "@setStatus": { + "type": "String", + "placeholders": {} + }, + "settings": "Innstilinger", + "@settings": { + "type": "String", + "placeholders": {} + }, + "share": "Del", + "@share": { + "type": "String", + "placeholders": {} + }, + "sharedTheLocation": "{username} delte posisjonen", + "@sharedTheLocation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "skip": "Hopp over", + "@skip": { + "type": "String", + "placeholders": {} + }, + "sourceCode": "Kildekode", + "@sourceCode": { + "type": "String", + "placeholders": {} + }, + "startedACall": "{senderName} startet en samtale", + "@startedACall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "status": "Status", + "@status": { + "type": "String", + "placeholders": {} + }, + "statusExampleMessage": "Hvordan har du det i dag?", + "@statusExampleMessage": { + "type": "String", + "placeholders": {} + }, + "submit": "Send inn", + "@submit": { + "type": "String", + "placeholders": {} + }, + "systemTheme": "System", + "@systemTheme": { + "type": "String", + "placeholders": {} + }, + "theyDontMatch": "Samsvarer ikke", + "@theyDontMatch": { + "type": "String", + "placeholders": {} + }, + "theyMatch": "Samsvarer", + "@theyMatch": { + "type": "String", + "placeholders": {} + }, + "title": "FluffyChat", + "@title": { + "description": "Title for the application", + "type": "String", + "placeholders": {} + }, + "tooManyRequestsWarning": "For mange forespørsler. Prøv igjen senere!", + "@tooManyRequestsWarning": { + "type": "String", + "placeholders": {} + }, + "transferFromAnotherDevice": "Overfør fra en annen enhet", + "@transferFromAnotherDevice": { + "type": "String", + "placeholders": {} + }, + "tryToSendAgain": "Prøv å sende igjen", + "@tryToSendAgain": { + "type": "String", + "placeholders": {} + }, + "unavailable": "Utilgjengelig", + "@unavailable": { + "type": "String", + "placeholders": {} + }, + "unbannedUser": "{username} opphevet bannlysning av {targetName}", + "@unbannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "unblockDevice": "Opphev blokkering av enhet", + "@unblockDevice": { + "type": "String", + "placeholders": {} + }, + "unknownDevice": "Ukjent enhet", + "@unknownDevice": { + "type": "String", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "Ukjent krypteringsalgoritme", + "@unknownEncryptionAlgorithm": { + "type": "String", + "placeholders": {} + }, + "unknownEvent": "Ukjent hendelse «{type}»", + "@unknownEvent": { + "type": "String", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "unmuteChat": "Opphev forstumming av sludring", + "@unmuteChat": { + "type": "String", + "placeholders": {} + }, + "unpin": "Løsne", + "@unpin": { + "type": "String", + "placeholders": {} + }, + "unreadChats": "{unreadCount, plural, other{{unreadCount} uleste sludringer}}", + "@unreadChats": { + "type": "String", + "placeholders": { + "unreadCount": { + "type": "int" + } + } + }, + "userAndOthersAreTyping": "{username} og {count} andre skriver…", + "@userAndOthersAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "userAndUserAreTyping": "{username} og {username2} skriver…", + "@userAndUserAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "username2": { + "type": "String" + } + } + }, + "userIsTyping": "{username} skriver…", + "@userIsTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "userLeftTheChat": "{username} har forlatt sludringen", + "@userLeftTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "username": "Brukernavn", + "@username": { + "type": "String", + "placeholders": {} + }, + "userSentUnknownEvent": "{username} sendte en {type}-hendelse", + "@userSentUnknownEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "type": { + "type": "String" + } + } + }, + "verify": "Bekreft", + "@verify": { + "type": "String", + "placeholders": {} + }, + "verifyStart": "Start bekreftelse", + "@verifyStart": { + "type": "String", + "placeholders": {} + }, + "verifySuccess": "Du har bekreftet!", + "@verifySuccess": { + "type": "String", + "placeholders": {} + }, + "verifyTitle": "Bekrefter annen konto", + "@verifyTitle": { + "type": "String", + "placeholders": {} + }, + "videoCall": "Videosamtale", + "@videoCall": { + "type": "String", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "Sludrehistorikkens synlighet", + "@visibilityOfTheChatHistory": { + "type": "String", + "placeholders": {} + }, + "visibleForAllParticipants": "Synlig for alle deltagere", + "@visibleForAllParticipants": { + "type": "String", + "placeholders": {} + }, + "visibleForEveryone": "Synlig for alle", + "@visibleForEveryone": { + "type": "String", + "placeholders": {} + }, + "voiceMessage": "Lydmelding", + "@voiceMessage": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerNumbers": "Venter på at samtalepartner skal godta tallene …", + "@waitingPartnerNumbers": { + "type": "String", + "placeholders": {} + }, + "wallpaper": "Bakgrunnsbilde", + "@wallpaper": { + "type": "String", + "placeholders": {} + }, + "warning": "Advarsel!", + "@warning": { + "type": "String", + "placeholders": {} + }, + "weSentYouAnEmail": "Du har fått en e-post", + "@weSentYouAnEmail": { + "type": "String", + "placeholders": {} + }, + "whoCanPerformWhichAction": "Hvem kan utføre hvilken handling", + "@whoCanPerformWhichAction": { + "type": "String", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "Hvem tillates å ta del i denne gruppen", + "@whoIsAllowedToJoinThisGroup": { + "type": "String", + "placeholders": {} + }, + "whyDoYouWantToReportThis": "Hvorfor ønsker du å rapportere dette?", + "@whyDoYouWantToReportThis": { + "type": "String", + "placeholders": {} + }, + "withTheseAddressesRecoveryDescription": "Med disse adressene kan du gjenopprette passordet ditt hvis du trenger det.", + "@withTheseAddressesRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "writeAMessage": "Skriv en melding …", + "@writeAMessage": { + "type": "String", + "placeholders": {} + }, + "yes": "Ja", + "@yes": { + "type": "String", + "placeholders": {} + }, + "you": "Deg", + "@you": { + "type": "String", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "Du deltar ikke lenger i denne sludringen", + "@youAreNoLongerParticipatingInThisChat": { + "type": "String", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "Du har blitt bannlyst fra denne sludringen", + "@youHaveBeenBannedFromThisChat": { + "type": "String", + "placeholders": {} + }, + "yourPublicKey": "Din offentlige nøkkel", + "@yourPublicKey": { + "type": "String", + "placeholders": {} + }, + "toggleUnread": "Marker som lest/ulest", + "@toggleUnread": { + "type": "String", + "placeholders": {} + }, + "toggleMuted": "Veksle forstumming", + "@toggleMuted": { + "type": "String", + "placeholders": {} + }, + "toggleFavorite": "Veksle favorittmerking", + "@toggleFavorite": { + "type": "String", + "placeholders": {} + }, + "noConnectionToTheServer": "Ingen tilkobling til tjeneren", + "@noConnectionToTheServer": { + "type": "String", + "placeholders": {} + }, + "addEmail": "Legg til e-post", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "repeatPassword": "Gjenta passord", + "@repeatPassword": {}, + "addToSpace": "Legg til space", + "@addToSpace": {}, + "allChats": "Alle samtaler", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "autoplayImages": "Automatisk spill av animerte stickers og emojis", + "@autoplayImages": { + "type": "String", + "placeholder": {} + }, + "badServerLoginTypesException": "Denne hjemme serveren støtter følgende innloggings-typer:\n{serverVersions}\nMen denne applikasjonen støtter kun:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "sendOnEnter": "Trykk på enter for å sende", + "@sendOnEnter": {}, + "badServerVersionsException": "Denne hjemme serveren støtter følgene Spec-versjoner:\n{serverVersions}\nMen denne applikasjonen støtter kun {supportedVersions}", + "@badServerVersionsException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "blocked": "Blokkert", + "@blocked": { + "type": "String", + "placeholders": {} + }, + "cantOpenUri": "Kan ikke åpne URI {uri}", + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "changeYourAvatar": "Bytt profilbilde", + "@changeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "notAnImage": "Ikke en bildefil.", + "@notAnImage": {}, + "importNow": "Importer nå", + "@importNow": {}, + "hugContent": "{senderName} klemmer deg", + "@hugContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "space": "Område", + "@space": {}, + "spaces": "Områder", + "@spaces": {}, + "cuddleContent": "{senderName} koser med deg", + "@cuddleContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "appLockDescription": "Lås appen med en PIN-kode når den ikke er i bruk", + "@appLockDescription": {}, + "ignoreUser": "Ignorer bruker", + "@ignoreUser": {}, + "setCustomPermissionLevel": "Angi egendefinert tillatelsesnivå", + "@setCustomPermissionLevel": {}, + "normalUser": "Vanlig bruker", + "@normalUser": {}, + "replace": "Erstatt", + "@replace": {}, + "noMoreChatsFound": "Ingen flere chatter funnet ...", + "@noMoreChatsFound": {}, + "confirmMatrixId": "Vennligst bekreft din Matrix-ID for å slette kontoen din.", + "@confirmMatrixId": {}, + "unread": "Ulest", + "@unread": {}, + "aboutHomeserver": "Om {homeserver}", + "@aboutHomeserver": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "commandHint_hug": "Send en klem", + "@commandHint_hug": {}, + "markAsRead": "Marker som lest", + "@markAsRead": {}, + "openLinkInBrowser": "Åpne lenke i nettleser", + "@openLinkInBrowser": {}, + "start": "Start", + "@start": {}, + "passwordsDoNotMatch": "Passordene stemmer ikke overens", + "@passwordsDoNotMatch": {}, + "decline": "Avslå", + "@decline": {}, + "emailOrUsername": "E-post eller brukernavn", + "@emailOrUsername": {}, + "encryptThisChat": "Krypter denne chatten", + "@encryptThisChat": {}, + "nextAccount": "Neste konto", + "@nextAccount": {}, + "doNotShowAgain": "Ikke vis igjen", + "@doNotShowAgain": {}, + "notificationRuleContainsUserName": "Inneholder brukernavn", + "@notificationRuleContainsUserName": {}, + "notificationRuleMaster": "Demp alle varslinger", + "@notificationRuleMaster": {}, + "presenceStyle": "Tilstedeværelse:", + "@presenceStyle": { + "type": "String", + "placeholders": {} + }, + "verified": "Verifisert", + "@verified": { + "type": "String", + "placeholders": {} + }, + "saveFile": "Lagre fil", + "@saveFile": { + "type": "String", + "placeholders": {} + }, + "recoveryKey": "Gjenopprettingsnøkkel", + "@recoveryKey": {}, + "sendSticker": "Send sticker", + "@sendSticker": { + "type": "String", + "placeholders": {} + }, + "shareLocation": "Del lokasjon", + "@shareLocation": { + "type": "String", + "placeholders": {} + }, + "showPassword": "Vis passord", + "@showPassword": { + "type": "String", + "placeholders": {} + }, + "synchronizingPleaseWait": "Synkroniserer … Vent litt.", + "@synchronizingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "dismiss": "Avvis", + "@dismiss": {}, + "openChat": "Åpne chat", + "@openChat": {}, + "addWidget": "Legg til widget", + "@addWidget": {}, + "reopenChat": "Gjenåpne chat", + "@reopenChat": {}, + "changeTheDescriptionOfTheGroup": "Endre beskrivelsen til chatten", + "@changeTheDescriptionOfTheGroup": {}, + "inviteOtherUsers": "Inviter andre brukere til denne chatten", + "@inviteOtherUsers": {}, + "open": "Åpne", + "@open": {}, + "waitingForServer": "Venter på server...", + "@waitingForServer": {}, + "notificationRuleJitsi": "Jitsi", + "@notificationRuleJitsi": {}, + "takeAPhoto": "Ta et bilde", + "@takeAPhoto": {}, + "setChatDescription": "Sett chat beskrivelse", + "@setChatDescription": {}, + "singlesignon": "Single Sign on (SSO)", + "@singlesignon": { + "type": "String", + "placeholders": {} + }, + "openGallery": "Åpne galleri", + "@openGallery": {}, + "widgetCustom": "Egendefinert", + "@widgetCustom": {}, + "widgetVideo": "Video", + "@widgetVideo": {}, + "pushNotificationsNotAvailable": "Push-varsler er ikke tilgjengelige", + "@pushNotificationsNotAvailable": {}, + "gallery": "Galleri", + "@gallery": {}, + "moderatorLevel": "{level} - Moderator", + "@moderatorLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "adminLevel": "{level} - Admin", + "@adminLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "restricted": "Begrenset", + "@restricted": {}, + "updateInstalled": "🎉 Oppdatering {version} installert!", + "@updateInstalled": { + "type": "String", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "calculatingFileSize": "Beregner filstørrelse...", + "@calculatingFileSize": {}, + "continueText": "Fortsett", + "@continueText": {}, + "serverInformation": "Serverinformasjon:", + "@serverInformation": {}, + "previous": "Forrige", + "@previous": {}, + "name": "Navn", + "@name": {}, + "version": "Versjon", + "@version": {}, + "invalidUrl": "Ugyldig url", + "@invalidUrl": {}, + "notificationRuleReaction": "Reaksjon", + "@notificationRuleReaction": {}, + "notificationRuleMessage": "Melding", + "@notificationRuleMessage": {}, + "notificationRuleEncrypted": "Kkryptert", + "@notificationRuleEncrypted": {}, + "more": "Mer", + "@more": {}, + "passwordIsWrong": "Det inntastede passordet ditt er feil", + "@passwordIsWrong": {}, + "startConversation": "Start samtale", + "@startConversation": {}, + "manageAccount": "Administrer konto", + "@manageAccount": {}, + "nothingFound": "Ingenting funnet...", + "@nothingFound": {}, + "incomingMessages": "Innkommende meldinger", + "@incomingMessages": {}, + "changelog": "Endringslogg", + "@changelog": {}, + "contactServerAdmin": "Kontakt serveradministrator", + "@contactServerAdmin": {}, + "setWallpaper": "Sett bakgrunnsbilde", + "@setWallpaper": {}, + "unsupportedAndroidVersion": "Usupportert Android-versjon", + "@unsupportedAndroidVersion": {}, + "widgetName": "Navn", + "@widgetName": {}, + "youJoinedTheChat": "Du har blitt med i chatten", + "@youJoinedTheChat": {}, + "widgetJitsi": "Jitsi Meet", + "@widgetJitsi": {}, + "widgetNameError": "Vennligst oppgi et visningsnavn.", + "@widgetNameError": {}, + "youRejectedTheInvitation": "Du har avvist invitasjonen", + "@youRejectedTheInvitation": {}, + "formattedMessages": "Formaterte meldinger", + "@formattedMessages": {}, + "allDevices": "Alle enheter", + "@allDevices": {}, + "learnMore": "Lær mer", + "@learnMore": {}, + "sorryThatsNotPossible": "Beklager... det er ikke mulig", + "@sorryThatsNotPossible": {}, + "markAsUnread": "Marker som ulest", + "@markAsUnread": {}, + "newGroup": "Ny gruppe", + "@newGroup": {}, + "userRole": "Brukerrolle", + "@userRole": {}, + "addLink": "Legg til lenke", + "@addLink": {}, + "synchronizingPleaseWaitCounter": " Synkroniserer… ({percentage}%)", + "@synchronizingPleaseWaitCounter": { + "type": "String", + "placeholders": { + "percentage": { + "type": "String" + } + } + }, + "unverified": "Ikke verifisert", + "@unverified": {}, + "thisDevice": "Denne enheten:", + "@thisDevice": {}, + "sendingAttachment": "Sender vedlegg...", + "@sendingAttachment": {}, + "removeYourAvatar": "Fjern din avatar", + "@removeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "importFromZipFile": "Importer fra .zip-fil", + "@importFromZipFile": {}, + "select": "Velg", + "@select": {}, + "databaseMigrationTitle": "Databasen er optimalisert", + "@databaseMigrationTitle": {}, + "newPassword": "Nytt passord", + "@newPassword": {}, + "files": "Filer", + "@files": {}, + "searchIn": "Søk i chatten «{chat}»...", + "@searchIn": { + "type": "String", + "placeholders": { + "chat": { + "type": "String" + } + } + }, + "approve": "Godkjenn", + "@approve": {}, + "goToSpace": "Gå til område: {space}", + "@goToSpace": { + "type": "String", + "space": {} + }, + "userLevel": "{level} - Bruker", + "@userLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "oneOfYourDevicesIsNotVerified": "En av dine enheter er ikke verifisert", + "@oneOfYourDevicesIsNotVerified": {}, + "website": "Nettside", + "@website": {}, + "boldText": "Fet skrift", + "@boldText": {}, + "pleaseFillOut": "Vennligst fyll ut", + "@pleaseFillOut": {}, + "importEmojis": "Importer emojier", + "@importEmojis": {}, + "supposedMxid": "Denne bør være {mxid}", + "@supposedMxid": { + "type": "String", + "placeholders": { + "mxid": { + "type": "String" + } + } + }, + "addChatDescription": "Legg til chat beskrivelse...", + "@addChatDescription": {}, + "commandHint_roomupgrade": "Oppgrader dette rommet til den gitte romversjonen", + "@commandHint_roomupgrade": {}, + "hideMemberChangesInPublicChatsBody": "Ikke vis i chattens tidslinje hvis noen blir med i eller forlater en offentlig chat for økt lesbarhet.", + "@hideMemberChangesInPublicChatsBody": {}, + "overview": "Oversikt", + "@overview": {}, + "notifyMeFor": "Varsle meg om", + "@notifyMeFor": {}, + "passwordRecoverySettings": "Innstillinger for gjenoppretting av passord", + "@passwordRecoverySettings": {}, + "people": "Folk", + "@people": { + "type": "String", + "placeholders": {} + }, + "pleaseChoose": "Vennligst velg", + "@pleaseChoose": { + "type": "String", + "placeholders": {} + }, + "pleaseChooseAPasscode": "Vennligst velg en passordkode", + "@pleaseChooseAPasscode": { + "type": "String", + "placeholders": {} + }, + "pleaseEnter4Digits": "Skriv inn fire sifre eller la feltet stå tomt for å deaktivere applåsen.", + "@pleaseEnter4Digits": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterRecoveryKey": "Vennligst skriv inn gjenopprettingsnøkkelen din:", + "@pleaseEnterRecoveryKey": {}, + "pleaseEnterYourPin": "Vennligst skriv inn PIN-koden din", + "@pleaseEnterYourPin": { + "type": "String", + "placeholders": {} + }, + "globalChatId": "Global chat-ID", + "@globalChatId": {}, + "allRooms": "Alle gruppechatter", + "@allRooms": { + "type": "String", + "placeholders": {} + }, + "chatPermissions": "Chat tillatelser", + "@chatPermissions": {}, + "setPermissionsLevelDescription": "Vennligst velg en forhåndsdefinert rolle nedenfor eller skriv inn et tilpasset tillatelsesnivå mellom 0 og 100.", + "@setPermissionsLevelDescription": {}, + "commandHint_invite": "Inviter den gitte brukeren til dette rommet", + "@commandHint_invite": { + "type": "String", + "description": "Usage hint for the command /invite" + }, + "commandHint_join": "Bli med i det gitte rommet", + "@commandHint_join": { + "type": "String", + "description": "Usage hint for the command /join" + }, + "chats": "Chatter", + "@chats": { + "type": "String", + "placeholders": {} + }, + "yourChatBackupHasBeenSetUp": "Sikkerhetskopien av chatten din er konfigurert.", + "@yourChatBackupHasBeenSetUp": {}, + "discover": "Oppdag", + "@discover": {}, + "thereAreCountUsersBlocked": "Akkurat nå er det {count} blokkerte brukere.", + "@thereAreCountUsersBlocked": { + "type": "String", + "count": {} + }, + "sendCanceled": "Sending avbrutt", + "@sendCanceled": {}, + "loginWithMatrixId": "Logg på med Matrix ID", + "@loginWithMatrixId": {}, + "discoverHomeservers": "Oppdag hjemmeservere", + "@discoverHomeservers": {}, + "shareInviteLink": "Del invitasjonslenke", + "@shareInviteLink": {}, + "scanQrCode": "Skann QR-kode", + "@scanQrCode": {}, + "messagesStyle": "Meldinger:", + "@messagesStyle": {}, + "hydrate": "Gjenopprett fra sikkerhetskopifil", + "@hydrate": {}, + "oneClientLoggedOut": "En av klientene dine har blitt logget ut", + "@oneClientLoggedOut": {}, + "addAccount": "Legg til konto", + "@addAccount": {}, + "enableMultiAccounts": "(BETA) Aktiver flere kontoer på denne enheten", + "@enableMultiAccounts": {}, + "openInMaps": "Åpne i kart", + "@openInMaps": { + "type": "String", + "placeholders": {} + }, + "link": "Lenke", + "@link": {}, + "serverRequiresEmail": "Denne serveren må validere e-postadressen din for registrering.", + "@serverRequiresEmail": {}, + "or": "Eller", + "@or": { + "type": "String", + "placeholders": {} + }, + "previousAccount": "Forrige konto", + "@previousAccount": {}, + "widgetUrlError": "Dette er ikke en gyldig URL.", + "@widgetUrlError": {}, + "custom": "Egendefinert", + "@custom": {}, + "user": "Bruker", + "@user": {}, + "users": "Brukere", + "@users": {}, + "countInvited": "{count} inviterte", + "@countInvited": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "createGroup": "Opprett gruppe", + "@createGroup": {}, + "editRoomAliases": "Rediger rom aliaser", + "@editRoomAliases": { + "type": "String", + "placeholders": {} + }, + "accessAndVisibility": "Tilgang og synlighet", + "@accessAndVisibility": {}, + "hideInvalidOrUnknownMessageFormats": "Skjul ugyldige eller ukjente meldingsformater", + "@hideInvalidOrUnknownMessageFormats": {}, + "block": "Blokkér", + "@block": {}, + "blockedUsers": "Blokkerte brukere", + "@blockedUsers": {}, + "tryAgain": "Prøv igjen", + "@tryAgain": {}, + "invalidServerName": "Ugyldig servernavn", + "@invalidServerName": {}, + "messageInfo": "Meldingsinformasjon", + "@messageInfo": {}, + "time": "Tid", + "@time": {}, + "messageType": "Meldingstype", + "@messageType": {}, + "sender": "Avsender", + "@sender": {}, + "publish": "Publiser", + "@publish": {}, + "videoWithSize": "Video ({size})", + "@videoWithSize": { + "type": "String", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "reportUser": "Rapporter bruker", + "@reportUser": {}, + "youHaveWithdrawnTheInvitationFor": "Du har trukket tilbake invitasjonen for {user}", + "@youHaveWithdrawnTheInvitationFor": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youAcceptedTheInvitation": "👍 Du har akseptert invitasjonen", + "@youAcceptedTheInvitation": {}, + "youBannedUser": "Du stengte ute {user}", + "@youBannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "chatDescriptionHasBeenChanged": "Chatbeskrivelsen er endret", + "@chatDescriptionHasBeenChanged": {}, + "goToTheNewRoom": "Gå til det nye rommet", + "@goToTheNewRoom": { + "type": "String", + "placeholders": {} + }, + "screenSharingTitle": "skjermdeling", + "@screenSharingTitle": {}, + "screenSharingDetail": "Du deler skjermen din i FuffyChat", + "@screenSharingDetail": {}, + "callingPermissions": "Anropstillatelser", + "@callingPermissions": {}, + "callingAccountDetails": "Lar FluffyChat bruke den innebygde Android-oppringingsappen.", + "@callingAccountDetails": {}, + "appearOnTop": "Vis øverst", + "@appearOnTop": {}, + "otherCallingPermissions": "Mikrofon, kamera og andre FluffyChat-tillatelser", + "@otherCallingPermissions": {}, + "whyIsThisMessageEncrypted": "Hvorfor er denne meldingen uleselig?", + "@whyIsThisMessageEncrypted": {}, + "yourGlobalUserIdIs": "Din globale bruker-ID er: ", + "@yourGlobalUserIdIs": {}, + "searchChatsRooms": "Søk etter #chatter, @brukere...", + "@searchChatsRooms": {}, + "groupName": "Gruppenavn", + "@groupName": {}, + "createGroupAndInviteUsers": "Opprett en gruppe og inviter brukere", + "@createGroupAndInviteUsers": {}, + "invite": "Inviter", + "@invite": {}, + "wrongPinEntered": "Feil PIN-kode tastet inn! Prøv igjen om {seconds} sekunder...", + "@wrongPinEntered": { + "type": "String", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "sendAsText": "Send som tekst", + "@sendAsText": { + "type": "String" + }, + "sendImages": "Send {count} bilde", + "@sendImages": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "presencesToggle": "Vis statusmeldinger fra andre brukere", + "@presencesToggle": { + "type": "String", + "placeholders": {} + }, + "voiceCall": "Taleanrop", + "@voiceCall": {}, + "accessAndVisibilityDescription": "Hvem som har lov til å bli med i denne chatten og hvordan chatten kan oppdages.", + "@accessAndVisibilityDescription": {}, + "calls": "Anrop", + "@calls": {}, + "customEmojisAndStickers": "Egendefinerte emojier og klistremerker", + "@customEmojisAndStickers": {}, + "oopsPushError": "Oops! Dessverre oppsto det en feil under oppsettet av push-varsler.", + "@oopsPushError": { + "type": "String", + "placeholders": {} + }, + "openVideoCamera": "Åpne kameraet for en video", + "@openVideoCamera": { + "type": "String", + "placeholders": {} + }, + "obtainingLocation": "Henter sted …", + "@obtainingLocation": { + "type": "String", + "placeholders": {} + }, + "noDatabaseEncryption": "Databasekryptering støttes ikke på denne plattformen", + "@noDatabaseEncryption": {}, + "changeGeneralChatSettings": "Endre generelle chatinnstillinger", + "@changeGeneralChatSettings": {}, + "changeTheChatPermissions": "Endre chattillatelsene", + "@changeTheChatPermissions": {}, + "youInvitedToBy": "📩 Du har blitt invitert via lenke til:\n{alias}", + "@youInvitedToBy": { + "placeholders": { + "alias": { + "type": "String" + } + } + }, + "youInvitedBy": "📩 Du har blitt invitert av {user}", + "@youInvitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "invitedBy": "📩 Invitert av {user}", + "@invitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youInvitedUser": "📩 Du inviterte {user}", + "@youInvitedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youKicked": "👞 You sparket ut {user}", + "@youKicked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youKickedAndBanned": "🙅 Du sparket og stengte ute {user}", + "@youKickedAndBanned": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "countFiles": "{count} filer", + "@countFiles": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "noOtherDevicesFound": "Ingen andre enheter funnet", + "@noOtherDevicesFound": {}, + "fileIsTooBigForServer": "Kan ikke sende! Serveren støtter bare vedlegg opptil {max}.", + "@fileIsTooBigForServer": { + "type": "String", + "placeholders": { + "max": { + "type": "String" + } + } + }, + "fileHasBeenSavedAt": "Filen er lagret på {path}", + "@fileHasBeenSavedAt": { + "type": "String", + "placeholders": { + "path": { + "type": "String" + } + } + }, + "jumpToLastReadMessage": "Hopp til sist leste melding", + "@jumpToLastReadMessage": {}, + "serverLimitReached": "Grensen for server er nådd! Venter i {seconds} sekunder...", + "@serverLimitReached": { + "type": "integer", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "blur": "Uskarphet:", + "@blur": {}, + "opacity": "Ugjennomsiktighet:", + "@opacity": {}, + "noContactInformationProvided": "Serveren oppgir ingen gyldig kontaktinformasjon", + "@noContactInformationProvided": {}, + "supportPage": "Supportside", + "@supportPage": {}, + "compress": "Komprimer", + "@compress": {}, + "italicText": "Kursiv tekst", + "@italicText": {}, + "strikeThrough": "Gjennomstreking", + "@strikeThrough": {}, + "youUnbannedUser": "Du opphevet utestengelsen av {user}", + "@youUnbannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "disableEncryptionWarning": "Av sikkerhetshensyn kan du ikke deaktivere kryptering i en chat der det har vært aktivert tidligere.", + "@disableEncryptionWarning": {}, + "deviceKeys": "Enhetsnøkler:", + "@deviceKeys": {}, + "readUpToHere": "Lest frem til her", + "@readUpToHere": {}, + "jump": "Hopp", + "@jump": {}, + "reportErrorDescription": "😭 Å nei. Noe gikk galt. Hvis du ønsker det, kan du rapportere denne feilen til utviklerne.", + "@reportErrorDescription": {}, + "invalidInput": "Ugyldig inndata!", + "@invalidInput": {}, + "pleaseEnterANumber": "Vennligst skriv inn et tall større enn 0", + "@pleaseEnterANumber": {}, + "archiveRoomDescription": "Chatten vil bli flyttet til arkivet. Andre brukere vil kunne se at du har forlatt chatten.", + "@archiveRoomDescription": {}, + "removeDevicesDescription": "Du vil bli logget ut av denne enheten og vil ikke lenger kunne motta meldinger.", + "@removeDevicesDescription": {}, + "profileNotFound": "Brukeren ble ikke funnet på serveren. Kanskje det er et tilkoblingsproblem, eller brukeren finnes ikke.", + "@profileNotFound": {}, + "setTheme": "Angi tema:", + "@setTheme": {}, + "setColorTheme": "Angi fargetema:", + "@setColorTheme": {}, + "inviteGroupChat": "📨 Invitasjon til gruppechat", + "@inviteGroupChat": {}, + "invitePrivateChat": "📨 Invitasjon til privat chat", + "@invitePrivateChat": {}, + "pleaseChooseAStrongPassword": "Vennligst velg et sterkt passord", + "@pleaseChooseAStrongPassword": {}, + "publicLink": "Offentlig lenke", + "@publicLink": {}, + "publicChatAddresses": "Offentlige chatadresser", + "@publicChatAddresses": {}, + "createNewAddress": "Opprett ny adresse", + "@createNewAddress": {}, + "initAppError": "Det oppsto en feil under oppstart av appen", + "@initAppError": {}, + "minimumPowerLevel": "{level} er det laveste strømnivået.", + "@minimumPowerLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "String" + } + } + }, + "sendReadReceipts": "Send lesebekreftelser", + "@sendReadReceipts": {}, + "searchMore": "Søk mer...", + "@searchMore": {}, + "shareKeysWithDescription": "Hvilke enheter bør man stole på, slik at de kan lese meldingene dine i krypterte chatter?", + "@shareKeysWithDescription": {}, + "crossVerifiedDevicesIfEnabled": "Kryssbekreftede enheter hvis dette er aktivert", + "@crossVerifiedDevicesIfEnabled": {}, + "crossVerifiedDevices": "Kryssverifiserte enheter", + "@crossVerifiedDevices": {}, + "verifiedDevicesOnly": "Bare verifiserte enheter", + "@verifiedDevicesOnly": {}, + "recordAVideo": "Ta opp en video", + "@recordAVideo": {}, + "optionalMessage": "(Valgfritt) melding...", + "@optionalMessage": {}, + "notSupportedOnThisDevice": "Ikke støttet på denne enheten", + "@notSupportedOnThisDevice": {}, + "enterNewChat": "Bli med i ny chat", + "@enterNewChat": {}, + "pleaseWaitUntilInvited": "Vennligst vent nå, til noen fra rommet inviterer deg.", + "@pleaseWaitUntilInvited": {}, + "notificationRuleSuppressNoticesDescription": "Demper varsler fra automatiserte klienter som roboter.", + "@notificationRuleSuppressNoticesDescription": {}, + "notificationRuleInviteForMe": "Inviter for meg", + "@notificationRuleInviteForMe": {}, + "notificationRuleInviteForMeDescription": "Varsler bruker når en blir invitert til et rom.", + "@notificationRuleInviteForMeDescription": {}, + "newChatRequest": "📩 Ny chatforespørsel", + "@newChatRequest": {}, + "appWantsToUseForLogin": "Bruk '{server}' for å logge inn", + "@appWantsToUseForLogin": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "appWantsToUseForLoginDescription": "Du gir herved tillatelse til at appen og nettstedet deler informasjon om deg.", + "@appWantsToUseForLoginDescription": {}, + "exportEmotePack": "Eksporter smilefjes som .zip-fil", + "@exportEmotePack": {}, + "noUsersFoundWithQuery": "Dessverre ble ingen bruker funnet med \"{query}\". Sjekk om du har skrevet feil.", + "@noUsersFoundWithQuery": { + "type": "String", + "placeholders": { + "query": { + "type": "String" + } + } + }, + "chatCanBeDiscoveredViaSearchOnServer": "Chatten kan oppdages via søket på {server}", + "@chatCanBeDiscoveredViaSearchOnServer": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "leaveEmptyToClearStatus": "La stå tomt for å slette statusen din.", + "@leaveEmptyToClearStatus": {}, + "searchForUsers": "Søk etter @brukere...", + "@searchForUsers": {}, + "pleaseEnterYourCurrentPassword": "Skriv inn ditt nåværende passord", + "@pleaseEnterYourCurrentPassword": {}, + "databaseMigrationBody": "Vent litt. Dette kan ta et øyeblikk.", + "@databaseMigrationBody": {}, + "wrongRecoveryKey": "Beklager ... dette ser ikke ut til å være riktig gjenopprettingsnøkkel.", + "@wrongRecoveryKey": {}, + "declineInvitation": "Avslå invitasjon", + "@declineInvitation": {}, + "restoreSessionBody": "Appen prøver nå å gjenopprette økten din fra sikkerhetskopien. Rapporter denne feilen til utviklerne på {url}. Feilmeldingen er: {error}", + "@restoreSessionBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "forwardMessageTo": "Videresende melding til {roomName}?", + "@forwardMessageTo": { + "type": "String", + "placeholders": { + "roomName": { + "type": "String" + } + } + }, + "hideUnimportantStateEvents": "Skjul uviktige tilstandshendelser", + "@hideUnimportantStateEvents": {}, + "hidePresences": "Skjul statuslisten?", + "@hidePresences": {}, + "signInWithPassword": "Logg inn med passord", + "@signInWithPassword": {}, + "pleaseTryAgainLaterOrChooseDifferentServer": "Prøv igjen senere eller velg en annen server.", + "@pleaseTryAgainLaterOrChooseDifferentServer": {}, + "signInWith": "Logg inn med {provider}", + "@signInWith": { + "type": "String", + "placeholders": { + "provider": { + "type": "String" + } + } + }, + "noMessagesYet": "Ingen meldinger enda", + "@noMessagesYet": {}, + "notificationRuleMasterDescription": "Overstyrer alle andre regler og deaktiverer alle varsler.", + "@notificationRuleMasterDescription": {}, + "notificationRuleSuppressNotices": "Undertrykk automatiserte meldinger", + "@notificationRuleSuppressNotices": {}, + "startedKeyVerification": "{sender} startet nøkkelverifisering", + "@startedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "transparent": "Gjennomsiktig", + "@transparent": {}, + "stickers": "Stickers", + "@stickers": {}, + "commandHint_ignore": "Ignorer den oppgitte matrix IDen", + "@commandHint_ignore": {}, + "commandHint_unignore": "Opphev ignorering av den gitte matrix IDen", + "@commandHint_unignore": {}, + "unreadChatsInApp": "{appname}: {unread} uleste chatter", + "@unreadChatsInApp": { + "type": "String", + "placeholders": { + "appname": { + "type": "String" + }, + "unread": { + "type": "String" + } + } + }, + "changeTheVisibilityOfChatHistory": "Endre synligheten til chatloggen", + "@changeTheVisibilityOfChatHistory": {}, + "changeTheCanonicalRoomAlias": "Endre hovedadressen til den offentlige chatten", + "@changeTheCanonicalRoomAlias": {}, + "sendRoomNotifications": "Send en @room varsling", + "@sendRoomNotifications": {}, + "formattedMessagesDescription": "Vis rikt meldingsinnhold som fet skrift ved hjelp av markdown.", + "@formattedMessagesDescription": {}, + "verifyOtherUser": "🔐 Verifiser annen bruker", + "@verifyOtherUser": {}, + "verifyOtherDevice": "🔐 Verifiser annen enhet", + "@verifyOtherDevice": {}, + "sendTypingNotificationsDescription": "Andre deltakere i en chat kan se når du skriver en ny melding.", + "@sendTypingNotificationsDescription": {}, + "sendReadReceiptsDescription": "Andre deltakere i en chat kan se når du har lest en melding.", + "@sendReadReceiptsDescription": {}, + "commandHint_logout": "Logg av din nåværende enhet", + "@commandHint_logout": {}, + "commandHint_logoutall": "Logg ut alle aktive enheter", + "@commandHint_logoutall": {}, + "resume": "Gjenoppta", + "@resume": {}, + "unknownPushRule": "Ukjent push-regel '{rule}'", + "@unknownPushRule": { + "type": "String", + "placeholders": { + "rule": { + "type": "String" + } + } + }, + "sentVoiceMessage": "🎙️ {duration} – Talemelding fra {sender}", + "@sentVoiceMessage": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "duration": { + "type": "String" + } + } + }, + "deletePushRuleCanNotBeUndone": "Hvis du sletter denne varslingsinnstillingen, kan du ikke angre dette.", + "@deletePushRuleCanNotBeUndone": {}, + "shareKeysWith": "Del nøkler med...", + "@shareKeysWith": {}, + "canceledKeyVerification": "{sender} avbrøt nøkkelverifisering", + "@canceledKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "completedKeyVerification": "{sender} fullførte nøkkelverifisering", + "@completedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "isReadyForKeyVerification": "{sender} er klar for nøkkelverifisering", + "@isReadyForKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "requestedKeyVerification": "{sender} har bedt om nøkkelverifisering", + "@requestedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "notificationRuleEncryptedRoomOneToOne": "Kryptert rom én-til-én", + "@notificationRuleEncryptedRoomOneToOne": {}, + "notificationRuleEncryptedRoomOneToOneDescription": "Varsler brukeren om meldinger i krypterte en-til-en-rom.", + "@notificationRuleEncryptedRoomOneToOneDescription": {}, + "notificationRuleRoomOneToOne": "Rom én-til-én", + "@notificationRuleRoomOneToOne": {}, + "customEmojisAndStickersBody": "Legg til eller del tilpassede emojier eller klistremerker som kan brukes i hvilken som helst chat.", + "@customEmojisAndStickersBody": {}, + "homeserver": "Hjemmeserver", + "@homeserver": {}, + "errorObtainingLocation": "Feil ved henting av posisjon: {error}", + "@errorObtainingLocation": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "chatDescription": "Chat beskrivelse", + "@chatDescription": {}, + "hideRedactedMessages": "Skjul redigerte meldinger", + "@hideRedactedMessages": {}, + "hideRedactedMessagesBody": "Hvis noen redigerer en melding, vil ikke denne meldingen lenger være synlig i chatten.", + "@hideRedactedMessagesBody": {}, + "blockListDescription": "Du kan blokkere brukere som forstyrrer deg. Du vil ikke kunne motta meldinger eller rominvitasjoner fra brukerne på din personlige blokkeringsliste.", + "@blockListDescription": {}, + "blockUsername": "Ignorer brukernavn", + "@blockUsername": {}, + "inviteContactToGroupQuestion": "Vil du invitere {contact} til chatten «{groupName}»?", + "@inviteContactToGroupQuestion": {}, + "noChatDescriptionYet": "Ingen chatbeskrivelse er opprettet ennå.", + "@noChatDescriptionYet": {}, + "redactMessageDescription": "Meldingen vil bli redigert for alle deltakerne i denne samtalen. Dette kan ikke angres.", + "@redactMessageDescription": {}, + "optionalRedactReason": "(Valgfritt) Årsak til redigering av denne meldingen...", + "@optionalRedactReason": {}, + "locationDisabledNotice": "Lokasjonstjenester er deaktivert. Vennligst aktiver dem for at du skal kunne dele posisjonen din.", + "@locationDisabledNotice": { + "type": "String", + "placeholders": {} + }, + "locationPermissionDeniedNotice": "Lokasjonstillatelse nektet. Gi dem tillatelse til å dele din lokasjon.", + "@locationPermissionDeniedNotice": { + "type": "String", + "placeholders": {} + }, + "dehydrate": "Eksporter økten og slett enheten", + "@dehydrate": {}, + "dehydrateWarning": "Denne handlingen kan ikke angres. Sørg for at du lagrer sikkerhetskopifilen på en trygg måte.", + "@dehydrateWarning": {}, + "dehydrateTor": "TOR-brukere: Eksporter økt", + "@dehydrateTor": {}, + "dehydrateTorLong": "For TOR-brukere anbefales det å eksportere økten før vinduet lukkes.", + "@dehydrateTorLong": {}, + "hydrateTor": "TOR-brukere: Importer eksportert økt", + "@hydrateTor": {}, + "hydrateTorLong": "Eksporterte du økten din sist gang på TOR? Importer den raskt og fortsett å chatte.", + "@hydrateTorLong": {}, + "noEncryptionForPublicRooms": "Du kan bare aktivere kryptering på rom som ikke er offentlig tilgjengelig.", + "@noEncryptionForPublicRooms": { + "type": "String", + "placeholders": {} + }, + "noMatrixServer": "{server1} er ingen matrix-server, bruk {server2} i stedet?", + "@noMatrixServer": { + "type": "String", + "placeholders": { + "server1": { + "type": "String" + }, + "server2": { + "type": "String" + } + } + }, + "roomNotificationSettings": "Innstillinger for romvarsler", + "@roomNotificationSettings": {}, + "userSpecificNotificationSettings": "Brukerspesifikke varslingsinnstillinger", + "@userSpecificNotificationSettings": {}, + "otherNotificationSettings": "Andre varslingsinnstillinger", + "@otherNotificationSettings": {}, + "contentNotificationSettings": "Innstillinger for innholdsvarslinger", + "@contentNotificationSettings": {}, + "generalNotificationSettings": "Generelle varslingsinnstillinger", + "@generalNotificationSettings": {}, + "appIntroduction": "Med FluffyChat kan du chatte med vennene dine på tvers av forskjellige meldingstjenester. Finn ut mer på https://matrix.org eller trykk bare på *Fortsett*.", + "@appIntroduction": {}, + "notificationRuleContainsUserNameDescription": "Varsler bruker når en melding inneholder ens brukernavn.", + "@notificationRuleContainsUserNameDescription": {}, + "hideMemberChangesInPublicChats": "Skjul medlemsendringer i offentlige chatter", + "@hideMemberChangesInPublicChats": {}, + "removeFromSpace": "Fjern fra området", + "@removeFromSpace": {}, + "addToSpaceDescription": "Velg områder hvor denne chatten legges til.", + "@addToSpaceDescription": {}, + "pleaseEnterRecoveryKeyDescription": "For å låse opp gamle meldinger, vennligst skriv inn gjenopprettingsnøkkelen som ble generert i en tidligere økt. Gjenopprettingsnøkkelen er IKKE passordet ditt.", + "@pleaseEnterRecoveryKeyDescription": {}, + "reactedWith": "{sender} reagerte med {reaction}", + "@reactedWith": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "reaction": { + "type": "String" + } + } + }, + "pinMessage": "Fest til rommet", + "@pinMessage": {}, + "emojis": "Emojier", + "@emojis": {}, + "placeCall": "Ringe opp", + "@placeCall": {}, + "unsupportedAndroidVersionLong": "Denne funksjonen krever en nyere Android-versjon. Se etter oppdateringer eller støtte for Lineage OS.", + "@unsupportedAndroidVersionLong": {}, + "videoCallsBetaWarning": "Vær oppmerksom på at videosamtaler for øyeblikket er i betaversjon. Det fungerer kanskje ikke som forventet eller i det hele tatt.", + "@videoCallsBetaWarning": {}, + "experimentalVideoCalls": "Eksperimentelle videoanrop", + "@experimentalVideoCalls": {}, + "notificationRuleRoomnotifDescription": "Varsler brukeren når en melding inneholder ‘@room’.", + "@notificationRuleRoomnotifDescription": {}, + "notificationRuleTombstoneDescription": "Varsler brukeren om meldinger om deaktivering av rom.", + "@notificationRuleTombstoneDescription": {}, + "notificationRuleReactionDescription": "Demper varsler for reaksjoner.", + "@notificationRuleReactionDescription": {}, + "notificationRuleSuppressEdits": "Demp redigeringer", + "@notificationRuleSuppressEdits": {}, + "chatHasBeenAddedToThisSpace": "Chatten er lagt til i dette området", + "@chatHasBeenAddedToThisSpace": {}, + "clearArchive": "Tøm arkivet", + "@clearArchive": {}, + "commandHint_markasgroup": "Merk som gruppe", + "@commandHint_markasgroup": {}, + "commandHint_ban": "Utesteng den gitte brukeren fra dette rommet", + "@commandHint_ban": { + "type": "String", + "description": "Usage hint for the command /ban" + }, + "commandHint_clearcache": "Tøm cache", + "@commandHint_clearcache": { + "type": "String", + "description": "Usage hint for the command /clearcache" + }, + "homeserverDescription": "Alle dataene dine lagres på hjemmeserveren, akkurat som hos en e-postleverandør. Du kan velge hvilken hjemmeserver du vil bruke, samtidig som du fortsatt kan kommunisere med alle. Lær mer på https://matrix.org.", + "@homeserverDescription": {}, + "doesNotSeemToBeAValidHomeserver": "Ser ikke ut til å være en kompatibel hjemmeserver. Feil URL?", + "@doesNotSeemToBeAValidHomeserver": {}, + "prepareSendingAttachment": "Forbered sending av vedlegg...", + "@prepareSendingAttachment": {}, + "generatingVideoThumbnail": "Genererer videominiatyrbilde ...", + "@generatingVideoThumbnail": {}, + "compressVideo": "Komprimerer video...", + "@compressVideo": {}, + "welcomeText": "Hei, hei! 👋 Dette er FluffyChat. Du kan logge på hvilken som helst hjemmeserver som er kompatibel med https://matrix.org. Og deretter chatte med hvem som helst. Det er et stort desentralisert meldingsnettverk!", + "@welcomeText": {}, + "notificationRuleIsUserMentionDescription": "Varsler brukeren når de er direkte nevnt i en melding.", + "@notificationRuleIsUserMentionDescription": {}, + "notificationRuleContainsDisplayName": "Inneholder visningsnavn", + "@notificationRuleContainsDisplayName": {}, + "notificationRuleContainsDisplayNameDescription": "Varsler brukeren når en melding inneholder ens visningsnavnet.", + "@notificationRuleContainsDisplayNameDescription": {}, + "notificationRuleIsUserMention": "Brukeromtale", + "@notificationRuleIsUserMention": {}, + "notificationRuleIsRoomMention": "Romomtale", + "@notificationRuleIsRoomMention": {}, + "whatIsAHomeserver": "Hva er en hjemmeserver?", + "@whatIsAHomeserver": {}, + "commandHint_me": "Beskriv deg selv", + "@commandHint_me": { + "type": "String", + "description": "Usage hint for the command /me" + }, + "commandHint_myroomavatar": "Angi bilde for dette rommet (med mxc-uri)", + "@commandHint_myroomavatar": { + "type": "String", + "description": "Usage hint for the command /myroomavatar" + }, + "commandHint_myroomnick": "Angi visningsnavnet ditt for dette rommet", + "@commandHint_myroomnick": { + "type": "String", + "description": "Usage hint for the command /myroomnick" + }, + "commandHint_plain": "Send uformatert tekst", + "@commandHint_plain": { + "type": "String", + "description": "Usage hint for the command /plain" + }, + "commandHint_react": "Send svar som en reaksjon", + "@commandHint_react": { + "type": "String", + "description": "Usage hint for the command /react" + }, + "commandHint_send": "Send tekst", + "@commandHint_send": { + "type": "String", + "description": "Usage hint for the command /send" + }, + "commandHint_unban": "Opphev utestengelsen til den gitte brukeren fra dette rommet", + "@commandHint_unban": { + "type": "String", + "description": "Usage hint for the command /unban" + }, + "commandInvalid": "Ugyldig kommando", + "@commandInvalid": { + "type": "String" + }, + "commandMissing": "{command} er ikke en kommando.", + "@commandMissing": { + "type": "String", + "placeholders": { + "command": { + "type": "String" + } + }, + "description": "State that {command} is not a valid /command." + }, + "checkList": "Sjekkliste", + "@checkList": {}, + "createNewSpace": "Nytt område", + "@createNewSpace": { + "type": "String", + "placeholders": {} + }, + "emoteKeyboardNoRecents": "Nylig brukte emotes vil vises her ...", + "@emoteKeyboardNoRecents": { + "type": "String", + "placeholders": {} + }, + "unableToJoinChat": "Kan ikke bli med i chatten. Kanskje den andre parten allerede har lukket samtalen.", + "@unableToJoinChat": {}, + "otherPartyNotLoggedIn": "Den andre parten er ikke logget inn og kan derfor ikke motta meldinger!", + "@otherPartyNotLoggedIn": {}, + "notificationRuleIsRoomMentionDescription": "Varsler brukeren når det er en romomtale.", + "@notificationRuleIsRoomMentionDescription": {}, + "notificationRuleRoomnotif": "Romvarsel", + "@notificationRuleRoomnotif": {}, + "notificationRuleCall": "Anrop", + "@notificationRuleCall": {}, + "notificationRuleCallDescription": "Varsler brukeren om anrop.", + "@notificationRuleCallDescription": {}, + "waitingPartnerAcceptRequest": "Venter på at partneren skal godta forespørselen…", + "@waitingPartnerAcceptRequest": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerEmoji": "Venter på at partneren skal godta emojien…", + "@waitingPartnerEmoji": { + "type": "String", + "placeholders": {} + }, + "wipeChatBackup": "Vil du slette sikkerhetskopien av chatten din for å opprette en ny gjenopprettingsnøkkel?", + "@wipeChatBackup": { + "type": "String", + "placeholders": {} + }, + "switchToAccount": "Bytt til konto {number}", + "@switchToAccount": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "widgetEtherpad": "Tekstnotat", + "@widgetEtherpad": {}, + "noOneCanJoin": "Ingen kan bli med", + "@noOneCanJoin": {}, + "userWouldLikeToChangeTheChat": "{user} vil gjerne bli med i chatten.", + "@userWouldLikeToChangeTheChat": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "noPublicLinkHasBeenCreatedYet": "Ingen offentlig lenke er opprettet ennå", + "@noPublicLinkHasBeenCreatedYet": {}, + "commandHint_html": "Send HTML-formatert tekst", + "@commandHint_html": { + "type": "String", + "description": "Usage hint for the command /html" + }, + "commandHint_kick": "Fjern den gitte brukeren fra dette rommet", + "@commandHint_kick": { + "type": "String", + "description": "Usage hint for the command /kick" + }, + "commandHint_leave": "Forlat dette rommet", + "@commandHint_leave": { + "type": "String", + "description": "Usage hint for the command /leave" + }, + "commandHint_discardsession": "Forkast økten", + "@commandHint_discardsession": { + "type": "String", + "description": "Usage hint for the command /discardsession" + }, + "commandHint_dm": "Start en direkte chat\nBruk --no-encryption for å deaktivere kryptering", + "@commandHint_dm": { + "type": "String", + "description": "Usage hint for the command /dm" + }, + "commandHint_create": "Opprett en tom gruppechat\nBruk --no-encryption for å deaktivere kryptering", + "@commandHint_create": { + "type": "String", + "description": "Usage hint for the command /create" + }, + "redactedBy": "Redigert av {username}", + "@redactedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "directChat": "Direkte chat", + "@directChat": {}, + "redactedByBecause": "Redigert av {username} fordi: «{reason}»", + "@redactedByBecause": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "reason": { + "type": "String" + } + } + }, + "redactMessage": "Rediger melding", + "@redactMessage": { + "type": "String", + "placeholders": {} + }, + "roomVersion": "Rom versjon", + "@roomVersion": { + "type": "String", + "placeholders": {} + }, + "newSpace": "Nytt område", + "@newSpace": {}, + "allSpaces": "Alle områder", + "@allSpaces": {}, + "numChats": "{number} chats", + "@numChats": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "wasDirectChatDisplayName": "Tom chat (var {oldDisplayName})", + "@wasDirectChatDisplayName": { + "type": "String", + "placeholders": { + "oldDisplayName": { + "type": "String" + } + } + }, + "moveDown": "Flytt ned", + "@moveDown": {}, + "removeFromSpaceDescription": "Chatten blir fjernet fra området, men vises fortsatt i chatlisten din.", + "@removeFromSpaceDescription": {}, + "countChats": "{chats} chats", + "@countChats": { + "type": "String", + "placeholders": { + "chats": { + "type": "int" + } + } + }, + "donate": "Doner", + "@donate": {}, + "banUserDescription": "Brukeren vil bli utestengt fra chatten og vil ikke kunne delta i chatten igjen før utestengelsen er opphevet.", + "@banUserDescription": {}, + "unbanUserDescription": "Brukeren vil kunne gå inn i chatten igjen hvis vedkommende prøver.", + "@unbanUserDescription": {}, + "kickUserDescription": "Brukeren blir kastet ut av chatten, men ikke utestengt. I offentlige chatter kan brukeren bli med på nytt når som helst.", + "@kickUserDescription": {}, + "sendTypingNotifications": "Send skrivevarsler", + "@sendTypingNotifications": {}, + "swipeRightToLeftToReply": "Sveip fra høyre mot venstre for å svare", + "@swipeRightToLeftToReply": {}, + "startFirstChat": "Start din første chat", + "@startFirstChat": {}, + "unlockOldMessages": "Lås opp gamle meldinger", + "@unlockOldMessages": {}, + "storeInAndroidKeystore": "Lagre i Android KeyStore", + "@storeInAndroidKeystore": {}, + "storeInAppleKeyChain": "Lagre i Apple nøkkelring", + "@storeInAppleKeyChain": {}, + "storeSecurlyOnThisDevice": "Lagre sikkert på denne enheten", + "@storeSecurlyOnThisDevice": {}, + "acceptedKeyVerification": "{sender} godtok nøkkelverifisering", + "@acceptedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "notificationRuleMessageDescription": "Varsler brukeren om generelle meldinger.", + "@notificationRuleMessageDescription": {}, + "notificationRuleSuppressEditsDescription": "Demper varsler for redigerte meldinger.", + "@notificationRuleSuppressEditsDescription": {}, + "notificationRuleEncryptedDescription": "Varsler brukeren om meldinger i krypterte rom.", + "@notificationRuleEncryptedDescription": {}, + "notificationRuleRoomServerAcl": "Romserverens tilgangskontrolliste", + "@notificationRuleRoomServerAcl": {}, + "notificationRuleRoomOneToOneDescription": "Varsler brukeren om meldinger i én-til-én-rom.", + "@notificationRuleRoomOneToOneDescription": {}, + "notificationRuleJitsiDescription": "Varsler brukeren om hendelser i Jitsi-widgeten.", + "@notificationRuleJitsiDescription": {}, + "customReaction": "Egendefinert reaksjon", + "@customReaction": {}, + "pause": "Pause", + "@pause": {}, + "moveToDifferentSpace": "Flytt til et annet område", + "@moveToDifferentSpace": {}, + "moveUp": "Flytt opp", + "@moveUp": {}, + "storeInSecureStorageDescription": "Oppbevar gjenopprettingsnøkkelen på en sikker lagringsplass på denne enheten.", + "@storeInSecureStorageDescription": {}, + "foregroundServiceRunning": "Denne varslingen vises når forgrunnstjenesten kjører.", + "@foregroundServiceRunning": {}, + "callingAccount": "Ringekonto", + "@callingAccount": {}, + "appearOnTopDetails": "Lar appen vises øverst (ikke nødvendig hvis du allerede har Fluffychat konfigurert som en ringekonto)", + "@appearOnTopDetails": {}, + "longPressToRecordVoiceMessage": "Langt trykk for å spille inn talemelding.", + "@longPressToRecordVoiceMessage": {}, + "startedAPoll": "{username} startet en avstemning.", + "@startedAPoll": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "poll": "Avstemning", + "@poll": {}, + "startPoll": "Start avstemning", + "@startPoll": {}, + "endPoll": "Avslutt avstemning", + "@endPoll": {}, + "answersVisible": "Svar synlige", + "@answersVisible": {}, + "answersHidden": "Svar skjult", + "@answersHidden": {} +} diff --git a/lib/l10n/intl_nl.arb b/lib/l10n/intl_nl.arb new file mode 100644 index 0000000..dc43eab --- /dev/null +++ b/lib/l10n/intl_nl.arb @@ -0,0 +1,3490 @@ +{ + "@@last_modified": "2021-08-14 12:41:09.955292", + "about": "Over ons", + "@about": { + "type": "String", + "placeholders": {} + }, + "accept": "Accepteren", + "@accept": { + "type": "String", + "placeholders": {} + }, + "acceptedTheInvitation": "👍 {username} heeft de uitnodiging geaccepteerd", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "account": "Account", + "@account": { + "type": "String", + "placeholders": {} + }, + "activatedEndToEndEncryption": "🔐 {username} heeft eind-tot-eindversleuteling geactiveerd", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "addEmail": "Email toevoegen", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "addToSpace": "Aan space toevoegen", + "@addToSpace": {}, + "admin": "Beheerder", + "@admin": { + "type": "String", + "placeholders": {} + }, + "alias": "alias", + "@alias": { + "type": "String", + "placeholders": {} + }, + "all": "Alle", + "@all": { + "type": "String", + "placeholders": {} + }, + "allChats": "Alle chats", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "answeredTheCall": "{senderName} heeft de oproep beantwoord", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "anyoneCanJoin": "Iedereen kan toetreden", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "appLock": "App-vergrendeling", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "archive": "Archief", + "@archive": { + "type": "String", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "Mogen gasten deelnemen", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "Weet je het zeker?", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "areYouSureYouWantToLogout": "Weet je zeker dat je wilt uitloggen?", + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "askSSSSSign": "Voer je beveiligde opslag wachtwoordzin of herstelsleutel in om de andere persoon te kunnen ondertekenen.", + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "askVerificationRequest": "Accepteer je dit verificatieverzoek van {username}?", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "autoplayImages": "Automatisch geanimeerde stickers en emoticons afspelen", + "@autoplayImages": { + "type": "String", + "placeholder": {} + }, + "badServerLoginTypesException": "De homeserver ondersteunt de login types:\n{serverVersions}\nMaar deze app ondersteunt alleen:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "badServerVersionsException": "De homeserver ondersteunt de Spec-versies:\n{serverVersions}\nMaar deze app ondersteunt alleen {supportedVersions}", + "@badServerVersionsException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "banFromChat": "Van chat verbannen", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "banned": "Verbannen", + "@banned": { + "type": "String", + "placeholders": {} + }, + "bannedUser": "{username} verbant {targetName}", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "blockDevice": "Apparaat blokkeren", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "blocked": "Geblokkeerd", + "@blocked": { + "type": "String", + "placeholders": {} + }, + "botMessages": "Bot-berichten", + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "cancel": "Annuleren", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "cantOpenUri": "Kan de URI {uri} niet openen", + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "changeDeviceName": "Apparaatnaam wijzigen", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "changedTheChatAvatar": "{username} heeft de chatavatar gewijzigd", + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheChatDescriptionTo": "{username} heeft de chatomschrijving gewijzigd in: '{description}'", + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "changedTheChatNameTo": "{username} heeft de chatnaam gewijzigd in: '{chatname}'", + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "changedTheChatPermissions": "{username} heeft de chatrechten gewijzigd", + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheDisplaynameTo": "{username}'s naam is nu '{displayname}'", + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "changedTheGuestAccessRules": "{username} heeft de toegangsregels voor gasten gewijzigd", + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheGuestAccessRulesTo": "{username} heeft de gastenregels gewijzigd in: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheHistoryVisibility": "{username} heeft de zichtbaarheid van de geschiedenis gewijzigd", + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheHistoryVisibilityTo": "{username} heeft de zichtbaarheid van de geschiedenis gewijzigd in: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheJoinRules": "{username} heeft de toetredingsregels gewijzigd", + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheJoinRulesTo": "{username} heeft de toetredingsregels gewijzigd in: {joinRules}", + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "changedTheProfileAvatar": "{username}'s avatar is gewijzigd", + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomAliases": "{username} heeft de chat aliassen gewijzigd", + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomInvitationLink": "{username} heeft de uitnodigingslink gewijzigd", + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changePassword": "Wachtwoord wijzigen", + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "changeTheHomeserver": "Homeserver wijzigen", + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "changeTheme": "Je stijl veranderen", + "@changeTheme": { + "type": "String", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "Groepsnaam wijzigen", + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "changeYourAvatar": "Jouw avatar veranderen", + "@changeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "channelCorruptedDecryptError": "De versleuteling is beschadigd", + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "chat": "Chat", + "@chat": { + "type": "String", + "placeholders": {} + }, + "chatBackup": "Chatback-up", + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "chatBackupDescription": "Je oude berichten zijn beveiligd met een herstelsleutel. Zorg ervoor dat je deze niet verliest.", + "@chatBackupDescription": { + "type": "String", + "placeholders": {} + }, + "chatDetails": "Chatdetails", + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "chatHasBeenAddedToThisSpace": "Chat is toegevoegd aan deze space", + "@chatHasBeenAddedToThisSpace": {}, + "chats": "Chats", + "@chats": { + "type": "String", + "placeholders": {} + }, + "chooseAStrongPassword": "Kies een sterk wachtwoord", + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "clearArchive": "Archief wissen", + "@clearArchive": {}, + "close": "Sluiten", + "@close": { + "type": "String", + "placeholders": {} + }, + "commandHint_ban": "Persoon uit deze chat verbannen", + "@commandHint_ban": { + "type": "String", + "description": "Usage hint for the command /ban" + }, + "commandHint_html": "Tekst met HTML-opmaak versturen", + "@commandHint_html": { + "type": "String", + "description": "Usage hint for the command /html" + }, + "commandHint_invite": "Persoon in deze chat uitnodigen", + "@commandHint_invite": { + "type": "String", + "description": "Usage hint for the command /invite" + }, + "commandHint_join": "Toetreden tot de vermelde chat", + "@commandHint_join": { + "type": "String", + "description": "Usage hint for the command /join" + }, + "commandHint_kick": "Persoon uit deze chat verwijderen", + "@commandHint_kick": { + "type": "String", + "description": "Usage hint for the command /kick" + }, + "commandHint_leave": "Deze chat verlaten", + "@commandHint_leave": { + "type": "String", + "description": "Usage hint for the command /leave" + }, + "commandHint_me": "Beschrijf jezelf", + "@commandHint_me": { + "type": "String", + "description": "Usage hint for the command /me" + }, + "commandHint_myroomavatar": "Jouw avatar voor deze chat instellen (met mxc-uri)", + "@commandHint_myroomavatar": { + "type": "String", + "description": "Usage hint for the command /myroomavatar" + }, + "commandHint_myroomnick": "Jouw naam voor deze chat instellen", + "@commandHint_myroomnick": { + "type": "String", + "description": "Usage hint for the command /myroomnick" + }, + "commandHint_op": "Machtsniveau van de persoon instellen (standaard: 50)", + "@commandHint_op": { + "type": "String", + "description": "Usage hint for the command /op" + }, + "commandHint_plain": "Niet-opgemaakte tekst versturen", + "@commandHint_plain": { + "type": "String", + "description": "Usage hint for the command /plain" + }, + "commandHint_react": "Antwoord als reactie versturen", + "@commandHint_react": { + "type": "String", + "description": "Usage hint for the command /react" + }, + "commandHint_send": "Tekst versturen", + "@commandHint_send": { + "type": "String", + "description": "Usage hint for the command /send" + }, + "commandHint_unban": "Persoon weer in deze chat toestaan", + "@commandHint_unban": { + "type": "String", + "description": "Usage hint for the command /unban" + }, + "commandInvalid": "Opdracht ongeldig", + "@commandInvalid": { + "type": "String" + }, + "commandMissing": "{command} is geen opdracht.", + "@commandMissing": { + "type": "String", + "placeholders": { + "command": { + "type": "String" + } + }, + "description": "State that {command} is not a valid /command." + }, + "compareEmojiMatch": "Vergelijk de emoji's", + "@compareEmojiMatch": { + "type": "String", + "placeholders": {} + }, + "compareNumbersMatch": "Vergelijk de cijfers", + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "configureChat": "Chat configureren", + "@configureChat": { + "type": "String", + "placeholders": {} + }, + "confirm": "Bevestigen", + "@confirm": { + "type": "String", + "placeholders": {} + }, + "connect": "Verbinden", + "@connect": { + "type": "String", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "Contact is voor de groep uitgenodigd", + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "containsDisplayName": "Bevat naam", + "@containsDisplayName": { + "type": "String", + "placeholders": {} + }, + "containsUserName": "Bevat inlognaam", + "@containsUserName": { + "type": "String", + "placeholders": {} + }, + "contentHasBeenReported": "De inhoud is gerapporteerd aan de serverbeheerders", + "@contentHasBeenReported": { + "type": "String", + "placeholders": {} + }, + "copiedToClipboard": "Gekopieerd naar klembord", + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "copy": "Bericht kopiëren", + "@copy": { + "type": "String", + "placeholders": {} + }, + "copyToClipboard": "Kopieer naar klembord", + "@copyToClipboard": { + "type": "String", + "placeholders": {} + }, + "couldNotDecryptMessage": "Kan het bericht niet ontsleutelen: {error}", + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "countParticipants": "{count} personen", + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "create": "Aanmaken", + "@create": { + "type": "String", + "placeholders": {} + }, + "createdTheChat": "💬 {username} heeft de chat gemaakt", + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "createNewSpace": "Maak nieuwe space aan", + "@createNewSpace": { + "type": "String", + "placeholders": {} + }, + "currentlyActive": "Momenteel actief", + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "darkTheme": "Donker", + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "dateWithoutYear": "{day}-{month}", + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "dateWithYear": "{day}-{month}-{year}", + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "deactivateAccountWarning": "Hierdoor wordt je account gedeactiveerd. Dit kan niet ongedaan gemaakt worden! Weet je het zeker?", + "@deactivateAccountWarning": { + "type": "String", + "placeholders": {} + }, + "defaultPermissionLevel": "Standaard rechten-niveau voor nieuwe personen", + "@defaultPermissionLevel": { + "type": "String", + "placeholders": {} + }, + "delete": "Verwijderen", + "@delete": { + "type": "String", + "placeholders": {} + }, + "deleteAccount": "Account verwijderen", + "@deleteAccount": { + "type": "String", + "placeholders": {} + }, + "deleteMessage": "Bericht verwijderen", + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "device": "Apparaat", + "@device": { + "type": "String", + "placeholders": {} + }, + "deviceId": "Apparaat-ID", + "@deviceId": { + "type": "String", + "placeholders": {} + }, + "devices": "Apparaten", + "@devices": { + "type": "String", + "placeholders": {} + }, + "directChats": "Directe chats", + "@directChats": { + "type": "String", + "placeholders": {} + }, + "displaynameHasBeenChanged": "De naam is gewijzigd", + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "downloadFile": "Bestand downloaden", + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "edit": "Wijzig", + "@edit": { + "type": "String", + "placeholders": {} + }, + "editBlockedServers": "Geblokkeerde servers wijzigen", + "@editBlockedServers": { + "type": "String", + "placeholders": {} + }, + "editDisplayname": "Naam wijzigen", + "@editDisplayname": { + "type": "String", + "placeholders": {} + }, + "editRoomAliases": "Chat aliassen wijzigen", + "@editRoomAliases": { + "type": "String", + "placeholders": {} + }, + "editRoomAvatar": "Chat avatar wijzigen", + "@editRoomAvatar": { + "type": "String", + "placeholders": {} + }, + "emoteExists": "Emoticon bestaat al!", + "@emoteExists": { + "type": "String", + "placeholders": {} + }, + "emoteInvalid": "Ongeldige emoticon korte code!", + "@emoteInvalid": { + "type": "String", + "placeholders": {} + }, + "emotePacks": "Emoticonpakketten voor de chat", + "@emotePacks": { + "type": "String", + "placeholders": {} + }, + "emoteSettings": "Emoticon-instellingen", + "@emoteSettings": { + "type": "String", + "placeholders": {} + }, + "emoteShortcode": "Emoticon korte code", + "@emoteShortcode": { + "type": "String", + "placeholders": {} + }, + "emoteWarnNeedToPick": "Je moet een emoticon korte code en afbeelding kiezen!", + "@emoteWarnNeedToPick": { + "type": "String", + "placeholders": {} + }, + "emptyChat": "Lege chat", + "@emptyChat": { + "type": "String", + "placeholders": {} + }, + "enableEmotesGlobally": "Emoticonpakket overal inschakelen", + "@enableEmotesGlobally": { + "type": "String", + "placeholders": {} + }, + "enableEncryption": "Versleuteling inschakelen", + "@enableEncryption": { + "type": "String", + "placeholders": {} + }, + "enableEncryptionWarning": "Je kunt de versleuteling hierna niet meer uitschakelen. Weet je het zeker?", + "@enableEncryptionWarning": { + "type": "String", + "placeholders": {} + }, + "encrypted": "Versleuteld", + "@encrypted": { + "type": "String", + "placeholders": {} + }, + "encryption": "Versleuteling", + "@encryption": { + "type": "String", + "placeholders": {} + }, + "encryptionNotEnabled": "Versleuteling is niet ingeschakeld", + "@encryptionNotEnabled": { + "type": "String", + "placeholders": {} + }, + "endedTheCall": "{senderName} heeft het gesprek beëindigd", + "@endedTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "enterAnEmailAddress": "Voer een email in", + "@enterAnEmailAddress": { + "type": "String", + "placeholders": {} + }, + "enterYourHomeserver": "Vul je homeserver in", + "@enterYourHomeserver": { + "type": "String", + "placeholders": {} + }, + "errorObtainingLocation": "Locatie ophalen fout: {error}", + "@errorObtainingLocation": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "everythingReady": "Alles klaar!", + "@everythingReady": { + "type": "String", + "placeholders": {} + }, + "extremeOffensive": "Extreem beledigend", + "@extremeOffensive": { + "type": "String", + "placeholders": {} + }, + "fileName": "Bestandsnaam", + "@fileName": { + "type": "String", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "String", + "placeholders": {} + }, + "fontSize": "Lettergrootte", + "@fontSize": { + "type": "String", + "placeholders": {} + }, + "forward": "Stuur door", + "@forward": { + "type": "String", + "placeholders": {} + }, + "fromJoining": "Vanaf toetreden", + "@fromJoining": { + "type": "String", + "placeholders": {} + }, + "fromTheInvitation": "Vanaf uitnodiging", + "@fromTheInvitation": { + "type": "String", + "placeholders": {} + }, + "goToTheNewRoom": "Ga naar de nieuwe chat", + "@goToTheNewRoom": { + "type": "String", + "placeholders": {} + }, + "group": "Groep", + "@group": { + "type": "String", + "placeholders": {} + }, + "groupIsPublic": "Groep is openbaar", + "@groupIsPublic": { + "type": "String", + "placeholders": {} + }, + "groups": "Groepen", + "@groups": { + "type": "String", + "placeholders": {} + }, + "groupWith": "Groep met {displayname}", + "@groupWith": { + "type": "String", + "placeholders": { + "displayname": { + "type": "String" + } + } + }, + "guestsAreForbidden": "Gasten zijn verboden", + "@guestsAreForbidden": { + "type": "String", + "placeholders": {} + }, + "guestsCanJoin": "Gasten kunnen deelnemen", + "@guestsCanJoin": { + "type": "String", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "{username} heeft de uitnodiging voor {targetName} ingetrokken", + "@hasWithdrawnTheInvitationFor": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "help": "Help", + "@help": { + "type": "String", + "placeholders": {} + }, + "hideRedactedEvents": "Bewerkte gebeurtenissen verbergen", + "@hideRedactedEvents": { + "type": "String", + "placeholders": {} + }, + "hideUnknownEvents": "Onbekende gebeurtenissen verbergen", + "@hideUnknownEvents": { + "type": "String", + "placeholders": {} + }, + "howOffensiveIsThisContent": "Hoe beledigend is deze inhoud?", + "@howOffensiveIsThisContent": { + "type": "String", + "placeholders": {} + }, + "id": "ID", + "@id": { + "type": "String", + "placeholders": {} + }, + "identity": "Identiteit", + "@identity": { + "type": "String", + "placeholders": {} + }, + "ignore": "Negeer", + "@ignore": { + "type": "String", + "placeholders": {} + }, + "ignoredUsers": "Genegeerde personen", + "@ignoredUsers": { + "type": "String", + "placeholders": {} + }, + "iHaveClickedOnLink": "Ik heb op de link geklikt", + "@iHaveClickedOnLink": { + "type": "String", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "Onjuiste wachtwoordzin of herstelsleutel", + "@incorrectPassphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "inoffensive": "Niet beledigend", + "@inoffensive": { + "type": "String", + "placeholders": {} + }, + "inviteContact": "Contact uitnodigen", + "@inviteContact": { + "type": "String", + "placeholders": {} + }, + "inviteContactToGroup": "Contact voor {groupName} uitnodigen", + "@inviteContactToGroup": { + "type": "String", + "placeholders": { + "groupName": { + "type": "String" + } + } + }, + "invited": "Uitgenodigd", + "@invited": { + "type": "String", + "placeholders": {} + }, + "invitedUser": "📩 {username} heeft {targetName} uitgenodigd", + "@invitedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "invitedUsersOnly": "Alleen uitgenodigde personen", + "@invitedUsersOnly": { + "type": "String", + "placeholders": {} + }, + "inviteForMe": "Persoonlijke uitnodiging", + "@inviteForMe": { + "type": "String", + "placeholders": {} + }, + "inviteText": "{username} heeft je uitgenodigd voor FluffyChat.\n1. Bezoek https://fluffychat.im en installeer de app\n2. Registreer of log in\n3. Open deze uitnodigingslink:\n{link}", + "@inviteText": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "link": { + "type": "String" + } + } + }, + "isTyping": "is aan het typen…", + "@isTyping": { + "type": "String", + "placeholders": {} + }, + "joinedTheChat": "👋 {username} is toegetreden tot de chat", + "@joinedTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "joinRoom": "Toetreden tot de chat", + "@joinRoom": { + "type": "String", + "placeholders": {} + }, + "kicked": "👞 {username} heeft {targetName} verwijderd", + "@kicked": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickedAndBanned": "🙅 {username} heeft {targetName} verwijderd en verbannen", + "@kickedAndBanned": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickFromChat": "Uit chat verwijderen", + "@kickFromChat": { + "type": "String", + "placeholders": {} + }, + "lastActiveAgo": "Laatst actief: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "String", + "placeholders": { + "localizedTimeShort": { + "type": "String" + } + } + }, + "leave": "Chat verlaten", + "@leave": { + "type": "String", + "placeholders": {} + }, + "leftTheChat": "Verliet de chat", + "@leftTheChat": { + "type": "String", + "placeholders": {} + }, + "license": "Licentie", + "@license": { + "type": "String", + "placeholders": {} + }, + "lightTheme": "Licht", + "@lightTheme": { + "type": "String", + "placeholders": {} + }, + "loadCountMoreParticipants": "Laad nog {count} personen", + "@loadCountMoreParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "loadingPleaseWait": "Bezig met laden… Even geduld.", + "@loadingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "loadMore": "Meer laden…", + "@loadMore": { + "type": "String", + "placeholders": {} + }, + "locationDisabledNotice": "Locatievoorzieningen is uitgeschakeld. Zet dit eerst aan om je locatie te delen.", + "@locationDisabledNotice": { + "type": "String", + "placeholders": {} + }, + "locationPermissionDeniedNotice": "Locatie toegang is geweigerd. Geef toegang om de locatie delen-functie te gebruiken.", + "@locationPermissionDeniedNotice": { + "type": "String", + "placeholders": {} + }, + "login": "Inloggen", + "@login": { + "type": "String", + "placeholders": {} + }, + "logInTo": "Inloggen bij {homeserver}", + "@logInTo": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "logout": "Uitloggen", + "@logout": { + "type": "String", + "placeholders": {} + }, + "memberChanges": "Persoon wijzigingen", + "@memberChanges": { + "type": "String", + "placeholders": {} + }, + "mention": "Vermeld", + "@mention": { + "type": "String", + "placeholders": {} + }, + "messages": "Berichten", + "@messages": { + "type": "String", + "placeholders": {} + }, + "moderator": "Moderator", + "@moderator": { + "type": "String", + "placeholders": {} + }, + "muteChat": "Chat dempen", + "@muteChat": { + "type": "String", + "placeholders": {} + }, + "needPantalaimonWarning": "Houd er rekening mee dat je voorlopig Pantalaimon nodig hebt om eind-tot-eindversleuteling te gebruiken.", + "@needPantalaimonWarning": { + "type": "String", + "placeholders": {} + }, + "newChat": "Nieuwe chat", + "@newChat": { + "type": "String", + "placeholders": {} + }, + "newMessageInFluffyChat": "💬 Nieuw bericht in FluffyChat", + "@newMessageInFluffyChat": { + "type": "String", + "placeholders": {} + }, + "newVerificationRequest": "Nieuw verificatieverzoek!", + "@newVerificationRequest": { + "type": "String", + "placeholders": {} + }, + "next": "Volgende", + "@next": { + "type": "String", + "placeholders": {} + }, + "no": "Nee", + "@no": { + "type": "String", + "placeholders": {} + }, + "noConnectionToTheServer": "Geen verbinding met de server", + "@noConnectionToTheServer": { + "type": "String", + "placeholders": {} + }, + "noEmotesFound": "Geen emoticons gevonden. 😕", + "@noEmotesFound": { + "type": "String", + "placeholders": {} + }, + "noEncryptionForPublicRooms": "Je kunt de versleuteling pas activeren zodra de chat niet meer openbaar toegankelijk is.", + "@noEncryptionForPublicRooms": { + "type": "String", + "placeholders": {} + }, + "noGoogleServicesWarning": "Firebase Cloud Messaging lijkt niet beschikbaar op je apparaat. Om pushmeldingen te krijgen, adviseren we om ntfy te installeren. Met ntfy of een andere Unified Push-provider kun je pushmeldingen ontvangen op een veilige manier. Je kunt ntfy downloaden in de PlayStore of F-Droid.", + "@noGoogleServicesWarning": { + "type": "String", + "placeholders": {} + }, + "noMatrixServer": "{server1} is geen Matrix-server, wil je {server2} gebruiken?", + "@noMatrixServer": { + "type": "String", + "placeholders": { + "server1": { + "type": "String" + }, + "server2": { + "type": "String" + } + } + }, + "none": "Geen", + "@none": { + "type": "String", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "Je hebt nog geen manier toegevoegd om je wachtwoord te herstellen.", + "@noPasswordRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "noPermission": "Geen toestemming", + "@noPermission": { + "type": "String", + "placeholders": {} + }, + "noRoomsFound": "Geen chats gevonden …", + "@noRoomsFound": { + "type": "String", + "placeholders": {} + }, + "notifications": "Meldingen", + "@notifications": { + "type": "String", + "placeholders": {} + }, + "notificationsEnabledForThisAccount": "Meldingen ingeschakeld voor dit account", + "@notificationsEnabledForThisAccount": { + "type": "String", + "placeholders": {} + }, + "numUsersTyping": "{count} personen typen…", + "@numUsersTyping": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "obtainingLocation": "Locatie ophalen…", + "@obtainingLocation": { + "type": "String", + "placeholders": {} + }, + "offensive": "Beledigend", + "@offensive": { + "type": "String", + "placeholders": {} + }, + "offline": "Offline", + "@offline": { + "type": "String", + "placeholders": {} + }, + "ok": "OK", + "@ok": { + "type": "String", + "placeholders": {} + }, + "online": "Online", + "@online": { + "type": "String", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "Online sleutelback-up is ingeschakeld", + "@onlineKeyBackupEnabled": { + "type": "String", + "placeholders": {} + }, + "oopsPushError": "Oeps! Helaas is er een fout opgetreden bij het instellen van de pushmeldingen.", + "@oopsPushError": { + "type": "String", + "placeholders": {} + }, + "oopsSomethingWentWrong": "Oeps, er ging iets mis…", + "@oopsSomethingWentWrong": { + "type": "String", + "placeholders": {} + }, + "openAppToReadMessages": "Open app om de berichten te lezen", + "@openAppToReadMessages": { + "type": "String", + "placeholders": {} + }, + "openCamera": "Camera openen", + "@openCamera": { + "type": "String", + "placeholders": {} + }, + "openInMaps": "In kaarten openen", + "@openInMaps": { + "type": "String", + "placeholders": {} + }, + "or": "Of", + "@or": { + "type": "String", + "placeholders": {} + }, + "participant": "Personen", + "@participant": { + "type": "String", + "placeholders": {} + }, + "passphraseOrKey": "wachtwoordzin of herstelsleutel", + "@passphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "password": "Wachtwoord", + "@password": { + "type": "String", + "placeholders": {} + }, + "passwordForgotten": "Wachtwoord vergeten", + "@passwordForgotten": { + "type": "String", + "placeholders": {} + }, + "passwordHasBeenChanged": "Wachtwoord gewijzigd", + "@passwordHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "passwordRecovery": "Wachtwoordherstel", + "@passwordRecovery": { + "type": "String", + "placeholders": {} + }, + "people": "Personen", + "@people": { + "type": "String", + "placeholders": {} + }, + "pickImage": "Kies een afbeelding", + "@pickImage": { + "type": "String", + "placeholders": {} + }, + "pin": "Pin", + "@pin": { + "type": "String", + "placeholders": {} + }, + "play": "Speel {fileName}", + "@play": { + "type": "String", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "pleaseChoose": "Maak een keuze", + "@pleaseChoose": { + "type": "String", + "placeholders": {} + }, + "pleaseChooseAPasscode": "Kies een toegangscode", + "@pleaseChooseAPasscode": { + "type": "String", + "placeholders": {} + }, + "pleaseClickOnLink": "Klik op de link in de email en ga dan verder.", + "@pleaseClickOnLink": { + "type": "String", + "placeholders": {} + }, + "pleaseEnter4Digits": "Voer 4 cijfers in of laat leeg om app-vergrendeling uit te schakelen.", + "@pleaseEnter4Digits": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPassword": "Voer jouw wachtwoord in", + "@pleaseEnterYourPassword": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPin": "Voer je pincode in", + "@pleaseEnterYourPin": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourUsername": "Voer je inlognaam in", + "@pleaseEnterYourUsername": { + "type": "String", + "placeholders": {} + }, + "pleaseFollowInstructionsOnWeb": "Volg de instructies op de website en tik op volgende.", + "@pleaseFollowInstructionsOnWeb": { + "type": "String", + "placeholders": {} + }, + "privacy": "Privacy", + "@privacy": { + "type": "String", + "placeholders": {} + }, + "publicRooms": "Openbare chats", + "@publicRooms": { + "type": "String", + "placeholders": {} + }, + "pushRules": "Meldingsinstellingen", + "@pushRules": { + "type": "String", + "placeholders": {} + }, + "reason": "Reden", + "@reason": { + "type": "String", + "placeholders": {} + }, + "recording": "Opnemen", + "@recording": { + "type": "String", + "placeholders": {} + }, + "redactedAnEvent": "{username} heeft een event verwijderd", + "@redactedAnEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "redactMessage": "Aangepast bericht", + "@redactMessage": { + "type": "String", + "placeholders": {} + }, + "register": "Registeren", + "@register": { + "type": "String", + "placeholders": {} + }, + "reject": "Afwijzen", + "@reject": { + "type": "String", + "placeholders": {} + }, + "rejectedTheInvitation": "{username} heeft de uitnodiging afgewezen", + "@rejectedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "rejoin": "Opnieuw deelnemen", + "@rejoin": { + "type": "String", + "placeholders": {} + }, + "remove": "Verwijder", + "@remove": { + "type": "String", + "placeholders": {} + }, + "removeAllOtherDevices": "Verwijder alle andere apparaten", + "@removeAllOtherDevices": { + "type": "String", + "placeholders": {} + }, + "removedBy": "Verwijderd door {username}", + "@removedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "removeDevice": "Verwijder apparaat", + "@removeDevice": { + "type": "String", + "placeholders": {} + }, + "unbanFromChat": "Verbanning opheffen", + "@unbanFromChat": { + "type": "String", + "placeholders": {} + }, + "removeYourAvatar": "Jouw avatar verwijderen", + "@removeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "replaceRoomWithNewerVersion": "Kamerversie upgraden", + "@replaceRoomWithNewerVersion": { + "type": "String", + "placeholders": {} + }, + "reply": "Antwoord", + "@reply": { + "type": "String", + "placeholders": {} + }, + "reportMessage": "Bericht rapporteren", + "@reportMessage": { + "type": "String", + "placeholders": {} + }, + "requestPermission": "Vraag toestemming", + "@requestPermission": { + "type": "String", + "placeholders": {} + }, + "roomHasBeenUpgraded": "Chat is geüpgrade", + "@roomHasBeenUpgraded": { + "type": "String", + "placeholders": {} + }, + "roomVersion": "Kamerversie", + "@roomVersion": { + "type": "String", + "placeholders": {} + }, + "saveFile": "Bestand opslaan", + "@saveFile": { + "type": "String", + "placeholders": {} + }, + "search": "Zoeken", + "@search": { + "type": "String", + "placeholders": {} + }, + "security": "Beveiliging", + "@security": { + "type": "String", + "placeholders": {} + }, + "seenByUser": "Gezien door {username}", + "@seenByUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "send": "Verstuur", + "@send": { + "type": "String", + "placeholders": {} + }, + "sendAMessage": "Stuur een bericht", + "@sendAMessage": { + "type": "String", + "placeholders": {} + }, + "sendAsText": "Als tekst versturen", + "@sendAsText": { + "type": "String" + }, + "sendAudio": "Audio versturen", + "@sendAudio": { + "type": "String", + "placeholders": {} + }, + "sendFile": "Bestand versturen", + "@sendFile": { + "type": "String", + "placeholders": {} + }, + "sendImage": "Afbeelding versturen", + "@sendImage": { + "type": "String", + "placeholders": {} + }, + "sendMessages": "Berichten versturen", + "@sendMessages": { + "type": "String", + "placeholders": {} + }, + "sendOriginal": "Origineel versturen", + "@sendOriginal": { + "type": "String", + "placeholders": {} + }, + "sendSticker": "Sticker versturen", + "@sendSticker": { + "type": "String", + "placeholders": {} + }, + "sendVideo": "Video versturen", + "@sendVideo": { + "type": "String", + "placeholders": {} + }, + "sentAFile": "📁 {username} heeft een bestand verzonden", + "@sentAFile": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAnAudio": "🎤 {username} heeft een audio verzonden", + "@sentAnAudio": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAPicture": "🖼️ {username} heeft een afbeelding verzonden", + "@sentAPicture": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentASticker": "😊 {username} heeft een sticker verzonden", + "@sentASticker": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAVideo": "🎥 {username} heeft een video verzonden", + "@sentAVideo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentCallInformations": "{senderName} heeft oproepgegevens verzonden", + "@sentCallInformations": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "setAsCanonicalAlias": "Als hoofdalias instellen", + "@setAsCanonicalAlias": { + "type": "String", + "placeholders": {} + }, + "setCustomEmotes": "Aangepaste emoticons instellen", + "@setCustomEmotes": { + "type": "String", + "placeholders": {} + }, + "setInvitationLink": "Uitnodigingslink instellen", + "@setInvitationLink": { + "type": "String", + "placeholders": {} + }, + "setPermissionsLevel": "Rechten-niveau instellen", + "@setPermissionsLevel": { + "type": "String", + "placeholders": {} + }, + "setStatus": "Status instellen", + "@setStatus": { + "type": "String", + "placeholders": {} + }, + "settings": "Instellingen", + "@settings": { + "type": "String", + "placeholders": {} + }, + "share": "Delen", + "@share": { + "type": "String", + "placeholders": {} + }, + "sharedTheLocation": "{username} heeft deze locatie gedeeld", + "@sharedTheLocation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "shareLocation": "Locatie delen", + "@shareLocation": { + "type": "String", + "placeholders": {} + }, + "showPassword": "Wachtwoord weergeven", + "@showPassword": { + "type": "String", + "placeholders": {} + }, + "singlesignon": "Eenmalig Inloggen", + "@singlesignon": { + "type": "String", + "placeholders": {} + }, + "skip": "Overslaan", + "@skip": { + "type": "String", + "placeholders": {} + }, + "sourceCode": "Broncode", + "@sourceCode": { + "type": "String", + "placeholders": {} + }, + "spaceIsPublic": "Space is openbaar", + "@spaceIsPublic": { + "type": "String", + "placeholders": {} + }, + "spaceName": "Spacenaam", + "@spaceName": { + "type": "String", + "placeholders": {} + }, + "startedACall": "{senderName} heeft een gesprek gestart", + "@startedACall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "status": "Status", + "@status": { + "type": "String", + "placeholders": {} + }, + "statusExampleMessage": "Hoe gaat het met jouw vandaag?", + "@statusExampleMessage": { + "type": "String", + "placeholders": {} + }, + "submit": "Indienen", + "@submit": { + "type": "String", + "placeholders": {} + }, + "synchronizingPleaseWait": "Synchroniseren... Even geduld.", + "@synchronizingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "systemTheme": "Systeem", + "@systemTheme": { + "type": "String", + "placeholders": {} + }, + "theyDontMatch": "Ze komen niet overeen", + "@theyDontMatch": { + "type": "String", + "placeholders": {} + }, + "theyMatch": "Ze komen overeen", + "@theyMatch": { + "type": "String", + "placeholders": {} + }, + "title": "FluffyChat", + "@title": { + "description": "Title for the application", + "type": "String", + "placeholders": {} + }, + "toggleFavorite": "Favoriet in- of uitschakelen", + "@toggleFavorite": { + "type": "String", + "placeholders": {} + }, + "toggleMuted": "Dempen in- of uitschakelen", + "@toggleMuted": { + "type": "String", + "placeholders": {} + }, + "toggleUnread": "Markeer gelezen/ongelezen", + "@toggleUnread": { + "type": "String", + "placeholders": {} + }, + "tooManyRequestsWarning": "Te veel verzoeken. Probeer het later nog eens!", + "@tooManyRequestsWarning": { + "type": "String", + "placeholders": {} + }, + "transferFromAnotherDevice": "Overzetten vanaf een ander apparaat", + "@transferFromAnotherDevice": { + "type": "String", + "placeholders": {} + }, + "tryToSendAgain": "Probeer nogmaals te verzenden", + "@tryToSendAgain": { + "type": "String", + "placeholders": {} + }, + "unavailable": "Niet beschikbaar", + "@unavailable": { + "type": "String", + "placeholders": {} + }, + "unbannedUser": "{username} heeft verbanning {targetName} ongedaan gemaakt", + "@unbannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "unblockDevice": "Deblokkeer apparaat", + "@unblockDevice": { + "type": "String", + "placeholders": {} + }, + "unknownDevice": "Onbekend apparaat", + "@unknownDevice": { + "type": "String", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "Onbekend versleutelingsalgoritme", + "@unknownEncryptionAlgorithm": { + "type": "String", + "placeholders": {} + }, + "unknownEvent": "Onbekend evenement '{type}'", + "@unknownEvent": { + "type": "String", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "unmuteChat": "Dempen uitschakelen", + "@unmuteChat": { + "type": "String", + "placeholders": {} + }, + "unpin": "Pin losmaken", + "@unpin": { + "type": "String", + "placeholders": {} + }, + "unreadChats": "{unreadCount, plural, =1{1 ongelezen chat} other{{unreadCount} ongelezen chats}}", + "@unreadChats": { + "type": "String", + "placeholders": { + "unreadCount": { + "type": "int" + } + } + }, + "userAndOthersAreTyping": "{username} en {count} anderen zijn aan het typen …", + "@userAndOthersAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "userAndUserAreTyping": "{username} en {username2} zijn aan het typen …", + "@userAndUserAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "username2": { + "type": "String" + } + } + }, + "userIsTyping": "{username} is aan het typen …", + "@userIsTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "userLeftTheChat": "🚪 {username} is vertrokken uit de chat", + "@userLeftTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "username": "Inlognaam", + "@username": { + "type": "String", + "placeholders": {} + }, + "userSentUnknownEvent": "{username} heeft een {type} -gebeurtenis gestuurd", + "@userSentUnknownEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "type": { + "type": "String" + } + } + }, + "verified": "Geverifieerd", + "@verified": { + "type": "String", + "placeholders": {} + }, + "verify": "Verifieer", + "@verify": { + "type": "String", + "placeholders": {} + }, + "verifyStart": "Verificatie starten", + "@verifyStart": { + "type": "String", + "placeholders": {} + }, + "verifySuccess": "Je bent succesvol geverifieerd!", + "@verifySuccess": { + "type": "String", + "placeholders": {} + }, + "verifyTitle": "Ander account verifiëren", + "@verifyTitle": { + "type": "String", + "placeholders": {} + }, + "videoCall": "Videogesprek", + "@videoCall": { + "type": "String", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "Chatgeschiedenis zichtbaarheid", + "@visibilityOfTheChatHistory": { + "type": "String", + "placeholders": {} + }, + "visibleForAllParticipants": "Zichtbaar voor alle personen", + "@visibleForAllParticipants": { + "type": "String", + "placeholders": {} + }, + "visibleForEveryone": "Zichtbaar voor iedereen", + "@visibleForEveryone": { + "type": "String", + "placeholders": {} + }, + "voiceMessage": "Spraakbericht versturen", + "@voiceMessage": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "Wachten tot partner het verzoek accepteert …", + "@waitingPartnerAcceptRequest": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerEmoji": "Wachten tot je partner de emoji accepteert…", + "@waitingPartnerEmoji": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerNumbers": "Wachten tot partner de nummers accepteert …", + "@waitingPartnerNumbers": { + "type": "String", + "placeholders": {} + }, + "wallpaper": "Achtergrond:", + "@wallpaper": { + "type": "String", + "placeholders": {} + }, + "warning": "Waarschuwing!", + "@warning": { + "type": "String", + "placeholders": {} + }, + "weSentYouAnEmail": "We hebben je een email gestuurd", + "@weSentYouAnEmail": { + "type": "String", + "placeholders": {} + }, + "whoCanPerformWhichAction": "Wie kan welke actie uitvoeren", + "@whoCanPerformWhichAction": { + "type": "String", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "Wie mag deelnemen aan deze groep", + "@whoIsAllowedToJoinThisGroup": { + "type": "String", + "placeholders": {} + }, + "whyDoYouWantToReportThis": "Waarom wil je dit rapporteren?", + "@whyDoYouWantToReportThis": { + "type": "String", + "placeholders": {} + }, + "wipeChatBackup": "Wil je de chatback-up wissen om een nieuwe herstelsleutel te kunnen maken?", + "@wipeChatBackup": { + "type": "String", + "placeholders": {} + }, + "withTheseAddressesRecoveryDescription": "Met deze adressen kun je je wachtwoord herstellen.", + "@withTheseAddressesRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "writeAMessage": "Schrijf een bericht…", + "@writeAMessage": { + "type": "String", + "placeholders": {} + }, + "yes": "Ja", + "@yes": { + "type": "String", + "placeholders": {} + }, + "you": "Jij", + "@you": { + "type": "String", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "Je neemt niet langer deel aan deze chat", + "@youAreNoLongerParticipatingInThisChat": { + "type": "String", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "Je bent verbannen uit deze chat", + "@youHaveBeenBannedFromThisChat": { + "type": "String", + "placeholders": {} + }, + "yourPublicKey": "Je publieke sleutel", + "@yourPublicKey": { + "type": "String", + "placeholders": {} + }, + "scanQrCode": "QR-code scannen", + "@scanQrCode": {}, + "sendOnEnter": "Verstuur met enter", + "@sendOnEnter": {}, + "homeserver": "Server", + "@homeserver": {}, + "serverRequiresEmail": "Deze server wil je email laten bevestigen bij de registratie.", + "@serverRequiresEmail": {}, + "oneClientLoggedOut": "Één van jouw apparaten is uitgelogd", + "@oneClientLoggedOut": {}, + "enableMultiAccounts": "(BETA) Multi-accounts inschakelen op dit apparaat", + "@enableMultiAccounts": {}, + "bundleName": "Bundelnaam", + "@bundleName": {}, + "removeFromBundle": "Van bundel verwijderen", + "@removeFromBundle": {}, + "addToBundle": "Aan bundel toevoegen", + "@addToBundle": {}, + "editBundlesForAccount": "Bundels voor dit account wijzigen", + "@editBundlesForAccount": {}, + "addAccount": "Account toevoegen", + "@addAccount": {}, + "link": "Link", + "@link": {}, + "yourChatBackupHasBeenSetUp": "Jouw chatback-up is ingesteld.", + "@yourChatBackupHasBeenSetUp": {}, + "unverified": "Niet geverifieerd", + "@unverified": {}, + "repeatPassword": "Wachtwoord herhalen", + "@repeatPassword": {}, + "messageInfo": "Berichtinfo", + "@messageInfo": {}, + "time": "Tijd", + "@time": {}, + "messageType": "Berichttype", + "@messageType": {}, + "sender": "Afzender", + "@sender": {}, + "openGallery": "Galerij openen", + "@openGallery": {}, + "addToSpaceDescription": "Selecteer een space om deze chat aan toe te voegen.", + "@addToSpaceDescription": {}, + "removeFromSpace": "Uit de space verwijderen", + "@removeFromSpace": {}, + "start": "Start", + "@start": {}, + "commandHint_clearcache": "Cache wissen", + "@commandHint_clearcache": { + "type": "String", + "description": "Usage hint for the command /clearcache" + }, + "commandHint_create": "Maak een lege groepschat\nGebruik --no-encryption om de versleuteling uit te schakelen", + "@commandHint_create": { + "type": "String", + "description": "Usage hint for the command /create" + }, + "commandHint_dm": "Start een directe chat\nGebruik --no-encryption om de versleuteling uit te schakelen", + "@commandHint_dm": { + "type": "String", + "description": "Usage hint for the command /dm" + }, + "commandHint_discardsession": "Sessie weggooien", + "@commandHint_discardsession": { + "type": "String", + "description": "Usage hint for the command /discardsession" + }, + "openVideoCamera": "Videocamera openen", + "@openVideoCamera": { + "type": "String", + "placeholders": {} + }, + "videoWithSize": "Video ({size})", + "@videoWithSize": { + "type": "String", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "publish": "Publiceren", + "@publish": {}, + "dismiss": "Sluiten", + "@dismiss": {}, + "markAsRead": "Markeer als gelezen", + "@markAsRead": {}, + "reportUser": "Persoon rapporteren", + "@reportUser": {}, + "openChat": "Chat openen", + "@openChat": {}, + "reactedWith": "{sender} reageerde met {reaction}", + "@reactedWith": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "reaction": { + "type": "String" + } + } + }, + "pinMessage": "Maak vast aan chat", + "@pinMessage": {}, + "emojis": "Emoji's", + "@emojis": {}, + "placeCall": "Bellen", + "@placeCall": {}, + "unsupportedAndroidVersion": "Niet-ondersteunde Android-versie", + "@unsupportedAndroidVersion": {}, + "unsupportedAndroidVersionLong": "Voor deze functie is een nieuwe Android-versie verplicht. Controleer je updates of Lineage OS-ondersteuning.", + "@unsupportedAndroidVersionLong": {}, + "videoCallsBetaWarning": "Houd er rekening mee dat videogesprekken momenteel in bèta zijn. Ze werken misschien niet zoals je verwacht of werken niet op alle platformen.", + "@videoCallsBetaWarning": {}, + "voiceCall": "Spraakoproep", + "@voiceCall": {}, + "confirmEventUnpin": "Weet je zeker dat je de gebeurtenis definitief wilt losmaken?", + "@confirmEventUnpin": {}, + "experimentalVideoCalls": "Videogesprekken (experimenteel)", + "@experimentalVideoCalls": {}, + "emailOrUsername": "Email of inlognaam", + "@emailOrUsername": {}, + "nextAccount": "Volgende account", + "@nextAccount": {}, + "switchToAccount": "Naar account {number} overschakelen", + "@switchToAccount": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "previousAccount": "Vorige account", + "@previousAccount": {}, + "widgetCustom": "Aangepast", + "@widgetCustom": {}, + "widgetName": "Naam", + "@widgetName": {}, + "widgetUrlError": "Dit is geen geldige link.", + "@widgetUrlError": {}, + "widgetNameError": "Geef een naam op.", + "@widgetNameError": {}, + "errorAddingWidget": "Fout bij het toevoegen van de widget.", + "@errorAddingWidget": {}, + "widgetJitsi": "Jitsi Meet", + "@widgetJitsi": {}, + "addWidget": "Widget toevoegen", + "@addWidget": {}, + "widgetVideo": "Video", + "@widgetVideo": {}, + "widgetEtherpad": "Tekstnotitie", + "@widgetEtherpad": {}, + "separateChatTypes": "Directe chats en groepen los weergeven", + "@separateChatTypes": { + "type": "String", + "placeholders": {} + }, + "youAcceptedTheInvitation": "👍 Je hebt de uitnodiging geaccepteerd", + "@youAcceptedTheInvitation": {}, + "youRejectedTheInvitation": "Je hebt de uitnodiging afgewezen", + "@youRejectedTheInvitation": {}, + "youJoinedTheChat": "Je bent toegetreden tot de chat", + "@youJoinedTheChat": {}, + "youBannedUser": "Je hebt {user} verbannen", + "@youBannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youHaveWithdrawnTheInvitationFor": "Je hebt de uitnodiging voor {user} ingetrokken", + "@youHaveWithdrawnTheInvitationFor": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youInvitedBy": "📩 Je bent uitgenodigd door {user}", + "@youInvitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youInvitedUser": "📩 Je hebt {user} uitgenodigd", + "@youInvitedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youKicked": "👞 Je hebt {user} weggestuurd", + "@youKicked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youKickedAndBanned": "🙅 Je hebt weggestuurd en verbannen {user}", + "@youKickedAndBanned": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youUnbannedUser": "Je hebt de ban op {user} opgeheven", + "@youUnbannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "recoveryKey": "Herstelsleutel", + "@recoveryKey": {}, + "recoveryKeyLost": "Herstelsleutel verloren?", + "@recoveryKeyLost": {}, + "pleaseEnterRecoveryKey": "Voer jouw herstelsleutel in:", + "@pleaseEnterRecoveryKey": {}, + "users": "Personen", + "@users": {}, + "unlockOldMessages": "Oude berichten ontgrendelen", + "@unlockOldMessages": {}, + "storeInAndroidKeystore": "In Android KeyStore opslaan", + "@storeInAndroidKeystore": {}, + "storeInAppleKeyChain": "In Apple KeyChain opslaan", + "@storeInAppleKeyChain": {}, + "saveKeyManuallyDescription": "Sla deze sleutel handmatig op via delen of het klembord.", + "@saveKeyManuallyDescription": {}, + "pleaseEnterRecoveryKeyDescription": "Om je oude berichten te ontgrendelen voer je jouw herstelsleutel in die gemaakt is in je vorige sessie. Je sleutel is niet je wachtwoord.", + "@pleaseEnterRecoveryKeyDescription": {}, + "storeInSecureStorageDescription": "Sla de herstelsleutel op in de beveiligde opslag van dit apparaat.", + "@storeInSecureStorageDescription": {}, + "storeSecurlyOnThisDevice": "Veilig opslaan op dit apparaat", + "@storeSecurlyOnThisDevice": {}, + "dehydrate": "Sessie exporteren en apparaat wissen", + "@dehydrate": {}, + "dehydrateWarning": "Deze actie kan niet ongedaan worden gemaakt. Zorg ervoor dat je het back-upbestand veilig opslaat.", + "@dehydrateWarning": {}, + "dehydrateTor": "TOR-sessies: Exporteer sessie", + "@dehydrateTor": {}, + "dehydrateTorLong": "Voor TOR-sessies is het aanbevolen de sessie te exporteren alvorens het venster te sluiten.", + "@dehydrateTorLong": {}, + "hydrateTor": "TOR-sessie: Importeren sessie export", + "@hydrateTor": {}, + "hydrateTorLong": "Heb je de vorige keer jouw sessie geëxporteerd met TOR? Importeer het dan snel en ga verder met chatten.", + "@hydrateTorLong": {}, + "hydrate": "Herstellen vanuit back-upbestand", + "@hydrate": {}, + "indexedDbErrorTitle": "Problemen met privémodus", + "@indexedDbErrorTitle": {}, + "indexedDbErrorLong": "Het opslaan van berichten is helaas niet standaard ingeschakeld in de privémodus.\nBezoek alsjeblieft\n - about:config\n - stel dom.indexedDB.privateBrowsing.enabled in op true\nAnders is het niet mogelijk om FluffyChat op te starten.", + "@indexedDbErrorLong": {}, + "countFiles": "{count} bestanden", + "@countFiles": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "user": "Persoon", + "@user": {}, + "custom": "Aangepast", + "@custom": {}, + "confirmMatrixId": "Bevestig jouw Matrix-ID om je account te verwijderen.", + "@confirmMatrixId": {}, + "supposedMxid": "Dit moet {mxid} zijn", + "@supposedMxid": { + "type": "String", + "placeholders": { + "mxid": { + "type": "String" + } + } + }, + "commandHint_markasdm": "Markeer als privéberichtenkamer voor Matrix ID", + "@commandHint_markasdm": {}, + "commandHint_markasgroup": "Markeer als groep", + "@commandHint_markasgroup": {}, + "whyIsThisMessageEncrypted": "Waarom is dit bericht onleesbaar?", + "@whyIsThisMessageEncrypted": {}, + "noKeyForThisMessage": "Dit kan gebeuren als het bericht is verzonden voordat je bij je account op dit apparaat hebt aangemeld.\n\nHet is ook mogelijk dat de afzender je apparaat heeft geblokkeerd of dat er iets mis is gegaan met de internetverbinding.\n\nKan je het bericht wel lezen in een andere sessie? Dan kan je het bericht daarvandaan overzetten! Ga naar Instellingen > Apparaten en zorg ervoor dat je apparaten elkaar hebben geverifieerd. Wanneer je de chat de volgende keer opent en beide sessies op de voorgrond staan, zullen de sleutels automatisch worden verzonden.\n\nWil je de sleutels niet verliezen als je uitlogt of van apparaat wisselt? Zorg er dan voor dat je de chatback-up hebt aangezet in de instellingen.", + "@noKeyForThisMessage": {}, + "enterSpace": "Space betreden", + "@enterSpace": {}, + "allSpaces": "Alle spaces", + "@allSpaces": {}, + "foregroundServiceRunning": "Deze melding verschijnt wanneer de voorgronddienst draait.", + "@foregroundServiceRunning": {}, + "screenSharingTitle": "scherm delen", + "@screenSharingTitle": {}, + "screenSharingDetail": "Je deelt je scherm in FuffyChat", + "@screenSharingDetail": {}, + "callingPermissions": "Telefoon-rechten", + "@callingPermissions": {}, + "callingAccount": "Telefoon-account", + "@callingAccount": {}, + "callingAccountDetails": "Hiermee kan FluffyChat de Android telefoon-app gebruiken.", + "@callingAccountDetails": {}, + "appearOnTop": "Bovenaan verschijnen", + "@appearOnTop": {}, + "appearOnTopDetails": "Laat de app bovenaan verschijnen (niet nodig als je FluffyChat al hebt ingesteld als een bel-account)", + "@appearOnTopDetails": {}, + "otherCallingPermissions": "Microfoon, camera en andere FluffyChat-rechten", + "@otherCallingPermissions": {}, + "newGroup": "Nieuwe groep", + "@newGroup": {}, + "newSpace": "Space aanmaken", + "@newSpace": {}, + "enterRoom": "Chat betreden", + "@enterRoom": {}, + "numChats": "{number} chats", + "@numChats": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "hideUnimportantStateEvents": "Onbelangrijke statusgebeurtenissen verbergen", + "@hideUnimportantStateEvents": {}, + "doNotShowAgain": "Niet meer tonen", + "@doNotShowAgain": {}, + "googlyEyesContent": "{senderName} stuurt je wiebelogen", + "@googlyEyesContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "commandHint_googly": "Wiebel-ogen versturen", + "@commandHint_googly": {}, + "commandHint_cuddle": "Een knuffel versturen", + "@commandHint_cuddle": {}, + "commandHint_hug": "Een knuffel versturen", + "@commandHint_hug": {}, + "cuddleContent": "{senderName} knuffelt je", + "@cuddleContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "hugContent": "{senderName} omhelst je", + "@hugContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "wasDirectChatDisplayName": "Lege chat (was {oldDisplayName})", + "@wasDirectChatDisplayName": { + "type": "String", + "placeholders": { + "oldDisplayName": { + "type": "String" + } + } + }, + "disableEncryptionWarning": "Om veiligheidsredenen kun je versleuteling niet uitschakelen in een chat, waar deze eerder is ingeschakeld.", + "@disableEncryptionWarning": {}, + "sorryThatsNotPossible": "Sorry, dat is niet mogelijk", + "@sorryThatsNotPossible": {}, + "reopenChat": "Chat heropenen", + "@reopenChat": {}, + "encryptThisChat": "Versleutel deze chat", + "@encryptThisChat": {}, + "deviceKeys": "Apparaatsleutels:", + "@deviceKeys": {}, + "startFirstChat": "Begin je eerste chat", + "@startFirstChat": {}, + "newSpaceDescription": "Met spaces kun je je chats samenvoegen en privé- of openbare community's bouwen.", + "@newSpaceDescription": {}, + "noOtherDevicesFound": "Geen andere apparaten gevonden", + "@noOtherDevicesFound": {}, + "noBackupWarning": "Waarschuwing! Zonder de chatback-up in te schakelen, verlies je de toegang tot je versleutelde berichten. Het is sterk aanbevolen om eerst de chatback-up in te schakelen voordat je uitlogt.", + "@noBackupWarning": {}, + "fileIsTooBigForServer": "Kan niet verzenden! De server ondersteunt alleen bijlages tot {max}.", + "@fileIsTooBigForServer": {}, + "fileHasBeenSavedAt": "Het bestand is opgeslagen op {path}", + "@fileHasBeenSavedAt": { + "type": "String", + "placeholders": { + "path": { + "type": "String" + } + } + }, + "jumpToLastReadMessage": "Spring naar het laatst gelezen bericht", + "@jumpToLastReadMessage": {}, + "readUpToHere": "Lees tot hier", + "@readUpToHere": {}, + "jump": "Spring", + "@jump": {}, + "openLinkInBrowser": "Link in browser openen", + "@openLinkInBrowser": {}, + "allRooms": "Alle groepschats", + "@allRooms": { + "type": "String", + "placeholders": {} + }, + "signInWith": "Aanmelden met {provider}", + "@signInWith": { + "type": "String", + "placeholders": { + "provider": { + "type": "String" + } + } + }, + "notAnImage": "Geen afbeeldingsbestand.", + "@notAnImage": {}, + "importNow": "Nu importeren", + "@importNow": {}, + "importEmojis": "Emoji's importeren", + "@importEmojis": {}, + "importFromZipFile": "Uit zip-bestand importeren", + "@importFromZipFile": {}, + "exportEmotePack": "Emote-pakket als zip exporteren", + "@exportEmotePack": {}, + "replace": "Vervang", + "@replace": {}, + "report": "Rapporteer", + "@report": {}, + "reportErrorDescription": "😭 Oh nee. Er is iets misgegaan. Probeer het later nog eens. Als je wilt, kun je de bug rapporteren aan de ontwikkelaars.", + "@reportErrorDescription": {}, + "sendTypingNotifications": "Typemeldingen verzenden", + "@sendTypingNotifications": {}, + "pleaseTryAgainLaterOrChooseDifferentServer": "Probeer het later nog eens of kies een andere server.", + "@pleaseTryAgainLaterOrChooseDifferentServer": {}, + "signInWithPassword": "Aanmelden met wachtwoord", + "@signInWithPassword": {}, + "chatPermissions": "Chat rechten", + "@chatPermissions": {}, + "chatDescription": "Chatomschrijving", + "@chatDescription": {}, + "chatDescriptionHasBeenChanged": "Chatomschrijving gewijzigd", + "@chatDescriptionHasBeenChanged": {}, + "noChatDescriptionYet": "Nog geen chatomschrijving gemaakt.", + "@noChatDescriptionYet": {}, + "tryAgain": "Opnieuw proberen", + "@tryAgain": {}, + "redactMessageDescription": "Het bericht zal worden aangepast voor alle deelnemers in dit gesprek. Dit kan niet ongedaan gemaakt worden.", + "@redactMessageDescription": {}, + "redactedByBecause": "Aangepast door {username}, reden: \"{reason}\"", + "@redactedByBecause": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "reason": { + "type": "String" + } + } + }, + "profileNotFound": "De persoon kan niet gevonden worden op de server. Misschien is er een verbindingsprobleem of de persoon bestaat niet.", + "@profileNotFound": {}, + "createGroup": "Groep aanmaken", + "@createGroup": {}, + "inviteContactToGroupQuestion": "Wil je {contact} uitnodigingen voor de chat \"{groupName}\"?", + "@inviteContactToGroupQuestion": {}, + "optionalRedactReason": "(Optioneel) Reden voor aanpassing van dit bericht...", + "@optionalRedactReason": {}, + "addChatDescription": "Voeg een chatomschrijving toe...", + "@addChatDescription": {}, + "invalidServerName": "Foute servernaam", + "@invalidServerName": {}, + "messagesStyle": "Berichten:", + "@messagesStyle": {}, + "shareInviteLink": "Uitnodigingslink delen", + "@shareInviteLink": {}, + "redactedBy": "Aangepast door {username}", + "@redactedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "directChat": "Directe chat", + "@directChat": {}, + "setChatDescription": "Chatomschrijving instellen", + "@setChatDescription": {}, + "setTheme": "Thema instellen:", + "@setTheme": {}, + "setColorTheme": "Kleurthema instellen:", + "@setColorTheme": {}, + "invite": "Uitnodigen", + "@invite": {}, + "inviteGroupChat": "📨 Groeps-chat uitnodiging", + "@inviteGroupChat": {}, + "invitePrivateChat": "📨 Privé-chat uitnodiging", + "@invitePrivateChat": {}, + "emoteKeyboardNoRecents": "Recent gebruikte emoticons zullen hier verschijnen...", + "@emoteKeyboardNoRecents": { + "type": "String", + "placeholders": {} + }, + "invalidInput": "Ongeldige invoer!", + "@invalidInput": {}, + "wrongPinEntered": "Verkeerde pin ingevoerd! Probeer het nog eens over {seconds} seconden...", + "@wrongPinEntered": { + "type": "String", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "banUserDescription": "De persoon zal worden verbannen van de chat en kan niet meer toetreden totdat de verbanning is opgeheven.", + "@banUserDescription": {}, + "removeDevicesDescription": "Je wordt op dit apparaat uitgelogd en zal niet langer in staat zijn om berichten te ontvangen.", + "@removeDevicesDescription": {}, + "unbanUserDescription": "De persoon zal weer in staat zijn om de chat te betreden als ze het proberen.", + "@unbanUserDescription": {}, + "pushNotificationsNotAvailable": "Pushmeldingen zijn niet beschikbaar", + "@pushNotificationsNotAvailable": {}, + "makeAdminDescription": "Wanneer je deze persoon beheerder maakt kun je dit niet ongedaan maken als jullie dezelfde rechten hebben.", + "@makeAdminDescription": {}, + "archiveRoomDescription": "De chat zal naar het archief worden verplaatst. Andere personen zullen in staat zijn te zien dat je de chat hebt verlaten.", + "@archiveRoomDescription": {}, + "hasKnocked": "🚪 {user} heeft geklopt", + "@hasKnocked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "learnMore": "Lees meer", + "@learnMore": {}, + "roomUpgradeDescription": "De chat zal dan opnieuw gemaakt worden met de nieuwe kamerversie. Alle deelnemers worden geïnformeerd dat ze moeten overstappen naar de nieuwe chat. Je kan meer lezen over kamerversies op https://spec.matrix.org/latest/rooms/", + "@roomUpgradeDescription": {}, + "pleaseEnterANumber": "Vul een getal in groter dan 0", + "@pleaseEnterANumber": {}, + "kickUserDescription": "De persoon is verwijderd uit de chat, maar is niet verbannen. In openbare chats kan de persoon op elk moment opnieuw deelnemen.", + "@kickUserDescription": {}, + "alwaysUse24HourFormat": "true", + "@alwaysUse24HourFormat": { + "description": "Set to true to always display time of day in 24 hour format." + }, + "joinSpace": "Toetreden tot de space", + "@joinSpace": {}, + "block": "Blokkeren", + "@block": {}, + "blockedUsers": "Geblokkeerde personen", + "@blockedUsers": {}, + "presenceStyle": "Aanwezigheid:", + "@presenceStyle": { + "type": "String", + "placeholders": {} + }, + "searchChatsRooms": "Zoek naar #chats, @personen...", + "@searchChatsRooms": {}, + "swipeRightToLeftToReply": "Veeg van rechts naar links om te reageren", + "@swipeRightToLeftToReply": {}, + "calls": "Gesprekken", + "@calls": {}, + "customEmojisAndStickers": "Aangepaste emoji's en stickers", + "@customEmojisAndStickers": {}, + "accessAndVisibilityDescription": "Wie mag toetreden tot deze chat en hoe de chat ontdekt kan worden.", + "@accessAndVisibilityDescription": {}, + "customEmojisAndStickersBody": "Voeg toe of deel aangepaste emoji's of stickers die gebruikt kunnen worden in elke chat.", + "@customEmojisAndStickersBody": {}, + "hideRedactedMessages": "Verberg verwijderde berichten", + "@hideRedactedMessages": {}, + "hideRedactedMessagesBody": "Als iemand een bericht verwijdert, is dit bericht niet meer zichtbaar in de chat.", + "@hideRedactedMessagesBody": {}, + "hideInvalidOrUnknownMessageFormats": "Verberg ongeldige of onbekende berichtformaten", + "@hideInvalidOrUnknownMessageFormats": {}, + "passwordRecoverySettings": "Wachtwoordherstel-instellingen", + "@passwordRecoverySettings": {}, + "youInvitedToBy": "📩 Je bent uitgenodigd via een link voor:\n{alias}", + "@youInvitedToBy": { + "placeholders": { + "alias": { + "type": "String" + } + } + }, + "knock": "Klop", + "@knock": {}, + "overview": "Overzicht", + "@overview": {}, + "hidePresences": "Verberg statuslijst?", + "@hidePresences": {}, + "noOneCanJoin": "Niemand kan deelnemen", + "@noOneCanJoin": {}, + "yourGlobalUserIdIs": "Je Matrix ID is: ", + "@yourGlobalUserIdIs": {}, + "appLockDescription": "Vergendel de app wanneer het niet gebruikt wordt met een pincode", + "@appLockDescription": {}, + "globalChatId": "Globale chat ID", + "@globalChatId": {}, + "accessAndVisibility": "Toegang en zichtbaarheid", + "@accessAndVisibility": {}, + "invitedBy": "📩 Uitgenodigd door: {user}", + "@invitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "publicSpaces": "Openbare spaces", + "@publicSpaces": {}, + "blockUsername": "Negeer inlognaam", + "@blockUsername": {}, + "publicChatAddresses": "Openbare chat adressen", + "@publicChatAddresses": {}, + "createNewAddress": "Creëer nieuw adres", + "@createNewAddress": {}, + "countChatsAndCountParticipants": "{chats} chats en {participants} deelnemers", + "@countChatsAndCountParticipants": { + "type": "String", + "placeholders": { + "chats": { + "type": "int" + }, + "participants": { + "type": "int" + } + } + }, + "noMoreChatsFound": "Geen chats gevonden...", + "@noMoreChatsFound": {}, + "joinedChats": "Chats waaraan je deelneemt", + "@joinedChats": {}, + "knocking": "Kloppen", + "@knocking": {}, + "space": "Space", + "@space": {}, + "spaces": "Spaces", + "@spaces": {}, + "unread": "Ongelezen", + "@unread": {}, + "databaseBuildErrorBody": "Het aanmaken van de SQlite database is mislukt. De app probeert nu een traditionele database te gebruiken. Meldt alsjeblieft deze fout aan de ontwikkelaars via deze {url}. De foutmelding is: {error}", + "@databaseBuildErrorBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "groupName": "Groepsnaam", + "@groupName": {}, + "changeGeneralChatSettings": "Algemene chat instellingen wijzigen", + "@changeGeneralChatSettings": {}, + "restricted": "Beperkt", + "@restricted": {}, + "searchForUsers": "Zoek naar @personen...", + "@searchForUsers": {}, + "searchMore": "Zoek meer...", + "@searchMore": {}, + "noPublicLinkHasBeenCreatedYet": "Openbare link is nog niet gecreëerd", + "@noPublicLinkHasBeenCreatedYet": {}, + "groupCanBeFoundViaSearch": "Groep kan gevonden worden via zoeken", + "@groupCanBeFoundViaSearch": {}, + "searchIn": "Zoek in chat \"{chat}\"...", + "@searchIn": { + "type": "String", + "placeholders": { + "chat": { + "type": "String" + } + } + }, + "files": "Bestanden", + "@files": {}, + "unreadChatsInApp": "{appname}: {unread} ongelezen chats", + "@unreadChatsInApp": { + "type": "String", + "placeholders": { + "appname": { + "type": "String" + }, + "unread": { + "type": "String" + } + } + }, + "noDatabaseEncryption": "Database versleuteling is niet ondersteund op dit platform", + "@noDatabaseEncryption": {}, + "thereAreCountUsersBlocked": "Momenteel zijn er {count} personen geblokkeerd.", + "@thereAreCountUsersBlocked": { + "type": "String", + "count": {} + }, + "markAsUnread": "Als ongelezen markeren", + "@markAsUnread": {}, + "userLevel": "{level} - Persoon", + "@userLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "moderatorLevel": "{level} - Moderator", + "@moderatorLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "adminLevel": "{level} - Beheerder", + "@adminLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "stickers": "Stickers", + "@stickers": {}, + "nothingFound": "Niets gevonden...", + "@nothingFound": {}, + "gallery": "Galerij", + "@gallery": {}, + "transparent": "Transparant", + "@transparent": {}, + "incomingMessages": "Inkomende berichten", + "@incomingMessages": {}, + "discover": "Ontdek", + "@discover": {}, + "commandHint_ignore": "Negeer de gegeven Matrix ID", + "@commandHint_ignore": {}, + "noChatsFoundHere": "Hier zijn nog geen chats. Begin een nieuwe chat met iemand door op de onderstaande knop te klikken. ⤵️", + "@noChatsFoundHere": {}, + "unableToJoinChat": "Kan niet toetreden tot de chat. Misschien heeft de andere partij het gesprek al afgesloten.", + "@unableToJoinChat": {}, + "aboutHomeserver": "Over {homeserver}", + "@aboutHomeserver": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "boldText": "Vet gedrukte tekst", + "@boldText": {}, + "italicText": "Cursieve tekst", + "@italicText": {}, + "strikeThrough": "Doorhalen", + "@strikeThrough": {}, + "pleaseFillOut": "Vul alsjeblieft in", + "@pleaseFillOut": {}, + "invalidUrl": "Ongeldige url", + "@invalidUrl": {}, + "addLink": "Koppeling toevoegen", + "@addLink": {}, + "compress": "Comprimeren", + "@compress": {}, + "previous": "Vorige", + "@previous": {}, + "otherPartyNotLoggedIn": "De andere partij is momenteel niet ingelogd en kan daarom geen berichten ontvangen!", + "@otherPartyNotLoggedIn": {}, + "notifyMeFor": "Waarschuw mij voor", + "@notifyMeFor": {}, + "blockListDescription": "Je kunt personen blokkeren die je lastig vallen. Je kan dan geen berichten meer ontvangen of chat uitnodigingen krijgen van de personen op je blokkeerlijst.", + "@blockListDescription": {}, + "sendImages": "Stuur {count} afbeelding(en)", + "@sendImages": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "presencesToggle": "Toon statusberichten van andere personen", + "@presencesToggle": { + "type": "String", + "placeholders": {} + }, + "website": "Website", + "@website": {}, + "hideMemberChangesInPublicChats": "Verberg persoon veranderingen in openbare chats", + "@hideMemberChangesInPublicChats": {}, + "hideMemberChangesInPublicChatsBody": "Verberg in de tijdlijn van de chat als iemand zich aanmeldt bij een openbare chat of deze verlaat om de leesbaarheid te verbeteren.", + "@hideMemberChangesInPublicChatsBody": {}, + "startConversation": "Start gesprek", + "@startConversation": {}, + "usersMustKnock": "Personen moeten kloppen", + "@usersMustKnock": {}, + "noUsersFoundWithQuery": "Helaas kan er geen persoon gevonden worden met \"{query}\". Controleer of je een typfout hebt gemaakt.", + "@noUsersFoundWithQuery": { + "type": "String", + "placeholders": { + "query": { + "type": "String" + } + } + }, + "createGroupAndInviteUsers": "Maak groep en nodig personen uit", + "@createGroupAndInviteUsers": {}, + "userWouldLikeToChangeTheChat": "{user} wil graag deelnemen aan de chat.", + "@userWouldLikeToChangeTheChat": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "chatCanBeDiscoveredViaSearchOnServer": "Chat kan worden gevonden via een zoekopdracht op {server}", + "@chatCanBeDiscoveredViaSearchOnServer": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "wrongRecoveryKey": "Helaas... dit lijkt niet de correcte herstelsleutel.", + "@wrongRecoveryKey": {}, + "synchronizingPleaseWaitCounter": " Synchroniseren… ({percentage}%)", + "@synchronizingPleaseWaitCounter": { + "type": "String", + "placeholders": { + "percentage": { + "type": "String" + } + } + }, + "databaseMigrationTitle": "Database is geoptimaliseerd", + "@databaseMigrationTitle": {}, + "databaseMigrationBody": "Een ogenblik. Dit kan even duren.", + "@databaseMigrationBody": {}, + "commandHint_sendraw": "Stuur kale json", + "@commandHint_sendraw": {}, + "passwordIsWrong": "Je ingevoerde wachtwoord is fout", + "@passwordIsWrong": {}, + "newPassword": "Nieuw wachtwoord", + "@newPassword": {}, + "pleaseChooseAStrongPassword": "Kies a.j.b. een sterk wachtwoord", + "@pleaseChooseAStrongPassword": {}, + "publicLink": "Openbare link", + "@publicLink": {}, + "select": "Selecteer", + "@select": {}, + "leaveEmptyToClearStatus": "Laat leeg om je status te resetten.", + "@leaveEmptyToClearStatus": {}, + "addChatOrSubSpace": "Voeg chat of subspace toe", + "@addChatOrSubSpace": {}, + "subspace": "Subspace", + "@subspace": {}, + "pleaseEnterYourCurrentPassword": "Vul je huidige wachtwoord in", + "@pleaseEnterYourCurrentPassword": {}, + "passwordsDoNotMatch": "Wachtwoorden komen niet overeen", + "@passwordsDoNotMatch": {}, + "decline": "Weiger", + "@decline": {}, + "thisDevice": "Dit apparaat:", + "@thisDevice": {}, + "contentNotificationSettings": "Contentmelding instellingen", + "@contentNotificationSettings": {}, + "roomNotificationSettings": "Kamermelding instellingen", + "@roomNotificationSettings": {}, + "userSpecificNotificationSettings": "Persoon specifieke melding instellingen", + "@userSpecificNotificationSettings": {}, + "otherNotificationSettings": "Andere melding instellingen", + "@otherNotificationSettings": {}, + "notificationRuleContainsUserName": "Bevat naam van persoon", + "@notificationRuleContainsUserName": {}, + "notificationRuleContainsUserNameDescription": "Stuurt een melding als een bericht de persoon vermeld.", + "@notificationRuleContainsUserNameDescription": {}, + "notificationRuleMaster": "Alle meldingen dempen", + "@notificationRuleMaster": {}, + "notificationRuleMasterDescription": "Overschrijf alle andere regels en meldingen uitschakelen.", + "@notificationRuleMasterDescription": {}, + "notificationRuleMemberEventDescription": "Meldingen voor chat-gebeurtenissen uitschakelen.", + "@notificationRuleMemberEventDescription": {}, + "notificationRuleIsUserMention": "Persoonvermelding", + "@notificationRuleIsUserMention": {}, + "initAppError": "Er is een fout opgetreden bij het laden van de app", + "@initAppError": {}, + "requestedKeyVerification": "{sender} vraagt een sleutelverificatie", + "@requestedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "sessionLostBody": "Je sessie is verlopen. Meldt alsjeblieft deze fout aan de ontwikkelaars via deze link {url}. De foutmelding is: {error}", + "@sessionLostBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "sendTypingNotificationsDescription": "Andere deelnemers in de chat kunnen zien wanneer je een bericht aan het typen bent.", + "@sendTypingNotificationsDescription": {}, + "sendCanceled": "Versturen geannuleerd", + "@sendCanceled": {}, + "opacity": "Doorzichtigheid:", + "@opacity": {}, + "verifyOtherUserDescription": "Als je een persoon verifieert ben je er zeker van dat je echt met haar contact hebt. 💪\n\nWanneer je een verificatie start ziet de persoon een popup in de app. Hier staat een serie van emoji's of getallen die je met elkaar moet vergelijken.\n\nDe beste manier om dit te doen is in persoon of met een videogesprek. 👭", + "@verifyOtherUserDescription": {}, + "changeTheVisibilityOfChatHistory": "Zichtbaarheid van de chat-geschiedenis wijzigen", + "@changeTheVisibilityOfChatHistory": {}, + "whatIsAHomeserver": "Wat is een server?", + "@whatIsAHomeserver": {}, + "sendRoomNotifications": "@room-meldingen versturen", + "@sendRoomNotifications": {}, + "noticeChatBackupDeviceVerification": "Opmerking: Als al je apparaten zijn verbonden met de chat back-up worden ze automatisch geverifieerd.", + "@noticeChatBackupDeviceVerification": {}, + "notificationRuleMemberEvent": "Chat-gebeurtenis", + "@notificationRuleMemberEvent": {}, + "notificationRuleSuppressNotices": "Automatische berichten uitschakelen", + "@notificationRuleSuppressNotices": {}, + "setWallpaper": "Achtergrond instellen", + "@setWallpaper": {}, + "oneOfYourDevicesIsNotVerified": "Een van jouw apparaten is niet geverifieerd", + "@oneOfYourDevicesIsNotVerified": {}, + "contactServerAdmin": "Contact opnemen met serverbeheerder", + "@contactServerAdmin": {}, + "manageAccount": "Account beheren", + "@manageAccount": {}, + "noContactInformationProvided": "Server geeft geen geldige contactinformatie", + "@noContactInformationProvided": {}, + "waitingForServer": "Wachten op server...", + "@waitingForServer": {}, + "generalNotificationSettings": "Algemene melding instellingen", + "@generalNotificationSettings": {}, + "notificationRuleInviteForMeDescription": "Stuur een melding wanneer een persoon wordt uitgenodigd voor een chat.", + "@notificationRuleInviteForMeDescription": {}, + "notificationRuleSuppressNoticesDescription": "Meldingen van automatische accounts zoals bots uitschakelen.", + "@notificationRuleSuppressNoticesDescription": {}, + "notificationRuleInviteForMe": "Uitnodiging voor mij", + "@notificationRuleInviteForMe": {}, + "inviteOtherUsers": "Personen voor deze chat uitnodigen", + "@inviteOtherUsers": {}, + "changeTheChatPermissions": "Chat-rechten wijzigen", + "@changeTheChatPermissions": {}, + "changeTheCanonicalRoomAlias": "Standaard openbaar chat-adres wijzigen", + "@changeTheCanonicalRoomAlias": {}, + "blur": "Vervaag:", + "@blur": {}, + "isReadyForKeyVerification": "{sender} is klaar voor de sleutelverificatie", + "@isReadyForKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "startedKeyVerification": "{sender} start een sleutelverificatie", + "@startedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "acceptedKeyVerification": "{sender} accepteerde de sleutelverificatie", + "@acceptedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "canceledKeyVerification": "{sender} annuleerde de sleutelverificatie", + "@canceledKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "knockRestricted": "Kloppen is beperkt", + "@knockRestricted": {}, + "goToSpace": "Ga naar space: {space}", + "@goToSpace": { + "type": "String", + "space": {} + }, + "contactServerSecurity": "Contact opnemen met serverbeveiliger", + "@contactServerSecurity": {}, + "newChatRequest": "📩 Nieuw chat verzoek", + "@newChatRequest": {}, + "updateInstalled": "🎉 Update {version} geïnstalleerd!", + "@updateInstalled": { + "type": "String", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "discoverHomeservers": "Ontdek servers", + "@discoverHomeservers": {}, + "changelog": "Wijzigingengeschiedenis", + "@changelog": {}, + "loginWithMatrixId": "Inloggen met Matrix ID", + "@loginWithMatrixId": {}, + "calculatingFileSize": "Bestandsgrootte berekenen...", + "@calculatingFileSize": {}, + "sendingAttachment": "Bijlage versturen...", + "@sendingAttachment": {}, + "generatingVideoThumbnail": "Video-voorbeeld genereren...", + "@generatingVideoThumbnail": {}, + "prepareSendingAttachment": "Bijlage versturen voorbereiden...", + "@prepareSendingAttachment": {}, + "compressVideo": "Video comprimeren...", + "@compressVideo": {}, + "serverLimitReached": "Server limiet bereikt! Wacht {seconds} seconden...", + "@serverLimitReached": { + "type": "integer", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "version": "Versie", + "@version": {}, + "supportPage": "Supportpagina", + "@supportPage": {}, + "serverInformation": "Server-informatie:", + "@serverInformation": {}, + "name": "Naam", + "@name": {}, + "verifyOtherDeviceDescription": "Een geverifieerd ander apparaat zorgt ervoor dat de apparaten sleutels uitwisselen, wat je beveiliging versterkt. 💪 Als je de verificatie start verschijnt er een popup op beide apparaten. Hier staat een reeks emoji's of getallen die je met elkaar moet vergelijken. Het is handig om beide apparaten bij de hand te hebben voordat je de verificatie start. 🤳", + "@verifyOtherDeviceDescription": {}, + "commandHint_unignore": "Herstel de negeerde Matrix ID", + "@commandHint_unignore": {}, + "forwardMessageTo": "Bericht doorsturen naar {roomName}?", + "@forwardMessageTo": { + "type": "String", + "placeholders": { + "roomName": { + "type": "String" + } + } + }, + "restoreSessionBody": "De app probeert nu je sessie te herstellen van een back-up. Meldt alsjeblieft deze fout aan de ontwikkelaars via deze link {url}. De foutmelding is: {error}", + "@restoreSessionBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "sendReadReceipts": "Leesbevestigingen versturen", + "@sendReadReceipts": {}, + "formattedMessages": "Opgemaakte berichten", + "@formattedMessages": {}, + "chatPermissionsDescription": "Stel het gewenste rechten-niveau in voor bepaalde acties in deze chat. Het rechten-niveau 0, 50 en 100 zijn gebruikelijk voor deelnemer, moderator en beheerder, maar elke verdeling is mogelijk.", + "@chatPermissionsDescription": {}, + "changeTheDescriptionOfTheGroup": "Chatomschrijving wijzigen", + "@changeTheDescriptionOfTheGroup": {}, + "userRole": "Rol", + "@userRole": {}, + "minimumPowerLevel": "{level} is het minimale rechten-niveau.", + "@minimumPowerLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "String" + } + } + }, + "sendReadReceiptsDescription": "Andere deelnemers van de chat kunnen zien of je een bericht hebt gelezen.", + "@sendReadReceiptsDescription": {}, + "formattedMessagesDescription": "Geef rijke berichtinhoud weer zoals vetgedrukte tekst met markdown.", + "@formattedMessagesDescription": {}, + "verifyOtherUser": "🔐 Persoon verifiëren", + "@verifyOtherUser": {}, + "verifyOtherDevice": "🔐 Ander apparaat verifiëren", + "@verifyOtherDevice": {}, + "doesNotSeemToBeAValidHomeserver": "Dit lijkt geen ondersteunde server. Verkeerde URL?", + "@doesNotSeemToBeAValidHomeserver": {}, + "sendingAttachmentCountOfCount": "Bijlage versturen {index} van {length}...", + "@sendingAttachmentCountOfCount": { + "type": "integer", + "placeholders": { + "index": { + "type": "int" + }, + "length": { + "type": "int" + } + } + }, + "continueText": "Doorgaan", + "@continueText": {}, + "welcomeText": "Hallo hallo 👋 Dit is FluffyChat. Je kan inloggen op elke server die werkt met https://matrix.org. En dan chat je met iedereen. Het is een groot decentraal chat-netwerk!", + "@welcomeText": {}, + "appWantsToUseForLogin": "Inloggen met '{server}'", + "@appWantsToUseForLogin": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "appWantsToUseForLoginDescription": "Hierbij sta je toe dat de app en website informatie over je delen.", + "@appWantsToUseForLoginDescription": {}, + "open": "Open", + "@open": {}, + "appIntroduction": "FluffyChat laat je chatten met je vrienden tussen verschillende chat-netwerken. Lees meer op https://matrix.org of tik *Continue*.", + "@appIntroduction": {}, + "completedKeyVerification": "{sender} ronde de sleutelverificatie af", + "@completedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "homeserverDescription": "Al je data is opgeslagen op de server, net als bij een email-leverancier. Je kan kiezen welke server je gebruikt en toch communiceren met iedereen. Lees meer op https://matrix.org.", + "@homeserverDescription": {}, + "notificationRuleContainsDisplayName": "Bevat de naam", + "@notificationRuleContainsDisplayName": {}, + "notificationRuleIsUserMentionDescription": "Stuur een melding als de persoon direct genoemd wordt in een bericht.", + "@notificationRuleIsUserMentionDescription": {}, + "notificationRuleContainsDisplayNameDescription": "Stuur een melding als de persoon genoemd wordt in het bericht.", + "@notificationRuleContainsDisplayNameDescription": {}, + "notificationRuleIsRoomMention": "Kamervermelding", + "@notificationRuleIsRoomMention": {}, + "notificationRuleIsRoomMentionDescription": "Stuur een melding naar de persoon als er in een kamervermelding is.", + "@notificationRuleIsRoomMentionDescription": {}, + "notificationRuleRoomnotif": "Kamermelding", + "@notificationRuleRoomnotif": {}, + "notificationRuleRoomnotifDescription": "Stuur een melding naar de persoon wanneer een bericht '@room' bevat.", + "@notificationRuleRoomnotifDescription": {}, + "notificationRuleTombstone": "Sleutingsbericht", + "@notificationRuleTombstone": {}, + "notificationRuleReaction": "Reactie", + "@notificationRuleReaction": {}, + "notificationRuleRoomServerAcl": "Kamer Server ACL", + "@notificationRuleRoomServerAcl": {}, + "notificationRuleTombstoneDescription": "Stuur een melding naar de persoon over chat-sluitingsberichten.", + "@notificationRuleTombstoneDescription": {}, + "notificationRuleReactionDescription": "Meldingen voor reacties uitschakelen.", + "@notificationRuleReactionDescription": {}, + "notificationRuleRoomServerAclDescription": "Meldingen voor kamer server toegangscontrolelijst (ACL) uitschakelen.", + "@notificationRuleRoomServerAclDescription": {}, + "notificationRuleSuppressEdits": "Bewerkingen uitschakelen", + "@notificationRuleSuppressEdits": {}, + "notificationRuleCall": "Oproep", + "@notificationRuleCall": {}, + "notificationRuleSuppressEditsDescription": "Meldingen voor bewerkte berichten uitschakelen.", + "@notificationRuleSuppressEditsDescription": {}, + "notificationRuleEncryptedRoomOneToOneDescription": "Stuur een melding naar de persoon over berichten in versleutelde een-op-een chats.", + "@notificationRuleEncryptedRoomOneToOneDescription": {}, + "notificationRuleEncryptedRoomOneToOne": "Versleutelde een-op-een chat", + "@notificationRuleEncryptedRoomOneToOne": {}, + "notificationRuleRoomOneToOne": "Een-op-een chat", + "@notificationRuleRoomOneToOne": {}, + "notificationRuleMessage": "Bericht", + "@notificationRuleMessage": {}, + "notificationRuleEncrypted": "Versleuteld", + "@notificationRuleEncrypted": {}, + "notificationRuleRoomOneToOneDescription": "Stuur een melding naar de persoon over berichten in een-op-een chats.", + "@notificationRuleRoomOneToOneDescription": {}, + "notificationRuleMessageDescription": "Stuur een melding naar de persoon over algemene berichten.", + "@notificationRuleMessageDescription": {}, + "notificationRuleJitsi": "Jitsi", + "@notificationRuleJitsi": {}, + "notificationRuleEncryptedDescription": "Stuur een melding naar de persoon over berichten in versleutelde chats.", + "@notificationRuleEncryptedDescription": {}, + "notificationRuleJitsiDescription": "Stuur een melding naar de persoon over Jitsi widget gebeurtenissen.", + "@notificationRuleJitsiDescription": {}, + "unknownPushRule": "Onbekende notificatieregel '{rule}'", + "@unknownPushRule": { + "type": "String", + "placeholders": { + "rule": { + "type": "String" + } + } + }, + "notificationRuleServerAcl": "Server ACL gebeurtenissen uitschakelen", + "@notificationRuleServerAcl": {}, + "notificationRuleServerAclDescription": "Meldingen over server ACL gebeurtenissen uitschakelen.", + "@notificationRuleServerAclDescription": {}, + "more": "Meer", + "@more": {}, + "enterNewChat": "Nieuwe chat openen", + "@enterNewChat": {}, + "crossVerifiedDevices": "Kruislings geverifieerde apparaten", + "@crossVerifiedDevices": {}, + "allDevices": "Alle apparaten", + "@allDevices": {}, + "shareKeysWithDescription": "Welke apparaten moeten vertrouwd worden zodat ze je berichten kunnen lezen in versleutelde chats?", + "@shareKeysWithDescription": {}, + "verifiedDevicesOnly": "Alleen geverifieerde apparaten", + "@verifiedDevicesOnly": {}, + "crossVerifiedDevicesIfEnabled": "Kruislings geverifieerde apparaten als ingeschakeld", + "@crossVerifiedDevicesIfEnabled": {}, + "shareKeysWith": "Deel sleutels met...", + "@shareKeysWith": {}, + "notificationRuleCallDescription": "Stuur een melding naar de persoon over oproepen.", + "@notificationRuleCallDescription": {}, + "deletePushRuleCanNotBeUndone": "Als je deze melding-instelling verwijderd, kan dit niet ongedaan gemaakt worden.", + "@deletePushRuleCanNotBeUndone": {}, + "takeAPhoto": "Foto maken", + "@takeAPhoto": {}, + "recordAVideo": "Video opnemen", + "@recordAVideo": {}, + "optionalMessage": "(Optioneel) bericht...", + "@optionalMessage": {}, + "notSupportedOnThisDevice": "Niet ondersteund op dit apparaat", + "@notSupportedOnThisDevice": {}, + "commandHint_roomupgrade": "Upgradeer deze chat naar de aangegeven kamerversie", + "@commandHint_roomupgrade": {}, + "setCustomPermissionLevel": "Aangepast rechten-niveau instellen", + "@setCustomPermissionLevel": {}, + "setPermissionsLevelDescription": "Kies hieronder een standaard rol of voer een aangepast rechten-niveau in tussen 0 en 100.", + "@setPermissionsLevelDescription": {}, + "ignoreUser": "Persoon negeren", + "@ignoreUser": {}, + "normalUser": "Normaal persoon", + "@normalUser": {}, + "pleaseWaitUntilInvited": "Wacht even alsjeblieft tot iemand van de chat je uitnodigt.", + "@pleaseWaitUntilInvited": {}, + "approve": "Goedkeuren", + "@approve": {}, + "youHaveKnocked": "Je hebt geklopt", + "@youHaveKnocked": {}, + "sentVoiceMessage": "🎙️ {duration} - Spraakbericht van {sender}", + "@sentVoiceMessage": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "duration": { + "type": "String" + } + } + }, + "countInvited": "{count} uitgenodigd", + "@countInvited": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "checkList": "Checklist", + "@checkList": {}, + "commandHint_logout": "Uw huidige apparaat uitloggen", + "@commandHint_logout": {}, + "commandHint_logoutall": "Alle actieve apparaten uitloggen", + "@commandHint_logoutall": {}, + "displayNavigationRail": "Navigatiebalk op mobiel tonen", + "@displayNavigationRail": {}, + "moreEvents": "Meer gebeurtenissen", + "@moreEvents": {}, + "customReaction": "Aangepaste reactie", + "@customReaction": {}, + "declineInvitation": "Uitnodiging afwijzen", + "@declineInvitation": {}, + "noMessagesYet": "Nog geen berichten", + "@noMessagesYet": {}, + "longPressToRecordVoiceMessage": "Lang drukken om een spraakbericht op te nemen.", + "@longPressToRecordVoiceMessage": {}, + "pause": "Pauzeer", + "@pause": {}, + "resume": "Hervat", + "@resume": {}, + "donate": "Doneer", + "@donate": {}, + "newSubSpace": "Nieuwe sub-space", + "@newSubSpace": {}, + "moveToDifferentSpace": "Naar andere space verplaatsen", + "@moveToDifferentSpace": {}, + "moveUp": "Omhoog verplaatsen", + "@moveUp": {}, + "moveDown": "Omlaag verplaatsen", + "@moveDown": {}, + "removeFromSpaceDescription": "De chat zal worden verwijderd uit de space, maar blijft in je chats.", + "@removeFromSpaceDescription": {}, + "countChats": "{chats} chats", + "@countChats": { + "type": "String", + "placeholders": { + "chats": { + "type": "int" + } + } + }, + "spaceMemberOf": "{spaces} personen in space", + "@spaceMemberOf": { + "type": "String", + "placeholders": { + "spaces": { + "type": "String" + } + } + }, + "spaceMemberOfCanKnock": "{spaces} personen in space kunnen kloppen", + "@spaceMemberOfCanKnock": { + "type": "String", + "placeholders": { + "spaces": { + "type": "String" + } + } + }, + "startedAPoll": "{username} is een peiling begonnen.", + "@startedAPoll": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "poll": "Peiling", + "@poll": {}, + "startPoll": "Peiling starten", + "@startPoll": {}, + "endPoll": "Peiling beëindigen", + "@endPoll": {}, + "answersVisible": "Zichtbaar invullen", + "@answersVisible": {}, + "answersHidden": "Antwoorden verborgen", + "@answersHidden": {}, + "pollQuestion": "Peiling vraag", + "@pollQuestion": {}, + "answerOption": "Antwoord optie", + "@answerOption": {}, + "addAnswerOption": "Antwoord optie toevoegen", + "@addAnswerOption": {}, + "allowMultipleAnswers": "Meerdere antwoorden toestaan", + "@allowMultipleAnswers": {}, + "pollHasBeenEnded": "Peiling is geëindigd", + "@pollHasBeenEnded": {}, + "countVotes": "{count, plural, =1{Één stem} other{{count} stemmen}}", + "@countVotes": { + "type": "int", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "answersWillBeVisibleWhenPollHasEnded": "Antwoorden zullen zichtbaar zijn wanneer de peiling is geëindigd", + "@answersWillBeVisibleWhenPollHasEnded": {}, + "replyInThread": "Antwoord in draad", + "@replyInThread": {}, + "countReplies": "{count, plural, =1{Één antwoord} other{{count} antwoorden}}", + "@countReplies": { + "type": "int", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "thread": "Draad", + "@thread": {}, + "backToMainChat": "Terug naar hoofdchat", + "@backToMainChat": {} +} diff --git a/lib/l10n/intl_pl.arb b/lib/l10n/intl_pl.arb new file mode 100644 index 0000000..1675402 --- /dev/null +++ b/lib/l10n/intl_pl.arb @@ -0,0 +1,3389 @@ +{ + "@@locale": "pl", + "@@last_modified": "2021-08-14 12:41:09.943634", + "about": "O aplikacji", + "@about": { + "type": "String", + "placeholders": {} + }, + "accept": "Akceptuj", + "@accept": { + "type": "String", + "placeholders": {} + }, + "acceptedTheInvitation": "👍 {username} zaakceptował/-a zaproszenie", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "account": "Konto", + "@account": { + "type": "String", + "placeholders": {} + }, + "activatedEndToEndEncryption": "🔐 {username} aktywował/-a szyfrowanie od końca do końca", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "addEmail": "Dodaj adres email", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "admin": "Administrator", + "@admin": { + "type": "String", + "placeholders": {} + }, + "alias": "alias", + "@alias": { + "type": "String", + "placeholders": {} + }, + "answeredTheCall": "{senderName} odebrał/-a połączenie", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "anyoneCanJoin": "Każdy może dołączyć", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "archive": "Archiwum", + "@archive": { + "type": "String", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "Czy użytkownicy-goście mogą dołączyć", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "Czy na pewno?", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "areYouSureYouWantToLogout": "Czy na pewno chcesz się wylogować?", + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "askSSSSSign": "Aby zalogować inną osobę, proszę wpisać hasło przechowywania lub klucz odzyskiwania.", + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "askVerificationRequest": "Zaakceptować tą prośbę weryfikacji od {username}?", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "badServerLoginTypesException": "Serwer obsługuje typy logowania:\n{serverVersions}\nAle ta aplikacja obsługuje tylko:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "badServerVersionsException": "Serwer obsługuje wersje Spec:\n{serverVersions}\nAle aplikacja obsługuje tylko {supportedVersions}", + "@badServerVersionsException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "banFromChat": "Ban w czacie", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "banned": "Zbanowany/-a", + "@banned": { + "type": "String", + "placeholders": {} + }, + "bannedUser": "{username} zbanował/-a {targetName}", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "blockDevice": "Zablokuj urządzenie", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "blocked": "Zablokowane", + "@blocked": { + "type": "String", + "placeholders": {} + }, + "botMessages": "Wiadomości botów", + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "cancel": "Anuluj", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "changeDeviceName": "Zmień nazwę urządzenia", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "changedTheChatAvatar": "{username} zmienił/-a zdjęcie profilowe", + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheChatDescriptionTo": "{username} zmienił/-a opis czatu na '{description}'", + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "changedTheChatNameTo": "{username} zmienił/-a nazwę czatu na '{chatname}'", + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "changedTheChatPermissions": "{username} zmienił/-a uprawnienia w czacie", + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheDisplaynameTo": "{username} zmienił/-a swoją nazwę wyświetlaną na '{displayname}'", + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "changedTheGuestAccessRules": "{username} zmienił/-a zasady dostępu dla gości", + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheGuestAccessRulesTo": "{username} zmienił/-a zasady dostępu dla gości na {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheHistoryVisibility": "{username} zmienił/-a widoczność historii", + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheHistoryVisibilityTo": "{username} zmienił/-a widoczność historii na {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheJoinRules": "{username} zmienił/-a zasady wejścia", + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheJoinRulesTo": "{username} zmienił/-a zasady wejścia na {joinRules}", + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "changedTheProfileAvatar": "{username} zmienił/-a zdjęcie profilowe", + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomAliases": "{username} zmienił/-a alias pokoju", + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomInvitationLink": "{username} zmienił/-a link z zaproszeniem do pokoju", + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changePassword": "Zmień hasło", + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "changeTheHomeserver": "Zmień serwer domyślny", + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "changeTheme": "Zmień swój styl", + "@changeTheme": { + "type": "String", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "Zmień nazwę grupy", + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "channelCorruptedDecryptError": "Szyfrowanie zostało uszkodzone", + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "chat": "Czat", + "@chat": { + "type": "String", + "placeholders": {} + }, + "chatBackup": "Kopia zapasowa czatów", + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "chatBackupDescription": "Twoje stare wiadomości są zabezpieczone kluczem odzyskiwania. Uważaj żeby go nie zgubić.", + "@chatBackupDescription": { + "type": "String", + "placeholders": {} + }, + "chatDetails": "Szczegóły czatu", + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "chats": "Czaty", + "@chats": { + "type": "String", + "placeholders": {} + }, + "chooseAStrongPassword": "Wybierz silne hasło", + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "clearArchive": "Wyczyść archiwum", + "@clearArchive": {}, + "close": "Zamknij", + "@close": { + "type": "String", + "placeholders": {} + }, + "commandHint_ban": "Zbanuj użytkownika w tym pokoju", + "@commandHint_ban": { + "type": "String", + "description": "Usage hint for the command /ban" + }, + "commandHint_html": "Wyślij tekst sformatowany w HTML", + "@commandHint_html": { + "type": "String", + "description": "Usage hint for the command /html" + }, + "commandHint_invite": "Zaproś użytkownika do pokoju", + "@commandHint_invite": { + "type": "String", + "description": "Usage hint for the command /invite" + }, + "commandHint_join": "Dołącz do podanego pokoju", + "@commandHint_join": { + "type": "String", + "description": "Usage hint for the command /join" + }, + "commandHint_kick": "Usuń tego użytkownika z tego pokoju", + "@commandHint_kick": { + "type": "String", + "description": "Usage hint for the command /kick" + }, + "commandHint_leave": "Opuść ten pokój", + "@commandHint_leave": { + "type": "String", + "description": "Usage hint for the command /leave" + }, + "commandHint_me": "Opisz siebie", + "@commandHint_me": { + "type": "String", + "description": "Usage hint for the command /me" + }, + "commandHint_myroomavatar": "Ustaw swoje zdjęcie w tym pokoju (przez mxc-uri)", + "@commandHint_myroomavatar": { + "type": "String", + "description": "Usage hint for the command /myroomavatar" + }, + "commandHint_myroomnick": "Ustaw swoją nazwę wyświetlaną w tym pokoju", + "@commandHint_myroomnick": { + "type": "String", + "description": "Usage hint for the command /myroomnick" + }, + "commandHint_op": "Ustaw poziom uprawnień tego użytkownika (domyślnie: 50)", + "@commandHint_op": { + "type": "String", + "description": "Usage hint for the command /op" + }, + "commandHint_plain": "Wyślij niesformatowany tekst", + "@commandHint_plain": { + "type": "String", + "description": "Usage hint for the command /plain" + }, + "commandHint_react": "Wyślij odpowiedź jako reakcję", + "@commandHint_react": { + "type": "String", + "description": "Usage hint for the command /react" + }, + "commandHint_send": "Wyślij wiadomość", + "@commandHint_send": { + "type": "String", + "description": "Usage hint for the command /send" + }, + "commandHint_unban": "Odbanuj użytkownika w tym pokoju", + "@commandHint_unban": { + "type": "String", + "description": "Usage hint for the command /unban" + }, + "commandInvalid": "Nieprawidłowe polecenie", + "@commandInvalid": { + "type": "String" + }, + "commandMissing": "{command} nie jest poleceniem.", + "@commandMissing": { + "type": "String", + "placeholders": { + "command": { + "type": "String" + } + }, + "description": "State that {command} is not a valid /command." + }, + "compareEmojiMatch": "Porównaj emoji", + "@compareEmojiMatch": { + "type": "String", + "placeholders": {} + }, + "compareNumbersMatch": "Porównaj cyfry", + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "confirm": "Potwierdź", + "@confirm": { + "type": "String", + "placeholders": {} + }, + "connect": "Połącz", + "@connect": { + "type": "String", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "Kontakt został zaproszony do grupy", + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "containsDisplayName": "Zawiera nazwę wyświetlaną", + "@containsDisplayName": { + "type": "String", + "placeholders": {} + }, + "containsUserName": "Zawiera nazwę użytkownika", + "@containsUserName": { + "type": "String", + "placeholders": {} + }, + "copiedToClipboard": "Skopiowano do schowka", + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "copy": "Kopiuj", + "@copy": { + "type": "String", + "placeholders": {} + }, + "copyToClipboard": "Skopiuj do schowka", + "@copyToClipboard": { + "type": "String", + "placeholders": {} + }, + "couldNotDecryptMessage": "Nie można odszyfrować wiadomości: {error}", + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "countParticipants": "{count} uczestników", + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "create": "Stwórz", + "@create": { + "type": "String", + "placeholders": {} + }, + "createdTheChat": "💬 {username} utworzył/-a czat", + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "currentlyActive": "Obecnie aktywny/-a", + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "darkTheme": "Ciemny", + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "dateAndTimeOfDay": "{date} {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "dateWithoutYear": "{month}-{day}", + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "dateWithYear": "{day}.{month}.{year}", + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "deactivateAccountWarning": "To zdezaktywuje twoje konto. To jest nieodwracalne! Na pewno chcesz to zrobić?", + "@deactivateAccountWarning": { + "type": "String", + "placeholders": {} + }, + "delete": "Usuń", + "@delete": { + "type": "String", + "placeholders": {} + }, + "deleteAccount": "Usuń konto", + "@deleteAccount": { + "type": "String", + "placeholders": {} + }, + "deleteMessage": "Usuń wiadomość", + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "device": "Urządzenie", + "@device": { + "type": "String", + "placeholders": {} + }, + "deviceId": "Identyfikator urządzenia", + "@deviceId": { + "type": "String", + "placeholders": {} + }, + "devices": "Urządzenia", + "@devices": { + "type": "String", + "placeholders": {} + }, + "directChats": "Czaty bezpośrednie", + "@directChats": { + "type": "String", + "placeholders": {} + }, + "displaynameHasBeenChanged": "Nazwa wyświetlana została zmieniona", + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "downloadFile": "Pobierz plik", + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "edit": "Edytuj", + "@edit": { + "type": "String", + "placeholders": {} + }, + "editDisplayname": "Edytuj nazwę wyświetlaną", + "@editDisplayname": { + "type": "String", + "placeholders": {} + }, + "editRoomAliases": "Zmień aliasy pokoju", + "@editRoomAliases": { + "type": "String", + "placeholders": {} + }, + "emoteExists": "Emotikon już istnieje!", + "@emoteExists": { + "type": "String", + "placeholders": {} + }, + "emoteInvalid": "Nieprawidłowy kod emotikonu!", + "@emoteInvalid": { + "type": "String", + "placeholders": {} + }, + "emotePacks": "Paczki emotikonów dla pokoju", + "@emotePacks": { + "type": "String", + "placeholders": {} + }, + "emoteSettings": "Ustawienia emotikonów", + "@emoteSettings": { + "type": "String", + "placeholders": {} + }, + "emoteShortcode": "Skrócony kod emotikonu", + "@emoteShortcode": { + "type": "String", + "placeholders": {} + }, + "emoteWarnNeedToPick": "Musisz wybrać kod emotikonu oraz obraz!", + "@emoteWarnNeedToPick": { + "type": "String", + "placeholders": {} + }, + "emptyChat": "Pusty czat", + "@emptyChat": { + "type": "String", + "placeholders": {} + }, + "enableEmotesGlobally": "Włącz paczkę emotikonów globalnie", + "@enableEmotesGlobally": { + "type": "String", + "placeholders": {} + }, + "enableEncryptionWarning": "Nie będziesz już mógł wyłączyć szyfrowania. Jesteś pewny?", + "@enableEncryptionWarning": { + "type": "String", + "placeholders": {} + }, + "encrypted": "Szyfrowane", + "@encrypted": { + "type": "String", + "placeholders": {} + }, + "encryption": "Szyfrowanie", + "@encryption": { + "type": "String", + "placeholders": {} + }, + "encryptionNotEnabled": "Szyfrowanie nie jest włączone", + "@encryptionNotEnabled": { + "type": "String", + "placeholders": {} + }, + "endedTheCall": "{senderName} zakończył/-a połączenie", + "@endedTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "enterAnEmailAddress": "Wpisz adres e-mail", + "@enterAnEmailAddress": { + "type": "String", + "placeholders": {} + }, + "enterYourHomeserver": "Wpisz swój serwer domowy", + "@enterYourHomeserver": { + "type": "String", + "placeholders": {} + }, + "everythingReady": "Wszystko gotowe!", + "@everythingReady": { + "type": "String", + "placeholders": {} + }, + "fileName": "Nazwa pliku", + "@fileName": { + "type": "String", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "String", + "placeholders": {} + }, + "forward": "Przekaż", + "@forward": { + "type": "String", + "placeholders": {} + }, + "fromJoining": "Od dołączenia", + "@fromJoining": { + "type": "String", + "placeholders": {} + }, + "fromTheInvitation": "Od zaproszenia", + "@fromTheInvitation": { + "type": "String", + "placeholders": {} + }, + "goToTheNewRoom": "Przejdź do nowego pokoju", + "@goToTheNewRoom": { + "type": "String", + "placeholders": {} + }, + "group": "Grupa", + "@group": { + "type": "String", + "placeholders": {} + }, + "groupIsPublic": "Grupa jest publiczna", + "@groupIsPublic": { + "type": "String", + "placeholders": {} + }, + "groupWith": "Grupa z {displayname}", + "@groupWith": { + "type": "String", + "placeholders": { + "displayname": { + "type": "String" + } + } + }, + "guestsAreForbidden": "Goście są zakazani", + "@guestsAreForbidden": { + "type": "String", + "placeholders": {} + }, + "guestsCanJoin": "Goście mogą dołączyć", + "@guestsCanJoin": { + "type": "String", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "{username} wycofał/-a zaproszenie dla {targetName}", + "@hasWithdrawnTheInvitationFor": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "help": "Pomoc", + "@help": { + "type": "String", + "placeholders": {} + }, + "hideRedactedEvents": "Ukryj informacje o usuniętych zdarzeniach", + "@hideRedactedEvents": { + "type": "String", + "placeholders": {} + }, + "hideUnknownEvents": "Ukryj nieznane wdarzenia", + "@hideUnknownEvents": { + "type": "String", + "placeholders": {} + }, + "id": "Identyfikator", + "@id": { + "type": "String", + "placeholders": {} + }, + "identity": "Tożsamość", + "@identity": { + "type": "String", + "placeholders": {} + }, + "ignoredUsers": "Ignorowani użytkownicy", + "@ignoredUsers": { + "type": "String", + "placeholders": {} + }, + "iHaveClickedOnLink": "Nacisnąłem na link", + "@iHaveClickedOnLink": { + "type": "String", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "Złe hasło bezpieczeństwa lub klucz odzyskiwania", + "@incorrectPassphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "inviteContact": "Zaproś kontakt", + "@inviteContact": { + "type": "String", + "placeholders": {} + }, + "inviteContactToGroup": "Zaproś kontakty do {groupName}", + "@inviteContactToGroup": { + "type": "String", + "placeholders": { + "groupName": { + "type": "String" + } + } + }, + "invited": "Zaproszono", + "@invited": { + "type": "String", + "placeholders": {} + }, + "invitedUser": "📩 {username} zaprosił/-a {targetName}", + "@invitedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "invitedUsersOnly": "Tylko zaproszeni użytkownicy", + "@invitedUsersOnly": { + "type": "String", + "placeholders": {} + }, + "inviteForMe": "Zaproszenie dla mnie", + "@inviteForMe": { + "type": "String", + "placeholders": {} + }, + "inviteText": "{username} zaprosił/-a Cię do FluffyChat.\n1. Odwiedź fluffychat.im i zainstaluj aplikację\n2. Zarejestuj się lub zaloguj\n3. Otwórz link zaproszenia:\n{link}", + "@inviteText": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "link": { + "type": "String" + } + } + }, + "isTyping": "pisze…", + "@isTyping": { + "type": "String", + "placeholders": {} + }, + "joinedTheChat": "👋 {username} dołączył/-a do czatu", + "@joinedTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "joinRoom": "Dołącz do pokoju", + "@joinRoom": { + "type": "String", + "placeholders": {} + }, + "kicked": "👞 {username} wyrzucił/-a {targetName}", + "@kicked": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickedAndBanned": "🙅 {username} wyrzucił/-a i zbanował/-a {targetName}", + "@kickedAndBanned": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickFromChat": "Wyrzuć z czatu", + "@kickFromChat": { + "type": "String", + "placeholders": {} + }, + "lastActiveAgo": "Ostatnio widziano {localizedTimeShort}", + "@lastActiveAgo": { + "type": "String", + "placeholders": { + "localizedTimeShort": { + "type": "String" + } + } + }, + "leave": "Opuść", + "@leave": { + "type": "String", + "placeholders": {} + }, + "leftTheChat": "Opuścił/-a czat", + "@leftTheChat": { + "type": "String", + "placeholders": {} + }, + "license": "Licencja", + "@license": { + "type": "String", + "placeholders": {} + }, + "lightTheme": "Jasny", + "@lightTheme": { + "type": "String", + "placeholders": {} + }, + "loadCountMoreParticipants": "Załaduj jeszcze {count} uczestników", + "@loadCountMoreParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "loadingPleaseWait": "Ładowanie… Proszę czekać.", + "@loadingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "loadMore": "Załaduj więcej…", + "@loadMore": { + "type": "String", + "placeholders": {} + }, + "login": "Zaloguj się", + "@login": { + "type": "String", + "placeholders": {} + }, + "logInTo": "Zaloguj się do {homeserver}", + "@logInTo": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "logout": "Wyloguj się", + "@logout": { + "type": "String", + "placeholders": {} + }, + "memberChanges": "Zmiany członków", + "@memberChanges": { + "type": "String", + "placeholders": {} + }, + "mention": "Wzmianka", + "@mention": { + "type": "String", + "placeholders": {} + }, + "moderator": "Moderator", + "@moderator": { + "type": "String", + "placeholders": {} + }, + "muteChat": "Wycisz czat", + "@muteChat": { + "type": "String", + "placeholders": {} + }, + "needPantalaimonWarning": "Należy pamiętać, że Pantalaimon wymaga na razie szyfrowania od końca do końca.", + "@needPantalaimonWarning": { + "type": "String", + "placeholders": {} + }, + "newChat": "Nowa rozmowa", + "@newChat": { + "type": "String", + "placeholders": {} + }, + "newMessageInFluffyChat": "💬 Nowa wiadomość we FluffyChat", + "@newMessageInFluffyChat": { + "type": "String", + "placeholders": {} + }, + "newVerificationRequest": "Nowa prośba o weryfikację!", + "@newVerificationRequest": { + "type": "String", + "placeholders": {} + }, + "next": "Dalej", + "@next": { + "type": "String", + "placeholders": {} + }, + "no": "Nie", + "@no": { + "type": "String", + "placeholders": {} + }, + "noEncryptionForPublicRooms": "Możesz aktywować szyfrowanie dopiero kiedy pokój nie będzie publicznie dostępny.", + "@noEncryptionForPublicRooms": { + "type": "String", + "placeholders": {} + }, + "noGoogleServicesWarning": "Wygląda na to, że Twoje urządzenie nie obsługuje Firebase Cloud Messaging. Aby wciąż otrzymywać powiadomienia push, zalecamy istalację ntfy. Używając ntfy lub inengo zunifikowanego dostawcy powiadomień push, możesz bezpiecznie otrzymywać takowe powiadomienia. Ntfy można pobrać ze sklepu Google Play Store lub z F-Droid.", + "@noGoogleServicesWarning": { + "type": "String", + "placeholders": {} + }, + "none": "Brak", + "@none": { + "type": "String", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "Nie dodałeś/-aś jeszcze sposobu odzyskiwania swojego hasła.", + "@noPasswordRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "noPermission": "Brak uprawnień", + "@noPermission": { + "type": "String", + "placeholders": {} + }, + "noRoomsFound": "Nie znaleziono pokojów…", + "@noRoomsFound": { + "type": "String", + "placeholders": {} + }, + "notifications": "Powiadomienia", + "@notifications": { + "type": "String", + "placeholders": {} + }, + "notificationsEnabledForThisAccount": "Powiadomienia są włączone dla tego konta", + "@notificationsEnabledForThisAccount": { + "type": "String", + "placeholders": {} + }, + "oopsSomethingWentWrong": "Ojej! Coś poszło nie tak…", + "@oopsSomethingWentWrong": { + "type": "String", + "placeholders": {} + }, + "openAppToReadMessages": "Otwórz aplikację by odczytać wiadomości", + "@openAppToReadMessages": { + "type": "String", + "placeholders": {} + }, + "openCamera": "Otwórz aparat", + "@openCamera": { + "type": "String", + "placeholders": {} + }, + "password": "Hasło", + "@password": { + "type": "String", + "placeholders": {} + }, + "passwordHasBeenChanged": "Hasło zostało zmienione", + "@passwordHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "people": "Osoby", + "@people": { + "type": "String", + "placeholders": {} + }, + "pin": "Przypnij", + "@pin": { + "type": "String", + "placeholders": {} + }, + "play": "Otwórz {fileName}", + "@play": { + "type": "String", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "pleaseEnterYourPassword": "Wprowadź swoje hasło", + "@pleaseEnterYourPassword": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourUsername": "Wpisz swoją nazwę użytkownika", + "@pleaseEnterYourUsername": { + "type": "String", + "placeholders": {} + }, + "pleaseFollowInstructionsOnWeb": "Wykonaj instrukcje na stronie internetowej i naciśnij „dalej”.", + "@pleaseFollowInstructionsOnWeb": { + "type": "String", + "placeholders": {} + }, + "publicRooms": "Publiczne pokoje", + "@publicRooms": { + "type": "String", + "placeholders": {} + }, + "pushRules": "Reguły push", + "@pushRules": { + "type": "String", + "placeholders": {} + }, + "recording": "Nagranie", + "@recording": { + "type": "String", + "placeholders": {} + }, + "redactedAnEvent": "{username} usunął/-ęła zdarzenie", + "@redactedAnEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "register": "Zarejestruj", + "@register": { + "type": "String", + "placeholders": {} + }, + "rejectedTheInvitation": "{username} odrzucił/-a zaproszenie", + "@rejectedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "rejoin": "Dołącz ponownie", + "@rejoin": { + "type": "String", + "placeholders": {} + }, + "remove": "Usuń", + "@remove": { + "type": "String", + "placeholders": {} + }, + "removeAllOtherDevices": "Usuń wszystkie inne urządzenia", + "@removeAllOtherDevices": { + "type": "String", + "placeholders": {} + }, + "removedBy": "Usunięta przez {username}", + "@removedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "removeDevice": "Usuń urządzenie", + "@removeDevice": { + "type": "String", + "placeholders": {} + }, + "unbanFromChat": "Odbanuj w czacie", + "@unbanFromChat": { + "type": "String", + "placeholders": {} + }, + "reply": "Odpowiedz", + "@reply": { + "type": "String", + "placeholders": {} + }, + "requestPermission": "Prośba o pozwolenie", + "@requestPermission": { + "type": "String", + "placeholders": {} + }, + "roomVersion": "Wersja pokoju", + "@roomVersion": { + "type": "String", + "placeholders": {} + }, + "seenByUser": "Zobaczone przez {username}", + "@seenByUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "send": "Wyślij", + "@send": { + "type": "String", + "placeholders": {} + }, + "sendAMessage": "Wyślij wiadomość", + "@sendAMessage": { + "type": "String", + "placeholders": {} + }, + "sendFile": "Wyślij plik", + "@sendFile": { + "type": "String", + "placeholders": {} + }, + "sendImage": "Wyślij obraz", + "@sendImage": { + "type": "String", + "placeholders": {} + }, + "sentAFile": "📁 {username} wysłał/-a plik", + "@sentAFile": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAnAudio": "🎤 {username} wysłał/-a plik dżwiękowy", + "@sentAnAudio": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAPicture": "🖼️ {username} wysłał/-a zdjęcie", + "@sentAPicture": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentASticker": "😊 {username} wysłał/-a naklejkę", + "@sentASticker": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAVideo": "🎥 {username} wysłał/-a film", + "@sentAVideo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "setAsCanonicalAlias": "Ustaw jako główny alias", + "@setAsCanonicalAlias": { + "type": "String", + "placeholders": {} + }, + "setInvitationLink": "Ustaw link z zaproszeniem", + "@setInvitationLink": { + "type": "String", + "placeholders": {} + }, + "setStatus": "Ustaw status", + "@setStatus": { + "type": "String", + "placeholders": {} + }, + "settings": "Ustawienia", + "@settings": { + "type": "String", + "placeholders": {} + }, + "share": "Udostępnij", + "@share": { + "type": "String", + "placeholders": {} + }, + "sharedTheLocation": "{username} udostępnił/-a swoją lokalizację", + "@sharedTheLocation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "showPassword": "Pokaż hasło", + "@showPassword": { + "type": "String", + "placeholders": {} + }, + "sourceCode": "Kod żródłowy", + "@sourceCode": { + "type": "String", + "placeholders": {} + }, + "statusExampleMessage": "Jak się masz dziś?", + "@statusExampleMessage": { + "type": "String", + "placeholders": {} + }, + "synchronizingPleaseWait": "Synchronizowanie… Proszę czekać.", + "@synchronizingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "systemTheme": "System", + "@systemTheme": { + "type": "String", + "placeholders": {} + }, + "title": "FluffyChat", + "@title": { + "description": "Title for the application", + "type": "String", + "placeholders": {} + }, + "transferFromAnotherDevice": "Przenieś z innego urządzenia", + "@transferFromAnotherDevice": { + "type": "String", + "placeholders": {} + }, + "tryToSendAgain": "Spróbuj wysłać ponownie", + "@tryToSendAgain": { + "type": "String", + "placeholders": {} + }, + "unbannedUser": "{username} odbanował/-a {targetName}", + "@unbannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "unknownDevice": "Nieznane urządzenie", + "@unknownDevice": { + "type": "String", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "Nieznany algorytm szyfrowania", + "@unknownEncryptionAlgorithm": { + "type": "String", + "placeholders": {} + }, + "unknownEvent": "Nieznane zdarzenie '{type}'", + "@unknownEvent": { + "type": "String", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "unmuteChat": "Wyłącz wyciszenie", + "@unmuteChat": { + "type": "String", + "placeholders": {} + }, + "unpin": "Odepnij", + "@unpin": { + "type": "String", + "placeholders": {} + }, + "unreadChats": "{unreadCount, plural, =1{1 unread chat} other{{unreadCount} unread chats}}", + "@unreadChats": { + "type": "String", + "placeholders": { + "unreadCount": { + "type": "int" + } + } + }, + "userAndOthersAreTyping": "{username} oraz {count} pozostałych pisze…", + "@userAndOthersAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "userAndUserAreTyping": "{username} i {username2} piszą…", + "@userAndUserAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "username2": { + "type": "String" + } + } + }, + "userIsTyping": "{username} pisze…", + "@userIsTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "userLeftTheChat": "🚪 {username} opuścił/-a czat", + "@userLeftTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "username": "Nazwa użytkownika", + "@username": { + "type": "String", + "placeholders": {} + }, + "userSentUnknownEvent": "{username} wysłał/-a zdarzenie {type}", + "@userSentUnknownEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "type": { + "type": "String" + } + } + }, + "verified": "Zweryfikowane", + "@verified": { + "type": "String", + "placeholders": {} + }, + "verify": "zweryfikuj", + "@verify": { + "type": "String", + "placeholders": {} + }, + "videoCall": "Rozmowa wideo", + "@videoCall": { + "type": "String", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "Widoczność historii czatu", + "@visibilityOfTheChatHistory": { + "type": "String", + "placeholders": {} + }, + "visibleForAllParticipants": "Widoczny dla wszystkich użytkowników", + "@visibleForAllParticipants": { + "type": "String", + "placeholders": {} + }, + "visibleForEveryone": "Widoczne dla każdego", + "@visibleForEveryone": { + "type": "String", + "placeholders": {} + }, + "voiceMessage": "Wiadomość głosowa", + "@voiceMessage": { + "type": "String", + "placeholders": {} + }, + "wallpaper": "Tapeta:", + "@wallpaper": { + "type": "String", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "Kto może dołączyć do tej grupy", + "@whoIsAllowedToJoinThisGroup": { + "type": "String", + "placeholders": {} + }, + "writeAMessage": "Napisz wiadomość…", + "@writeAMessage": { + "type": "String", + "placeholders": {} + }, + "yes": "Tak", + "@yes": { + "type": "String", + "placeholders": {} + }, + "you": "Ty", + "@you": { + "type": "String", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "Nie uczestniczysz już w tym czacie", + "@youAreNoLongerParticipatingInThisChat": { + "type": "String", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "Zostałeś/-aś zbanowany/-a w tym czacie", + "@youHaveBeenBannedFromThisChat": { + "type": "String", + "placeholders": {} + }, + "allChats": "Wszystkie", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "ignore": "Ignoruj", + "@ignore": { + "type": "String", + "placeholders": {} + }, + "noConnectionToTheServer": "Brak połączenia z serwerem", + "@noConnectionToTheServer": { + "type": "String", + "placeholders": {} + }, + "obtainingLocation": "Uzyskiwanie lokalizacji…", + "@obtainingLocation": { + "type": "String", + "placeholders": {} + }, + "addAccount": "Dodaj konto", + "@addAccount": {}, + "serverRequiresEmail": "Ten serwer wymaga potwierdzenia Twojego adresu email w celu rejestracji.", + "@serverRequiresEmail": {}, + "or": "Lub", + "@or": { + "type": "String", + "placeholders": {} + }, + "participant": "Uczestnik", + "@participant": { + "type": "String", + "placeholders": {} + }, + "passwordForgotten": "Nie pamiętam hasła", + "@passwordForgotten": { + "type": "String", + "placeholders": {} + }, + "pleaseChoose": "Proszę wybrać", + "@pleaseChoose": { + "type": "String", + "placeholders": {} + }, + "pleaseClickOnLink": "Proszę kliknij w odnośnik wysłany w wiadomości e-mail, aby kontynuować.", + "@pleaseClickOnLink": { + "type": "String", + "placeholders": {} + }, + "pleaseEnter4Digits": "Proszę podaj 4 cyfry. By wyłączyć blokadę pozostaw puste.", + "@pleaseEnter4Digits": { + "type": "String", + "placeholders": {} + }, + "removeYourAvatar": "Usuń swoje zdjęcie", + "@removeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "replaceRoomWithNewerVersion": "Zamień pokój na nowszą wersję", + "@replaceRoomWithNewerVersion": { + "type": "String", + "placeholders": {} + }, + "reportMessage": "Zgłoś wiadomość", + "@reportMessage": { + "type": "String", + "placeholders": {} + }, + "saveFile": "Zapisz plik", + "@saveFile": { + "type": "String", + "placeholders": {} + }, + "security": "Bezpieczeństwo", + "@security": { + "type": "String", + "placeholders": {} + }, + "search": "Szukaj", + "@search": { + "type": "String", + "placeholders": {} + }, + "sendAsText": "Wyślij jako tekst", + "@sendAsText": { + "type": "String" + }, + "sendAudio": "Wyślij dźwięk", + "@sendAudio": { + "type": "String", + "placeholders": {} + }, + "sendMessages": "Wyślij wiadomości", + "@sendMessages": { + "type": "String", + "placeholders": {} + }, + "sendOriginal": "Wyślij oryginał", + "@sendOriginal": { + "type": "String", + "placeholders": {} + }, + "sendSticker": "Wyślij naklejkę", + "@sendSticker": { + "type": "String", + "placeholders": {} + }, + "sendVideo": "Wyślij film", + "@sendVideo": { + "type": "String", + "placeholders": {} + }, + "startedACall": "{senderName} rozpoczął/-ęła rozmowę", + "@startedACall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "yourPublicKey": "Twój klucz publiczny", + "@yourPublicKey": { + "type": "String", + "placeholders": {} + }, + "enableMultiAccounts": "(BETA) Włącza obsługę wielu kont na tym urządzeniu", + "@enableMultiAccounts": {}, + "pickImage": "Wybierz obraz", + "@pickImage": { + "type": "String", + "placeholders": {} + }, + "passwordRecovery": "Odzyskiwanie hasła", + "@passwordRecovery": { + "type": "String", + "placeholders": {} + }, + "openInMaps": "Otwórz w mapach", + "@openInMaps": { + "type": "String", + "placeholders": {} + }, + "link": "Link", + "@link": {}, + "roomHasBeenUpgraded": "Pokój został zaktualizowany", + "@roomHasBeenUpgraded": { + "type": "String", + "placeholders": {} + }, + "repeatPassword": "Powtórz hasło", + "@repeatPassword": {}, + "all": "Wszystkie", + "@all": { + "type": "String", + "placeholders": {} + }, + "appLock": "Blokada aplikacji", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "theyMatch": "Zgadzają się", + "@theyMatch": { + "type": "String", + "placeholders": {} + }, + "sendOnEnter": "Wyślij enterem", + "@sendOnEnter": {}, + "autoplayImages": "Automatycznie odtwarzaj animowane naklejki i emotikony", + "@autoplayImages": { + "type": "String", + "placeholder": {} + }, + "cantOpenUri": "Nie można otworzyć linku {uri}", + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "configureChat": "Konfiguruj czat", + "@configureChat": { + "type": "String", + "placeholders": {} + }, + "homeserver": "Adres serwera", + "@homeserver": {}, + "locationDisabledNotice": "Usługi lokalizacji są wyłączone. Proszę włącz je aby móc udostępnić swoją lokalizację.", + "@locationDisabledNotice": { + "type": "String", + "placeholders": {} + }, + "oneClientLoggedOut": "Jedno z twoich urządzeń zostało wylogowane", + "@oneClientLoggedOut": {}, + "privacy": "Prywatność", + "@privacy": { + "type": "String", + "placeholders": {} + }, + "theyDontMatch": "Nie zgadzają się", + "@theyDontMatch": { + "type": "String", + "placeholders": {} + }, + "toggleFavorite": "Przełącz ulubione", + "@toggleFavorite": { + "type": "String", + "placeholders": {} + }, + "yourChatBackupHasBeenSetUp": "Kopia zapasowa Twojego czatu została ustawiona.", + "@yourChatBackupHasBeenSetUp": {}, + "chatHasBeenAddedToThisSpace": "Czat został dodany do tej przestrzeni", + "@chatHasBeenAddedToThisSpace": {}, + "contentHasBeenReported": "Treść została zgłoszona administratorom serwera", + "@contentHasBeenReported": { + "type": "String", + "placeholders": {} + }, + "editRoomAvatar": "Edytuj zdjęcie pokoju", + "@editRoomAvatar": { + "type": "String", + "placeholders": {} + }, + "fontSize": "Rozmiar fontu", + "@fontSize": { + "type": "String", + "placeholders": {} + }, + "groups": "Grupy", + "@groups": { + "type": "String", + "placeholders": {} + }, + "locationPermissionDeniedNotice": "Brak uprawnień. Proszę zezwól aplikacji na dostęp do lokalizacji aby móc ją udostępnić.", + "@locationPermissionDeniedNotice": { + "type": "String", + "placeholders": {} + }, + "openVideoCamera": "Nagraj film", + "@openVideoCamera": { + "type": "String", + "placeholders": {} + }, + "messages": "Wiadomości", + "@messages": { + "type": "String", + "placeholders": {} + }, + "offensive": "Obraźliwe", + "@offensive": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPin": "Podaj swój PIN", + "@pleaseEnterYourPin": { + "type": "String", + "placeholders": {} + }, + "reason": "Powód", + "@reason": { + "type": "String", + "placeholders": {} + }, + "redactMessage": "Usuń wiadomość", + "@redactMessage": { + "type": "String", + "placeholders": {} + }, + "setCustomEmotes": "Ustaw niestandardowe emotikony", + "@setCustomEmotes": { + "type": "String", + "placeholders": {} + }, + "withTheseAddressesRecoveryDescription": "Dzięki tym adresom możesz odzyskać swoje hasło.", + "@withTheseAddressesRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "spaceIsPublic": "Ustaw jako publiczną", + "@spaceIsPublic": { + "type": "String", + "placeholders": {} + }, + "shareLocation": "Udostępnij lokalizację", + "@shareLocation": { + "type": "String", + "placeholders": {} + }, + "setPermissionsLevel": "Ustaw poziom uprawnień", + "@setPermissionsLevel": { + "type": "String", + "placeholders": {} + }, + "skip": "Pomiń", + "@skip": { + "type": "String", + "placeholders": {} + }, + "spaceName": "Nazwa przestrzeni", + "@spaceName": { + "type": "String", + "placeholders": {} + }, + "toggleMuted": "Przełącz wyciszone", + "@toggleMuted": { + "type": "String", + "placeholders": {} + }, + "toggleUnread": "Oznacz przeczytane/nieprzeczytane", + "@toggleUnread": { + "type": "String", + "placeholders": {} + }, + "unavailable": "Niedostępne", + "@unavailable": { + "type": "String", + "placeholders": {} + }, + "publish": "Opublikuj", + "@publish": {}, + "scanQrCode": "Skanuj kod QR", + "@scanQrCode": {}, + "createNewSpace": "Nowa przestrzeń", + "@createNewSpace": { + "type": "String", + "placeholders": {} + }, + "offline": "Offline", + "@offline": { + "type": "String", + "placeholders": {} + }, + "addToSpace": "Dodaj do przestrzeni", + "@addToSpace": {}, + "changeYourAvatar": "Zmień swoje zdjęcie", + "@changeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "commandHint_clearcache": "Wyczyść pamięć podręczną", + "@commandHint_clearcache": { + "type": "String", + "description": "Usage hint for the command /clearcache" + }, + "commandHint_create": "Stwórz pusty czat\nUżyj --no-encryption by wyłączyć szyfrowanie", + "@commandHint_create": { + "type": "String", + "description": "Usage hint for the command /create" + }, + "commandHint_dm": "Rozpocznij czat bezpośredni\nUżyj --no-encryption by wyłączyć szyfrowanie", + "@commandHint_dm": { + "type": "String", + "description": "Usage hint for the command /dm" + }, + "editBlockedServers": "Edytuj zablokowane serwery", + "@editBlockedServers": { + "type": "String", + "placeholders": {} + }, + "enableEncryption": "Włącz szyfowanie", + "@enableEncryption": { + "type": "String", + "placeholders": {} + }, + "defaultPermissionLevel": "Domyślny poziom uprawnień dla nowych użytkowników", + "@defaultPermissionLevel": { + "type": "String", + "placeholders": {} + }, + "ok": "Ok", + "@ok": { + "type": "String", + "placeholders": {} + }, + "oopsPushError": "Ojej! Wystąpił błąd podczas ustawiania powiadomień push.", + "@oopsPushError": { + "type": "String", + "placeholders": {} + }, + "reject": "Odrzuć", + "@reject": { + "type": "String", + "placeholders": {} + }, + "online": "Online", + "@online": { + "type": "String", + "placeholders": {} + }, + "status": "Status", + "@status": { + "type": "String", + "placeholders": {} + }, + "tooManyRequestsWarning": "Zbyt wiele żądań. Proszę spróbować później.", + "@tooManyRequestsWarning": { + "type": "String", + "placeholders": {} + }, + "commandHint_discardsession": "Odrzuć sesję", + "@commandHint_discardsession": { + "type": "String", + "description": "Usage hint for the command /discardsession" + }, + "warning": "Uwaga!", + "@warning": { + "type": "String", + "placeholders": {} + }, + "messageInfo": "Informacje o wiadomości", + "@messageInfo": {}, + "time": "Czas", + "@time": {}, + "messageType": "Rodzaj wiadomości", + "@messageType": {}, + "separateChatTypes": "Oddzielenie czatów bezpośrednich i grupowych", + "@separateChatTypes": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "Oczekiwanie na zaakceptowanie prośby przez drugą osobę…", + "@waitingPartnerAcceptRequest": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerEmoji": "Oczekiwanie na zaakceptowanie emoji przez drugą osobę…", + "@waitingPartnerEmoji": { + "type": "String", + "placeholders": {} + }, + "pleaseChooseAPasscode": "Wybierz kod dostępu", + "@pleaseChooseAPasscode": { + "type": "String", + "placeholders": {} + }, + "unblockDevice": "Odblokuj urządzenie", + "@unblockDevice": { + "type": "String", + "placeholders": {} + }, + "whyDoYouWantToReportThis": "Dlaczego chcesz to zgłosić?", + "@whyDoYouWantToReportThis": { + "type": "String", + "placeholders": {} + }, + "removeFromSpace": "Usuń z przestrzeni", + "@removeFromSpace": {}, + "extremeOffensive": "Bardzo obraźliwe", + "@extremeOffensive": { + "type": "String", + "placeholders": {} + }, + "errorObtainingLocation": "Błąd w ustalaniu lokalizacji: {error}", + "@errorObtainingLocation": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "howOffensiveIsThisContent": "Jak bardzo obraźliwa jest ta treść?", + "@howOffensiveIsThisContent": { + "type": "String", + "placeholders": {} + }, + "inoffensive": "Nieobraźliwe", + "@inoffensive": { + "type": "String", + "placeholders": {} + }, + "recoveryKey": "Klucz odzyskiwania", + "@recoveryKey": {}, + "recoveryKeyLost": "Utracono klucz odzyskiwania?", + "@recoveryKeyLost": {}, + "sentCallInformations": "{senderName} wysłał/-a informacje o połączeniu", + "@sentCallInformations": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "singlesignon": "Pojedyncze logowanie", + "@singlesignon": { + "type": "String", + "placeholders": {} + }, + "startFirstChat": "Rozpocznij swój pierwszy czat", + "@startFirstChat": {}, + "verifyStart": "Rozpocznij weryfikację", + "@verifyStart": { + "type": "String", + "placeholders": {} + }, + "verifySuccess": "Pomyślnie zweryfikowano!", + "@verifySuccess": { + "type": "String", + "placeholders": {} + }, + "verifyTitle": "Weryfikowanie innego konta", + "@verifyTitle": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerNumbers": "Oczekiwanie na zaakceptowanie numerów przez drugą osobę…", + "@waitingPartnerNumbers": { + "type": "String", + "placeholders": {} + }, + "sender": "Nadawca", + "@sender": {}, + "openGallery": "Otwórz galerię", + "@openGallery": {}, + "start": "Start", + "@start": {}, + "pleaseEnterRecoveryKeyDescription": "Aby odblokować wcześniejsze wiadomości, wprowadź swój klucz odzyskiwania, który został wygenerowany w poprzedniej sesji. Twój klucz odzyskiwania NIE jest Twoim hasłem.", + "@pleaseEnterRecoveryKeyDescription": {}, + "videoWithSize": "Film ({size})", + "@videoWithSize": { + "type": "String", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "hydrateTorLong": "Czy ostatnio eksportowałeś/-aś swoją sesję na TOR? Szybko ją zaimportuj i kontynuuj rozmowy.", + "@hydrateTorLong": {}, + "dehydrateTorLong": "W przypadku użytkowników sieci TOR zaleca się eksportowanie sesji przed zamknięciem okna.", + "@dehydrateTorLong": {}, + "hydrate": "Przywracanie z pliku kopii zapasowej", + "@hydrate": {}, + "noMatrixServer": "{server1} nie jest serwerem Matriksa, czy chcesz zamiast niego użyć {server2}?", + "@noMatrixServer": { + "type": "String", + "placeholders": { + "server1": { + "type": "String" + }, + "server2": { + "type": "String" + } + } + }, + "hydrateTor": "Użytkownicy TOR: Importuj eksport sesji", + "@hydrateTor": {}, + "numUsersTyping": "{count} użytkowników pisze…", + "@numUsersTyping": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "onlineKeyBackupEnabled": "Kopia zapasowa kluczy online jest włączona", + "@onlineKeyBackupEnabled": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterRecoveryKey": "Wprowadź swój klucz odzyskiwania:", + "@pleaseEnterRecoveryKey": {}, + "submit": "Odeślij", + "@submit": { + "type": "String", + "placeholders": {} + }, + "weSentYouAnEmail": "Wysłaliśmy Ci wiadomość e-mail", + "@weSentYouAnEmail": { + "type": "String", + "placeholders": {} + }, + "unverified": "Niezweryfikowane", + "@unverified": {}, + "wipeChatBackup": "Wymazać kopię zapasową czatu, aby utworzyć nowy klucz odzyskiwania?", + "@wipeChatBackup": { + "type": "String", + "placeholders": {} + }, + "whoCanPerformWhichAction": "Kto może wykonywać jakie czynności", + "@whoCanPerformWhichAction": { + "type": "String", + "placeholders": {} + }, + "reportUser": "Zgłoś użytkownika", + "@reportUser": {}, + "dismiss": "Odrzuć", + "@dismiss": {}, + "markAsRead": "Oznacz jako przeczytane", + "@markAsRead": {}, + "passphraseOrKey": "fraza dostępu lub klucz odzyskiwania", + "@passphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "openChat": "Otwórz czat", + "@openChat": {}, + "addToSpaceDescription": "Wybierz przestrzeń, do której ten czat ma być dodany.", + "@addToSpaceDescription": {}, + "supposedMxid": "To powinno być {mxid}", + "@supposedMxid": { + "type": "String", + "placeholders": { + "mxid": { + "type": "String" + } + } + }, + "commandHint_markasdm": "Oznacz jako pokój wiadomości bezpośrednich dla podanego Matrix ID", + "@commandHint_markasdm": {}, + "confirmMatrixId": "Potwierdź swój identyfikator Matrix w celu usunięcia konta.", + "@confirmMatrixId": {}, + "commandHint_markasgroup": "Oznacz jako grupę", + "@commandHint_markasgroup": {}, + "noEmotesFound": "Nie znaleziono żadnych emotikonów. 😕", + "@noEmotesFound": { + "type": "String", + "placeholders": {} + }, + "dehydrate": "Eksportuj sesję i wymaż urządzenie", + "@dehydrate": {}, + "dehydrateWarning": "Tego nie można cofnąć. Upewnij się, że plik kopii zapasowej jest bezpiecznie przechowywany.", + "@dehydrateWarning": {}, + "dehydrateTor": "Użytkownicy TOR: Eksportuj sesję", + "@dehydrateTor": {}, + "unsupportedAndroidVersion": "Nieobsługiwana wersja systemu Android", + "@unsupportedAndroidVersion": {}, + "widgetCustom": "Własny", + "@widgetCustom": {}, + "widgetEtherpad": "Notatka", + "@widgetEtherpad": {}, + "widgetJitsi": "Jitsi Meet", + "@widgetJitsi": {}, + "pinMessage": "Przypnij do pokoju", + "@pinMessage": {}, + "confirmEventUnpin": "Czy na pewno chcesz trwale odpiąć wydarzenie?", + "@confirmEventUnpin": {}, + "youJoinedTheChat": "Dołączono do czatu", + "@youJoinedTheChat": {}, + "user": "Użytkownik", + "@user": {}, + "custom": "Własne", + "@custom": {}, + "newGroup": "Nowa grupa", + "@newGroup": {}, + "newSpace": "Nowa przestrzeń", + "@newSpace": {}, + "fileIsTooBigForServer": "Nie udało się wysłać! Ten serwer obsługuje załączniki o maksymalnej wielkości {max}.", + "@fileIsTooBigForServer": {}, + "youBannedUser": "Zbanowałeś/-aś {user}", + "@youBannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "users": "Użytkownicy", + "@users": {}, + "countFiles": "{count} plików", + "@countFiles": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "noOtherDevicesFound": "Nie znaleziono innych urządzeń", + "@noOtherDevicesFound": {}, + "widgetUrlError": "Niepoprawny URL.", + "@widgetUrlError": {}, + "widgetNameError": "Podaj nazwę wyświetlaną.", + "@widgetNameError": {}, + "encryptThisChat": "Zaszyfruj ten czat", + "@encryptThisChat": {}, + "disableEncryptionWarning": "Ze względów bezpieczeństwa nie można wyłączyć szyfrowania w czacie, w którym zostało ono wcześniej włączone.", + "@disableEncryptionWarning": {}, + "deviceKeys": "Klucze urządzenia:", + "@deviceKeys": {}, + "emailOrUsername": "Adres e-mail lub nazwa użytkownika", + "@emailOrUsername": {}, + "indexedDbErrorLong": "Przechowywanie wiadomości niestety nie jest domyślnie włączone w trybie prywatnym.\nOdwiedź\n - about:config\n - ustaw dom.indexedDB.privateBrowsing.enabled na true\nW przeciwnym razie nie jest możliwe uruchomienie FluffyChat.", + "@indexedDbErrorLong": {}, + "saveKeyManuallyDescription": "Zapisz ten klucz ręcznie, uruchamiając systemowe okno dialogowe udostępniania lub schowek.", + "@saveKeyManuallyDescription": {}, + "screenSharingTitle": "udostępnianie ekranu", + "@screenSharingTitle": {}, + "appearOnTopDetails": "Umożliwia wyświetlanie aplikacji nad innymi (nie jest to konieczne, jeśli FluffyChat jest już ustawiony jako konto do dzwonienia)", + "@appearOnTopDetails": {}, + "noKeyForThisMessage": "Może się to zdarzyć, jeśli wiadomość została wysłana przed zalogowaniem się na to konto na tym urządzeniu.\n\nMożliwe jest również, że nadawca zablokował Twoje urządzenie lub coś poszło nie tak z połączeniem internetowym.\n\nJesteś w stanie odczytać wiadomość na innej sesji? W takim razie możesz przenieść z niej wiadomość! Wejdź w Ustawienia > Urządzenia i upewnij się, że Twoje urządzenia zweryfikowały się wzajemnie. Gdy następnym razem otworzysz pokój i obie sesje będą włączone, klucze zostaną przekazane automatycznie.\n\nNie chcesz stracić kluczy podczas wylogowania lub przełączania urządzeń? Upewnij się, że w ustawieniach masz włączoną kopię zapasową czatu.", + "@noKeyForThisMessage": {}, + "sorryThatsNotPossible": "Przepraszamy... to nie jest możliwe", + "@sorryThatsNotPossible": {}, + "noBackupWarning": "Uwaga! Bez włączenia kopii zapasowej czatu, stracisz dostęp do swoich zaszyfrowanych wiadomości. Zaleca się włączenie kopii zapasowej czatu przed wylogowaniem.", + "@noBackupWarning": {}, + "commandHint_googly": "Wyślij kręcące się oczka", + "@commandHint_googly": {}, + "callingPermissions": "Uprawnienia połączeń", + "@callingPermissions": {}, + "storeInAndroidKeystore": "Przechowaj w Android KeyStore", + "@storeInAndroidKeystore": {}, + "commandHint_cuddle": "Wyślij przytulenie", + "@commandHint_cuddle": {}, + "googlyEyesContent": "{senderName} wysyła ci kręcące się oczka", + "@googlyEyesContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "cuddleContent": "{senderName} przytula cię", + "@cuddleContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "hugContent": "{senderName} uściska cię", + "@hugContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "commandHint_hug": "Wyślij uścisk", + "@commandHint_hug": {}, + "reactedWith": "{sender} zareagował/-a z {reaction}", + "@reactedWith": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "reaction": { + "type": "String" + } + } + }, + "emojis": "Emoji", + "@emojis": {}, + "placeCall": "Zadzwoń", + "@placeCall": {}, + "voiceCall": "Połączenie głosowe", + "@voiceCall": {}, + "unsupportedAndroidVersionLong": "Ta funkcja wymaga nowszej wersji systemu Android. Sprawdź aktualizacje lub wsparcie Lineage OS.", + "@unsupportedAndroidVersionLong": {}, + "videoCallsBetaWarning": "Należy pamiętać, że połączenia wideo są obecnie w fazie beta. Mogą nie działać zgodnie z oczekiwaniami lub nie działać w ogóle na wszystkich platformach.", + "@videoCallsBetaWarning": {}, + "experimentalVideoCalls": "Eksperymentalne połączenia wideo", + "@experimentalVideoCalls": {}, + "indexedDbErrorTitle": "Problemy związane z trybem prywatnym", + "@indexedDbErrorTitle": {}, + "switchToAccount": "Przełącz na konto {number}", + "@switchToAccount": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "nextAccount": "Następne konto", + "@nextAccount": {}, + "previousAccount": "Poprzednie konto", + "@previousAccount": {}, + "addWidget": "Dodaj widżet", + "@addWidget": {}, + "widgetVideo": "Film", + "@widgetVideo": {}, + "widgetName": "Nazwa", + "@widgetName": {}, + "errorAddingWidget": "Błąd podczas dodawania widżetu.", + "@errorAddingWidget": {}, + "youRejectedTheInvitation": "Odrzucono zaproszenie", + "@youRejectedTheInvitation": {}, + "youAcceptedTheInvitation": "👍 Zaakceptowałeś/-aś zaproszenie", + "@youAcceptedTheInvitation": {}, + "youHaveWithdrawnTheInvitationFor": "Wycofano zaproszenie dla {user}", + "@youHaveWithdrawnTheInvitationFor": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youInvitedBy": "📩 Zostałeś/-aś zaproszony/-a przez {user}", + "@youInvitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youInvitedUser": "📩 Zaprosiłeś/-aś {user}", + "@youInvitedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youKicked": "👞 Wyrzuciłeś/-aś {user}", + "@youKicked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youKickedAndBanned": "🙅 Wyrzuciłeś/-aś i zbanowałeś/-aś {user}", + "@youKickedAndBanned": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youUnbannedUser": "Odbanowałeś/-aś {user}", + "@youUnbannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "unlockOldMessages": "Odblokuj stare wiadomości", + "@unlockOldMessages": {}, + "storeInSecureStorageDescription": "Przechowaj klucz odzyskiwania w bezpiecznym magazynie tego urządzenia.", + "@storeInSecureStorageDescription": {}, + "storeInAppleKeyChain": "Przechowaj w pęku kluczy Apple", + "@storeInAppleKeyChain": {}, + "storeSecurlyOnThisDevice": "Przechowaj bezpiecznie na tym urządzeniu", + "@storeSecurlyOnThisDevice": {}, + "foregroundServiceRunning": "To powiadomienie pojawia się, gdy usługa w tle jest uruchomiona.", + "@foregroundServiceRunning": {}, + "screenSharingDetail": "Udostępniasz swój ekran w FluffyChat", + "@screenSharingDetail": {}, + "callingAccount": "Konto połączeń", + "@callingAccount": {}, + "callingAccountDetails": "Pozwala FluffyChat używać natywnej aplikacji do wykonywania połączeń w Androidzie.", + "@callingAccountDetails": {}, + "appearOnTop": "Wyświetlaj nad innymi", + "@appearOnTop": {}, + "otherCallingPermissions": "Mikrofon, kamera i inne uprawnienia FluffyChat", + "@otherCallingPermissions": {}, + "whyIsThisMessageEncrypted": "Dlaczego nie można odczytać tej wiadomości?", + "@whyIsThisMessageEncrypted": {}, + "enterSpace": "Wejdź do przestrzeni", + "@enterSpace": {}, + "enterRoom": "Wejdź do pokoju", + "@enterRoom": {}, + "allSpaces": "Wszystkie przestrzenie", + "@allSpaces": {}, + "numChats": "{number} czatów", + "@numChats": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "hideUnimportantStateEvents": "Ukryj nieistotne wydarzenia stanu", + "@hideUnimportantStateEvents": {}, + "doNotShowAgain": "Nie pokazuj ponownie", + "@doNotShowAgain": {}, + "wasDirectChatDisplayName": "Pusty czat (wcześniej {oldDisplayName})", + "@wasDirectChatDisplayName": { + "type": "String", + "placeholders": { + "oldDisplayName": { + "type": "String" + } + } + }, + "newSpaceDescription": "Przestrzenie pozwalają na konsolidację czatów i budowanie prywatnych lub publicznych społeczności.", + "@newSpaceDescription": {}, + "reopenChat": "Otwórz ponownie czat", + "@reopenChat": {}, + "fileHasBeenSavedAt": "Plik został zapisany w ścieżce {path}", + "@fileHasBeenSavedAt": { + "type": "String", + "placeholders": { + "path": { + "type": "String" + } + } + }, + "addToBundle": "Dodaj do pakietu", + "@addToBundle": {}, + "bundleName": "Nazwa pakietu", + "@bundleName": {}, + "editBundlesForAccount": "Edytuj pakiety dla tego konta", + "@editBundlesForAccount": {}, + "jumpToLastReadMessage": "Przejdź do ostatnio przeczytanej wiadomości", + "@jumpToLastReadMessage": {}, + "readUpToHere": "Czytaj do tego miejsca", + "@readUpToHere": {}, + "jump": "Przejdź", + "@jump": {}, + "removeFromBundle": "Usuń z tego pakietu", + "@removeFromBundle": {}, + "openLinkInBrowser": "Otwórz link w przeglądarce", + "@openLinkInBrowser": {}, + "allRooms": "Wszystkie czaty grupowe", + "@allRooms": { + "type": "String", + "placeholders": {} + }, + "reportErrorDescription": "😭 O nie! Coś poszło nie tak. Spróbuj ponownie później. Jeśli chcesz, możesz zgłosić ten błąd autorom programu.", + "@reportErrorDescription": {}, + "setColorTheme": "Ustal styl kolorów:", + "@setColorTheme": {}, + "tryAgain": "Spróbuj ponownie", + "@tryAgain": {}, + "messagesStyle": "Wiadomości:", + "@messagesStyle": {}, + "chatDescription": "Opis czatu", + "@chatDescription": {}, + "invalidServerName": "Nieprawidłowa nazwa serwera", + "@invalidServerName": {}, + "chatPermissions": "Uprawnienia w czacie", + "@chatPermissions": {}, + "signInWithPassword": "Zaloguj się z hasłem", + "@signInWithPassword": {}, + "setChatDescription": "Ustaw opis czatu", + "@setChatDescription": {}, + "importFromZipFile": "Zaimportuj z pliku .zip", + "@importFromZipFile": {}, + "redactedBy": "Usunięte przez {username}", + "@redactedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "signInWith": "Zaloguj się z {provider}", + "@signInWith": { + "type": "String", + "placeholders": { + "provider": { + "type": "String" + } + } + }, + "optionalRedactReason": "(Opcjonalnie) Powód usunięcia tej wiadomości...", + "@optionalRedactReason": {}, + "exportEmotePack": "Eksportuj pakiet emotikonów jako .zip", + "@exportEmotePack": {}, + "inviteContactToGroupQuestion": "Czy chcesz zaprosić {contact} do czatu „{groupName}”?", + "@inviteContactToGroupQuestion": {}, + "redactedByBecause": "Usunięte przez {username} z powodu „{reason}”", + "@redactedByBecause": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "reason": { + "type": "String" + } + } + }, + "redactMessageDescription": "Wiadomość zostanie usunięta u wszystkich uczestników tej rozmowy. Tego nie można cofnąć.", + "@redactMessageDescription": {}, + "invalidInput": "Nieprawidłowe dane!", + "@invalidInput": {}, + "report": "zgłoś", + "@report": {}, + "addChatDescription": "Dodaj opis tego czatu...", + "@addChatDescription": {}, + "directChat": "Czat bezpośredni", + "@directChat": {}, + "wrongPinEntered": "Wprowadzono nieprawidłowy kod PIN! Spróbuj ponownie za {seconds} sekund...", + "@wrongPinEntered": { + "type": "String", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "sendTypingNotifications": "Wysyłaj powiadomienie o pisaniu", + "@sendTypingNotifications": {}, + "inviteGroupChat": "📨 Zaproszenie do rozmowy grupowej", + "@inviteGroupChat": {}, + "invitePrivateChat": "📨 Zaproszenie do rozmowy prywatnej", + "@invitePrivateChat": {}, + "importEmojis": "Zaimportuj emotikony", + "@importEmojis": {}, + "noChatDescriptionYet": "Nie utworzono jeszcze opisu czatu.", + "@noChatDescriptionYet": {}, + "notAnImage": "To nie jest plik obrazu.", + "@notAnImage": {}, + "chatDescriptionHasBeenChanged": "Zmieniono opis czatu", + "@chatDescriptionHasBeenChanged": {}, + "profileNotFound": "Nie można odnaleźć użytkownika na serwerze. Być może wystąpił problem z połączeniem lub użytkownik nie istnieje.", + "@profileNotFound": {}, + "shareInviteLink": "Udostępnij link z zaproszeniem", + "@shareInviteLink": {}, + "emoteKeyboardNoRecents": "Tutaj pojawiają się ostatnio używane emotikony...", + "@emoteKeyboardNoRecents": { + "type": "String", + "placeholders": {} + }, + "setTheme": "Ustaw wygląd:", + "@setTheme": {}, + "replace": "Zastąp", + "@replace": {}, + "pleaseTryAgainLaterOrChooseDifferentServer": "Spróbuj ponownie później lub wybierz inny serwer.", + "@pleaseTryAgainLaterOrChooseDifferentServer": {}, + "createGroup": "Utwórz grupę", + "@createGroup": {}, + "importNow": "Zaimportuj", + "@importNow": {}, + "invite": "Zaproszenie", + "@invite": {}, + "block": "Zablokuj", + "@block": {}, + "blockedUsers": "Zablokowani użytkownicy", + "@blockedUsers": {}, + "blockUsername": "Ignoruj użytkownika", + "@blockUsername": {}, + "publicLink": "Link publiczny", + "@publicLink": {}, + "transparent": "Przezroczystość", + "@transparent": {}, + "select": "Zaznacz", + "@select": {}, + "calls": "Połączenia", + "@calls": {}, + "overview": "Podsumowanie", + "@overview": {}, + "learnMore": "Dowiedz się więcej", + "@learnMore": {}, + "groupName": "Nazwa grupy", + "@groupName": {}, + "startConversation": "Rozpocznij rozmowę", + "@startConversation": {}, + "newPassword": "Nowe hasło", + "@newPassword": {}, + "thisDevice": "To urządzenie:", + "@thisDevice": {}, + "gallery": "Galeria", + "@gallery": {}, + "files": "Pliki", + "@files": {}, + "discover": "Odkrywaj", + "@discover": {}, + "restricted": "Ograniczone", + "@restricted": {}, + "decline": "Odmów", + "@decline": {}, + "nothingFound": "Nic nie odnaleziono...", + "@nothingFound": {}, + "stickers": "Naklejki", + "@stickers": {}, + "noChatsFoundHere": "Nie jeszcze ma żadnych czatów. Wciśnij poniższy przycisk, aby rozpocząć nowy czat. ⤵️", + "@noChatsFoundHere": {}, + "hideRedactedMessagesBody": "Usunięte wiadomości nie będą widoczne w czacie.", + "@hideRedactedMessagesBody": {}, + "hideMemberChangesInPublicChats": "Ukryj zmiany członkostwa w publicznych czatach", + "@hideMemberChangesInPublicChats": {}, + "passwordRecoverySettings": "Ustawienia odzyskiwania hasła", + "@passwordRecoverySettings": {}, + "hideMemberChangesInPublicChatsBody": "W celu poprawienia czytelności, nie pokazuj w historii publicznego czatu, czy ktoś do niego dołączył lub go opuścił.", + "@hideMemberChangesInPublicChatsBody": {}, + "presenceStyle": "Obecność:", + "@presenceStyle": { + "type": "String", + "placeholders": {} + }, + "invitedBy": "Zaproszony/-a przez {user}", + "@invitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "archiveRoomDescription": "Czat zostanie przeniesiony do archiwum. Pozostali użytkownicy będą mogli zobaczyć, że opuściłeś/-aś czat.", + "@archiveRoomDescription": {}, + "yourGlobalUserIdIs": "Twój globalny identyfikator to: ", + "@yourGlobalUserIdIs": {}, + "canceledKeyVerification": "{sender} anulował/-a weryfikację kluczy", + "@canceledKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "isReadyForKeyVerification": "{sender} jest gotowy/-a do weryfikacji kluczy", + "@isReadyForKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "commandHint_ignore": "Ignoruj podany identyfikator Matrix", + "@commandHint_ignore": {}, + "commandHint_unignore": "Przestań ignorować podany identyfikator Matrix", + "@commandHint_unignore": {}, + "changeTheChatPermissions": "Zmień uprawnienia w czacie", + "@changeTheChatPermissions": {}, + "changelog": "Lista zmian", + "@changelog": {}, + "inviteOtherUsers": "Zaproś innych użytkowników do tego czatu", + "@inviteOtherUsers": {}, + "blockListDescription": "Możesz zablokować uciążliwych użytkowników. Nie będziesz widzieć ani otrzymywać wiadomości oraz zaproszeń od nich.", + "@blockListDescription": {}, + "formattedMessages": "Sformatowane wiadomości", + "@formattedMessages": {}, + "banUserDescription": "Użytkownik zostanie zbanowany w czacie i nie będzie w stanie dołączyć do czatu do momentu odbanowania.", + "@banUserDescription": {}, + "subspace": "Podprzestrzeń", + "@subspace": {}, + "sendReadReceipts": "Wysyłaj powiadomienia o przeczytaniu wiadomości", + "@sendReadReceipts": {}, + "verifyOtherDevice": "🔐 Zweryfikuj inne urządzenie", + "@verifyOtherDevice": {}, + "prepareSendingAttachment": "Przygotuj wysyłanie załącznika...", + "@prepareSendingAttachment": {}, + "acceptedKeyVerification": "{sender} zaakceptował/-a weryfikację kluczy", + "@acceptedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "databaseMigrationTitle": "Baza danych jest zoptymalizowana", + "@databaseMigrationTitle": {}, + "hasKnocked": "{user} zapukał-/a", + "@hasKnocked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "userLevel": "{level} - Użytkownik", + "@userLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "changeTheVisibilityOfChatHistory": "Zmień widoczność historii czatu", + "@changeTheVisibilityOfChatHistory": {}, + "sendImages": "Wyślij {count} obrazów", + "@sendImages": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "noPublicLinkHasBeenCreatedYet": "Nie utworzono jeszcze żadnego publicznego linku", + "@noPublicLinkHasBeenCreatedYet": {}, + "knock": "Zapukaj", + "@knock": {}, + "databaseBuildErrorBody": "Nie udało się utworzyć bazy danych SQLite. Aplikacja na razie spróbuje korzystać ze starej bazy. Prosimy zgłosić ten błąd autorom aplikacji na {url}. Treść błędu to: {error}", + "@databaseBuildErrorBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "restoreSessionBody": "Aplikacja spróbuje teraz odzyskać Twoją sesję z kopii zapasowej. Prosimy zgłosić ten błąd autorom aplikacji na {url}. Treść błędu to: {error}", + "@restoreSessionBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "startedKeyVerification": "{sender} rozpoczął/-ęła weryfikację kluczy", + "@startedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "sendTypingNotificationsDescription": "Pozostali uczestnicy czatu mogą widzieć kiedy piszesz nową wiadomość.", + "@sendTypingNotificationsDescription": {}, + "sendReadReceiptsDescription": "Pozostali uczestnicy czatu mogą widzieć zobaczyć kiedy przeczytasz wiadomość.", + "@sendReadReceiptsDescription": {}, + "noDatabaseEncryption": "Szyfrowanie bazy danych nie jest obsługiwane na tej platformie", + "@noDatabaseEncryption": {}, + "thereAreCountUsersBlocked": "Obecnie jest {count} zablokowanych użytkowników.", + "@thereAreCountUsersBlocked": { + "type": "String", + "count": {} + }, + "goToSpace": "Przejdź do przestrzeni {space}", + "@goToSpace": { + "type": "String", + "space": {} + }, + "markAsUnread": "Oznacz jako nieprzeczytane", + "@markAsUnread": {}, + "moderatorLevel": "{level} - Moderator", + "@moderatorLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "adminLevel": "{level} - Administrator", + "@adminLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "sendRoomNotifications": "Wysyłaj powiadomienia @room", + "@sendRoomNotifications": {}, + "chatPermissionsDescription": "Ustal jaki poziom uprawnień jest wymagany dla określonych czynności w czacie. Poziomy uprawnień 0, 50 i 100 zwykle dotyczą odpowiednio użytkowników, moderatorów i administratorów, ale możliwa jest dowolna gradacja.", + "@chatPermissionsDescription": {}, + "changeTheCanonicalRoomAlias": "Zmień główny publiczny czatu", + "@changeTheCanonicalRoomAlias": {}, + "changeTheDescriptionOfTheGroup": "Zmień opis czatu", + "@changeTheDescriptionOfTheGroup": {}, + "sendCanceled": "Anulowano wysyłanie", + "@sendCanceled": {}, + "homeserverDescription": "Wszystkie Twoje dane trzymane są na serwerze domowym, jak u dostawców usług e-mail. Możesz wybrać swój serwer domowy i nadal rozmawiać ze wszystkimi. Dowiedz się więcej na https://matrix.org.", + "@homeserverDescription": {}, + "doesNotSeemToBeAValidHomeserver": "Wydaje się nie być kompatybilnym serwerem domowym. Niepoprawny adres URL?", + "@doesNotSeemToBeAValidHomeserver": {}, + "calculatingFileSize": "Obliczanie rozmiaru pliku...", + "@calculatingFileSize": {}, + "sendingAttachment": "Wysyłanie załącznika...", + "@sendingAttachment": {}, + "generatingVideoThumbnail": "Generowanie podglądu filmu...", + "@generatingVideoThumbnail": {}, + "compressVideo": "Kompresowanie filmu...", + "@compressVideo": {}, + "sendingAttachmentCountOfCount": "Wysyłanie {index} z {length} części załącznika...", + "@sendingAttachmentCountOfCount": { + "type": "integer", + "placeholders": { + "index": { + "type": "int" + }, + "length": { + "type": "int" + } + } + }, + "welcomeText": "No cześć! 👋 Tutaj FluffyChat. Możesz zapisać się do dowolnego serwera domowego, kompatybilnego z https://matrix.org i rozmawiać ze wszystkimi. To duża zdecentralizowana sieć czatów!", + "@welcomeText": {}, + "blur": "Rozmazanie:", + "@blur": {}, + "opacity": "Przezroczystość:", + "@opacity": {}, + "setWallpaper": "Ustaw tapetę", + "@setWallpaper": {}, + "manageAccount": "Zarządzaj kontem", + "@manageAccount": {}, + "noContactInformationProvided": "Serwer nie dostarcza żadnych poprawnych danych kontaktowych", + "@noContactInformationProvided": {}, + "contactServerAdmin": "Skontaktuj się z administratorem serwera", + "@contactServerAdmin": {}, + "compress": "Skompresuj", + "@compress": {}, + "pleaseFillOut": "Proszę wypełnić", + "@pleaseFillOut": {}, + "invalidUrl": "Niepoprawny adres URL", + "@invalidUrl": {}, + "unableToJoinChat": "Nie udało się dołączyć do czatu. Może druga strona zakończyła już rozmowę?", + "@unableToJoinChat": {}, + "aboutHomeserver": "O {homeserver}", + "@aboutHomeserver": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "updateInstalled": "🎉 Zainstalowano aktualizację do wersji {version}!", + "@updateInstalled": { + "type": "String", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "continueText": "Kontynuuj", + "@continueText": {}, + "noticeChatBackupDeviceVerification": "Uwaga: Urządzenia dodane do kopii zapasowej czatu automatycznie zostają zweryfikowane.", + "@noticeChatBackupDeviceVerification": {}, + "serverLimitReached": "Osiągnięto limit serwera. Czekanie {seconds} sekund...", + "@serverLimitReached": { + "type": "integer", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "oneOfYourDevicesIsNotVerified": "Jedno z Twoich urządzeń nie jest zweryfikowane", + "@oneOfYourDevicesIsNotVerified": {}, + "supportPage": "Strona obsługi użytkownika", + "@supportPage": {}, + "serverInformation": "Informacje o serwerze:", + "@serverInformation": {}, + "name": "Nazwa", + "@name": {}, + "website": "Strona internetowa", + "@website": {}, + "contactServerSecurity": "Skontaktuj się z działem bezpieczeństwa serwera", + "@contactServerSecurity": {}, + "version": "Wersja", + "@version": {}, + "accessAndVisibility": "Dostęp i widoczność", + "@accessAndVisibility": {}, + "customEmojisAndStickers": "Własne emotikony i naklejki", + "@customEmojisAndStickers": {}, + "globalChatId": "Globalny identyfikator czatu", + "@globalChatId": {}, + "accessAndVisibilityDescription": "Kto może dołączyć do tego czatu i w jaki sposób można ten czat znaleźć.", + "@accessAndVisibilityDescription": {}, + "customEmojisAndStickersBody": "Dodaj lub podziel się własnymi emotikonami i naklejkami, które będą mogły być użyte w dowolnym czacie.", + "@customEmojisAndStickersBody": {}, + "hideRedactedMessages": "Nie pokazuj usuniętych wiadomości", + "@hideRedactedMessages": {}, + "hideInvalidOrUnknownMessageFormats": "Ukryj niepoprawne lub nieznane typy wiadomości", + "@hideInvalidOrUnknownMessageFormats": {}, + "notifyMeFor": "Powiadom mnie o", + "@notifyMeFor": {}, + "pushNotificationsNotAvailable": "Powiadomienia push nie są dostępne", + "@pushNotificationsNotAvailable": {}, + "noUsersFoundWithQuery": "Niestety nie udało się nikogo znaleźć poprzez \"{query}\". Proszę sprawdzić, czy w zapytaniu nie ma literówek.", + "@noUsersFoundWithQuery": { + "type": "String", + "placeholders": { + "query": { + "type": "String" + } + } + }, + "chatCanBeDiscoveredViaSearchOnServer": "Czat będzie można znaleźć, szukając na {server}", + "@chatCanBeDiscoveredViaSearchOnServer": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "publicSpaces": "Przestrzenie publiczne", + "@publicSpaces": {}, + "searchMore": "Szukaj dalej...", + "@searchMore": {}, + "formattedMessagesDescription": "Używaj Markdown do wyświetlania dodatkowego formatowania w wiadomościach, jak np. pogrubienie tekstu.", + "@formattedMessagesDescription": {}, + "verifyOtherUser": "🔐 Zweryfikuj innego użytkownika", + "@verifyOtherUser": {}, + "knockRestricted": "Pukanie jest ograniczone", + "@knockRestricted": {}, + "appLockDescription": "Zablokuj aplikację pinem kiedy nie jest używana", + "@appLockDescription": {}, + "knocking": "Pukanie", + "@knocking": {}, + "pleaseChooseAStrongPassword": "Proszę wybrać silne hasło", + "@pleaseChooseAStrongPassword": {}, + "usersMustKnock": "Użytkownicy muszą zapukać", + "@usersMustKnock": {}, + "noOneCanJoin": "Nikt nie może dołączyć", + "@noOneCanJoin": {}, + "alwaysUse24HourFormat": "false", + "@alwaysUse24HourFormat": { + "description": "Set to true to always display time of day in 24 hour format." + }, + "swipeRightToLeftToReply": "Przeciągnij w lewo, by odpowiedzieć", + "@swipeRightToLeftToReply": {}, + "presencesToggle": "Pokazuj zmiany statusów innych użytkowników", + "@presencesToggle": { + "type": "String", + "placeholders": {} + }, + "hidePresences": "Ukryć listę statusów?", + "@hidePresences": {}, + "pleaseEnterANumber": "Proszę podać liczbę większą od 0", + "@pleaseEnterANumber": {}, + "commandHint_sendraw": "Wyślij zwykły JSON", + "@commandHint_sendraw": {}, + "databaseMigrationBody": "Proszę czekać. Może to potrwać chwilę.", + "@databaseMigrationBody": {}, + "leaveEmptyToClearStatus": "Pozostaw puste, aby wyczyścić swój status.", + "@leaveEmptyToClearStatus": {}, + "sessionLostBody": "Twoja sesja została utracona. Prosimy zgłosić ten błąd autorom aplikacji na {url}. Treść błędu to: {error}", + "@sessionLostBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "forwardMessageTo": "Przekazać wiadomość do {roomName}?", + "@forwardMessageTo": { + "type": "String", + "placeholders": { + "roomName": { + "type": "String" + } + } + }, + "publicChatAddresses": "Adresy publicznych czatów", + "@publicChatAddresses": {}, + "createNewAddress": "Utwórz nowy adres", + "@createNewAddress": {}, + "userRole": "Rola użytkownika/-czki", + "@userRole": {}, + "completedKeyVerification": "{sender} zakończył/-a weryfikację kluczy", + "@completedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "italicText": "Kursywa", + "@italicText": {}, + "boldText": "Pogrubienie", + "@boldText": {}, + "strikeThrough": "Przekreślenie", + "@strikeThrough": {}, + "incomingMessages": "Wiadomości przychodzące", + "@incomingMessages": {}, + "discoverHomeservers": "Odkrywaj serwery domowe", + "@discoverHomeservers": {}, + "whatIsAHomeserver": "Czym jest serwer domowy?", + "@whatIsAHomeserver": {}, + "loginWithMatrixId": "Zaloguj się identyfikatorem Matrix", + "@loginWithMatrixId": {}, + "passwordsDoNotMatch": "Hasła się nie zgadzają", + "@passwordsDoNotMatch": {}, + "unbanUserDescription": "Użytkownik będzie w stanie dołączyć do czatu ponownie.", + "@unbanUserDescription": {}, + "roomUpgradeDescription": "Czat zostanie przeniesiony do pokoju w nowej wersji. Wszyscy użytkownicy zostaną powiadomieni o konieczności dołączenia do nowego czatu. Możesz dowiedzieć się więcej o wersjach pokojów na https://spec.matrix.org/latest/rooms/", + "@roomUpgradeDescription": {}, + "userWouldLikeToChangeTheChat": "{user} chce dołączyć do czatu.", + "@userWouldLikeToChangeTheChat": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "requestedKeyVerification": "{sender} poprosił/-a o weryfikację kluczy", + "@requestedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "changeGeneralChatSettings": "Zmień ogólne ustawienia czatu", + "@changeGeneralChatSettings": {}, + "youInvitedToBy": "Otrzymałeś/-aś link z zaproszeniem do:\n{alias}", + "@youInvitedToBy": { + "placeholders": { + "alias": { + "type": "String" + } + } + }, + "verifyOtherUserDescription": "Jeśli zweryfikujesz innego użytkownika, możesz być pewien/-na z kim naprawdę piszesz. 💪\n\nKiedy rozpoczniesz weryfikację, Ty i ta druga osoba zobaczycie okienko dialogowe. Zobaczycie w nim serię emotikonów lub numery do porównania.\n\nNajlepiej potwierdzić ich zgodność osobiście lub przez wideorozmowę. 👭", + "@verifyOtherUserDescription": {}, + "verifyOtherDeviceDescription": "Jeśli zweryfikujesz inne urządzenie, będzie mogło ono wymienić klucze z dotychczasowym, zwiększając ogólne bezpieczeństwo. 💪 Kiedy rozpoczniesz weryfikację, na obu urządzeniach wyświetli się okno dialogowe. Zobaczysz w nim serię emotikonów lub numery do porównania. Najlepiej mieć oba urządzenia pod ręką przed rozpoczęciem weryfikacji. 🤳", + "@verifyOtherDeviceDescription": {}, + "unreadChatsInApp": "{appname}: {unread} nieprzeczytanych czatów", + "@unreadChatsInApp": { + "type": "String", + "placeholders": { + "appname": { + "type": "String" + }, + "unread": { + "type": "String" + } + } + }, + "addLink": "Dodaj link", + "@addLink": {}, + "unread": "Nieprzeczytane", + "@unread": {}, + "space": "Przestrzeń", + "@space": {}, + "spaces": "Przestrzenie", + "@spaces": {}, + "countChatsAndCountParticipants": "{participants}{chats} czatów i {participants} uczestników", + "@countChatsAndCountParticipants": { + "type": "String", + "placeholders": { + "chats": { + "type": "int" + }, + "participants": { + "type": "int" + } + } + }, + "noMoreChatsFound": "Nie znaleziono więcej czatów...", + "@noMoreChatsFound": {}, + "joinedChats": "Czaty, do których dołączono", + "@joinedChats": {}, + "removeDevicesDescription": "Nastąpi wylogowanie z tego urządzenia. Nie będziesz w stanie odbierać na nim wiadomości.", + "@removeDevicesDescription": {}, + "makeAdminDescription": "Kiedy użytkownik zostanie adminem, nie będziesz móc tego cofnąć, bo nabierze takich samych uprawnień, jak Ty.", + "@makeAdminDescription": {}, + "searchChatsRooms": "Szukaj #czatów, @użytkowników...", + "@searchChatsRooms": {}, + "createGroupAndInviteUsers": "Utwórz grupę i zaproś użytkowników", + "@createGroupAndInviteUsers": {}, + "groupCanBeFoundViaSearch": "Grupa może być znaleziona poprzez wyszukiwanie", + "@groupCanBeFoundViaSearch": {}, + "wrongRecoveryKey": "Niestety to nie wygląda na poprawny klucz odzyskiwania.", + "@wrongRecoveryKey": {}, + "searchForUsers": "Szukaj @użytkowników...", + "@searchForUsers": {}, + "pleaseEnterYourCurrentPassword": "Proszę podać swoje obecne hasło", + "@pleaseEnterYourCurrentPassword": {}, + "passwordIsWrong": "Podano niepoprawne hasło", + "@passwordIsWrong": {}, + "joinSpace": "Dołącz do przestrzeni", + "@joinSpace": {}, + "addChatOrSubSpace": "Dodaj czat lub podprzestrzeń", + "@addChatOrSubSpace": {}, + "initAppError": "Wystąpił błąd podczas inicjalizacji aplikacji", + "@initAppError": {}, + "minimumPowerLevel": "{level} jest minimalnym poziomem uprawnień.", + "@minimumPowerLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "String" + } + } + }, + "searchIn": "Szukaj w czacie \"{chat}\"...", + "@searchIn": { + "type": "String", + "placeholders": { + "chat": { + "type": "String" + } + } + }, + "kickUserDescription": "Użytkownik jest wyrzucony z czatu, ale nie zbanowany. Do czatu publicznego może dołączyć ponownie.", + "@kickUserDescription": {}, + "appWantsToUseForLogin": "Użyj serwera '{server}' do zalogowania się", + "@appWantsToUseForLogin": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "appWantsToUseForLoginDescription": "Niniejszym zezwalasz aplikacji i witrynie na udostępnianie informacji o sobie.", + "@appWantsToUseForLoginDescription": {}, + "open": "Otwórz", + "@open": {}, + "contentNotificationSettings": "Ustawienia powiadomień o treści", + "@contentNotificationSettings": {}, + "generalNotificationSettings": "Ogólne ustawienia powiadomień", + "@generalNotificationSettings": {}, + "roomNotificationSettings": "Ustawienia powiadomień w pokoju", + "@roomNotificationSettings": {}, + "userSpecificNotificationSettings": "Ustawienia powiadomień dla użytkownika", + "@userSpecificNotificationSettings": {}, + "otherNotificationSettings": "Inne ustawienia powiadomień", + "@otherNotificationSettings": {}, + "notificationRuleContainsUserName": "Włącz dla wiadomości z nazwą użytkownika", + "@notificationRuleContainsUserName": {}, + "notificationRuleContainsUserNameDescription": "Włącza powiadomienia kiedy wiadomość zawiera Twoją nazwę użytkownika.", + "@notificationRuleContainsUserNameDescription": {}, + "notificationRuleMaster": "Wyłącz wszystkie powiadomienia", + "@notificationRuleMaster": {}, + "notificationRuleMasterDescription": "Zastępuje inne reguły i wyłącza wszystkie powiadomienia.", + "@notificationRuleMasterDescription": {}, + "notificationRuleSuppressNotices": "Wyłącz dla automatycznych wiadomości", + "@notificationRuleSuppressNotices": {}, + "notificationRuleSuppressNoticesDescription": "Wyłącza powiadomienia z automatycznych klientów, takich jak boty.", + "@notificationRuleSuppressNoticesDescription": {}, + "notificationRuleInviteForMe": "Włącz dla zaproszeń", + "@notificationRuleInviteForMe": {}, + "notificationRuleInviteForMeDescription": "Włącza powiadomienia o zaproszeniach do pokoju.", + "@notificationRuleInviteForMeDescription": {}, + "notificationRuleMemberEvent": "Wyłącz dla zmian członkostwa", + "@notificationRuleMemberEvent": {}, + "notificationRuleMemberEventDescription": "Wyłącza powiadomienia o zmianach członkostwa w pokoju.", + "@notificationRuleMemberEventDescription": {}, + "notificationRuleIsUserMention": "Włącz dla wzmianek", + "@notificationRuleIsUserMention": {}, + "notificationRuleIsUserMentionDescription": "Włącza powiadomienia o byciu wzmiankowanym w wiadomości.", + "@notificationRuleIsUserMentionDescription": {}, + "notificationRuleContainsDisplayName": "Włącz dla wiadomości z nazwą wyświetlaną", + "@notificationRuleContainsDisplayName": {}, + "notificationRuleContainsDisplayNameDescription": "Włącza powiadomienia o wiadomościach zawierających Twoją nazwę wyświetlaną.", + "@notificationRuleContainsDisplayNameDescription": {}, + "notificationRuleIsRoomMention": "Włącz dla wzmianek pokoju", + "@notificationRuleIsRoomMention": {}, + "notificationRuleIsRoomMentionDescription": "Włącza powiadomienia o wzmiankowaniu całego pokoju.", + "@notificationRuleIsRoomMentionDescription": {}, + "notificationRuleRoomnotif": "Włącz dla powiadomień w pokoju", + "@notificationRuleRoomnotif": {}, + "notificationRuleRoomnotifDescription": "Włącza powiadomienia o wiadomościach zawierających „@room”.", + "@notificationRuleRoomnotifDescription": {}, + "notificationRuleTombstone": "Włącz dla „nagrobków”", + "@notificationRuleTombstone": {}, + "notificationRuleTombstoneDescription": "Włącza powiadomienia o komunikatach dezaktywacji pokojów.", + "@notificationRuleTombstoneDescription": {}, + "notificationRuleReaction": "Wyłącz dla reakcji", + "@notificationRuleReaction": {}, + "notificationRuleReactionDescription": "Wyłącza powiadomienia o reakcjach.", + "@notificationRuleReactionDescription": {}, + "notificationRuleSuppressEdits": "Wyłącz dla edycji", + "@notificationRuleSuppressEdits": {}, + "notificationRuleSuppressEditsDescription": "Wyłącza powiadomienia o edycjach wiadomości.", + "@notificationRuleSuppressEditsDescription": {}, + "notificationRuleCall": "Włącz dla połączeń", + "@notificationRuleCall": {}, + "notificationRuleRoomServerAclDescription": "Wyłącza powiadomienia dla list kontroli dostępu (ACL) serwera.", + "@notificationRuleRoomServerAclDescription": {}, + "notificationRuleRoomServerAcl": "Wyłącz dla list kontroli dostępu serwera", + "@notificationRuleRoomServerAcl": {}, + "notificationRuleEncryptedRoomOneToOne": "Włącz dla szyfrowanych pokojów „jeden na jeden”", + "@notificationRuleEncryptedRoomOneToOne": {}, + "notificationRuleCallDescription": "Włącza powiadomienia o przychodzących połączeniach.", + "@notificationRuleCallDescription": {}, + "notificationRuleRoomOneToOne": "Włącz dla pokojów „jeden na jeden”", + "@notificationRuleRoomOneToOne": {}, + "notificationRuleRoomOneToOneDescription": "Włącza powiadomienia o wiadomościach w pokojach „jeden na jeden” (one-to-one).", + "@notificationRuleRoomOneToOneDescription": {}, + "notificationRuleMessage": "Włącz dla wiadomości", + "@notificationRuleMessage": {}, + "unknownPushRule": "Nieznana reguła: '{rule}'", + "@unknownPushRule": { + "type": "String", + "placeholders": { + "rule": { + "type": "String" + } + } + }, + "notificationRuleEncryptedRoomOneToOneDescription": "Włącza powiadomienia o wiadomościach w szyfrowanych pokojach „jeden na jeden” (one-to-one).", + "@notificationRuleEncryptedRoomOneToOneDescription": {}, + "notificationRuleEncrypted": "Włącz dla zaszyfrowanych pokojów", + "@notificationRuleEncrypted": {}, + "notificationRuleJitsi": "Włącz dla Jitsi", + "@notificationRuleJitsi": {}, + "notificationRuleServerAcl": "Wyłącz dla komunikatów o listach kontroli dostępu serwera", + "@notificationRuleServerAcl": {}, + "notificationRuleJitsiDescription": "Włącza powiadomienia o komunikatach widżetów Jitsi.", + "@notificationRuleJitsiDescription": {}, + "notificationRuleMessageDescription": "Włącza powiadomienia o ogólnych wiadomościach.", + "@notificationRuleMessageDescription": {}, + "notificationRuleEncryptedDescription": "Włącza powiadomienia o wiadomościach w zaszyfrowanych pokojach.", + "@notificationRuleEncryptedDescription": {}, + "notificationRuleServerAclDescription": "Wyłącza powiadomienia o komunikatach o listach kontroli dostępu (ACL) serwera.", + "@notificationRuleServerAclDescription": {}, + "newChatRequest": "📩 Nowa prośba o czat", + "@newChatRequest": {}, + "synchronizingPleaseWaitCounter": " Synchronizowanie… ({percentage}%)", + "@synchronizingPleaseWaitCounter": { + "type": "String", + "placeholders": { + "percentage": { + "type": "String" + } + } + }, + "waitingForServer": "Oczekiwanie na serwer...", + "@waitingForServer": {}, + "appIntroduction": "FluffyChat umożliwia czatowanie ze znajomymi za pośrednictwem różnych komunikatorów. Dowiedz się więcej na stronie https://matrix.org lub kliknij na *Kontynuuj*.", + "@appIntroduction": {}, + "previous": "Poprzedni", + "@previous": {}, + "otherPartyNotLoggedIn": "Druga strona nie jest obecnie zalogowana i dlatego nie może odbierać wiadomości!", + "@otherPartyNotLoggedIn": {}, + "deletePushRuleCanNotBeUndone": "Jeśli skasujesz to ustawienie powiadomień, nie będzie się dało tego cofnąć.", + "@deletePushRuleCanNotBeUndone": {}, + "more": "Więcej", + "@more": {}, + "shareKeysWith": "Udostępnij klucze...", + "@shareKeysWith": {}, + "crossVerifiedDevicesIfEnabled": "Urządzenia zweryfikowane krzyżowo, jeśli włączone", + "@crossVerifiedDevicesIfEnabled": {}, + "crossVerifiedDevices": "Urządzenia zweryfikowane krzyżowo", + "@crossVerifiedDevices": {}, + "takeAPhoto": "Zrób zdjęcie", + "@takeAPhoto": {}, + "recordAVideo": "Nagraj film", + "@recordAVideo": {}, + "optionalMessage": "(Opcjonalna) wiadomość...", + "@optionalMessage": {}, + "verifiedDevicesOnly": "Tylko zweryfikowane urządzenia", + "@verifiedDevicesOnly": {}, + "shareKeysWithDescription": "Które urządzenia powinny być zaufane, aby mogły odczytywać Twoje wiadomości w zaszyfrowanych czatach?", + "@shareKeysWithDescription": {}, + "allDevices": "Wszystkie urządzenia", + "@allDevices": {}, + "notSupportedOnThisDevice": "Niewspierane na tym urządzeniu", + "@notSupportedOnThisDevice": {}, + "commandHint_roomupgrade": "Zaktualizuj ten pokój do podanej wersji", + "@commandHint_roomupgrade": {}, + "enterNewChat": "Dołącz do nowego czatu", + "@enterNewChat": {}, + "countInvited": "{count} zaproszonych", + "@countInvited": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "sentVoiceMessage": "🎙️ {duration} - Wiadomość głosowa od: {sender}", + "@sentVoiceMessage": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "duration": { + "type": "String" + } + } + }, + "checkList": "Lista kontrolna", + "@checkList": {}, + "setCustomPermissionLevel": "Ustaw własny poziom uprawnień", + "@setCustomPermissionLevel": {}, + "setPermissionsLevelDescription": "Proszę wybrać predefiniowaną rolę poniżej, lub wprowadzić własny poziom uprawnień pomiędzy 0 a 100.", + "@setPermissionsLevelDescription": {}, + "ignoreUser": "Ignoruj użytkownika", + "@ignoreUser": {}, + "normalUser": "Zwykły użytkownik", + "@normalUser": {}, + "approve": "Zaakceptuj", + "@approve": {}, + "youHaveKnocked": "Zapukałeś/-aś", + "@youHaveKnocked": {}, + "pleaseWaitUntilInvited": "Proszę zaczekać na zaproszenie przez kogoś z pokoju.", + "@pleaseWaitUntilInvited": {}, + "commandHint_logout": "Wyloguj bieżące urządzenie", + "@commandHint_logout": {}, + "commandHint_logoutall": "Wyloguj wszystkie aktywne urządzenia", + "@commandHint_logoutall": {}, + "displayNavigationRail": "Pokazuj pasek nawigacyjny na urządzeniach mobilnych", + "@displayNavigationRail": {}, + "customReaction": "Własna reakcja", + "@customReaction": {}, + "moreEvents": "Więcej zdarzeń", + "@moreEvents": {}, + "declineInvitation": "Odrzuć zaproszenie", + "@declineInvitation": {} +} diff --git a/lib/l10n/intl_pt.arb b/lib/l10n/intl_pt.arb new file mode 100644 index 0000000..22ba7e6 --- /dev/null +++ b/lib/l10n/intl_pt.arb @@ -0,0 +1,146 @@ +{ + "@@last_modified": "2021-08-14 12:41:09.940318", + "copiedToClipboard": "Copiada para a área de transferência", + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "login": "Iniciar sessão", + "@login": { + "type": "String", + "placeholders": {} + }, + "about": "Sobre", + "@about": { + "type": "String", + "placeholders": {} + }, + "admin": "Admin", + "@admin": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "Tens a certeza?", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "notifications": "Notificações", + "@notifications": { + "type": "String", + "placeholders": {} + }, + "account": "Conta", + "@account": { + "type": "String", + "placeholders": {} + }, + "cancel": "Cancelar", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "delete": "Eliminar", + "@delete": { + "type": "String", + "placeholders": {} + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "dateWithYear": "{day}-{month}-{year}", + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "help": "Ajuda", + "@help": { + "type": "String", + "placeholders": {} + }, + "messages": "Mensagens", + "@messages": { + "type": "String", + "placeholders": {} + }, + "reason": "Razão", + "@reason": { + "type": "String", + "placeholders": {} + }, + "privacy": "Privacidade", + "@privacy": { + "type": "String", + "placeholders": {} + }, + "openCamera": "Abrir câmara", + "@openCamera": { + "type": "String", + "placeholders": {} + }, + "settings": "Configurações", + "@settings": { + "type": "String", + "placeholders": {} + }, + "logout": "Terminar sessão", + "@logout": { + "type": "String", + "placeholders": {} + }, + "search": "Pesquisar", + "@search": { + "type": "String", + "placeholders": {} + }, + "users": "Utilizadores", + "@users": {}, + "close": "Fechar", + "@close": { + "type": "String", + "placeholders": {} + }, + "dateWithoutYear": "{day}-{month}", + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "alwaysUse24HourFormat": "true", + "@alwaysUse24HourFormat": { + "description": "Set to true to always display time of day in 24 hour format." + }, + "repeatPassword": "Repita a senha", + "@repeatPassword": {}, + "notAnImage": "Não é um arquivo de imagem.", + "@notAnImage": {}, + "setCustomPermissionLevel": "Definir nível de permissão personalizado", + "@setCustomPermissionLevel": {}, + "addChatDescription": "Adicionar uma descrição de chat...", + "@addChatDescription": {} +} diff --git a/lib/l10n/intl_pt_BR.arb b/lib/l10n/intl_pt_BR.arb new file mode 100644 index 0000000..2a37ab5 --- /dev/null +++ b/lib/l10n/intl_pt_BR.arb @@ -0,0 +1,3388 @@ +{ + "@@last_modified": "2021-08-14 12:41:09.925971", + "about": "Sobre", + "@about": { + "type": "String", + "placeholders": {} + }, + "accept": "Aceitar", + "@accept": { + "type": "String", + "placeholders": {} + }, + "acceptedTheInvitation": "👍 {username} aceitou o convite", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "account": "Conta", + "@account": { + "type": "String", + "placeholders": {} + }, + "activatedEndToEndEncryption": "🔐 {username} ativou a criptografia de ponta-a-ponta", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "addEmail": "Adicionar e-mail", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "admin": "Admin", + "@admin": { + "type": "String", + "placeholders": {} + }, + "alias": "cognome", + "@alias": { + "type": "String", + "placeholders": {} + }, + "all": "Tudo", + "@all": { + "type": "String", + "placeholders": {} + }, + "allChats": "Todas as conversas", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "answeredTheCall": "{senderName} atendeu à chamada", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "anyoneCanJoin": "Qualquer pessoa pode entrar", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "appLock": "Bloqueio do app", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "archive": "Arquivo", + "@archive": { + "type": "String", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "Visitantes podem entrar", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "Tem certeza?", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "areYouSureYouWantToLogout": "Tem certeza que deseja se desconectar?", + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "askSSSSSign": "Para poder validar a outra pessoa, por favor, digite sua frase secreta ou chave de recuperação.", + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "askVerificationRequest": "Aceitar esta solicitação de verificação de {username}?", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "autoplayImages": "Reproduzir automaticamente figurinhas animadas e emojis", + "@autoplayImages": { + "type": "String", + "placeholder": {} + }, + "badServerLoginTypesException": "O servidor suporta os tipos de entrada/login:\n{serverVersions}\nMas este app suporta apenas:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "badServerVersionsException": "O servidor suporta as versões de especificação:\n{serverVersions}\nMas este app suporta apenas {supportedVersions}", + "@badServerVersionsException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "banFromChat": "Banir da conversa", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "banned": "Banidos", + "@banned": { + "type": "String", + "placeholders": {} + }, + "bannedUser": "{username} baniu {targetName}", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "blockDevice": "Bloquear dispositivo", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "blocked": "Bloqueado", + "@blocked": { + "type": "String", + "placeholders": {} + }, + "botMessages": "Mensagens de bots", + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "cancel": "Cancelar", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "cantOpenUri": "Não foi possível abrir a URI {uri}", + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "changeDeviceName": "Alterar o nome do dispositivo", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "changedTheChatAvatar": "{username} alterou o avatar da conversa", + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheChatDescriptionTo": "{username} alterou a descrição da conversa para: '{description}'", + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "changedTheChatNameTo": "{username} alterou o nome da conversa para: '{chatname}'", + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "changedTheChatPermissions": "{username} alterou as permissões na conversa", + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheDisplaynameTo": "{username} mudou o seu nome de exibição para: '{displayname}'", + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "changedTheGuestAccessRules": "{username} alterou as regras de acesso dos visitantes", + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheGuestAccessRulesTo": "{username} alterou as regras de acesso dos visitantes para: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheHistoryVisibility": "{username} alterou a visibilidade do histórico", + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheHistoryVisibilityTo": "{username} alterou a visibilidade do histórico para: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheJoinRules": "{username} alterou as regras de entrada", + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheJoinRulesTo": "{username} alterou as regras de entrada para: {joinRules}", + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "changedTheProfileAvatar": "{username} alterou seu avatar", + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomAliases": "{username} alterou os cognomes da sala", + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomInvitationLink": "{username} alterou o link de convite", + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changePassword": "Alterar a senha", + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "changeTheHomeserver": "Alterar o servidor", + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "changeTheme": "Alterar o tema", + "@changeTheme": { + "type": "String", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "Alterar o nome do grupo", + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "changeYourAvatar": "Alterar seu avatar", + "@changeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "channelCorruptedDecryptError": "A criptografia foi corrompida", + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "chat": "Conversar", + "@chat": { + "type": "String", + "placeholders": {} + }, + "chatBackup": "Backup de conversas", + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "chatBackupDescription": "Suas mensagens antigas são protegidas com sua chave de recuperação. Por favor, evite perdê-la.", + "@chatBackupDescription": { + "type": "String", + "placeholders": {} + }, + "chatDetails": "Detalhes da conversa", + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "chats": "Conversas", + "@chats": { + "type": "String", + "placeholders": {} + }, + "chooseAStrongPassword": "Escolha uma senha forte", + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "clearArchive": "Limpar arquivo", + "@clearArchive": {}, + "close": "Fechar", + "@close": { + "type": "String", + "placeholders": {} + }, + "commandHint_ban": "Banir o usuário especificado desta sala", + "@commandHint_ban": { + "type": "String", + "description": "Usage hint for the command /ban" + }, + "commandHint_html": "Enviar mensagem formatada em HTML", + "@commandHint_html": { + "type": "String", + "description": "Usage hint for the command /html" + }, + "commandHint_invite": "Convidar o usuário especificado para esta sala", + "@commandHint_invite": { + "type": "String", + "description": "Usage hint for the command /invite" + }, + "commandHint_join": "Entrar na sala especificada", + "@commandHint_join": { + "type": "String", + "description": "Usage hint for the command /join" + }, + "commandHint_kick": "Remover o usuário especificado da sala", + "@commandHint_kick": { + "type": "String", + "description": "Usage hint for the command /kick" + }, + "commandHint_leave": "Sair desta sala", + "@commandHint_leave": { + "type": "String", + "description": "Usage hint for the command /leave" + }, + "commandHint_me": "Descrever você mesmo", + "@commandHint_me": { + "type": "String", + "description": "Usage hint for the command /me" + }, + "commandHint_myroomavatar": "Definir sua imagem para esta sala (via mxc-uri)", + "@commandHint_myroomavatar": { + "type": "String", + "description": "Usage hint for the command /myroomavatar" + }, + "commandHint_myroomnick": "Definir seu nome de exibição para esta sala", + "@commandHint_myroomnick": { + "type": "String", + "description": "Usage hint for the command /myroomnick" + }, + "commandHint_op": "Determinar o nível de poderes do usuário especificado (padrão: 50)", + "@commandHint_op": { + "type": "String", + "description": "Usage hint for the command /op" + }, + "commandHint_plain": "Enviar mensagem sem formatação", + "@commandHint_plain": { + "type": "String", + "description": "Usage hint for the command /plain" + }, + "commandHint_react": "Enviar uma resposta como reação", + "@commandHint_react": { + "type": "String", + "description": "Usage hint for the command /react" + }, + "commandHint_send": "Enviar mensagem", + "@commandHint_send": { + "type": "String", + "description": "Usage hint for the command /send" + }, + "commandHint_unban": "Desbanir o usuário especificado desta sala", + "@commandHint_unban": { + "type": "String", + "description": "Usage hint for the command /unban" + }, + "commandInvalid": "Comando inválido", + "@commandInvalid": { + "type": "String" + }, + "commandMissing": "{command} não é um comando.", + "@commandMissing": { + "type": "String", + "placeholders": { + "command": { + "type": "String" + } + }, + "description": "State that {command} is not a valid /command." + }, + "compareEmojiMatch": "Por favor compare os emojis", + "@compareEmojiMatch": { + "type": "String", + "placeholders": {} + }, + "compareNumbersMatch": "Por favor compare os números", + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "configureChat": "Configurar conversa", + "@configureChat": { + "type": "String", + "placeholders": {} + }, + "confirm": "Confirmar", + "@confirm": { + "type": "String", + "placeholders": {} + }, + "connect": "Conectar", + "@connect": { + "type": "String", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "O contato foi convidado ao grupo", + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "containsDisplayName": "Contém nome de exibição", + "@containsDisplayName": { + "type": "String", + "placeholders": {} + }, + "containsUserName": "Contém nome de usuário", + "@containsUserName": { + "type": "String", + "placeholders": {} + }, + "contentHasBeenReported": "O conteúdo foi denunciado para os administradores do servidor", + "@contentHasBeenReported": { + "type": "String", + "placeholders": {} + }, + "copiedToClipboard": "Copiado para a área de transferência", + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "copy": "Copiar", + "@copy": { + "type": "String", + "placeholders": {} + }, + "copyToClipboard": "Copiar para a área de transferência", + "@copyToClipboard": { + "type": "String", + "placeholders": {} + }, + "couldNotDecryptMessage": "Não foi possível descriptografar a mensagem: {error}", + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "countParticipants": "{count} participantes", + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "create": "Criar", + "@create": { + "type": "String", + "placeholders": {} + }, + "createdTheChat": "💬 {username} criou a conversa", + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "createNewSpace": "Novo espaço", + "@createNewSpace": { + "type": "String", + "placeholders": {} + }, + "currentlyActive": "Ativo", + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "darkTheme": "Escuro", + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "dateAndTimeOfDay": "{date} às {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "dateWithoutYear": "{day}/{month}", + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "dateWithYear": "{day}/{month}/{year}", + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "deactivateAccountWarning": "Isto desativará a sua conta. Isto é irreversível! Tem certeza?", + "@deactivateAccountWarning": { + "type": "String", + "placeholders": {} + }, + "defaultPermissionLevel": "Nível de permissão padrão para usuários novos", + "@defaultPermissionLevel": { + "type": "String", + "placeholders": {} + }, + "delete": "Apagar", + "@delete": { + "type": "String", + "placeholders": {} + }, + "deleteAccount": "Apagar conta", + "@deleteAccount": { + "type": "String", + "placeholders": {} + }, + "deleteMessage": "Apagar mensagem", + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "device": "Dispositivo", + "@device": { + "type": "String", + "placeholders": {} + }, + "deviceId": "ID do dispositivo", + "@deviceId": { + "type": "String", + "placeholders": {} + }, + "devices": "Dispositivos", + "@devices": { + "type": "String", + "placeholders": {} + }, + "directChats": "Conversas diretas", + "@directChats": { + "type": "String", + "placeholders": {} + }, + "displaynameHasBeenChanged": "O nome de exibição foi alterado", + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "downloadFile": "Baixar arquivo", + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "edit": "Editar", + "@edit": { + "type": "String", + "placeholders": {} + }, + "editBlockedServers": "Editar servidores bloqueados", + "@editBlockedServers": { + "type": "String", + "placeholders": {} + }, + "editDisplayname": "Editar nome de exibição", + "@editDisplayname": { + "type": "String", + "placeholders": {} + }, + "editRoomAliases": "Editar cognomes da sala", + "@editRoomAliases": { + "type": "String", + "placeholders": {} + }, + "editRoomAvatar": "Editar o avatar da sala", + "@editRoomAvatar": { + "type": "String", + "placeholders": {} + }, + "emoteExists": "Emoji já existe!", + "@emoteExists": { + "type": "String", + "placeholders": {} + }, + "emoteInvalid": "Código emoji inválido!", + "@emoteInvalid": { + "type": "String", + "placeholders": {} + }, + "emotePacks": "Pacote de emoji para a sala", + "@emotePacks": { + "type": "String", + "placeholders": {} + }, + "emoteSettings": "Configuração dos Emoji", + "@emoteSettings": { + "type": "String", + "placeholders": {} + }, + "emoteShortcode": "Código Emoji", + "@emoteShortcode": { + "type": "String", + "placeholders": {} + }, + "emoteWarnNeedToPick": "Você tem que escolher um código emoji e uma imagem!", + "@emoteWarnNeedToPick": { + "type": "String", + "placeholders": {} + }, + "emptyChat": "Conversa vazia", + "@emptyChat": { + "type": "String", + "placeholders": {} + }, + "enableEmotesGlobally": "Habilitar globalmente o pacote de emoji", + "@enableEmotesGlobally": { + "type": "String", + "placeholders": {} + }, + "enableEncryption": "Ativar criptografia", + "@enableEncryption": { + "type": "String", + "placeholders": {} + }, + "enableEncryptionWarning": "Você não poderá desativar a criptografia posteriormente. Tem certeza?", + "@enableEncryptionWarning": { + "type": "String", + "placeholders": {} + }, + "encrypted": "Criptografado", + "@encrypted": { + "type": "String", + "placeholders": {} + }, + "encryption": "Criptografia", + "@encryption": { + "type": "String", + "placeholders": {} + }, + "encryptionNotEnabled": "A criptografia não está ativada", + "@encryptionNotEnabled": { + "type": "String", + "placeholders": {} + }, + "endedTheCall": "{senderName} finalizou a chamada", + "@endedTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "enterAnEmailAddress": "Digite um endereço de e-mail", + "@enterAnEmailAddress": { + "type": "String", + "placeholders": {} + }, + "enterYourHomeserver": "Digite o seu servidor", + "@enterYourHomeserver": { + "type": "String", + "placeholders": {} + }, + "errorObtainingLocation": "Erro ao obter localização: {error}", + "@errorObtainingLocation": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "everythingReady": "Tudo pronto!", + "@everythingReady": { + "type": "String", + "placeholders": {} + }, + "extremeOffensive": "Extremamente ofensivo", + "@extremeOffensive": { + "type": "String", + "placeholders": {} + }, + "fileName": "Nome do arquivo", + "@fileName": { + "type": "String", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "String", + "placeholders": {} + }, + "fontSize": "Tamanho da fonte", + "@fontSize": { + "type": "String", + "placeholders": {} + }, + "forward": "Encaminhar", + "@forward": { + "type": "String", + "placeholders": {} + }, + "fromJoining": "Desde que entrou", + "@fromJoining": { + "type": "String", + "placeholders": {} + }, + "fromTheInvitation": "Desde o convite", + "@fromTheInvitation": { + "type": "String", + "placeholders": {} + }, + "goToTheNewRoom": "Ir para a sala nova", + "@goToTheNewRoom": { + "type": "String", + "placeholders": {} + }, + "group": "Grupo", + "@group": { + "type": "String", + "placeholders": {} + }, + "groupIsPublic": "O grupo é público", + "@groupIsPublic": { + "type": "String", + "placeholders": {} + }, + "groups": "Grupos", + "@groups": { + "type": "String", + "placeholders": {} + }, + "groupWith": "Grupo com {displayname}", + "@groupWith": { + "type": "String", + "placeholders": { + "displayname": { + "type": "String" + } + } + }, + "guestsAreForbidden": "Visitantes são proibidos", + "@guestsAreForbidden": { + "type": "String", + "placeholders": {} + }, + "guestsCanJoin": "Visitantes podem entrar", + "@guestsCanJoin": { + "type": "String", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "{username} revogou o convite para {targetName}", + "@hasWithdrawnTheInvitationFor": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "help": "Ajuda", + "@help": { + "type": "String", + "placeholders": {} + }, + "hideRedactedEvents": "Ocultar eventos removidos", + "@hideRedactedEvents": { + "type": "String", + "placeholders": {} + }, + "hideUnknownEvents": "Ocultar eventos desconhecidos", + "@hideUnknownEvents": { + "type": "String", + "placeholders": {} + }, + "howOffensiveIsThisContent": "O quão ofensivo é este conteúdo?", + "@howOffensiveIsThisContent": { + "type": "String", + "placeholders": {} + }, + "id": "ID", + "@id": { + "type": "String", + "placeholders": {} + }, + "identity": "Identidade", + "@identity": { + "type": "String", + "placeholders": {} + }, + "ignore": "Ignorar", + "@ignore": { + "type": "String", + "placeholders": {} + }, + "ignoredUsers": "Usuários ignorados", + "@ignoredUsers": { + "type": "String", + "placeholders": {} + }, + "iHaveClickedOnLink": "Eu cliquei no link", + "@iHaveClickedOnLink": { + "type": "String", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "Frase secreta ou chave de recuperação incorreta", + "@incorrectPassphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "inoffensive": "Inofensivo", + "@inoffensive": { + "type": "String", + "placeholders": {} + }, + "inviteContact": "Convidar contato", + "@inviteContact": { + "type": "String", + "placeholders": {} + }, + "inviteContactToGroup": "Convidar contato para {groupName}", + "@inviteContactToGroup": { + "type": "String", + "placeholders": { + "groupName": { + "type": "String" + } + } + }, + "invited": "Convidado", + "@invited": { + "type": "String", + "placeholders": {} + }, + "invitedUser": "📩 {username} convidou {targetName}", + "@invitedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "invitedUsersOnly": "Apenas usuários convidados", + "@invitedUsersOnly": { + "type": "String", + "placeholders": {} + }, + "inviteForMe": "Convite para mim", + "@inviteForMe": { + "type": "String", + "placeholders": {} + }, + "inviteText": "{username} convidou você para o FluffyChat.\n1. Visite fluffychat.im e instale o aplicativo\n2. Entre ou crie uma conta\n3. Abra o link do convite:\n{link}", + "@inviteText": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "link": { + "type": "String" + } + } + }, + "isTyping": "está digitando…", + "@isTyping": { + "type": "String", + "placeholders": {} + }, + "joinedTheChat": "👋 {username} entrou na conversa", + "@joinedTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "joinRoom": "Entrar na sala", + "@joinRoom": { + "type": "String", + "placeholders": {} + }, + "kicked": "👞 {username} expulsou {targetName}", + "@kicked": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickedAndBanned": "🙅 {username} expulsou e baniu {targetName}", + "@kickedAndBanned": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickFromChat": "Expulsar da conversa", + "@kickFromChat": { + "type": "String", + "placeholders": {} + }, + "lastActiveAgo": "Última vez ativo: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "String", + "placeholders": { + "localizedTimeShort": { + "type": "String" + } + } + }, + "leave": "Sair", + "@leave": { + "type": "String", + "placeholders": {} + }, + "leftTheChat": "Saiu da conversa", + "@leftTheChat": { + "type": "String", + "placeholders": {} + }, + "license": "Licença", + "@license": { + "type": "String", + "placeholders": {} + }, + "lightTheme": "Claro", + "@lightTheme": { + "type": "String", + "placeholders": {} + }, + "loadCountMoreParticipants": "Carregar mais {count} participantes", + "@loadCountMoreParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "loadingPleaseWait": "Carregando... Aguarde.", + "@loadingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "loadMore": "Carregar mais…", + "@loadMore": { + "type": "String", + "placeholders": {} + }, + "locationDisabledNotice": "Os serviços de localização estão desativados. Por favor, ative-os para compartilhar sua localização.", + "@locationDisabledNotice": { + "type": "String", + "placeholders": {} + }, + "locationPermissionDeniedNotice": "Permissão de localização bloqueada. Conceda as permissões para poder compartilhar sua localização.", + "@locationPermissionDeniedNotice": { + "type": "String", + "placeholders": {} + }, + "login": "Conectar-se", + "@login": { + "type": "String", + "placeholders": {} + }, + "logInTo": "Conectar com {homeserver}", + "@logInTo": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "logout": "Desconectar-se", + "@logout": { + "type": "String", + "placeholders": {} + }, + "memberChanges": "Alterações de membros", + "@memberChanges": { + "type": "String", + "placeholders": {} + }, + "mention": "Mencionar", + "@mention": { + "type": "String", + "placeholders": {} + }, + "messages": "Mensagens", + "@messages": { + "type": "String", + "placeholders": {} + }, + "moderator": "Moderador", + "@moderator": { + "type": "String", + "placeholders": {} + }, + "muteChat": "Silenciar conversa", + "@muteChat": { + "type": "String", + "placeholders": {} + }, + "needPantalaimonWarning": "Por favor, observe que, por enquanto, você precisa do Pantalaimon para usar criptografia de ponta-a-ponta.", + "@needPantalaimonWarning": { + "type": "String", + "placeholders": {} + }, + "newChat": "Nova conversa", + "@newChat": { + "type": "String", + "placeholders": {} + }, + "newMessageInFluffyChat": "💬 Nova mensagem no FluffyChat", + "@newMessageInFluffyChat": { + "type": "String", + "placeholders": {} + }, + "newVerificationRequest": "Nova solicitação de verificação!", + "@newVerificationRequest": { + "type": "String", + "placeholders": {} + }, + "next": "Avançar", + "@next": { + "type": "String", + "placeholders": {} + }, + "no": "Não", + "@no": { + "type": "String", + "placeholders": {} + }, + "noConnectionToTheServer": "Sem conexão com o servidor", + "@noConnectionToTheServer": { + "type": "String", + "placeholders": {} + }, + "noEmotesFound": "Nenhum emoji encontrado. 😕", + "@noEmotesFound": { + "type": "String", + "placeholders": {} + }, + "noEncryptionForPublicRooms": "Você só poderá ativar a criptografia quando a sala não for mais publicamente acessível.", + "@noEncryptionForPublicRooms": { + "type": "String", + "placeholders": {} + }, + "noGoogleServicesWarning": "O Firebase Cloud Messaging não parece estar disponível no seu dispositivo. Para receber notificações push, recomendados que você instwl3 o ntfy. Com o ntfy outro provedor do UnifiedPush, você pode receber notificações push de um modo seguro em relação aos dados. Você pode baixar o ntfy da Play Store ou do F-Droid.", + "@noGoogleServicesWarning": { + "type": "String", + "placeholders": {} + }, + "noMatrixServer": "{server1} não é um servidor matrix, usar {server2}?", + "@noMatrixServer": { + "type": "String", + "placeholders": { + "server1": { + "type": "String" + }, + "server2": { + "type": "String" + } + } + }, + "none": "Nenhum", + "@none": { + "type": "String", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "Você ainda não adicionou uma forma de recuperar sua senha.", + "@noPasswordRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "noPermission": "Sem permissão", + "@noPermission": { + "type": "String", + "placeholders": {} + }, + "noRoomsFound": "Nenhuma sala encontrada…", + "@noRoomsFound": { + "type": "String", + "placeholders": {} + }, + "notifications": "Notificações", + "@notifications": { + "type": "String", + "placeholders": {} + }, + "notificationsEnabledForThisAccount": "Notificações ativadas para esta conta", + "@notificationsEnabledForThisAccount": { + "type": "String", + "placeholders": {} + }, + "numUsersTyping": "{count} usuários estão digitando…", + "@numUsersTyping": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "obtainingLocation": "Obtendo localização…", + "@obtainingLocation": { + "type": "String", + "placeholders": {} + }, + "offensive": "Ofensivo", + "@offensive": { + "type": "String", + "placeholders": {} + }, + "offline": "Desconectado", + "@offline": { + "type": "String", + "placeholders": {} + }, + "ok": "Ok", + "@ok": { + "type": "String", + "placeholders": {} + }, + "online": "Disponível", + "@online": { + "type": "String", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "O backup de chaves on-line está ativado", + "@onlineKeyBackupEnabled": { + "type": "String", + "placeholders": {} + }, + "oopsPushError": "Opa! Infelizmente, um erro ocorreu ao configurar as notificações push.", + "@oopsPushError": { + "type": "String", + "placeholders": {} + }, + "oopsSomethingWentWrong": "Opa, algo deu errado…", + "@oopsSomethingWentWrong": { + "type": "String", + "placeholders": {} + }, + "openAppToReadMessages": "Abra o app para ler as mensagens", + "@openAppToReadMessages": { + "type": "String", + "placeholders": {} + }, + "openCamera": "Abrir câmera", + "@openCamera": { + "type": "String", + "placeholders": {} + }, + "openInMaps": "Abrir no mapa", + "@openInMaps": { + "type": "String", + "placeholders": {} + }, + "or": "Ou", + "@or": { + "type": "String", + "placeholders": {} + }, + "participant": "Participante", + "@participant": { + "type": "String", + "placeholders": {} + }, + "passphraseOrKey": "frase secreta ou chave de recuperação", + "@passphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "password": "Senha", + "@password": { + "type": "String", + "placeholders": {} + }, + "passwordForgotten": "Esqueci a senha", + "@passwordForgotten": { + "type": "String", + "placeholders": {} + }, + "passwordHasBeenChanged": "Senha foi alterada", + "@passwordHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "passwordRecovery": "Recuperação de senha", + "@passwordRecovery": { + "type": "String", + "placeholders": {} + }, + "people": "Pessoas", + "@people": { + "type": "String", + "placeholders": {} + }, + "pickImage": "Selecione uma imagem", + "@pickImage": { + "type": "String", + "placeholders": {} + }, + "pin": "Fixar", + "@pin": { + "type": "String", + "placeholders": {} + }, + "play": "Tocar {fileName}", + "@play": { + "type": "String", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "pleaseChoose": "Por favor, selecione", + "@pleaseChoose": { + "type": "String", + "placeholders": {} + }, + "pleaseChooseAPasscode": "Por favor, selecione um código", + "@pleaseChooseAPasscode": { + "type": "String", + "placeholders": {} + }, + "pleaseClickOnLink": "Por favor, clique no link do e-mail para prosseguir.", + "@pleaseClickOnLink": { + "type": "String", + "placeholders": {} + }, + "pleaseEnter4Digits": "Por favor, digite 4 dígitos ou deixe em branco para desativar o bloqueio do app.", + "@pleaseEnter4Digits": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPassword": "Por favor, digite sua senha", + "@pleaseEnterYourPassword": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPin": "Por favor, digite seu PIN", + "@pleaseEnterYourPin": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourUsername": "Por favor, digite seu nome de usuário", + "@pleaseEnterYourUsername": { + "type": "String", + "placeholders": {} + }, + "pleaseFollowInstructionsOnWeb": "Por favor, siga as instruções no site e toque em avançar.", + "@pleaseFollowInstructionsOnWeb": { + "type": "String", + "placeholders": {} + }, + "privacy": "Privacidade", + "@privacy": { + "type": "String", + "placeholders": {} + }, + "publicRooms": "Salas públicas", + "@publicRooms": { + "type": "String", + "placeholders": {} + }, + "pushRules": "Regras de push", + "@pushRules": { + "type": "String", + "placeholders": {} + }, + "reason": "Motivo", + "@reason": { + "type": "String", + "placeholders": {} + }, + "recording": "Gravação", + "@recording": { + "type": "String", + "placeholders": {} + }, + "redactedAnEvent": "{username} apagou um evento", + "@redactedAnEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "redactMessage": "Apagar mensagem", + "@redactMessage": { + "type": "String", + "placeholders": {} + }, + "register": "Cadastrar-se", + "@register": { + "type": "String", + "placeholders": {} + }, + "reject": "Recusar", + "@reject": { + "type": "String", + "placeholders": {} + }, + "rejectedTheInvitation": "{username} recusou o convite", + "@rejectedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "rejoin": "Entrar novamente", + "@rejoin": { + "type": "String", + "placeholders": {} + }, + "remove": "Remover", + "@remove": { + "type": "String", + "placeholders": {} + }, + "removeAllOtherDevices": "Remover todos os outros dispositivos", + "@removeAllOtherDevices": { + "type": "String", + "placeholders": {} + }, + "removedBy": "Removido por {username}", + "@removedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "removeDevice": "Remover dispositivo", + "@removeDevice": { + "type": "String", + "placeholders": {} + }, + "unbanFromChat": "Desbanir da conversa", + "@unbanFromChat": { + "type": "String", + "placeholders": {} + }, + "removeYourAvatar": "Remover seu avatar", + "@removeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "replaceRoomWithNewerVersion": "Substituir sala por uma nova versão", + "@replaceRoomWithNewerVersion": { + "type": "String", + "placeholders": {} + }, + "reply": "Responder", + "@reply": { + "type": "String", + "placeholders": {} + }, + "reportMessage": "Denunciar mensagem", + "@reportMessage": { + "type": "String", + "placeholders": {} + }, + "requestPermission": "Solicitar permissão", + "@requestPermission": { + "type": "String", + "placeholders": {} + }, + "roomHasBeenUpgraded": "A sala foi atualizada", + "@roomHasBeenUpgraded": { + "type": "String", + "placeholders": {} + }, + "roomVersion": "Versão da sala", + "@roomVersion": { + "type": "String", + "placeholders": {} + }, + "saveFile": "Salvar arquivo", + "@saveFile": { + "type": "String", + "placeholders": {} + }, + "search": "Pesquisar", + "@search": { + "type": "String", + "placeholders": {} + }, + "security": "Segurança", + "@security": { + "type": "String", + "placeholders": {} + }, + "seenByUser": "Visto por {username}", + "@seenByUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "send": "Enviar", + "@send": { + "type": "String", + "placeholders": {} + }, + "sendAMessage": "Enviar uma mensagem", + "@sendAMessage": { + "type": "String", + "placeholders": {} + }, + "sendAsText": "Enviar como texto", + "@sendAsText": { + "type": "String" + }, + "sendAudio": "Enviar áudio", + "@sendAudio": { + "type": "String", + "placeholders": {} + }, + "sendFile": "Enviar arquivo", + "@sendFile": { + "type": "String", + "placeholders": {} + }, + "sendImage": "Enviar imagem", + "@sendImage": { + "type": "String", + "placeholders": {} + }, + "sendMessages": "Enviar mensagens", + "@sendMessages": { + "type": "String", + "placeholders": {} + }, + "sendOriginal": "Enviar original", + "@sendOriginal": { + "type": "String", + "placeholders": {} + }, + "sendSticker": "Enviar figurinha", + "@sendSticker": { + "type": "String", + "placeholders": {} + }, + "sendVideo": "Enviar vídeo", + "@sendVideo": { + "type": "String", + "placeholders": {} + }, + "sentAFile": "📁 {username} enviou um arquivo", + "@sentAFile": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAnAudio": "🎤 {username} enviou um áudio", + "@sentAnAudio": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAPicture": "🖼️ {username} enviou uma imagem", + "@sentAPicture": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentASticker": "😊 {username} enviou uma figurinha", + "@sentASticker": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAVideo": "🎥 {username} enviou um vídeo", + "@sentAVideo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentCallInformations": "{senderName} enviou informações de chamada", + "@sentCallInformations": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "setAsCanonicalAlias": "Definir como cognome principal", + "@setAsCanonicalAlias": { + "type": "String", + "placeholders": {} + }, + "setCustomEmotes": "Implantar emojis personalizados", + "@setCustomEmotes": { + "type": "String", + "placeholders": {} + }, + "setInvitationLink": "Enviar link de convite", + "@setInvitationLink": { + "type": "String", + "placeholders": {} + }, + "setPermissionsLevel": "Definir níveis de permissão", + "@setPermissionsLevel": { + "type": "String", + "placeholders": {} + }, + "setStatus": "Alterar estado", + "@setStatus": { + "type": "String", + "placeholders": {} + }, + "settings": "Configurações", + "@settings": { + "type": "String", + "placeholders": {} + }, + "share": "Compartilhar", + "@share": { + "type": "String", + "placeholders": {} + }, + "sharedTheLocation": "{username} compartilhou sua localização", + "@sharedTheLocation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "shareLocation": "Compartilhar localização", + "@shareLocation": { + "type": "String", + "placeholders": {} + }, + "showPassword": "Mostrar senha", + "@showPassword": { + "type": "String", + "placeholders": {} + }, + "singlesignon": "Entrada única", + "@singlesignon": { + "type": "String", + "placeholders": {} + }, + "skip": "Pular", + "@skip": { + "type": "String", + "placeholders": {} + }, + "sourceCode": "Código-fonte", + "@sourceCode": { + "type": "String", + "placeholders": {} + }, + "spaceIsPublic": "O espaço é público", + "@spaceIsPublic": { + "type": "String", + "placeholders": {} + }, + "spaceName": "Nome do espaço", + "@spaceName": { + "type": "String", + "placeholders": {} + }, + "startedACall": "{senderName} iniciou uma chamada", + "@startedACall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "status": "Estado", + "@status": { + "type": "String", + "placeholders": {} + }, + "statusExampleMessage": "Como vai você?", + "@statusExampleMessage": { + "type": "String", + "placeholders": {} + }, + "submit": "Enviar", + "@submit": { + "type": "String", + "placeholders": {} + }, + "synchronizingPleaseWait": "Sincronizando… Por favor, aguarde.", + "@synchronizingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "systemTheme": "Sistema", + "@systemTheme": { + "type": "String", + "placeholders": {} + }, + "theyDontMatch": "Não correspondem", + "@theyDontMatch": { + "type": "String", + "placeholders": {} + }, + "theyMatch": "Correspondem", + "@theyMatch": { + "type": "String", + "placeholders": {} + }, + "title": "FluffyChat", + "@title": { + "description": "Title for the application", + "type": "String", + "placeholders": {} + }, + "toggleFavorite": "Alternar favorito", + "@toggleFavorite": { + "type": "String", + "placeholders": {} + }, + "toggleMuted": "Alternar Silenciado", + "@toggleMuted": { + "type": "String", + "placeholders": {} + }, + "toggleUnread": "Marcar lido/não lido", + "@toggleUnread": { + "type": "String", + "placeholders": {} + }, + "tooManyRequestsWarning": "Demasiadas requisições. Por favor, tente novamente mais tarde!", + "@tooManyRequestsWarning": { + "type": "String", + "placeholders": {} + }, + "transferFromAnotherDevice": "Transferir de outro dispositivo", + "@transferFromAnotherDevice": { + "type": "String", + "placeholders": {} + }, + "tryToSendAgain": "Tentar enviar novamente", + "@tryToSendAgain": { + "type": "String", + "placeholders": {} + }, + "unavailable": "Indisponível", + "@unavailable": { + "type": "String", + "placeholders": {} + }, + "unbannedUser": "{username} desbaniu {targetName}", + "@unbannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "unblockDevice": "Desbloquear dispositivo", + "@unblockDevice": { + "type": "String", + "placeholders": {} + }, + "unknownDevice": "Dispositivo desconhecido", + "@unknownDevice": { + "type": "String", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "Algoritmo de criptografia desconhecido", + "@unknownEncryptionAlgorithm": { + "type": "String", + "placeholders": {} + }, + "unknownEvent": "Evento desconhecido '{type}'", + "@unknownEvent": { + "type": "String", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "unmuteChat": "Dessilenciar", + "@unmuteChat": { + "type": "String", + "placeholders": {} + }, + "unpin": "Desafixar", + "@unpin": { + "type": "String", + "placeholders": {} + }, + "unreadChats": "{unreadCount, plural, =1{1 conversa não lida} other{{unreadCount} conversas não lidas}}", + "@unreadChats": { + "type": "String", + "placeholders": { + "unreadCount": { + "type": "int" + } + } + }, + "userAndOthersAreTyping": "{username} e mais {count} pessoas estão digitando…", + "@userAndOthersAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "userAndUserAreTyping": "{username} e {username2} estão digitando…", + "@userAndUserAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "username2": { + "type": "String" + } + } + }, + "userIsTyping": "{username} está digitando…", + "@userIsTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "userLeftTheChat": "🚪 {username} saiu da conversa", + "@userLeftTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "username": "Nome de usuário", + "@username": { + "type": "String", + "placeholders": {} + }, + "userSentUnknownEvent": "{username} enviou um evento de {type}", + "@userSentUnknownEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "type": { + "type": "String" + } + } + }, + "verified": "Verificado", + "@verified": { + "type": "String", + "placeholders": {} + }, + "verify": "Verificar", + "@verify": { + "type": "String", + "placeholders": {} + }, + "verifyStart": "Iniciar verificação", + "@verifyStart": { + "type": "String", + "placeholders": {} + }, + "verifySuccess": "Verificação efetivada!", + "@verifySuccess": { + "type": "String", + "placeholders": {} + }, + "verifyTitle": "Verificando outra conta", + "@verifyTitle": { + "type": "String", + "placeholders": {} + }, + "videoCall": "Chamada de vídeo", + "@videoCall": { + "type": "String", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "Visibilidade do histórico da conversa", + "@visibilityOfTheChatHistory": { + "type": "String", + "placeholders": {} + }, + "visibleForAllParticipants": "Visível para todos os participantes", + "@visibleForAllParticipants": { + "type": "String", + "placeholders": {} + }, + "visibleForEveryone": "Visível para qualquer pessoa", + "@visibleForEveryone": { + "type": "String", + "placeholders": {} + }, + "voiceMessage": "Mensagem de voz", + "@voiceMessage": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "Esperando que a outra pessoa aceite a solicitação…", + "@waitingPartnerAcceptRequest": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerEmoji": "Esperando que a outra pessoa aceite os emojis…", + "@waitingPartnerEmoji": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerNumbers": "Aguardando a outra pessoa aceitar os números…", + "@waitingPartnerNumbers": { + "type": "String", + "placeholders": {} + }, + "wallpaper": "Plano de fundo:", + "@wallpaper": { + "type": "String", + "placeholders": {} + }, + "warning": "Atenção!", + "@warning": { + "type": "String", + "placeholders": {} + }, + "weSentYouAnEmail": "Enviamos um e-mail para você", + "@weSentYouAnEmail": { + "type": "String", + "placeholders": {} + }, + "whoCanPerformWhichAction": "Quem pode desempenhar quais ações", + "@whoCanPerformWhichAction": { + "type": "String", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "Quem pode entrar no grupo", + "@whoIsAllowedToJoinThisGroup": { + "type": "String", + "placeholders": {} + }, + "whyDoYouWantToReportThis": "Por que quer denunciar isto?", + "@whyDoYouWantToReportThis": { + "type": "String", + "placeholders": {} + }, + "wipeChatBackup": "Apagar o backup de conversas para criar uma nova chave de recuperação?", + "@wipeChatBackup": { + "type": "String", + "placeholders": {} + }, + "withTheseAddressesRecoveryDescription": "Você pode recuperar a sua senha com estes endereços.", + "@withTheseAddressesRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "writeAMessage": "Digite sua mensagem…", + "@writeAMessage": { + "type": "String", + "placeholders": {} + }, + "yes": "Sim", + "@yes": { + "type": "String", + "placeholders": {} + }, + "you": "Você", + "@you": { + "type": "String", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "Você não está mais participando desta conversa", + "@youAreNoLongerParticipatingInThisChat": { + "type": "String", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "Você foi banido desta conversa", + "@youHaveBeenBannedFromThisChat": { + "type": "String", + "placeholders": {} + }, + "yourPublicKey": "Sua chave pública", + "@yourPublicKey": { + "type": "String", + "placeholders": {} + }, + "oneClientLoggedOut": "Um dos seus clientes foi desconectado", + "@oneClientLoggedOut": {}, + "addAccount": "Adicionar conta", + "@addAccount": {}, + "unverified": "Não verificado", + "@unverified": {}, + "yourChatBackupHasBeenSetUp": "Seu backup de conversas foi configurado.", + "@yourChatBackupHasBeenSetUp": {}, + "editBundlesForAccount": "Editar coleções para esta conta", + "@editBundlesForAccount": {}, + "serverRequiresEmail": "Este servidor precisa validar seu e-mail para efetuar o cadastro.", + "@serverRequiresEmail": {}, + "messageInfo": "Informações da mensagem", + "@messageInfo": {}, + "sender": "Remetente", + "@sender": {}, + "publish": "Publicar", + "@publish": {}, + "removeFromSpace": "Remover do espaço", + "@removeFromSpace": {}, + "link": "Link", + "@link": {}, + "start": "Iniciar", + "@start": {}, + "repeatPassword": "Repita a senha", + "@repeatPassword": {}, + "addToSpace": "Adicionar ao espaço", + "@addToSpace": {}, + "sendOnEnter": "Enviar ao pressionar enter", + "@sendOnEnter": {}, + "homeserver": "Servidor", + "@homeserver": {}, + "chatHasBeenAddedToThisSpace": "A conversa foi adicionada a este espaço", + "@chatHasBeenAddedToThisSpace": {}, + "commandHint_clearcache": "Limpar dados temporários", + "@commandHint_clearcache": { + "type": "String", + "description": "Usage hint for the command /clearcache" + }, + "commandHint_create": "Criar uma conversa em grupo vazia.\nUse --no-encryption para desativar a criptografia", + "@commandHint_create": { + "type": "String", + "description": "Usage hint for the command /create" + }, + "commandHint_discardsession": "Descartar sessão", + "@commandHint_discardsession": { + "type": "String", + "description": "Usage hint for the command /discardsession" + }, + "commandHint_dm": "Iniciar uma conversa direta\nUse --no-encryption para desativar a criptografia", + "@commandHint_dm": { + "type": "String", + "description": "Usage hint for the command /dm" + }, + "scanQrCode": "Ler código QR", + "@scanQrCode": {}, + "openVideoCamera": "Abrir a câmera para um vídeo", + "@openVideoCamera": { + "type": "String", + "placeholders": {} + }, + "addToBundle": "Adicionar à coleção", + "@addToBundle": {}, + "removeFromBundle": "Remover desta coleção", + "@removeFromBundle": {}, + "bundleName": "Nome da coleção", + "@bundleName": {}, + "enableMultiAccounts": "(BETA) Ativar múltiplas contas neste dispositivo", + "@enableMultiAccounts": {}, + "time": "Horário", + "@time": {}, + "messageType": "Tipo da mensagem", + "@messageType": {}, + "openGallery": "Abrir galeria", + "@openGallery": {}, + "addToSpaceDescription": "Selecione um espaço para adicionar esta conversa.", + "@addToSpaceDescription": {}, + "videoWithSize": "Vídeo ({size})", + "@videoWithSize": { + "type": "String", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "markAsRead": "Marcar como lido", + "@markAsRead": {}, + "dismiss": "Descartar", + "@dismiss": {}, + "separateChatTypes": "Separar conversas diretas e grupos", + "@separateChatTypes": { + "type": "String", + "placeholders": {} + }, + "openChat": "Abrir conversa", + "@openChat": {}, + "reportUser": "Denunciar usuário", + "@reportUser": {}, + "emojis": "Emojis", + "@emojis": {}, + "placeCall": "Chamar", + "@placeCall": {}, + "reactedWith": "{sender} reagiu com {reaction}", + "@reactedWith": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "reaction": { + "type": "String" + } + } + }, + "confirmEventUnpin": "Tem certeza que quer desafixar o evento permanentemente?", + "@confirmEventUnpin": {}, + "pinMessage": "Fixar na sala", + "@pinMessage": {}, + "voiceCall": "Chamada de voz", + "@voiceCall": {}, + "unsupportedAndroidVersion": "Versão Android sem suporte", + "@unsupportedAndroidVersion": {}, + "widgetNameError": "Por favor, forneça um nome de exibição.", + "@widgetNameError": {}, + "unsupportedAndroidVersionLong": "Esta funcionalidade requer uma versão mais nova do Android. Por favor, verifique se há atualizações ou suporte ao LineageOS.", + "@unsupportedAndroidVersionLong": {}, + "emailOrUsername": "E-mail ou nome de usuário", + "@emailOrUsername": {}, + "videoCallsBetaWarning": "Por favor, observe que chamadas de vídeo estão atualmente em teste. Podem não funcionar como esperado ou sequer funcionar em algumas plataformas.", + "@videoCallsBetaWarning": {}, + "experimentalVideoCalls": "Vídeo chamadas experimentais", + "@experimentalVideoCalls": {}, + "widgetVideo": "Vídeo", + "@widgetVideo": {}, + "errorAddingWidget": "Erro ao adicionar o widget.", + "@errorAddingWidget": {}, + "addWidget": "Adicionar widget", + "@addWidget": {}, + "widgetEtherpad": "Anotação de texto", + "@widgetEtherpad": {}, + "widgetUrlError": "Isto não é uma URL válida.", + "@widgetUrlError": {}, + "widgetJitsi": "Jitsi Meet", + "@widgetJitsi": {}, + "widgetCustom": "Personalizado", + "@widgetCustom": {}, + "widgetName": "Nome", + "@widgetName": {}, + "switchToAccount": "Alternar para a conta {number}", + "@switchToAccount": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "nextAccount": "Próxima conta", + "@nextAccount": {}, + "previousAccount": "Conta anterior", + "@previousAccount": {}, + "youRejectedTheInvitation": "Você rejeitou o convite", + "@youRejectedTheInvitation": {}, + "youBannedUser": "Você baniu {user}", + "@youBannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youHaveWithdrawnTheInvitationFor": "Você revogou o convite para {user}", + "@youHaveWithdrawnTheInvitationFor": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youInvitedBy": "📩 Você foi convidado por {user}", + "@youInvitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youInvitedUser": "📩 Você convidou {user}", + "@youInvitedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youAcceptedTheInvitation": "👍 Você aceitou o convite", + "@youAcceptedTheInvitation": {}, + "youJoinedTheChat": "Você entrou na conversa", + "@youJoinedTheChat": {}, + "youKicked": "👞 Você expulsou {user}", + "@youKicked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youKickedAndBanned": "🙅 Você expulsou e baniu {user}", + "@youKickedAndBanned": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youUnbannedUser": "Você desbaniu {user}", + "@youUnbannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "cuddleContent": "{senderName} afagou você", + "@cuddleContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "pleaseEnterRecoveryKeyDescription": "Para desbloquear as suas mensagens antigas, por favor, insira sua chave de recuperação gerada numa sessão prévia. Sua chave de recuperação NÃO é sua senha.", + "@pleaseEnterRecoveryKeyDescription": {}, + "indexedDbErrorLong": "Infelizmente, o armazenamento de mensagens não é ativado por padrão no modo privado.\nPor favor, visite\n- about:config\n- atribua \"true\" a \"dom.indexedDB.privateBrowsing.enabled\"\nSe não fizer isto, não será possível executar o FluffyChat.", + "@indexedDbErrorLong": {}, + "users": "Usuários", + "@users": {}, + "confirmMatrixId": "Por favor, confirme seu ID Matrix para apagar sua conta.", + "@confirmMatrixId": {}, + "supposedMxid": "Isto deveria ser {mxid}", + "@supposedMxid": { + "type": "String", + "placeholders": { + "mxid": { + "type": "String" + } + } + }, + "dehydrateTor": "Usuários TOR: Exportar sessão", + "@dehydrateTor": {}, + "recoveryKey": "Chave de recuperação", + "@recoveryKey": {}, + "recoveryKeyLost": "Perdeu a chave de recuperação?", + "@recoveryKeyLost": {}, + "commandHint_cuddle": "Enviar um afago", + "@commandHint_cuddle": {}, + "commandHint_hug": "Enviar um abraço", + "@commandHint_hug": {}, + "commandHint_googly": "Enviar olhos arregalados", + "@commandHint_googly": {}, + "googlyEyesContent": "{senderName} enviou olhos arregalados", + "@googlyEyesContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "hugContent": "{senderName} abraçou você", + "@hugContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "commandHint_markasdm": "Marcar como sala de mensagens diretas para o ID Matrix fornecido", + "@commandHint_markasdm": {}, + "commandHint_markasgroup": "Marcar como grupo", + "@commandHint_markasgroup": {}, + "hydrateTor": "Usuários TOR: Importar sessão", + "@hydrateTor": {}, + "hydrateTorLong": "Você exportou sua última sessão no TOR? Importe ela rapidamente e continue conversando.", + "@hydrateTorLong": {}, + "hydrate": "Restaurar a partir de um arquivo de backup", + "@hydrate": {}, + "pleaseEnterRecoveryKey": "Por favor, insira sua chave de recuperação:", + "@pleaseEnterRecoveryKey": {}, + "indexedDbErrorTitle": "Problemas no modo privado", + "@indexedDbErrorTitle": {}, + "storeInSecureStorageDescription": "Guardar a chave de recuperação no armazenamento seguro deste dispositivo.", + "@storeInSecureStorageDescription": {}, + "saveKeyManuallyDescription": "Salvar esta chave manualmente via compartilhamento do sistema ou área de transferência.", + "@saveKeyManuallyDescription": {}, + "storeInAndroidKeystore": "Guardar no cofre do Android (KeyStore)", + "@storeInAndroidKeystore": {}, + "storeInAppleKeyChain": "Guardar no chaveiro da Apple", + "@storeInAppleKeyChain": {}, + "storeSecurlyOnThisDevice": "Guardar de modo seguro neste dispositivo", + "@storeSecurlyOnThisDevice": {}, + "user": "Usuário", + "@user": {}, + "custom": "Personalizado", + "@custom": {}, + "foregroundServiceRunning": "Esta notificação aparece quando o serviço de primeiro plano está sendo executado.", + "@foregroundServiceRunning": {}, + "callingPermissions": "Permissões de chamada", + "@callingPermissions": {}, + "callingAccount": "Conta para chamadas", + "@callingAccount": {}, + "callingAccountDetails": "Permitir que o FluffyChat use o app de chamadas nativo do Android.", + "@callingAccountDetails": {}, + "appearOnTop": "Aparecer no topo", + "@appearOnTop": {}, + "appearOnTopDetails": "Permite que o app apareça no topo (desnecessário caso o FluffyChat já esteja configurado como conta para chamadas)", + "@appearOnTopDetails": {}, + "otherCallingPermissions": "Microfone, câmera e outras permissões do FluffyChat", + "@otherCallingPermissions": {}, + "newGroup": "Novo grupo", + "@newGroup": {}, + "newSpace": "Novo espaço", + "@newSpace": {}, + "enterSpace": "Abrir espaço", + "@enterSpace": {}, + "enterRoom": "Abrir sala", + "@enterRoom": {}, + "allSpaces": "Todos os espaços", + "@allSpaces": {}, + "hideUnimportantStateEvents": "Ocultar eventos de estado desimportantes", + "@hideUnimportantStateEvents": {}, + "countFiles": "{count} arquivos", + "@countFiles": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "doNotShowAgain": "Não mostrar novamente", + "@doNotShowAgain": {}, + "unlockOldMessages": "Desbloquear mensagens antigas", + "@unlockOldMessages": {}, + "dehydrate": "Exportar sessão e apagar dispositivo", + "@dehydrate": {}, + "dehydrateWarning": "Esta ação não pode ser desfeita. Certifique-se de que o arquivo de backup está guardado e seguro.", + "@dehydrateWarning": {}, + "dehydrateTorLong": "Para usuários TOR, é recomendado exportar a sessão antes de fechar a janela.", + "@dehydrateTorLong": {}, + "whyIsThisMessageEncrypted": "Por que não consigo ler esta mensagem?", + "@whyIsThisMessageEncrypted": {}, + "screenSharingTitle": "compartilhamento de tela", + "@screenSharingTitle": {}, + "screenSharingDetail": "Você está compartilhando sua tela no FluffyChat", + "@screenSharingDetail": {}, + "numChats": "{number} conversas", + "@numChats": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "noKeyForThisMessage": "Isto pode ocorrer caso a mensagem tenha sido enviada antes de você ter se conectado à sua conta com este dispositivo.\n\nTambém é possível que o remetente tenha bloqueado o seu dispositivo ou ocorreu algum problema com a conexão.\n\nVocê consegue ler as mensagens em outra sessão? Então, pode transferir as mensagens de lá! Vá em Configurações > Dispositivos e confira se os dispositivos verificaram um ao outro. Quando abrir a sala da próxima vez e ambas as sessões estiverem abertas, as chaves serão transmitidas automaticamente.\n\nNão gostaria de perder suas chaves ao desconectar ou trocar de dispositivos? Certifique-se que o backup de conversas esteja ativado nas configurações.", + "@noKeyForThisMessage": {}, + "allRooms": "Todas as conversas em grupo", + "@allRooms": { + "type": "String", + "placeholders": {} + }, + "notAnImage": "Não é um arquivo de imagem.", + "@notAnImage": {}, + "importNow": "Importar agora", + "@importNow": {}, + "importEmojis": "Importar emojis", + "@importEmojis": {}, + "importFromZipFile": "Importar de arquivo .zip", + "@importFromZipFile": {}, + "sendTypingNotifications": "Enviar indicadores de digitação", + "@sendTypingNotifications": {}, + "startFirstChat": "Inicie sua primeira conversa", + "@startFirstChat": {}, + "exportEmotePack": "Exportar pacote de emojis como .zip", + "@exportEmotePack": {}, + "replace": "Substituir", + "@replace": {}, + "jumpToLastReadMessage": "Pular para a última mensagem lida", + "@jumpToLastReadMessage": {}, + "reportErrorDescription": "😭 Ah, não. Algo deu errado. Se quiser, pode relatar isto aos desenvolvedores.", + "@reportErrorDescription": {}, + "setColorTheme": "Aplicar paleta de cor:", + "@setColorTheme": {}, + "banUserDescription": "O usuário será banido da conversa e não poderá participar novamente até que sejam desbanidos.", + "@banUserDescription": {}, + "removeDevicesDescription": "Você será desconectado deste dispositivo e não poderá mais receber mensagens.", + "@removeDevicesDescription": {}, + "tryAgain": "Tentar novamente", + "@tryAgain": {}, + "unbanUserDescription": "O usuário poderá entrar novamente na conversa, caso tente.", + "@unbanUserDescription": {}, + "messagesStyle": "Mensagens:", + "@messagesStyle": {}, + "newSpaceDescription": "Os espaços permitem que você consolide suas conversas e construa comunidades públicas ou privadas.", + "@newSpaceDescription": {}, + "chatDescription": "Descrição da conversa", + "@chatDescription": {}, + "encryptThisChat": "Criptografar esta conversa", + "@encryptThisChat": {}, + "reopenChat": "Reabrir conversa", + "@reopenChat": {}, + "pushNotificationsNotAvailable": "Notificações push não estão disponíveis", + "@pushNotificationsNotAvailable": {}, + "invalidServerName": "Nome do servidor inválido", + "@invalidServerName": {}, + "chatPermissions": "Permissões da conversa", + "@chatPermissions": {}, + "signInWithPassword": "Conectar com senha", + "@signInWithPassword": {}, + "makeAdminDescription": "Assim que promover este usuário a administrador, não poderá desfazer isto e ele terá as mesmas permissões que você.", + "@makeAdminDescription": {}, + "setChatDescription": "Definir descrição da conversa", + "@setChatDescription": {}, + "noOtherDevicesFound": "Nenhum outro dispositivo encontrado", + "@noOtherDevicesFound": {}, + "redactedBy": "Apagado por {username}", + "@redactedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "signInWith": "Conectar com {provider}", + "@signInWith": { + "type": "String", + "placeholders": { + "provider": { + "type": "String" + } + } + }, + "fileIsTooBigForServer": "Não foi possível enviar! O servidor suporta anexos somente até {max}.", + "@fileIsTooBigForServer": {}, + "readUpToHere": "Lido até aqui", + "@readUpToHere": {}, + "optionalRedactReason": "(Opcional) Motivo para apagar esta mensagem.", + "@optionalRedactReason": {}, + "archiveRoomDescription": "A conversa será movida para o arquivo. Outros usuários verão que você deixou a conversa.", + "@archiveRoomDescription": {}, + "inviteContactToGroupQuestion": "Deseja convidar {contact} para a conversa \"{groupName}\"?", + "@inviteContactToGroupQuestion": {}, + "redactedByBecause": "Apagado por {username}, pois: \"{reason}\"", + "@redactedByBecause": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "reason": { + "type": "String" + } + } + }, + "fileHasBeenSavedAt": "Arquivo salvo em {path}", + "@fileHasBeenSavedAt": { + "type": "String", + "placeholders": { + "path": { + "type": "String" + } + } + }, + "redactMessageDescription": "A mensagem será apagada para todos os participantes desta conversa. Isto não poderá ser desfeito.", + "@redactMessageDescription": {}, + "invalidInput": "Entrada inválida!", + "@invalidInput": {}, + "report": "relatar", + "@report": {}, + "addChatDescription": "Adicionar uma descrição à conversa...", + "@addChatDescription": {}, + "hasKnocked": "🚪 {user} bateu na porta", + "@hasKnocked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "openLinkInBrowser": "Abrir link no navegador", + "@openLinkInBrowser": {}, + "disableEncryptionWarning": "Por razões de segurança, não é possível desativar a criptografada uma vez ativada.", + "@disableEncryptionWarning": {}, + "directChat": "Conversa direta", + "@directChat": {}, + "wrongPinEntered": "PIN incorreto! Tente novamente em {seconds} segundos...", + "@wrongPinEntered": { + "type": "String", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "inviteGroupChat": "📨 Convite para conversa em grupo", + "@inviteGroupChat": {}, + "invitePrivateChat": "📨 Convite para conversa privada", + "@invitePrivateChat": {}, + "wasDirectChatDisplayName": "Conversa vazia (era {oldDisplayName})", + "@wasDirectChatDisplayName": { + "type": "String", + "placeholders": { + "oldDisplayName": { + "type": "String" + } + } + }, + "noChatDescriptionYet": "Nenhuma descrição para a conversa foi criada ainda.", + "@noChatDescriptionYet": {}, + "learnMore": "Saiba mais", + "@learnMore": {}, + "chatDescriptionHasBeenChanged": "Descrição da conversa alterada", + "@chatDescriptionHasBeenChanged": {}, + "roomUpgradeDescription": "A conversa será recriada com a nova versão de sala. Todos participantes será notificados e terão que migrar para a nova sala. Você pode encontrar mais informações sobre versões de sala em https://spec.matrix.org/latest/room/", + "@roomUpgradeDescription": {}, + "pleaseEnterANumber": "Por favor, digite um número maior que 0", + "@pleaseEnterANumber": {}, + "profileNotFound": "O usuário não foi encontrado neste servidor. Talvez um problema de conexão ou o usuário não existe.", + "@profileNotFound": {}, + "jump": "Pular", + "@jump": {}, + "sorryThatsNotPossible": "Desculpe... isto não é possível", + "@sorryThatsNotPossible": {}, + "shareInviteLink": "Compartilhar link de convite", + "@shareInviteLink": {}, + "deviceKeys": "Chaves de dispositivo:", + "@deviceKeys": {}, + "emoteKeyboardNoRecents": "Emojis recentes aparecem aqui...", + "@emoteKeyboardNoRecents": { + "type": "String", + "placeholders": {} + }, + "setTheme": "Aplicar tema:", + "@setTheme": {}, + "pleaseTryAgainLaterOrChooseDifferentServer": "Por favor, tente novamente mais tarde ou escolha um servidor diferente.", + "@pleaseTryAgainLaterOrChooseDifferentServer": {}, + "createGroup": "Criar grupo", + "@createGroup": {}, + "noBackupWarning": "Atenção! Se não ativar o backup de conversas, você perderá acesso a suas mensagens criptografadas. É altamente recomendável ativar o backup antes de sair.", + "@noBackupWarning": {}, + "kickUserDescription": "O usuário foi expulso da conversa, mas não banido. Em conversas públicas, o usuário pode entrar novamente a qualquer momento.", + "@kickUserDescription": {}, + "invite": "Convidar", + "@invite": {}, + "blockListDescription": "Você pode bloquear usuários que estejam te perturbando. Você não receberá mensagens ou convites de usuários na sua lista pessoal de bloqueios.", + "@blockListDescription": {}, + "createGroupAndInviteUsers": "Criar um grupo e convidar pessoas", + "@createGroupAndInviteUsers": {}, + "thisDevice": "Este dispositivo:", + "@thisDevice": {}, + "startConversation": "Iniciar uma conversa", + "@startConversation": {}, + "publicSpaces": "Espaços públicos", + "@publicSpaces": {}, + "blockedUsers": "Usuários bloqueados", + "@blockedUsers": {}, + "passwordIsWrong": "A senha digitada está incorreta", + "@passwordIsWrong": {}, + "pleaseEnterYourCurrentPassword": "Por favor, digite sua senha atual", + "@pleaseEnterYourCurrentPassword": {}, + "groupCanBeFoundViaSearch": "Grupos podem ser encontrados por pesquisa", + "@groupCanBeFoundViaSearch": {}, + "publicLink": "Link público", + "@publicLink": {}, + "noUsersFoundWithQuery": "Infelizmente, não foi encontrado usuário com \"{query}\". Por favor, verifique se digitou corretamente.", + "@noUsersFoundWithQuery": { + "type": "String", + "placeholders": { + "query": { + "type": "String" + } + } + }, + "block": "Bloquear", + "@block": {}, + "nothingFound": "Nada foi encontrado...", + "@nothingFound": {}, + "yourGlobalUserIdIs": "Seu ID global de usuário é: ", + "@yourGlobalUserIdIs": {}, + "decline": "Rejeitar", + "@decline": {}, + "newPassword": "Nova senha", + "@newPassword": {}, + "passwordsDoNotMatch": "As senhas não correspondem", + "@passwordsDoNotMatch": {}, + "commandHint_sendraw": "Enviar JSON puro", + "@commandHint_sendraw": {}, + "wrongRecoveryKey": "Desculpe... esta não parece ser a chave de recuperação correta.", + "@wrongRecoveryKey": {}, + "subspace": "Subespaço", + "@subspace": {}, + "select": "Selecionar", + "@select": {}, + "pleaseChooseAStrongPassword": "Por favor, escolha uma senha forte", + "@pleaseChooseAStrongPassword": {}, + "blockUsername": "Ignorar nome de usuário", + "@blockUsername": {}, + "addChatOrSubSpace": "Adicionar conversa ou subespaço", + "@addChatOrSubSpace": {}, + "groupName": "Nome do grupo", + "@groupName": {}, + "leaveEmptyToClearStatus": "Deixe em branco para limpar seu estado.", + "@leaveEmptyToClearStatus": {}, + "joinSpace": "Entrar no espaço", + "@joinSpace": {}, + "searchForUsers": "Pesquisar por @usuários...", + "@searchForUsers": {}, + "databaseMigrationTitle": "O banco de dados está otimizado", + "@databaseMigrationTitle": {}, + "searchChatsRooms": "Pesquisar por #conversas, @usuários...", + "@searchChatsRooms": {}, + "databaseMigrationBody": "Por favor, aguarde. Isto pode demorar um pouco.", + "@databaseMigrationBody": {}, + "youInvitedToBy": "📩 Você foi convidado através do link para:\n{alias}", + "@youInvitedToBy": { + "placeholders": { + "alias": { + "type": "String" + } + } + }, + "forwardMessageTo": "Encaminhar mensagem para {roomName}?", + "@forwardMessageTo": { + "type": "String", + "placeholders": { + "roomName": { + "type": "String" + } + } + }, + "formattedMessagesDescription": "Exibir conteúdo de mensagem rico, como texto em negrito usando markdown.", + "@formattedMessagesDescription": {}, + "verifyOtherUser": "🔐 Verificar outro usuário", + "@verifyOtherUser": {}, + "verifyOtherDevice": "🔐 Verificar outro dispositivo", + "@verifyOtherDevice": {}, + "acceptedKeyVerification": "{sender} aceitou a verificação de chaves", + "@acceptedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "startedKeyVerification": "{sender} iniciou a verificação de chaves", + "@startedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "transparent": "Transparente", + "@transparent": {}, + "databaseBuildErrorBody": "Não foi possível construir o banco de dados SQLite. O app tentará utilizar o banco de dados legado por enquanto. Por favor, relate este erro aos desenvolvedores em {url}. A mensagem de erro é: {error}", + "@databaseBuildErrorBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "initAppError": "Ocorreu um erro enquanto o app era iniciado", + "@initAppError": {}, + "restoreSessionBody": "O app tentará agora restaurar sua sessão a partir do backup. Por favor, relate isto ao desenvolvedor em {url}. A mensagem de erro é: {error}", + "@restoreSessionBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "sendReadReceipts": "Enviar recibos de leitura", + "@sendReadReceipts": {}, + "sendTypingNotificationsDescription": "Outros participantes nesta conversa podem ver quando você está digitando uma nova mensagem.", + "@sendTypingNotificationsDescription": {}, + "formattedMessages": "Mensagens formatadas", + "@formattedMessages": {}, + "presenceStyle": "Presença:", + "@presenceStyle": { + "type": "String", + "placeholders": {} + }, + "presencesToggle": "Mostrar as mensagens de estado de outros usuários", + "@presencesToggle": { + "type": "String", + "placeholders": {} + }, + "commandHint_ignore": "Ignorar o ID Matrix especificado", + "@commandHint_ignore": {}, + "commandHint_unignore": "Parar de ignorar o ID Matrix especificado", + "@commandHint_unignore": {}, + "hidePresences": "Ocultar lista de estado?", + "@hidePresences": {}, + "sessionLostBody": "Sua sessão foi desconectada. Por favor, relate este ao desenvolvedor em {url}. A mensagem de erro é: {error}", + "@sessionLostBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "sendReadReceiptsDescription": "Outros participantes nesta conversa podem ver quando você tiver lido uma mensagem.", + "@sendReadReceiptsDescription": {}, + "verifyOtherUserDescription": "Se você verificar outro usuário, você terá certeza que você conhece com quem está conversando. 💪\n\nAo iniciar uma verificação, você e o outro usuário receberão um pop-up no app. Então vocês receberão uma série de emojis ou números para comparar um com o outro.\n\nA melhor maneira de fazer este procedimento é se encontrar pessoalmente ou através de uma chamada de vídeo. 👭", + "@verifyOtherUserDescription": {}, + "requestedKeyVerification": "{sender} solicitou uma verificação de chaves", + "@requestedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "verifyOtherDeviceDescription": "Ao verificar outro dispositivo, os dispositivos poderão trocar chaves, aumentando sua segurança. 💪 Ao iniciar a verificação, um pop-up aparecerá no app em ambos os aparelhos. Então você verá uma série de emojis ou números que você terá que comparar um com o outro. É melhor fazer esse procedimento com ambos os dispositivos em mãos antes de começar a verificação. 🤳", + "@verifyOtherDeviceDescription": {}, + "canceledKeyVerification": "{sender} cancelou a verificação de chaves", + "@canceledKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "isReadyForKeyVerification": "{sender} está pronto para a verificação de chaves", + "@isReadyForKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "completedKeyVerification": "{sender} concluiu a verificação de chaves", + "@completedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "stickers": "Figurinhas", + "@stickers": {}, + "discover": "Explorar", + "@discover": {}, + "incomingMessages": "Mensagens recebidas", + "@incomingMessages": {}, + "unreadChatsInApp": "{appname}: {unread} conversas não lidas", + "@unreadChatsInApp": { + "type": "String", + "placeholders": { + "appname": { + "type": "String" + }, + "unread": { + "type": "String" + } + } + }, + "appLockDescription": "Bloquear o app com um código PIN quando não estiver usando", + "@appLockDescription": {}, + "accessAndVisibilityDescription": "Quem pode entrar nesta conversa e como a conversa pode ser descoberta.", + "@accessAndVisibilityDescription": {}, + "calls": "Chamadas", + "@calls": {}, + "customEmojisAndStickers": "Emojis e stickers customizados", + "@customEmojisAndStickers": {}, + "customEmojisAndStickersBody": "Adicionar ou compartilhar emojis ou stickers customizados que podem ser usados em qualquer conversa.", + "@customEmojisAndStickersBody": {}, + "hideRedactedMessages": "Ocultar mensagens apagadas", + "@hideRedactedMessages": {}, + "hideRedactedMessagesBody": "Se alguém apagar uma mensagem, esta mensagem não será mais visível na conversa.", + "@hideRedactedMessagesBody": {}, + "hideInvalidOrUnknownMessageFormats": "Ocultar formatos de mensagem inválidos ou desconhecidos", + "@hideInvalidOrUnknownMessageFormats": {}, + "hideMemberChangesInPublicChats": "Ocultar mudanças de membro em conversas públicas", + "@hideMemberChangesInPublicChats": {}, + "hideMemberChangesInPublicChatsBody": "Não mostre se alguém entrou ou saiu da conversa para melhorar a legibilidade.", + "@hideMemberChangesInPublicChatsBody": {}, + "overview": "Visão geral", + "@overview": {}, + "notifyMeFor": "Notificar me para", + "@notifyMeFor": {}, + "usersMustKnock": "Usuários devem bater na porta", + "@usersMustKnock": {}, + "noOneCanJoin": "Ninguém pode entrar", + "@noOneCanJoin": {}, + "knocking": "Batendo na porta", + "@knocking": {}, + "chatCanBeDiscoveredViaSearchOnServer": "A conversa pode ser descoberta por pesquisa em {server}", + "@chatCanBeDiscoveredViaSearchOnServer": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "publicChatAddresses": "Endereços de conversas públicas", + "@publicChatAddresses": {}, + "thereAreCountUsersBlocked": "Nesse momento, há {count} usuários bloqueados.", + "@thereAreCountUsersBlocked": { + "type": "String", + "count": {} + }, + "globalChatId": "ID global de conversa", + "@globalChatId": {}, + "accessAndVisibility": "Acesso e visibilidade", + "@accessAndVisibility": {}, + "passwordRecoverySettings": "Configurações de recuperação de senha", + "@passwordRecoverySettings": {}, + "userWouldLikeToChangeTheChat": "{user} gostaria de entrar na conversa.", + "@userWouldLikeToChangeTheChat": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "noPublicLinkHasBeenCreatedYet": "Nenhum link público foi criado ainda", + "@noPublicLinkHasBeenCreatedYet": {}, + "userRole": "Cargo do usuário", + "@userRole": {}, + "minimumPowerLevel": "{level} é o nível mínimo de poder.", + "@minimumPowerLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "String" + } + } + }, + "noDatabaseEncryption": "A criptografia do banco de dados não é suportada nesta plataforma", + "@noDatabaseEncryption": {}, + "createNewAddress": "Criar um novo endereço", + "@createNewAddress": {}, + "knock": "Bater na porta", + "@knock": {}, + "searchIn": "Procurar na conversa {chat}...", + "@searchIn": { + "type": "String", + "placeholders": { + "chat": { + "type": "String" + } + } + }, + "restricted": "Restrito", + "@restricted": {}, + "knockRestricted": "Bater na porta restrito", + "@knockRestricted": {}, + "searchMore": "Pesquisar mais...", + "@searchMore": {}, + "gallery": "Galeria", + "@gallery": {}, + "files": "Arquivos", + "@files": {}, + "more": "Mais", + "@more": {}, + "deletePushRuleCanNotBeUndone": "Se você apagar esta configuração de notificação, isso não poderá ser desfeito.", + "@deletePushRuleCanNotBeUndone": {}, + "alwaysUse24HourFormat": "true", + "@alwaysUse24HourFormat": { + "description": "Set to true to always display time of day in 24 hour format." + }, + "setPermissionsLevelDescription": "Por favor, selecione um cargo predefinido abaixo ou digite um nível de permissão personalizado entre 0 e 100.", + "@setPermissionsLevelDescription": {}, + "shareKeysWith": "Compartilhar chaves com...", + "@shareKeysWith": {}, + "setCustomPermissionLevel": "Definir nível personalizado de permissão", + "@setCustomPermissionLevel": {}, + "ignoreUser": "Ignorar usuário", + "@ignoreUser": {}, + "contentNotificationSettings": "Configurações de notificações de conteúdo", + "@contentNotificationSettings": {}, + "generalNotificationSettings": "Configurações de notificações gerais", + "@generalNotificationSettings": {}, + "notificationRuleContainsUserNameDescription": "Notifica o usuário quando a mensagem contém o seu nome de usuário.", + "@notificationRuleContainsUserNameDescription": {}, + "notificationRuleMaster": "Silenciar todas as notificações", + "@notificationRuleMaster": {}, + "notificationRuleMasterDescription": "Sobrescreve todas as outras regras e desativa todas as notificações.", + "@notificationRuleMasterDescription": {}, + "notificationRuleContainsDisplayName": "Contém o nome de exibição", + "@notificationRuleContainsDisplayName": {}, + "notificationRuleRoomnotif": "Notificação de sala", + "@notificationRuleRoomnotif": {}, + "notificationRuleIsRoomMentionDescription": "Notifica o usuário quando há uma menção de sala.", + "@notificationRuleIsRoomMentionDescription": {}, + "notificationRuleRoomnotifDescription": "Notifica o usuário quando uma mensagem contém '@room'.", + "@notificationRuleRoomnotifDescription": {}, + "notificationRuleTombstone": "Morte", + "@notificationRuleTombstone": {}, + "notificationRuleReaction": "Reação", + "@notificationRuleReaction": {}, + "notificationRuleSuppressEditsDescription": "Omite notificações de mensagens editadas.", + "@notificationRuleSuppressEditsDescription": {}, + "notificationRuleEncryptedRoomOneToOneDescription": "Notifica o usuário de mensagens em salas criptografas de 2 pessoas.", + "@notificationRuleEncryptedRoomOneToOneDescription": {}, + "notificationRuleRoomOneToOne": "Sala de 2 pessoas", + "@notificationRuleRoomOneToOne": {}, + "notificationRuleMessageDescription": "Notifica o usuário de mensagens gerais.", + "@notificationRuleMessageDescription": {}, + "notificationRuleEncrypted": "Criptografado", + "@notificationRuleEncrypted": {}, + "unknownPushRule": "Regra de push desconhecida '{rule}'", + "@unknownPushRule": { + "type": "String", + "placeholders": { + "rule": { + "type": "String" + } + } + }, + "notificationRuleServerAclDescription": "Omite notificações de eventos de ACL de servidor.", + "@notificationRuleServerAclDescription": {}, + "unread": "Não lido", + "@unread": {}, + "changeTheCanonicalRoomAlias": "Alterar o endereço público principal da conversa", + "@changeTheCanonicalRoomAlias": {}, + "doesNotSeemToBeAValidHomeserver": "Não parece ser um servidor compatível. URL errada?", + "@doesNotSeemToBeAValidHomeserver": {}, + "website": "Site", + "@website": {}, + "compress": "Comprimir", + "@compress": {}, + "invalidUrl": "URL inválida", + "@invalidUrl": {}, + "appWantsToUseForLoginDescription": "Aqui, você permite que o app e o site compartilhem informações sobre você.", + "@appWantsToUseForLoginDescription": {}, + "notificationRuleMemberEvent": "Evento de membro", + "@notificationRuleMemberEvent": {}, + "crossVerifiedDevicesIfEnabled": "Dispositivos verificados por ambos se ativado", + "@crossVerifiedDevicesIfEnabled": {}, + "countInvited": "{count} convidados", + "@countInvited": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "checkList": "Lista de tarefas", + "@checkList": {}, + "synchronizingPleaseWaitCounter": " Sincronizando… ({percentage}%)", + "@synchronizingPleaseWaitCounter": { + "type": "String", + "placeholders": { + "percentage": { + "type": "String" + } + } + }, + "invitedBy": "📩 Convidado por {user}", + "@invitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "markAsUnread": "Marcar como não lido", + "@markAsUnread": {}, + "updateInstalled": "🎉 Atualização da versão {version} instalada!", + "@updateInstalled": { + "type": "String", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "changelog": "Registro de mudanças", + "@changelog": {}, + "sendCanceled": "Envio cancelado", + "@sendCanceled": {}, + "unableToJoinChat": "Não foi possível entrar na conversa. Talvez a outra pessoa já fechou a conversa.", + "@unableToJoinChat": {}, + "whatIsAHomeserver": "O que é um servidor?", + "@whatIsAHomeserver": {}, + "prepareSendingAttachment": "Preparando o envio do anexo...", + "@prepareSendingAttachment": {}, + "sendingAttachment": "Enviando o anexo...", + "@sendingAttachment": {}, + "noticeChatBackupDeviceVerification": "Observação: Quando você conecta todos os seus dispositivos ao backup de conversas, eles são verificados automaticamente.", + "@noticeChatBackupDeviceVerification": {}, + "continueText": "Continuar", + "@continueText": {}, + "blur": "Borrar:", + "@blur": {}, + "opacity": "Opacidade:", + "@opacity": {}, + "setWallpaper": "Definir plano de fundo", + "@setWallpaper": {}, + "noContactInformationProvided": "O servidor não fornece nenhuma informação válida de contato", + "@noContactInformationProvided": {}, + "contactServerAdmin": "Contatar o administrador do servidor", + "@contactServerAdmin": {}, + "contactServerSecurity": "Contatar a segurança do servidor", + "@contactServerSecurity": {}, + "supportPage": "Página de ajuda", + "@supportPage": {}, + "italicText": "Texto em itálico", + "@italicText": {}, + "strikeThrough": "Risco", + "@strikeThrough": {}, + "appWantsToUseForLogin": "Usar '{server}' para conectar", + "@appWantsToUseForLogin": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "open": "Abrir", + "@open": {}, + "roomNotificationSettings": "Configurações de notificações de sala", + "@roomNotificationSettings": {}, + "userSpecificNotificationSettings": "Configurações de notificações específicas ao usuário", + "@userSpecificNotificationSettings": {}, + "otherNotificationSettings": "Configurações de outras notificações", + "@otherNotificationSettings": {}, + "notificationRuleContainsUserName": "Contém o nome de usuário", + "@notificationRuleContainsUserName": {}, + "notificationRuleSuppressNotices": "Omitir mensagens automáticas", + "@notificationRuleSuppressNotices": {}, + "notificationRuleInviteForMe": "Convite para mim", + "@notificationRuleInviteForMe": {}, + "notificationRuleMemberEventDescription": "Omite todas as notificações de eventos de membro.", + "@notificationRuleMemberEventDescription": {}, + "notificationRuleIsUserMention": "Menção de usuário", + "@notificationRuleIsUserMention": {}, + "notificationRuleContainsDisplayNameDescription": "Notifica o usuário quando uma mensagem contém seu nome de exibição.", + "@notificationRuleContainsDisplayNameDescription": {}, + "notificationRuleCall": "Chamada", + "@notificationRuleCall": {}, + "sentVoiceMessage": "🎙️ {duration} - Mensagem de voz de {sender}", + "@sentVoiceMessage": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "duration": { + "type": "String" + } + } + }, + "crossVerifiedDevices": "Dispositivos verificados por ambos", + "@crossVerifiedDevices": {}, + "takeAPhoto": "Tirar uma foto", + "@takeAPhoto": {}, + "youHaveKnocked": "Bateram na sua porta", + "@youHaveKnocked": {}, + "changeGeneralChatSettings": "Alterar configurações gerais de conversa", + "@changeGeneralChatSettings": {}, + "inviteOtherUsers": "Convidar outros usuários para esta conversa", + "@inviteOtherUsers": {}, + "adminLevel": "{level} - Administrador", + "@adminLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "changeTheChatPermissions": "Alterar as permissões da conversa", + "@changeTheChatPermissions": {}, + "changeTheVisibilityOfChatHistory": "Alterar a visibilidade do histórico de conversa", + "@changeTheVisibilityOfChatHistory": {}, + "sendImages": "Enviar {count} imagens", + "@sendImages": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "goToSpace": "Ir ao espaço: {space}", + "@goToSpace": { + "type": "String", + "space": {} + }, + "discoverHomeservers": "Explorar servidores", + "@discoverHomeservers": {}, + "loginWithMatrixId": "Conectar com ID Matrix", + "@loginWithMatrixId": {}, + "calculatingFileSize": "Calculando o tamanho do arquivo...", + "@calculatingFileSize": {}, + "compressVideo": "Comprimindo o vídeo...", + "@compressVideo": {}, + "generatingVideoThumbnail": "Gerando a miniatura do vídeo...", + "@generatingVideoThumbnail": {}, + "oneOfYourDevicesIsNotVerified": "Um dos seus dispositivos não está verificado", + "@oneOfYourDevicesIsNotVerified": {}, + "serverLimitReached": "Limite do servidor alcançado! Esperando {seconds} segundos...", + "@serverLimitReached": { + "type": "integer", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "manageAccount": "Gerenciar conta", + "@manageAccount": {}, + "newChatRequest": "📩 Nova solicitação de conversa", + "@newChatRequest": {}, + "userLevel": "{level} - Usuário", + "@userLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "enterNewChat": "Abrir a conversa nova", + "@enterNewChat": {}, + "notificationRuleSuppressNoticesDescription": "Omite notificações de clientes automatizados, como bots.", + "@notificationRuleSuppressNoticesDescription": {}, + "notificationRuleInviteForMeDescription": "Notifica o usuário quando for convidado para uma sala.", + "@notificationRuleInviteForMeDescription": {}, + "approve": "Aprovar", + "@approve": {}, + "homeserverDescription": "Todos os seus dados são armazenados no servidor, parecido como um provedor de e-mail. Pode escolher qual servidor quer usar, enquanto ainda conversa com todo mundo. Aprenda mais em https://matrix.org.", + "@homeserverDescription": {}, + "notificationRuleEncryptedRoomOneToOne": "Sala criptografada de 2 pessoas", + "@notificationRuleEncryptedRoomOneToOne": {}, + "pleaseWaitUntilInvited": "Aguarde até que alguém da sala te convide.", + "@pleaseWaitUntilInvited": {}, + "waitingForServer": "Aguardando o servidor...", + "@waitingForServer": {}, + "notificationRuleEncryptedDescription": "Notifica o usuário de mensagens em salas criptografadas.", + "@notificationRuleEncryptedDescription": {}, + "sendRoomNotifications": "Enviar notificações de @room", + "@sendRoomNotifications": {}, + "sendingAttachmentCountOfCount": "Enviando o {index}° anexo de {length}...", + "@sendingAttachmentCountOfCount": { + "type": "integer", + "placeholders": { + "index": { + "type": "int" + }, + "length": { + "type": "int" + } + } + }, + "welcomeText": "Olá! 👋 Este é o FluffyChat. Você pode se conectar com qualquer servidor que é compatível com o https://matrix.org. E então conversar com qualquer um. É uma rede gigante e descentralizada de conversa!", + "@welcomeText": {}, + "notificationRuleRoomServerAclDescription": "Omite notificações de listas de controle de acesso de servidor de uma sala (ACL).", + "@notificationRuleRoomServerAclDescription": {}, + "appIntroduction": "O FluffyChat permite que você converse com os seus amigos entre mensageiros diferentes. Aprenda mais em https://matrix.org ou toque em *Continuar*.", + "@appIntroduction": {}, + "notificationRuleIsUserMentionDescription": "Notifica o usuário quando é mencionado diretamente em uma mensagem.", + "@notificationRuleIsUserMentionDescription": {}, + "notificationRuleSuppressEdits": "Omitir edições", + "@notificationRuleSuppressEdits": {}, + "shareKeysWithDescription": "Quais dispositivos devem ser confiados para que possam ler suas mensagens em conversas criptografas?", + "@shareKeysWithDescription": {}, + "allDevices": "Todos os dispositivos", + "@allDevices": {}, + "aboutHomeserver": "Sobre {homeserver}", + "@aboutHomeserver": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "swipeRightToLeftToReply": "Deslizar da direita pra esquerda para responder", + "@swipeRightToLeftToReply": {}, + "verifiedDevicesOnly": "Somente dispositivos verificados", + "@verifiedDevicesOnly": {}, + "boldText": "Texto em negrito", + "@boldText": {}, + "recordAVideo": "Gravar um vídeo", + "@recordAVideo": {}, + "optionalMessage": "(Opcional) mensagem...", + "@optionalMessage": {}, + "joinedChats": "Conversas que entrou", + "@joinedChats": {}, + "notSupportedOnThisDevice": "Não há suporte neste dispositivo", + "@notSupportedOnThisDevice": {}, + "normalUser": "Usuário normal", + "@normalUser": {}, + "commandHint_roomupgrade": "Atualizar esta sala para a versão de sala especificada", + "@commandHint_roomupgrade": {}, + "countChatsAndCountParticipants": "{chats} conversas e {participants} participantes", + "@countChatsAndCountParticipants": { + "type": "String", + "placeholders": { + "chats": { + "type": "int" + }, + "participants": { + "type": "int" + } + } + }, + "noMoreChatsFound": "Mais nenhuma conversa foi encontrada...", + "@noMoreChatsFound": {}, + "noChatsFoundHere": "Nenhuma conversa encontrada aqui ainda. Inicie uma nova conversa com alguém usando o botão abaixo. ⤵️", + "@noChatsFoundHere": {}, + "space": "Espaço", + "@space": {}, + "spaces": "Espaços", + "@spaces": {}, + "moderatorLevel": "{level} - Moderador", + "@moderatorLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "changeTheDescriptionOfTheGroup": "Alterar a descrição da conversa", + "@changeTheDescriptionOfTheGroup": {}, + "chatPermissionsDescription": "Definir qual o nível de poder é necessário para certas ações nesta conversa. Os níveis de poder 0, 50, e 100 são normalmente para representar usuários, moderadores, e administradores, mas qualquer definição é possível.", + "@chatPermissionsDescription": {}, + "serverInformation": "Informações do servidor:", + "@serverInformation": {}, + "name": "Nome", + "@name": {}, + "version": "Versão", + "@version": {}, + "pleaseFillOut": "Por favor preencha", + "@pleaseFillOut": {}, + "addLink": "Adicionar link", + "@addLink": {}, + "notificationRuleRoomServerAcl": "ACL de servidores de sala", + "@notificationRuleRoomServerAcl": {}, + "notificationRuleCallDescription": "Notifica o usuário de chamadas.", + "@notificationRuleCallDescription": {}, + "notificationRuleRoomOneToOneDescription": "Notifica o usuário de mensagens em salas de duas pessoas.", + "@notificationRuleRoomOneToOneDescription": {}, + "notificationRuleMessage": "Mensagem", + "@notificationRuleMessage": {}, + "notificationRuleJitsi": "Jitsi", + "@notificationRuleJitsi": {}, + "notificationRuleJitsiDescription": "Notifica o usuário de eventos de widget do Jitsi.", + "@notificationRuleJitsiDescription": {}, + "notificationRuleServerAcl": "Omitir eventos de ACL de servidor", + "@notificationRuleServerAcl": {}, + "notificationRuleIsRoomMention": "Menção de sala", + "@notificationRuleIsRoomMention": {}, + "notificationRuleTombstoneDescription": "Notifica o usuário de mensagens de desativação de salas.", + "@notificationRuleTombstoneDescription": {}, + "notificationRuleReactionDescription": "Omite notificações de reações.", + "@notificationRuleReactionDescription": {}, + "commandHint_logout": "Desconecte-se do seu dispositivo atual", + "@commandHint_logout": {}, + "commandHint_logoutall": "Desconecte-se de todos os dispositivos ativos", + "@commandHint_logoutall": {}, + "displayNavigationRail": "Mostrar trilha de navegação em dispositivo móvel", + "@displayNavigationRail": {}, + "previous": "Anterior", + "@previous": {}, + "otherPartyNotLoggedIn": "A outra pessoa não tem nenhum dispositivo conectado no momento e portanto não consegue receber mensagens!", + "@otherPartyNotLoggedIn": {}, + "customReaction": "Reação personalizada", + "@customReaction": {}, + "moreEvents": "Mais eventos", + "@moreEvents": {}, + "declineInvitation": "Rejeitar convite", + "@declineInvitation": {} +} diff --git a/lib/l10n/intl_pt_PT.arb b/lib/l10n/intl_pt_PT.arb new file mode 100644 index 0000000..c6a01d3 --- /dev/null +++ b/lib/l10n/intl_pt_PT.arb @@ -0,0 +1,1710 @@ +{ + "repeatPassword": "Repete a palavra-passe", + "@repeatPassword": {}, + "about": "Acerca de", + "@about": { + "type": "String", + "placeholders": {} + }, + "accept": "Aceitar", + "@accept": { + "type": "String", + "placeholders": {} + }, + "acceptedTheInvitation": "{username} aceitou o convite", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "account": "Conta", + "@account": { + "type": "String", + "placeholders": {} + }, + "activatedEndToEndEncryption": "{username} ativou encriptação ponta-a-ponta", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "addEmail": "Adicionar correio eletrónico", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "addToSpace": "Adicionar ao espaço", + "@addToSpace": {}, + "admin": "Admin", + "@admin": { + "type": "String", + "placeholders": {} + }, + "alias": "alcunha", + "@alias": { + "type": "String", + "placeholders": {} + }, + "all": "Todos(as)", + "@all": { + "type": "String", + "placeholders": {} + }, + "allChats": "Todas as conversas", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "answeredTheCall": "{senderName} atendeu a chamada", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "anyoneCanJoin": "Qualquer pessoa pode entrar", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "archive": "Arquivo", + "@archive": { + "type": "String", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "Todos os visitantes podem entrar", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "Tens a certeza?", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "areYouSureYouWantToLogout": "Tens a certeza que queres sair?", + "@areYouSureYouWantToLogout": { + "type": "String", + "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": "String", + "placeholders": {} + }, + "askVerificationRequest": "Aceitar este pedido de verificação de {username}?", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "autoplayImages": "Automaticamente reproduzir autocolantes e emotes animados", + "@autoplayImages": { + "type": "String", + "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": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "badServerLoginTypesException": "O servidor suporta os tipos de início de sessão:\n{serverVersions}\nMas esta aplicação apenas suporta:\n{suportedVersions}", + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "banFromChat": "Banir da conversa", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "banned": "Banido(a)", + "@banned": { + "type": "String", + "placeholders": {} + }, + "bannedUser": "{username} baniu {targetName}", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "blockDevice": "Bloquear dispositivo", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "blocked": "Bloqueado", + "@blocked": { + "type": "String", + "placeholders": {} + }, + "botMessages": "Mensagens de robôs", + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "cancel": "Cancelar", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "cantOpenUri": "Não é possível abrir o URI {uri}", + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "changeDeviceName": "Alterar nome do dispositivo", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "changedTheChatPermissions": "{username} alterou as permissões da conversa", + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheDisplaynameTo": "{username} alterou o seu nome para: '{displayname}'", + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "changedTheGuestAccessRulesTo": "{username} alterou as regras de acesso de visitantes para: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheJoinRules": "{username} alterou as regras de entrada", + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheJoinRulesTo": "{username} alterou as regras de entrada para: {joinRules}", + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "changedTheProfileAvatar": "{username} alterou o seu avatar", + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomAliases": "{username} alterou as alcunhas da sala", + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomInvitationLink": "{username} alterou a ligação de convite", + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changePassword": "Alterar palavra-passe", + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "changeTheHomeserver": "Alterar o servidor", + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "changeTheme": "Alterar o teu estilo", + "@changeTheme": { + "type": "String", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "Alterar o nome do grupo", + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "changeYourAvatar": "Alterar o teu avatar", + "@changeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "channelCorruptedDecryptError": "A encriptação foi corrompida", + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "chat": "Conversa", + "@chat": { + "type": "String", + "placeholders": {} + }, + "yourChatBackupHasBeenSetUp": "A cópia de segurança foi configurada.", + "@yourChatBackupHasBeenSetUp": {}, + "chatBackup": "Cópia de segurança de conversas", + "@chatBackup": { + "type": "String", + "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": "String", + "placeholders": {} + }, + "chatDetails": "Detalhes de conversa", + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "chatHasBeenAddedToThisSpace": "A conversa foi adicionada a este espaço", + "@chatHasBeenAddedToThisSpace": {}, + "chats": "Conversas", + "@chats": { + "type": "String", + "placeholders": {} + }, + "chooseAStrongPassword": "Escolhe uma palavra-passe forte", + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "clearArchive": "Limpar arquivo", + "@clearArchive": {}, + "close": "Fechar", + "@close": { + "type": "String", + "placeholders": {} + }, + "commandHint_ban": "Banir o utilizador dado desta sala", + "@commandHint_ban": { + "type": "String", + "description": "Usage hint for the command /ban" + }, + "commandHint_html": "Enviar texto formatado com HTML", + "@commandHint_html": { + "type": "String", + "description": "Usage hint for the command /html" + }, + "commandHint_invite": "Convidar o utilizador dado a esta sala", + "@commandHint_invite": { + "type": "String", + "description": "Usage hint for the command /invite" + }, + "commandHint_join": "Entrar na sala dada", + "@commandHint_join": { + "type": "String", + "description": "Usage hint for the command /join" + }, + "commandHint_kick": "Remover o utilizador dado desta sala", + "@commandHint_kick": { + "type": "String", + "description": "Usage hint for the command /kick" + }, + "commandHint_leave": "Sair desta sala", + "@commandHint_leave": { + "type": "String", + "description": "Usage hint for the command /leave" + }, + "commandHint_me": "Descreve-te", + "@commandHint_me": { + "type": "String", + "description": "Usage hint for the command /me" + }, + "commandHint_myroomavatar": "Definir a tua imagem para esta sala (por mxc-uri)", + "@commandHint_myroomavatar": { + "type": "String", + "description": "Usage hint for the command /myroomavatar" + }, + "commandHint_myroomnick": "Definir o teu nome para esta sala", + "@commandHint_myroomnick": { + "type": "String", + "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": "String", + "description": "Usage hint for the command /op" + }, + "commandHint_plain": "Enviar texto não formatado", + "@commandHint_plain": { + "type": "String", + "description": "Usage hint for the command /plain" + }, + "commandHint_react": "Enviar respostas como reações", + "@commandHint_react": { + "type": "String", + "description": "Usage hint for the command /react" + }, + "commandHint_send": "Enviar texto", + "@commandHint_send": { + "type": "String", + "description": "Usage hint for the command /send" + }, + "commandHint_unban": "Perdoar o utilizador dado", + "@commandHint_unban": { + "type": "String", + "description": "Usage hint for the command /unban" + }, + "commandInvalid": "Comando inválido", + "@commandInvalid": { + "type": "String" + }, + "commandMissing": "{command} não é um comando.", + "@commandMissing": { + "type": "String", + "placeholders": { + "command": { + "type": "String" + } + }, + "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": "String", + "placeholders": {} + }, + "compareNumbersMatch": "Compara e certifica-te que os números que se seguem correspondem aos do outro dispositivo:", + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "configureChat": "Configurar conversa", + "@configureChat": { + "type": "String", + "placeholders": {} + }, + "confirm": "Confirmar", + "@confirm": { + "type": "String", + "placeholders": {} + }, + "connect": "Ligar", + "@connect": { + "type": "String", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "O contacto foi convidado para o grupo", + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "containsDisplayName": "Contém nome de exibição", + "@containsDisplayName": { + "type": "String", + "placeholders": {} + }, + "containsUserName": "Contém nome de utilizador", + "@containsUserName": { + "type": "String", + "placeholders": {} + }, + "contentHasBeenReported": "O conteúdo foi denunciado aos admins do servidor", + "@contentHasBeenReported": { + "type": "String", + "placeholders": {} + }, + "copiedToClipboard": "Copiado para a área de transferência", + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "copy": "Copiar", + "@copy": { + "type": "String", + "placeholders": {} + }, + "copyToClipboard": "Copiar para a área de transferência", + "@copyToClipboard": { + "type": "String", + "placeholders": {} + }, + "couldNotDecryptMessage": "Não foi possível desencriptar mensagem: {error}", + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "countParticipants": "{count} participantes", + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "create": "Criar", + "@create": { + "type": "String", + "placeholders": {} + }, + "createdTheChat": "{username} criou a conversa", + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "createNewSpace": "Novo espaço", + "@createNewSpace": { + "type": "String", + "placeholders": {} + }, + "currentlyActive": "Ativo(a) agora", + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "darkTheme": "Escuro", + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "dateAndTimeOfDay": "{date} às {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "dateWithoutYear": "{day}-{month}", + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "dateWithYear": "{day}-{month}-{year}", + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "deactivateAccountWarning": "Isto irá desativar a tua conta. Não é reversível! Tens a certeza?", + "@deactivateAccountWarning": { + "type": "String", + "placeholders": {} + }, + "defaultPermissionLevel": "Nível de permissão normal", + "@defaultPermissionLevel": { + "type": "String", + "placeholders": {} + }, + "delete": "Eliminar", + "@delete": { + "type": "String", + "placeholders": {} + }, + "deleteAccount": "Eliminar conta", + "@deleteAccount": { + "type": "String", + "placeholders": {} + }, + "deleteMessage": "Eliminar mensagem", + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "device": "Dispositivo", + "@device": { + "type": "String", + "placeholders": {} + }, + "deviceId": "ID de dispositivo", + "@deviceId": { + "type": "String", + "placeholders": {} + }, + "devices": "Dispositivos", + "@devices": { + "type": "String", + "placeholders": {} + }, + "directChats": "Conversas diretas", + "@directChats": { + "type": "String", + "placeholders": {} + }, + "displaynameHasBeenChanged": "Nome de exibição alterado", + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "downloadFile": "Descarregar ficheiro", + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "edit": "Editar", + "@edit": { + "type": "String", + "placeholders": {} + }, + "editBlockedServers": "Editar servidores bloqueados", + "@editBlockedServers": { + "type": "String", + "placeholders": {} + }, + "editDisplayname": "Editar nome de exibição", + "@editDisplayname": { + "type": "String", + "placeholders": {} + }, + "editRoomAliases": "Editar alcunhas da sala", + "@editRoomAliases": { + "type": "String", + "placeholders": {} + }, + "editRoomAvatar": "Editar avatar da sala", + "@editRoomAvatar": { + "type": "String", + "placeholders": {} + }, + "emoteExists": "Emote já existente!", + "@emoteExists": { + "type": "String", + "placeholders": {} + }, + "emoteInvalid": "Código de emote inválido!", + "@emoteInvalid": { + "type": "String", + "placeholders": {} + }, + "emotePacks": "Pacotes de emotes da sala", + "@emotePacks": { + "type": "String", + "placeholders": {} + }, + "emoteSettings": "Configurações de emotes", + "@emoteSettings": { + "type": "String", + "placeholders": {} + }, + "emoteShortcode": "Código do emote", + "@emoteShortcode": { + "type": "String", + "placeholders": {} + }, + "emoteWarnNeedToPick": "Precisas de escolher um código de emote e uma imagem!", + "@emoteWarnNeedToPick": { + "type": "String", + "placeholders": {} + }, + "emptyChat": "Conversa vazia", + "@emptyChat": { + "type": "String", + "placeholders": {} + }, + "enableEmotesGlobally": "Ativar pacote de emotes globalmente", + "@enableEmotesGlobally": { + "type": "String", + "placeholders": {} + }, + "enableEncryption": "Ativar encriptação", + "@enableEncryption": { + "type": "String", + "placeholders": {} + }, + "enableEncryptionWarning": "Nunca mais poderás desativar a encriptação. Tens a certeza?", + "@enableEncryptionWarning": { + "type": "String", + "placeholders": {} + }, + "encrypted": "Encriptada", + "@encrypted": { + "type": "String", + "placeholders": {} + }, + "encryption": "Encriptação", + "@encryption": { + "type": "String", + "placeholders": {} + }, + "encryptionNotEnabled": "A encriptação não está ativada", + "@encryptionNotEnabled": { + "type": "String", + "placeholders": {} + }, + "endedTheCall": "{senderName} terminou a chamada", + "@endedTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "enterAnEmailAddress": "Insere um endereço de correio eletrónico", + "@enterAnEmailAddress": { + "type": "String", + "placeholders": {} + }, + "homeserver": "Servidor", + "@homeserver": {}, + "enterYourHomeserver": "Insere o teu servidor", + "@enterYourHomeserver": { + "type": "String", + "placeholders": {} + }, + "errorObtainingLocation": "Erro ao obter localização: {error}", + "@errorObtainingLocation": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "everythingReady": "Tudo a postos!", + "@everythingReady": { + "type": "String", + "placeholders": {} + }, + "extremeOffensive": "Extremamente ofensivo", + "@extremeOffensive": { + "type": "String", + "placeholders": {} + }, + "fileName": "Nome do ficheiro", + "@fileName": { + "type": "String", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "String", + "placeholders": {} + }, + "fontSize": "Tamanho da letra", + "@fontSize": { + "type": "String", + "placeholders": {} + }, + "forward": "Reencaminhar", + "@forward": { + "type": "String", + "placeholders": {} + }, + "goToTheNewRoom": "Ir para a nova sala", + "@goToTheNewRoom": { + "type": "String", + "placeholders": {} + }, + "group": "Grupo", + "@group": { + "type": "String", + "placeholders": {} + }, + "groupIsPublic": "O grupo é público", + "@groupIsPublic": { + "type": "String", + "placeholders": {} + }, + "groups": "Grupos", + "@groups": { + "type": "String", + "placeholders": {} + }, + "groupWith": "Grupo com {displayname}", + "@groupWith": { + "type": "String", + "placeholders": { + "displayname": { + "type": "String" + } + } + }, + "guestsAreForbidden": "São proibidos visitantes", + "@guestsAreForbidden": { + "type": "String", + "placeholders": {} + }, + "guestsCanJoin": "Podem entrar visitantes", + "@guestsCanJoin": { + "type": "String", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "{username} revogou o convite para {targetName}", + "@hasWithdrawnTheInvitationFor": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "help": "Ajuda", + "@help": { + "type": "String", + "placeholders": {} + }, + "hideRedactedEvents": "Esconder eventos eliminados", + "@hideRedactedEvents": { + "type": "String", + "placeholders": {} + }, + "hideUnknownEvents": "Esconder eventos desconhecidos", + "@hideUnknownEvents": { + "type": "String", + "placeholders": {} + }, + "howOffensiveIsThisContent": "Quão ofensivo é este conteúdo?", + "@howOffensiveIsThisContent": { + "type": "String", + "placeholders": {} + }, + "id": "ID", + "@id": { + "type": "String", + "placeholders": {} + }, + "identity": "Identidade", + "@identity": { + "type": "String", + "placeholders": {} + }, + "ignore": "Ignorar", + "@ignore": { + "type": "String", + "placeholders": {} + }, + "ignoredUsers": "Utilizadores ignorados", + "@ignoredUsers": { + "type": "String", + "placeholders": {} + }, + "iHaveClickedOnLink": "Eu cliquei na ligação", + "@iHaveClickedOnLink": { + "type": "String", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "Senha ou chave de recuperação incorretos", + "@incorrectPassphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "inoffensive": "Inofensivo", + "@inoffensive": { + "type": "String", + "placeholders": {} + }, + "inviteContact": "Convidar contacto", + "@inviteContact": { + "type": "String", + "placeholders": {} + }, + "inviteContactToGroup": "Convidar contacto para {groupName}", + "@inviteContactToGroup": { + "type": "String", + "placeholders": { + "groupName": { + "type": "String" + } + } + }, + "invited": "Convidado(a)", + "@invited": { + "type": "String", + "placeholders": {} + }, + "invitedUser": "{username} convidou {targetName}", + "@invitedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "invitedUsersOnly": "Utilizadores(as) convidados(as) apenas", + "@invitedUsersOnly": { + "type": "String", + "placeholders": {} + }, + "inviteForMe": "Convite para mim", + "@inviteForMe": { + "type": "String", + "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": "String", + "placeholders": { + "username": { + "type": "String" + }, + "link": { + "type": "String" + } + } + }, + "isTyping": "está a escrever…", + "@isTyping": { + "type": "String", + "placeholders": {} + }, + "joinedTheChat": "{username} entrou na conversa", + "@joinedTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "joinRoom": "Entrar na sala", + "@joinRoom": { + "type": "String", + "placeholders": {} + }, + "kicked": "{username} expulsou {targetName}", + "@kicked": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickedAndBanned": "{username} expulsou e baniu {targetName}", + "@kickedAndBanned": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickFromChat": "Expulsar da conversa", + "@kickFromChat": { + "type": "String", + "placeholders": {} + }, + "lastActiveAgo": "Ativo(a) pela última vez: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "String", + "placeholders": { + "localizedTimeShort": { + "type": "String" + } + } + }, + "leave": "Sair", + "@leave": { + "type": "String", + "placeholders": {} + }, + "leftTheChat": "Saiu da conversa", + "@leftTheChat": { + "type": "String", + "placeholders": {} + }, + "license": "Licença", + "@license": { + "type": "String", + "placeholders": {} + }, + "lightTheme": "Claro", + "@lightTheme": { + "type": "String", + "placeholders": {} + }, + "loadCountMoreParticipants": "Carregar mais {count} participantes", + "@loadCountMoreParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "loadingPleaseWait": "A carregar... Por favor aguarde.", + "@loadingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "loadMore": "Carregar mais…", + "@loadMore": { + "type": "String", + "placeholders": {} + }, + "locationDisabledNotice": "Os serviços de localização estão desativados. Por favor, ativa-os para poder partilhar a sua localização.", + "@locationDisabledNotice": { + "type": "String", + "placeholders": {} + }, + "locationPermissionDeniedNotice": "Permissão de localização recusada. Por favor, concede permissão para poderes partilhar a tua posição.", + "@locationPermissionDeniedNotice": { + "type": "String", + "placeholders": {} + }, + "login": "Entrar", + "@login": { + "type": "String", + "placeholders": {} + }, + "logInTo": "Entrar em {homeserver}", + "@logInTo": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "logout": "Sair", + "@logout": { + "type": "String", + "placeholders": {} + }, + "memberChanges": "Alterações de membros", + "@memberChanges": { + "type": "String", + "placeholders": {} + }, + "mention": "Mencionar", + "@mention": { + "type": "String", + "placeholders": {} + }, + "messages": "Mensagens", + "@messages": { + "type": "String", + "placeholders": {} + }, + "moderator": "Moderador", + "@moderator": { + "type": "String", + "placeholders": {} + }, + "muteChat": "Silenciar conversa", + "@muteChat": { + "type": "String", + "placeholders": {} + }, + "needPantalaimonWarning": "Por favor,", + "@needPantalaimonWarning": { + "type": "String", + "placeholders": {} + }, + "newChat": "Nova conversa", + "@newChat": { + "type": "String", + "placeholders": {} + }, + "newMessageInFluffyChat": "Nova mensagem no FluffyChat", + "@newMessageInFluffyChat": { + "type": "String", + "placeholders": {} + }, + "newVerificationRequest": "Novo pedido de verificação!", + "@newVerificationRequest": { + "type": "String", + "placeholders": {} + }, + "next": "Próximo", + "@next": { + "type": "String", + "placeholders": {} + }, + "no": "Não", + "@no": { + "type": "String", + "placeholders": {} + }, + "noConnectionToTheServer": "Nenhuma ligação ao servidor", + "@noConnectionToTheServer": { + "type": "String", + "placeholders": {} + }, + "noEmotesFound": "Nenhuns emotes encontrados. 😕", + "@noEmotesFound": { + "type": "String", + "placeholders": {} + }, + "noEncryptionForPublicRooms": "Só podes ativar a encriptação quando a sala não for publicamente acessível.", + "@noEncryptionForPublicRooms": { + "type": "String", + "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": "String", + "placeholders": {} + }, + "noMatrixServer": "{server1} não é um servidor Matrix, usar {server2}?", + "@noMatrixServer": { + "type": "String", + "placeholders": { + "server1": { + "type": "String" + }, + "server2": { + "type": "String" + } + } + }, + "none": "Nenhum", + "@none": { + "type": "String", + "placeholders": {} + }, + "changedTheChatAvatar": "{username} alterou o avatar da conversa", + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheHistoryVisibilityTo": "{username} alterou a visibilidade do histórico para: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheChatDescriptionTo": "{username} alterou a descrição da conversa para: '{description}'", + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "changedTheChatNameTo": "{username} alterou o nome da conversa para: '{chatname}'", + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "changedTheGuestAccessRules": "{username} alterou as regras de acesso de visitantes", + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheHistoryVisibility": "{username} alterou a visibilidade do histórico", + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sendAMessage": "Enviar a mensagem", + "@sendAMessage": { + "type": "String", + "placeholders": {} + }, + "sendAudio": "Enviar áudio", + "@sendAudio": { + "type": "String", + "placeholders": {} + }, + "sendAsText": "Enviar como texto", + "@sendAsText": { + "type": "String" + }, + "send": "Enviar", + "@send": { + "type": "String", + "placeholders": {} + }, + "appLock": "Bloqueio da aplicação", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "Ainda não adicionaste uma forma de recuperar a tua palavra-passe.", + "@noPasswordRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "noPermission": "Sem permissão", + "@noPermission": { + "type": "String", + "placeholders": {} + }, + "noRoomsFound": "Não foram encontradas nenhumas salas…", + "@noRoomsFound": { + "type": "String", + "placeholders": {} + }, + "notifications": "Notificações", + "@notifications": { + "type": "String", + "placeholders": {} + }, + "notificationsEnabledForThisAccount": "Notificações ativadas para esta conta", + "@notificationsEnabledForThisAccount": { + "type": "String", + "placeholders": {} + }, + "numUsersTyping": "Estão {count} utilizadores(as) a escrever…", + "@numUsersTyping": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "obtainingLocation": "A obter localização…", + "@obtainingLocation": { + "type": "String", + "placeholders": {} + }, + "offensive": "Offensivo", + "@offensive": { + "type": "String", + "placeholders": {} + }, + "offline": "Offline", + "@offline": { + "type": "String", + "placeholders": {} + }, + "ok": "ok", + "@ok": { + "type": "String", + "placeholders": {} + }, + "online": "Online", + "@online": { + "type": "String", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "A cópia de segurança online de chaves está ativada", + "@onlineKeyBackupEnabled": { + "type": "String", + "placeholders": {} + }, + "oopsPushError": "Ups! Infelizmente, ocorreu um erro ao configurar as notificações instantâneas.", + "@oopsPushError": { + "type": "String", + "placeholders": {} + }, + "oopsSomethingWentWrong": "Ups, algo correu mal…", + "@oopsSomethingWentWrong": { + "type": "String", + "placeholders": {} + }, + "openAppToReadMessages": "Abrir aplicação para ler mensagens", + "@openAppToReadMessages": { + "type": "String", + "placeholders": {} + }, + "openCamera": "Abrir câmara", + "@openCamera": { + "type": "String", + "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": "String", + "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": "String", + "placeholders": {} + }, + "participant": "Participante", + "@participant": { + "type": "String", + "placeholders": {} + }, + "passphraseOrKey": "senha ou chave de recuperação", + "@passphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "password": "Palavra-passe", + "@password": { + "type": "String", + "placeholders": {} + }, + "passwordForgotten": "Palavra-passe esquecida", + "@passwordForgotten": { + "type": "String", + "placeholders": {} + }, + "passwordHasBeenChanged": "A palavra-passe foi alterada", + "@passwordHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "passwordRecovery": "Recuperação de palavra-passe", + "@passwordRecovery": { + "type": "String", + "placeholders": {} + }, + "people": "Pessoas", + "@people": { + "type": "String", + "placeholders": {} + }, + "pickImage": "Escolher uma imagem", + "@pickImage": { + "type": "String", + "placeholders": {} + }, + "pin": "Afixar", + "@pin": { + "type": "String", + "placeholders": {} + }, + "play": "Reproduzir {fileName}", + "@play": { + "type": "String", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "pleaseChoose": "Por favor, escolhe", + "@pleaseChoose": { + "type": "String", + "placeholders": {} + }, + "pleaseChooseAPasscode": "Por favor, escolhe um código-passe", + "@pleaseChooseAPasscode": { + "type": "String", + "placeholders": {} + }, + "pleaseClickOnLink": "Por favor, clica na ligação no correio eletrónico e depois continua.", + "@pleaseClickOnLink": { + "type": "String", + "placeholders": {} + }, + "pleaseEnter4Digits": "Por favor, insere 4 dígitos ou deixa vazio para desativar o bloqueio da aplicação.", + "@pleaseEnter4Digits": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPassword": "Por favor, insere a tua palavra-passe", + "@pleaseEnterYourPassword": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPin": "Por favor, insere o teu código", + "@pleaseEnterYourPin": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourUsername": "Por favor, insere o teu nome de utilizador", + "@pleaseEnterYourUsername": { + "type": "String", + "placeholders": {} + }, + "pleaseFollowInstructionsOnWeb": "Por favor, segue as instruções no website e clica em \"Seguinte\".", + "@pleaseFollowInstructionsOnWeb": { + "type": "String", + "placeholders": {} + }, + "privacy": "Privacidade", + "@privacy": { + "type": "String", + "placeholders": {} + }, + "publicRooms": "Salas públicas", + "@publicRooms": { + "type": "String", + "placeholders": {} + }, + "reason": "Razão", + "@reason": { + "type": "String", + "placeholders": {} + }, + "redactedAnEvent": "{username} eliminou um evento", + "@redactedAnEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "recording": "A gravar", + "@recording": { + "type": "String", + "placeholders": {} + }, + "redactMessage": "Eliminar mensagem", + "@redactMessage": { + "type": "String", + "placeholders": {} + }, + "register": "Registar", + "@register": { + "type": "String", + "placeholders": {} + }, + "reject": "Rejeitar", + "@reject": { + "type": "String", + "placeholders": {} + }, + "rejectedTheInvitation": "{username} rejeitou o convite", + "@rejectedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "rejoin": "Reentrar", + "@rejoin": { + "type": "String", + "placeholders": {} + }, + "remove": "Remover", + "@remove": { + "type": "String", + "placeholders": {} + }, + "removeAllOtherDevices": "Remover todos os outros dispositivos", + "@removeAllOtherDevices": { + "type": "String", + "placeholders": {} + }, + "removedBy": "Removido por {username}", + "@removedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "removeDevice": "Remover dispositivo", + "@removeDevice": { + "type": "String", + "placeholders": {} + }, + "unbanFromChat": "Perdoar nesta conversa", + "@unbanFromChat": { + "type": "String", + "placeholders": {} + }, + "removeYourAvatar": "Remover o teu avatar", + "@removeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "replaceRoomWithNewerVersion": "Substituir sala com versão mais recente", + "@replaceRoomWithNewerVersion": { + "type": "String", + "placeholders": {} + }, + "reply": "Responder", + "@reply": { + "type": "String", + "placeholders": {} + }, + "reportMessage": "Reportar mensagem", + "@reportMessage": { + "type": "String", + "placeholders": {} + }, + "requestPermission": "Pedir permissão", + "@requestPermission": { + "type": "String", + "placeholders": {} + }, + "roomHasBeenUpgraded": "A sala foi atualizada", + "@roomHasBeenUpgraded": { + "type": "String", + "placeholders": {} + }, + "roomVersion": "Versão da sala", + "@roomVersion": { + "type": "String", + "placeholders": {} + }, + "saveFile": "Guardar ficheiro", + "@saveFile": { + "type": "String", + "placeholders": {} + }, + "search": "Procurar", + "@search": { + "type": "String", + "placeholders": {} + }, + "security": "Segurança", + "@security": { + "type": "String", + "placeholders": {} + }, + "seenByUser": "Visto por {username}", + "@seenByUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sendFile": "Enviar ficheiro", + "@sendFile": { + "type": "String", + "placeholders": {} + }, + "sendImage": "Enviar imagem", + "@sendImage": { + "type": "String", + "placeholders": {} + }, + "sendMessages": "Enviar mensagens", + "@sendMessages": { + "type": "String", + "placeholders": {} + }, + "sendOriginal": "Enviar original", + "@sendOriginal": { + "type": "String", + "placeholders": {} + }, + "sendSticker": "Enviar autocolante", + "@sendSticker": { + "type": "String", + "placeholders": {} + }, + "sendVideo": "Enviar vídeo", + "@sendVideo": { + "type": "String", + "placeholders": {} + }, + "sentAFile": "{username} enviar um ficheiro", + "@sentAFile": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAnAudio": "{username} enviar um áudio", + "@sentAnAudio": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAPicture": "{username} enviar uma imagem", + "@sentAPicture": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentASticker": "{username} enviou um autocolante", + "@sentASticker": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAVideo": "{username} enviou um vídeo", + "@sentAVideo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "commandHint_clearcache": "Limpar cache", + "@commandHint_clearcache": { + "type": "String", + "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": "String", + "description": "Usage hint for the command /create" + }, + "commandHint_discardsession": "Descartar sessão", + "@commandHint_discardsession": { + "type": "String", + "description": "Usage hint for the command /discardsession" + }, + "commandHint_dm": "Iniciar uma conversa direta\nUsa --no-encryption para desativar a encriptação", + "@commandHint_dm": { + "type": "String", + "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": {} +} diff --git a/lib/l10n/intl_ro.arb b/lib/l10n/intl_ro.arb new file mode 100644 index 0000000..4fde711 --- /dev/null +++ b/lib/l10n/intl_ro.arb @@ -0,0 +1,2512 @@ +{ + "@@last_modified": "2021-08-14 12:41:09.918296", + "about": "Despre", + "@about": { + "type": "String", + "placeholders": {} + }, + "accept": "Accept", + "@accept": { + "type": "String", + "placeholders": {} + }, + "acceptedTheInvitation": "{username} a aceptat invitați", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "account": "Cont", + "@account": { + "type": "String", + "placeholders": {} + }, + "activatedEndToEndEncryption": "{username} a activat criptarea end-to-end", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "admin": "Administrator", + "@admin": { + "type": "String", + "placeholders": {} + }, + "alias": "poreclă", + "@alias": { + "type": "String", + "placeholders": {} + }, + "answeredTheCall": "{senderName} a acceptat apelul", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "anyoneCanJoin": "Oricine se poate alătura", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "archive": "Arhivă", + "@archive": { + "type": "String", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "Vizitatorii \"guest\" se pot alătura", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "Ești sigur?", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "askSSSSSign": "Pentru a putea conecta cealaltă persoană, te rog introdu parola sau cheia ta de recuperare.", + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "askVerificationRequest": "Accepți cererea de verificare de la {username}?", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "banFromChat": "Interzis din conversație", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "banned": "Interzis", + "@banned": { + "type": "String", + "placeholders": {} + }, + "bannedUser": "{username} a interzis pe {targetName}", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "blockDevice": "Blochează dispozitiv", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "cancel": "Anulează", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "changeDeviceName": "Schimbă numele dispozitiv", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "changedTheChatAvatar": "{username} a schimbat poza conversați", + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheChatDescriptionTo": "{username} a schimbat descrierea grupului în '{description}'", + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "changedTheChatNameTo": "{username} a schimbat porecla în '{chatname}'", + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "commandHint_unban": "Dezinterziceți utilizatorul ales din această cameră", + "@commandHint_unban": { + "type": "String", + "description": "Usage hint for the command /unban" + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "deviceId": "ID-ul Dispozitiv", + "@deviceId": { + "type": "String", + "placeholders": {} + }, + "devices": "Dispozitive", + "@devices": { + "type": "String", + "placeholders": {} + }, + "directChats": "Chaturi directe", + "@directChats": { + "type": "String", + "placeholders": {} + }, + "endedTheCall": "{senderName} a terminat apelul", + "@endedTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "enterYourHomeserver": "Introduceți homeserverul vostru", + "@enterYourHomeserver": { + "type": "String", + "placeholders": {} + }, + "groupWith": "Grup cu {displayname}", + "@groupWith": { + "type": "String", + "placeholders": { + "displayname": { + "type": "String" + } + } + }, + "howOffensiveIsThisContent": "Cât de ofensiv este acest conținut?", + "@howOffensiveIsThisContent": { + "type": "String", + "placeholders": {} + }, + "kickFromChat": "Dați afară din chat", + "@kickFromChat": { + "type": "String", + "placeholders": {} + }, + "rejoin": "Reintrați", + "@rejoin": { + "type": "String", + "placeholders": {} + }, + "sentCallInformations": "{senderName} a trimis informație de apel", + "@sentCallInformations": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "showPassword": "Afișați parola", + "@showPassword": { + "type": "String", + "placeholders": {} + }, + "no": "Nu", + "@no": { + "type": "String", + "placeholders": {} + }, + "sendMessages": "Trimiteți mesaje", + "@sendMessages": { + "type": "String", + "placeholders": {} + }, + "submit": "Trimiteți", + "@submit": { + "type": "String", + "placeholders": {} + }, + "unreadChats": "{unreadCount, plural, =1{Un chat necitit} other{{unreadCount} chaturi necitite}}", + "@unreadChats": { + "type": "String", + "placeholders": { + "unreadCount": { + "type": "int" + } + } + }, + "verifySuccess": "A reușit verificarea!", + "@verifySuccess": { + "type": "String", + "placeholders": {} + }, + "voiceMessage": "Mesaj vocal", + "@voiceMessage": { + "type": "String", + "placeholders": {} + }, + "wallpaper": "Imagine de fundal", + "@wallpaper": { + "type": "String", + "placeholders": {} + }, + "reactedWith": "{sender} a reacționat cu {reaction}", + "@reactedWith": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "reaction": { + "type": "String" + } + } + }, + "changePassword": "Schimbați parola", + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "next": "Următor", + "@next": { + "type": "String", + "placeholders": {} + }, + "noConnectionToTheServer": "Fără conexiune la server", + "@noConnectionToTheServer": { + "type": "String", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "Nu ați adăugat încă nici un mod de recuperare pentru parola voastră.", + "@noPasswordRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "notifications": "Notificări", + "@notifications": { + "type": "String", + "placeholders": {} + }, + "openVideoCamera": "Deschideți camera pentru video", + "@openVideoCamera": { + "type": "String", + "placeholders": {} + }, + "openAppToReadMessages": "Deschideți aplicația să citiți mesajele", + "@openAppToReadMessages": { + "type": "String", + "placeholders": {} + }, + "openCamera": "Deschideți camera", + "@openCamera": { + "type": "String", + "placeholders": {} + }, + "removedBy": "Eliminat de {username}", + "@removedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "removeDevice": "Eliminați dispozitivul", + "@removeDevice": { + "type": "String", + "placeholders": {} + }, + "share": "Partajați", + "@share": { + "type": "String", + "placeholders": {} + }, + "shareLocation": "Partajați locația", + "@shareLocation": { + "type": "String", + "placeholders": {} + }, + "skip": "Săriți peste", + "@skip": { + "type": "String", + "placeholders": {} + }, + "sourceCode": "Codul surs", + "@sourceCode": { + "type": "String", + "placeholders": {} + }, + "spaceIsPublic": "Spațiul este public", + "@spaceIsPublic": { + "type": "String", + "placeholders": {} + }, + "spaceName": "Numele spațiului", + "@spaceName": { + "type": "String", + "placeholders": {} + }, + "toggleFavorite": "Comutați favoritul", + "@toggleFavorite": { + "type": "String", + "placeholders": {} + }, + "unblockDevice": "Debloca dispozitiv", + "@unblockDevice": { + "type": "String", + "placeholders": {} + }, + "unknownDevice": "Dispozitiv necunoscut", + "@unknownDevice": { + "type": "String", + "placeholders": {} + }, + "verify": "Verificați", + "@verify": { + "type": "String", + "placeholders": {} + }, + "weSentYouAnEmail": "V-am trimis un email", + "@weSentYouAnEmail": { + "type": "String", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "Nu mai participați în acest chat", + "@youAreNoLongerParticipatingInThisChat": { + "type": "String", + "placeholders": {} + }, + "yourPublicKey": "Cheia voastră publică", + "@yourPublicKey": { + "type": "String", + "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": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "widgetCustom": "Personalizat", + "@widgetCustom": {}, + "screenSharingTitle": "partajarea de ecran", + "@screenSharingTitle": {}, + "newGroup": "Grup nou", + "@newGroup": {}, + "changedTheRoomInvitationLink": "{username} a schimbat linkul de invitație", + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "chat": "Chat", + "@chat": { + "type": "String", + "placeholders": {} + }, + "chats": "Chaturi", + "@chats": { + "type": "String", + "placeholders": {} + }, + "invited": "Invitat", + "@invited": { + "type": "String", + "placeholders": {} + }, + "login": "Conectați-vă", + "@login": { + "type": "String", + "placeholders": {} + }, + "online": "Online", + "@online": { + "type": "String", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "Backup de cheie online este activat", + "@onlineKeyBackupEnabled": { + "type": "String", + "placeholders": {} + }, + "removeFromBundle": "Stergeți din acest pachet", + "@removeFromBundle": {}, + "enableMultiAccounts": "(BETA) Activați multiple conturi pe acest dispozitiv", + "@enableMultiAccounts": {}, + "participant": "Participant", + "@participant": { + "type": "String", + "placeholders": {} + }, + "openInMaps": "Deschideți pe hartă", + "@openInMaps": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPin": "Vă rugăm să introduceți pinul vostru", + "@pleaseEnterYourPin": { + "type": "String", + "placeholders": {} + }, + "privacy": "Confidențialitate", + "@privacy": { + "type": "String", + "placeholders": {} + }, + "pushRules": "Regulile Push", + "@pushRules": { + "type": "String", + "placeholders": {} + }, + "recording": "Înregistrare", + "@recording": { + "type": "String", + "placeholders": {} + }, + "register": "Înregistrați-vă", + "@register": { + "type": "String", + "placeholders": {} + }, + "redactMessage": "Redactați mesaj", + "@redactMessage": { + "type": "String", + "placeholders": {} + }, + "roomVersion": "Versiunea camerei", + "@roomVersion": { + "type": "String", + "placeholders": {} + }, + "security": "Securitate", + "@security": { + "type": "String", + "placeholders": {} + }, + "sendFile": "Trimiteți fișier", + "@sendFile": { + "type": "String", + "placeholders": {} + }, + "setStatus": "Stabiliți status", + "@setStatus": { + "type": "String", + "placeholders": {} + }, + "settings": "Configurări", + "@settings": { + "type": "String", + "placeholders": {} + }, + "inviteForMe": "Invitați pentru mine", + "@inviteForMe": { + "type": "String", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "String", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "{username} a retras invitația pentru {targetName}", + "@hasWithdrawnTheInvitationFor": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "help": "Ajutor", + "@help": { + "type": "String", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "Algoritm de criptare necunoscut", + "@unknownEncryptionAlgorithm": { + "type": "String", + "placeholders": {} + }, + "unmuteChat": "Dezamuțați chat", + "@unmuteChat": { + "type": "String", + "placeholders": {} + }, + "unpin": "Anulează fixarea", + "@unpin": { + "type": "String", + "placeholders": {} + }, + "unbannedUser": "{username} a ridicat interzicerea lui {targetName}", + "@unbannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "openChat": "Deschideți Chat", + "@openChat": {}, + "emailOrUsername": "Email sau nume de utilizator", + "@emailOrUsername": {}, + "youBannedUser": "Ați interzis pe {user}", + "@youBannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "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": "String", + "placeholders": {} + }, + "commandMissing": "{command} nu este o comandă.", + "@commandMissing": { + "type": "String", + "placeholders": { + "command": { + "type": "String" + } + }, + "description": "State that {command} is not a valid /command." + }, + "status": "Status", + "@status": { + "type": "String", + "placeholders": {} + }, + "connect": "Conectați", + "@connect": { + "type": "String", + "placeholders": {} + }, + "you": "Voi", + "@you": { + "type": "String", + "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": "String", + "placeholders": { + "oldDisplayName": { + "type": "String" + } + } + }, + "pleaseClickOnLink": "Vă rugăm să deschideți linkul din email și apoi să procedați.", + "@pleaseClickOnLink": { + "type": "String", + "placeholders": {} + }, + "reportUser": "Reportați utilizator", + "@reportUser": {}, + "encryptionNotEnabled": "Criptare nu e activată", + "@encryptionNotEnabled": { + "type": "String", + "placeholders": {} + }, + "publicRooms": "Camere Publice", + "@publicRooms": { + "type": "String", + "placeholders": {} + }, + "addToBundle": "Adăugați în pachet", + "@addToBundle": {}, + "theyDontMatch": "Nu sunt asemănători", + "@theyDontMatch": { + "type": "String", + "placeholders": {} + }, + "loadingPleaseWait": "Încărcând... Vă rugăm să așteptați.", + "@loadingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "dateWithoutYear": "{month}-{day}", + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "theyMatch": "Sunt asemănători", + "@theyMatch": { + "type": "String", + "placeholders": {} + }, + "title": "FluffyChat", + "@title": { + "description": "Title for the application", + "type": "String", + "placeholders": {} + }, + "toggleMuted": "Comutați amuțeștarea", + "@toggleMuted": { + "type": "String", + "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": { + "type": "String" + } + } + }, + "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": "String", + "placeholders": {} + }, + "containsDisplayName": "Conține displayname", + "@containsDisplayName": { + "type": "String", + "placeholders": {} + }, + "isTyping": "tastează…", + "@isTyping": { + "type": "String", + "placeholders": {} + }, + "chatBackup": "Backup de chat", + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "repeatPassword": "Repetați parola", + "@repeatPassword": {}, + "changeTheme": "Schimbați tema aplicației", + "@changeTheme": { + "type": "String", + "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": "String", + "description": "Usage hint for the command /ban" + }, + "commandHint_clearcache": "Ștergeți cache", + "@commandHint_clearcache": { + "type": "String", + "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": "String", + "description": "Usage hint for the command /create" + }, + "commandHint_discardsession": "Renunțați sesiunea", + "@commandHint_discardsession": { + "type": "String", + "description": "Usage hint for the command /discardsession" + }, + "commandHint_kick": "Dați afară pe utilizatorul ales din această cameră", + "@commandHint_kick": { + "type": "String", + "description": "Usage hint for the command /kick" + }, + "commandHint_leave": "Renunțați la această cameră", + "@commandHint_leave": { + "type": "String", + "description": "Usage hint for the command /leave" + }, + "commandHint_myroomavatar": "Alegeți un avatar pentru această cameră (foloșește mxc-uri)", + "@commandHint_myroomavatar": { + "type": "String", + "description": "Usage hint for the command /myroomavatar" + }, + "commandHint_myroomnick": "Alegeți un displayname pentru această cameră", + "@commandHint_myroomnick": { + "type": "String", + "description": "Usage hint for the command /myroomnick" + }, + "commandHint_op": "Stabiliți nivelul de putere a utilizatorul ales (implicit: 50)", + "@commandHint_op": { + "type": "String", + "description": "Usage hint for the command /op" + }, + "commandHint_plain": "Trimiteți text simplu/neformatat", + "@commandHint_plain": { + "type": "String", + "description": "Usage hint for the command /plain" + }, + "commandHint_react": "Trimiteți răspuns ca reacție", + "@commandHint_react": { + "type": "String", + "description": "Usage hint for the command /react" + }, + "commandHint_send": "Trimiteți text", + "@commandHint_send": { + "type": "String", + "description": "Usage hint for the command /send" + }, + "commandInvalid": "Comandă nevalibilă", + "@commandInvalid": { + "type": "String" + }, + "compareEmojiMatch": "Vă rugăm să comparați emoji-urile", + "@compareEmojiMatch": { + "type": "String", + "placeholders": {} + }, + "compareNumbersMatch": "Vă rugăm să comparați numerele", + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "couldNotDecryptMessage": "Dezcriptarea mesajului a eșuat: {error}", + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "create": "Creați", + "@create": { + "type": "String", + "placeholders": {} + }, + "createdTheChat": "💬{username} a creat chatul", + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "createNewSpace": "Spațiu nou", + "@createNewSpace": { + "type": "String", + "placeholders": {} + }, + "dateWithYear": "{year}-{month}-{day}", + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "allRooms": "Toate chaturi de grup", + "@allRooms": { + "type": "String", + "placeholders": {} + }, + "forward": "Înainte", + "@forward": { + "type": "String", + "placeholders": {} + }, + "groups": "Grupuri", + "@groups": { + "type": "String", + "placeholders": {} + }, + "hideRedactedEvents": "Ascunde evenimente redactate", + "@hideRedactedEvents": { + "type": "String", + "placeholders": {} + }, + "hideUnknownEvents": "Ascunde evenimente necunoscute", + "@hideUnknownEvents": { + "type": "String", + "placeholders": {} + }, + "identity": "Identitate", + "@identity": { + "type": "String", + "placeholders": {} + }, + "ignore": "Ignorați", + "@ignore": { + "type": "String", + "placeholders": {} + }, + "ignoredUsers": "Utilizatori ignorați", + "@ignoredUsers": { + "type": "String", + "placeholders": {} + }, + "iHaveClickedOnLink": "Am făcut click pe link", + "@iHaveClickedOnLink": { + "type": "String", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "Parolă sau cheie de recuperare incorectă", + "@incorrectPassphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "inoffensive": "Inofensiv", + "@inoffensive": { + "type": "String", + "placeholders": {} + }, + "inviteContact": "Invitați contact", + "@inviteContact": { + "type": "String", + "placeholders": {} + }, + "inviteContactToGroup": "Invitați contact la {groupName}", + "@inviteContactToGroup": { + "type": "String", + "placeholders": { + "groupName": { + "type": "String" + } + } + }, + "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": "String", + "placeholders": { + "username": { + "type": "String" + }, + "link": { + "type": "String" + } + } + }, + "joinedTheChat": "👋{username} a intrat în chat", + "@joinedTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "kicked": "👞{username} a dat afară pe {targetName}", + "@kicked": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "lastActiveAgo": "Ultima dată activ: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "String", + "placeholders": { + "localizedTimeShort": { + "type": "String" + } + } + }, + "leave": "Renunțați", + "@leave": { + "type": "String", + "placeholders": {} + }, + "leftTheChat": "A plecat din chat", + "@leftTheChat": { + "type": "String", + "placeholders": {} + }, + "license": "Permis", + "@license": { + "type": "String", + "placeholders": {} + }, + "lightTheme": "Luminat", + "@lightTheme": { + "type": "String", + "placeholders": {} + }, + "loadCountMoreParticipants": "Încărcați încă mai {count} participanți", + "@loadCountMoreParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "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": "String", + "placeholders": {} + }, + "logout": "Deconectați-vă", + "@logout": { + "type": "String", + "placeholders": {} + }, + "mention": "Menționați", + "@mention": { + "type": "String", + "placeholders": {} + }, + "messages": "Mesaje", + "@messages": { + "type": "String", + "placeholders": {} + }, + "moderator": "Moderator", + "@moderator": { + "type": "String", + "placeholders": {} + }, + "noEmotesFound": "Nu s-a găsit nici un emote. 😕", + "@noEmotesFound": { + "type": "String", + "placeholders": {} + }, + "noEncryptionForPublicRooms": "Criptare nu poate fi activată până când camera este accesibilă public.", + "@noEncryptionForPublicRooms": { + "type": "String", + "placeholders": {} + }, + "none": "Niciunul", + "@none": { + "type": "String", + "placeholders": {} + }, + "noPermission": "Fără permisie", + "@noPermission": { + "type": "String", + "placeholders": {} + }, + "noRoomsFound": "Nici o cameră nu s-a găsit…", + "@noRoomsFound": { + "type": "String", + "placeholders": {} + }, + "notificationsEnabledForThisAccount": "Notificări activate pentru acest cont", + "@notificationsEnabledForThisAccount": { + "type": "String", + "placeholders": {} + }, + "obtainingLocation": "Obținând locație…", + "@obtainingLocation": { + "type": "String", + "placeholders": {} + }, + "offline": "Offline", + "@offline": { + "type": "String", + "placeholders": {} + }, + "oopsSomethingWentWrong": "Ups, ceva a eșuat…", + "@oopsSomethingWentWrong": { + "type": "String", + "placeholders": {} + }, + "reject": "Respingeți", + "@reject": { + "type": "String", + "placeholders": {} + }, + "unbanFromChat": "Revoca interzicerea din chat", + "@unbanFromChat": { + "type": "String", + "placeholders": {} + }, + "roomHasBeenUpgraded": "Camera a fost actualizată", + "@roomHasBeenUpgraded": { + "type": "String", + "placeholders": {} + }, + "setCustomEmotes": "Stabiliți emoji-uri personalizate", + "@setCustomEmotes": { + "type": "String", + "placeholders": {} + }, + "setPermissionsLevel": "Stabiliți nivelul de permisii", + "@setPermissionsLevel": { + "type": "String", + "placeholders": {} + }, + "singlesignon": "Autentificare unică", + "@singlesignon": { + "type": "String", + "placeholders": {} + }, + "startedACall": "{senderName} a început un apel", + "@startedACall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "statusExampleMessage": "Ce faceți?", + "@statusExampleMessage": { + "type": "String", + "placeholders": {} + }, + "tooManyRequestsWarning": "Prea multe cereri. Vă rugăm să încercați din nou mai tărziu!", + "@tooManyRequestsWarning": { + "type": "String", + "placeholders": {} + }, + "unknownEvent": "Evenimet necunoscut '{type}'", + "@unknownEvent": { + "type": "String", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "verified": "Verificat", + "@verified": { + "type": "String", + "placeholders": {} + }, + "verifyStart": "Începeți verificare", + "@verifyStart": { + "type": "String", + "placeholders": {} + }, + "videoCall": "Apel video", + "@videoCall": { + "type": "String", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "Vizibilitatea istoria chatului", + "@visibilityOfTheChatHistory": { + "type": "String", + "placeholders": {} + }, + "visibleForAllParticipants": "Vizibil pentru toți participanți", + "@visibleForAllParticipants": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerEmoji": "Așteptând pe partenerul să accepte emoji-ul…", + "@waitingPartnerEmoji": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerNumbers": "Așteptând pe partenerul să accepte numerele…", + "@waitingPartnerNumbers": { + "type": "String", + "placeholders": {} + }, + "warning": "Avertizment!", + "@warning": { + "type": "String", + "placeholders": {} + }, + "whoCanPerformWhichAction": "Cine poate face care acțiune", + "@whoCanPerformWhichAction": { + "type": "String", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "Cine se poate alătura la acest grup", + "@whoIsAllowedToJoinThisGroup": { + "type": "String", + "placeholders": {} + }, + "whyDoYouWantToReportThis": "De ce doriți să reportați acest conținut?", + "@whyDoYouWantToReportThis": { + "type": "String", + "placeholders": {} + }, + "wipeChatBackup": "Ștergeți backup-ul vostru de chat să creați o nouă cheie de recuperare?", + "@wipeChatBackup": { + "type": "String", + "placeholders": {} + }, + "withTheseAddressesRecoveryDescription": "Cu acestea adrese puteți să vă recuperați parola.", + "@withTheseAddressesRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "Ați fost interzis din acest chat", + "@youHaveBeenBannedFromThisChat": { + "type": "String", + "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": "String", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "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": { + "type": "String" + } + } + }, + "youInvitedBy": "📩Ați fost invitat de {user}", + "@youInvitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "unlockOldMessages": "Deblocați mesajele vechi", + "@unlockOldMessages": {}, + "youInvitedUser": "📩Ați invitat pe {user}", + "@youInvitedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youKicked": "👞Ați dat afară pe {user}", + "@youKicked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youUnbannedUser": "Ați ridicat interzicerea lui {user}", + "@youUnbannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "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": { + "type": "String" + } + } + }, + "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": "String", + "placeholders": { + "path": { + "type": "String" + } + } + }, + "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": "String", + "placeholders": {} + }, + "guestsCanJoin": "Musafiri pot să se alăture", + "@guestsCanJoin": { + "type": "String", + "placeholders": {} + }, + "fileName": "Nume de fișier", + "@fileName": { + "type": "String", + "placeholders": {} + }, + "fontSize": "Mărimea fontului", + "@fontSize": { + "type": "String", + "placeholders": {} + }, + "fromJoining": "De la alăturare", + "@fromJoining": { + "type": "String", + "placeholders": {} + }, + "fromTheInvitation": "De la invitația", + "@fromTheInvitation": { + "type": "String", + "placeholders": {} + }, + "goToTheNewRoom": "Mergeți la camera nouă", + "@goToTheNewRoom": { + "type": "String", + "placeholders": {} + }, + "group": "Grup", + "@group": { + "type": "String", + "placeholders": {} + }, + "groupIsPublic": "Grupul este public", + "@groupIsPublic": { + "type": "String", + "placeholders": {} + }, + "guestsAreForbidden": "Musafiri sunt interziși", + "@guestsAreForbidden": { + "type": "String", + "placeholders": {} + }, + "kickedAndBanned": "🙅{username} a dat afară și a interzis pe {targetName} din cameră", + "@kickedAndBanned": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "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": "String", + "placeholders": {} + }, + "logInTo": "Conectați-vă la {homeserver}", + "@logInTo": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "locationDisabledNotice": "Servicile de locație sunt dezactivate. Vă rugăm să le activați să împărțiți locația voastră.", + "@locationDisabledNotice": { + "type": "String", + "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": "String", + "placeholders": {} + }, + "noMatrixServer": "{server1} nu este server matrix, înlocuiți cu {server2}?", + "@noMatrixServer": { + "type": "String", + "placeholders": { + "server1": { + "type": "String" + }, + "server2": { + "type": "String" + } + } + }, + "numUsersTyping": "{count} utilizatori tastează…", + "@numUsersTyping": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "offensive": "Ofensiv", + "@offensive": { + "type": "String", + "placeholders": {} + }, + "confirm": "Confirmați", + "@confirm": { + "type": "String", + "placeholders": {} + }, + "or": "Sau", + "@or": { + "type": "String", + "placeholders": {} + }, + "serverRequiresEmail": "Acest server trebuie să valideze emailul vostru pentru înregistrare.", + "@serverRequiresEmail": {}, + "waitingPartnerAcceptRequest": "Așteptând pe partenerul să accepte cererea…", + "@waitingPartnerAcceptRequest": { + "type": "String", + "placeholders": {} + }, + "darkTheme": "Întunecat", + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "sharedTheLocation": "{username} sa partajat locația", + "@sharedTheLocation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "setInvitationLink": "Stabiliți linkul de invitație", + "@setInvitationLink": { + "type": "String", + "placeholders": {} + }, + "transferFromAnotherDevice": "Transfera de la alt dispozitiv", + "@transferFromAnotherDevice": { + "type": "String", + "placeholders": {} + }, + "synchronizingPleaseWait": "Sincronizează... Vă rugăm să așteptați.", + "@synchronizingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "systemTheme": "Sistem", + "@systemTheme": { + "type": "String", + "placeholders": {} + }, + "toggleUnread": "Marcați Citit/Necitit", + "@toggleUnread": { + "type": "String", + "placeholders": {} + }, + "tryToSendAgain": "Încercați să trimiteți din nou", + "@tryToSendAgain": { + "type": "String", + "placeholders": {} + }, + "unavailable": "Nedisponibil", + "@unavailable": { + "type": "String", + "placeholders": {} + }, + "userAndUserAreTyping": "{username} și {username2} tastează…", + "@userAndUserAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "username2": { + "type": "String" + } + } + }, + "userLeftTheChat": "🚪{username} a plecat din chat", + "@userLeftTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "userAndOthersAreTyping": "{username} și {count} alți tastează…", + "@userAndOthersAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "userSentUnknownEvent": "{username} a trimis un eveniment {type}", + "@userSentUnknownEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "type": { + "type": "String" + } + } + }, + "unverified": "Neverificat", + "@unverified": {}, + "verifyTitle": "Verificând celălalt cont", + "@verifyTitle": { + "type": "String", + "placeholders": {} + }, + "visibleForEveryone": "Vizibil pentru toți", + "@visibleForEveryone": { + "type": "String", + "placeholders": {} + }, + "readUpToHere": "Citit până aici", + "@readUpToHere": {}, + "changedTheHistoryVisibility": "{username} a schimbat vizibilitatea istoriei chatului", + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "copy": "Copiați", + "@copy": { + "type": "String", + "placeholders": {} + }, + "displaynameHasBeenChanged": "Displayname a fost schimbat", + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "invitedUsersOnly": "Numai utilizatori invitați", + "@invitedUsersOnly": { + "type": "String", + "placeholders": {} + }, + "configureChat": "Configurați chat", + "@configureChat": { + "type": "String", + "placeholders": {} + }, + "copiedToClipboard": "Copiat în clipboard", + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "device": "Dispozitiv", + "@device": { + "type": "String", + "placeholders": {} + }, + "username": "Nume de utilizator", + "@username": { + "type": "String", + "placeholders": {} + }, + "sentAnAudio": "🎤{username} a trimis audio", + "@sentAnAudio": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAFile": "📁{username} a trimis un fișier", + "@sentAFile": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "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": "String", + "placeholders": {} + }, + "newChat": "Chat nou", + "@newChat": { + "type": "String", + "placeholders": {} + }, + "newMessageInFluffyChat": "💬 Mesaj nou în FluffyChat", + "@newMessageInFluffyChat": { + "type": "String", + "placeholders": {} + }, + "sentAPicture": "🖼️ {username} a trimis o poză", + "@sentAPicture": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAVideo": "🎥{username} a trimis un video", + "@sentAVideo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentASticker": "😊 {username} a trimis un sticker", + "@sentASticker": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "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": { + "type": "int" + } + } + }, + "hugContent": "{senderName} vă îmbrățișează", + "@hugContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "storeInAppleKeyChain": "Stoca în Apple KeyChain", + "@storeInAppleKeyChain": {}, + "addEmail": "Adăugați email", + "@addEmail": { + "type": "String", + "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": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "supposedMxid": "ID-ul ar trebuii să fie {mxid}", + "@supposedMxid": { + "type": "String", + "placeholders": { + "mxid": { + "type": "String" + } + } + }, + "commandHint_html": "Trimiteți text format ca HTML", + "@commandHint_html": { + "type": "String", + "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": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "badServerLoginTypesException": "Homeserver-ul suportă următoarele feluri de login:\n{serverVersions}\nDar această aplicație suportă numai:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "changedTheGuestAccessRulesTo": "{username} a schimbat regulile pentru acesul musafirilor la: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheJoinRulesTo": "{username} a schimbat regulile de alăturare la: {joinRules}", + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "yourChatBackupHasBeenSetUp": "Backup-ul vostru de chat a fost configurat.", + "@yourChatBackupHasBeenSetUp": {}, + "cantOpenUri": "Nu se poate deschide URI-ul {uri}", + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "changedTheDisplaynameTo": "{username} s-a schimbat displayname la: '{displayname}'", + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "changedTheGuestAccessRules": "{username} a schimbat regulile pentru acesul musafirilor", + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changeTheHomeserver": "Schimbați homeserver-ul", + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "chatBackupDescription": "Mesajele voastre vechi sunt sigurate cu o cheie de recuperare. Vă rugăm să nu o pierdeți.", + "@chatBackupDescription": { + "type": "String", + "placeholders": {} + }, + "contentHasBeenReported": "Conținutul a fost reportat la administratori serverului", + "@contentHasBeenReported": { + "type": "String", + "placeholders": {} + }, + "chatDetails": "Detalii de chat", + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "commandHint_dm": "Porniți un chat direct\nFolosiți --no-encryption să dezactivați criptare", + "@commandHint_dm": { + "type": "String", + "description": "Usage hint for the command /dm" + }, + "commandHint_me": "Descrieți-vă", + "@commandHint_me": { + "type": "String", + "description": "Usage hint for the command /me" + }, + "contactHasBeenInvitedToTheGroup": "Contactul a fost invitat la grup", + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "containsUserName": "Conține nume de utilizator", + "@containsUserName": { + "type": "String", + "placeholders": {} + }, + "copyToClipboard": "Copiați în clipboard", + "@copyToClipboard": { + "type": "String", + "placeholders": {} + }, + "countParticipants": "{count} participanți", + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "delete": "Ștergeți", + "@delete": { + "type": "String", + "placeholders": {} + }, + "deactivateAccountWarning": "Această acțiune va dezactiva contul vostru. Nu poate fi anulat! Sunteți sigur?", + "@deactivateAccountWarning": { + "type": "String", + "placeholders": {} + }, + "deleteAccount": "Ștergeți contul", + "@deleteAccount": { + "type": "String", + "placeholders": {} + }, + "defaultPermissionLevel": "Nivel de permisiuni implicită", + "@defaultPermissionLevel": { + "type": "String", + "placeholders": {} + }, + "deleteMessage": "Ștergeți mesajul", + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "downloadFile": "Descărcați fișierul", + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "enableEmotesGlobally": "Activați pachet de emote global", + "@enableEmotesGlobally": { + "type": "String", + "placeholders": {} + }, + "everythingReady": "Totul e gata!", + "@everythingReady": { + "type": "String", + "placeholders": {} + }, + "editBlockedServers": "Editați servere blocate", + "@editBlockedServers": { + "type": "String", + "placeholders": {} + }, + "emoteInvalid": "Shortcode de emote nevalibil!", + "@emoteInvalid": { + "type": "String", + "placeholders": {} + }, + "edit": "Editați", + "@edit": { + "type": "String", + "placeholders": {} + }, + "editRoomAliases": "Schimbați pseudonimele camerei", + "@editRoomAliases": { + "type": "String", + "placeholders": {} + }, + "emptyChat": "Chat gol", + "@emptyChat": { + "type": "String", + "placeholders": {} + }, + "enableEncryption": "Activați criptare", + "@enableEncryption": { + "type": "String", + "placeholders": {} + }, + "encrypted": "Criptat", + "@encrypted": { + "type": "String", + "placeholders": {} + }, + "editDisplayname": "Schimbați displayname", + "@editDisplayname": { + "type": "String", + "placeholders": {} + }, + "editRoomAvatar": "Schimbați avatarul din cameră", + "@editRoomAvatar": { + "type": "String", + "placeholders": {} + }, + "emoteExists": "Emote deja există!", + "@emoteExists": { + "type": "String", + "placeholders": {} + }, + "emotePacks": "Pachete de emoturi din cameră", + "@emotePacks": { + "type": "String", + "placeholders": {} + }, + "emoteSettings": "Configurări Emote", + "@emoteSettings": { + "type": "String", + "placeholders": {} + }, + "emoteShortcode": "Shortcode de emote", + "@emoteShortcode": { + "type": "String", + "placeholders": {} + }, + "emoteWarnNeedToPick": "Trebuie să alegeți shortcode pentru emote și o imagine!", + "@emoteWarnNeedToPick": { + "type": "String", + "placeholders": {} + }, + "encryption": "Criptare", + "@encryption": { + "type": "String", + "placeholders": {} + }, + "enterAnEmailAddress": "Introduceți o adresă email", + "@enterAnEmailAddress": { + "type": "String", + "placeholders": {} + }, + "homeserver": "Homeserver", + "@homeserver": {}, + "errorObtainingLocation": "Obținerea locației a eșuat: {error}", + "@errorObtainingLocation": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "ok": "Ok", + "@ok": { + "type": "String", + "placeholders": {} + }, + "youKickedAndBanned": "🙅Ați dat afară și interzis pe {user}", + "@youKickedAndBanned": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "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": "String" + }, + "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": "String", + "placeholders": {} + }, + "sendAMessage": "Trimiteți un mesaj", + "@sendAMessage": { + "type": "String", + "placeholders": {} + }, + "sendAudio": "Trimiteți audio", + "@sendAudio": { + "type": "String", + "placeholders": {} + }, + "sendOriginal": "Trimiteți original", + "@sendOriginal": { + "type": "String", + "placeholders": {} + }, + "sendVideo": "Trimiteți video", + "@sendVideo": { + "type": "String", + "placeholders": {} + }, + "sendImage": "Trimiteți imagine", + "@sendImage": { + "type": "String", + "placeholders": {} + }, + "sendSticker": "Trimiteți sticker", + "@sendSticker": { + "type": "String", + "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": "String", + "placeholders": {} + }, + "setAsCanonicalAlias": "Stabiliți ca pseudonimul primar", + "@setAsCanonicalAlias": { + "type": "String", + "placeholders": {} + }, + "writeAMessage": "Scrieți un mesaj…", + "@writeAMessage": { + "type": "String", + "placeholders": {} + }, + "yes": "Da", + "@yes": { + "type": "String", + "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": "String", + "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": "String", + "placeholders": {} + }, + "password": "Parolă", + "@password": { + "type": "String", + "placeholders": {} + }, + "passwordForgotten": "Parola uitată", + "@passwordForgotten": { + "type": "String", + "placeholders": {} + }, + "passwordHasBeenChanged": "Parola a fost schimbată", + "@passwordHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "passwordRecovery": "Recuperare parolei", + "@passwordRecovery": { + "type": "String", + "placeholders": {} + }, + "people": "Persoane", + "@people": { + "type": "String", + "placeholders": {} + }, + "pickImage": "Alegeți o imagine", + "@pickImage": { + "type": "String", + "placeholders": {} + }, + "pleaseChoose": "Vă rugăm să alegeți", + "@pleaseChoose": { + "type": "String", + "placeholders": {} + }, + "pin": "Fixați", + "@pin": { + "type": "String", + "placeholders": {} + }, + "pleaseChooseAPasscode": "Vă rugăm să alegeți un passcode", + "@pleaseChooseAPasscode": { + "type": "String", + "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": "String", + "placeholders": {} + }, + "pleaseEnterYourPassword": "Vă rugăm să introduceți parola voastră", + "@pleaseEnterYourPassword": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourUsername": "Vă rugăm să introduceți username-ul vostru", + "@pleaseEnterYourUsername": { + "type": "String", + "placeholders": {} + }, + "pleaseFollowInstructionsOnWeb": "Vă rugăm să urmați instrucțiunele pe website și apoi să apăsați pe următor.", + "@pleaseFollowInstructionsOnWeb": { + "type": "String", + "placeholders": {} + }, + "reason": "Motiv", + "@reason": { + "type": "String", + "placeholders": {} + }, + "rejectedTheInvitation": "{username} a respins invitația", + "@rejectedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "redactedAnEvent": "{username} a redactat un eveniment", + "@redactedAnEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "removeAllOtherDevices": "Eliminați toate celelalte dispozitive", + "@removeAllOtherDevices": { + "type": "String", + "placeholders": {} + }, + "removeYourAvatar": "Ștergeți avatarul", + "@removeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "replaceRoomWithNewerVersion": "Înlocuiți camera cu versiune mai nouă", + "@replaceRoomWithNewerVersion": { + "type": "String", + "placeholders": {} + }, + "reply": "Răspundeți", + "@reply": { + "type": "String", + "placeholders": {} + }, + "reportMessage": "Raportați mesajul", + "@reportMessage": { + "type": "String", + "placeholders": {} + }, + "requestPermission": "Cereți permisiune", + "@requestPermission": { + "type": "String", + "placeholders": {} + }, + "saveFile": "Salvați fișierul", + "@saveFile": { + "type": "String", + "placeholders": {} + }, + "search": "Căutați", + "@search": { + "type": "String", + "placeholders": {} + }, + "recoveryKey": "Cheie de recuperare", + "@recoveryKey": {}, + "recoveryKeyLost": "Cheia de recuperare pierdută?", + "@recoveryKeyLost": {}, + "seenByUser": "Văzut de {username}", + "@seenByUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "muteChat": "Amuțați chatul", + "@muteChat": { + "type": "String", + "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": "String", + "placeholders": {} + }, + "autoplayImages": "Anima automatic stickere și emote animate", + "@autoplayImages": { + "type": "String", + "placeholder": {} + }, + "sendOnEnter": "Trimite cu tasta enter", + "@sendOnEnter": {}, + "changedTheChatPermissions": "{username} a schimbat permisiunile chatului", + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "extremeOffensive": "De foarte mare ofensă", + "@extremeOffensive": { + "type": "String", + "placeholders": {} + }, + "id": "ID", + "@id": { + "type": "String", + "placeholders": {} + }, + "invitedUser": "📩{username} a invitat {targetName}", + "@invitedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "deviceKeys": "Cheile dispozitivului:", + "@deviceKeys": {}, + "pleaseEnterRecoveryKey": "Vă rugăm să introduceți cheia voastră de recuperare:", + "@pleaseEnterRecoveryKey": {}, + "newVerificationRequest": "Cerere de verificare nouă!", + "@newVerificationRequest": { + "type": "String", + "placeholders": {} + }, + "remove": "Eliminați", + "@remove": { + "type": "String", + "placeholders": {} + }, + "play": "Redați {fileName}", + "@play": { + "type": "String", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "channelCorruptedDecryptError": "Criptarea a fost corupată", + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "chooseAStrongPassword": "Alegeți o parolă robustă", + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "commandHint_cuddle": "Trimiteți o îmbrățișare", + "@commandHint_cuddle": {}, + "googlyEyesContent": "{senderName} v-a trimis ochi googly", + "@googlyEyesContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "areYouSureYouWantToLogout": "Sunteți sigur că doriți să vă deconectați?", + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "changedTheRoomAliases": "{username} a schimbat pseudonimele camerei", + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changeYourAvatar": "Schimbați avatarul vostru", + "@changeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "commandHint_join": "Alăturați-vă la camera alesă", + "@commandHint_join": { + "type": "String", + "description": "Usage hint for the command /join" + }, + "allChats": "Toate Chaturile", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "commandHint_invite": "Invitați utilizatorul ales la această cameră", + "@commandHint_invite": { + "type": "String", + "description": "Usage hint for the command /invite" + }, + "changeTheNameOfTheGroup": "Schimbați numele grupului", + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "commandHint_googly": "Trimiteți câțiva ochi googly", + "@commandHint_googly": {}, + "botMessages": "Mesaje Bot", + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "all": "Toate", + "@all": { + "type": "String", + "placeholders": {} + }, + "blocked": "Blocat", + "@blocked": { + "type": "String", + "placeholders": {} + }, + "changedTheJoinRules": "{username} a schimbat regulile de alăturare", + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheProfileAvatar": "{username} s-a schimbat avatarul", + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "appLock": "Lacăt aplicație", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "changedTheHistoryVisibilityTo": "{username} a schimbat vizibilitatea istoriei chatului la: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "close": "Închideți", + "@close": { + "type": "String", + "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": {} +} diff --git a/lib/l10n/intl_ru.arb b/lib/l10n/intl_ru.arb new file mode 100644 index 0000000..9e58397 --- /dev/null +++ b/lib/l10n/intl_ru.arb @@ -0,0 +1,3325 @@ +{ + "@@locale": "ru", + "@@last_modified": "2021-08-14 12:41:09.903021", + "about": "О проекте", + "@about": { + "type": "String", + "placeholders": {} + }, + "accept": "Принять", + "@accept": { + "type": "String", + "placeholders": {} + }, + "acceptedTheInvitation": "👍 {username} принял(а) приглашение", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "account": "Учётная запись", + "@account": { + "type": "String", + "placeholders": {} + }, + "activatedEndToEndEncryption": "🔐 {username} активировал(а) сквозное шифрование", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "addEmail": "Добавить электронную почту", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "admin": "Администратор", + "@admin": { + "type": "String", + "placeholders": {} + }, + "alias": "псевдоним", + "@alias": { + "type": "String", + "placeholders": {} + }, + "all": "Все", + "@all": { + "type": "String", + "placeholders": {} + }, + "allChats": "Все чаты", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "answeredTheCall": "{senderName} ответил(а) на звонок", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "anyoneCanJoin": "Каждый может присоединиться", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "appLock": "Блокировка приложения", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "archive": "Архив", + "@archive": { + "type": "String", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "Разрешено ли гостям присоединяться", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "Вы уверены?", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "areYouSureYouWantToLogout": "Вы действительно хотите выйти?", + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "askSSSSSign": "Для подписи ключа другого пользователя, пожалуйста, введите вашу парольную фразу или ключ восстановления.", + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "askVerificationRequest": "Принять этот запрос подтверждения от {username}?", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "autoplayImages": "Автоматически воспроизводить анимированные стикеры и эмодзи", + "@autoplayImages": { + "type": "String", + "placeholder": {} + }, + "badServerLoginTypesException": "Домашний сервер поддерживает следующие типы входа в систему:\n{serverVersions}\nНо это приложение поддерживает только:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "badServerVersionsException": "Домашний сервер поддерживает следующие версии спецификации:\n{serverVersions}\nНо это приложение поддерживает только {supportedVersions}", + "@badServerVersionsException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "banFromChat": "Заблокировать в чате", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "banned": "Заблокирован(а)", + "@banned": { + "type": "String", + "placeholders": {} + }, + "bannedUser": "{username} заблокировал(а) {targetName}", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "blockDevice": "Заблокировать устройство", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "blocked": "Заблокировано", + "@blocked": { + "type": "String", + "placeholders": {} + }, + "botMessages": "Сообщения ботов", + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "cancel": "Отмена", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "cantOpenUri": "Не удается открыть URI {uri}", + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "changeDeviceName": "Изменить имя устройства", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "changedTheChatAvatar": "{username} изменил(а) аватар чата", + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheChatDescriptionTo": "{username} изменил(а) описание чата на: '{description}'", + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "changedTheChatNameTo": "{username} изменил(а) имя чата на: '{chatname}'", + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "changedTheChatPermissions": "{username} изменил(а) права доступа к чату", + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheDisplaynameTo": "{username} изменил(а) отображаемое имя на: '{displayname}'", + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "changedTheGuestAccessRules": "{username} изменил(а) правила гостевого доступа", + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheGuestAccessRulesTo": "{username} изменил(а) правила гостевого доступа на: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheHistoryVisibility": "{username} изменил(а) видимость истории", + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheHistoryVisibilityTo": "{username} изменил(а) видимость истории на: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheJoinRules": "{username} изменил(а) правила присоединения", + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheJoinRulesTo": "{username} изменил(а) правила присоединения на: {joinRules}", + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "changedTheProfileAvatar": "{username} изменил(а) аватар", + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomAliases": "{username} изменил(а) псевдонимы комнаты", + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomInvitationLink": "{username} изменил(а) ссылку для приглашения", + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changePassword": "Изменить пароль", + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "changeTheHomeserver": "Изменить домашний сервер", + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "changeTheme": "Персонализация", + "@changeTheme": { + "type": "String", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "Изменить название группы", + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "changeYourAvatar": "Изменить свой аватар", + "@changeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "channelCorruptedDecryptError": "Шифрование было повреждено", + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "chat": "Чат", + "@chat": { + "type": "String", + "placeholders": {} + }, + "chatBackup": "Резервное копирование чата", + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "chatBackupDescription": "Резервная старых сообщений защищена ключом восстановления. Пожалуйста, не потеряйте его.", + "@chatBackupDescription": { + "type": "String", + "placeholders": {} + }, + "chatDetails": "Детали чата", + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "chats": "Чаты", + "@chats": { + "type": "String", + "placeholders": {} + }, + "chooseAStrongPassword": "Выберите надёжный пароль", + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "clearArchive": "Очистить архив", + "@clearArchive": {}, + "close": "Закрыть", + "@close": { + "type": "String", + "placeholders": {} + }, + "commandHint_ban": "Заблокировать данного пользователя в этой комнате", + "@commandHint_ban": { + "type": "String", + "description": "Usage hint for the command /ban" + }, + "commandHint_html": "Отправить текст формата HTML", + "@commandHint_html": { + "type": "String", + "description": "Usage hint for the command /html" + }, + "commandHint_invite": "Пригласить данного пользователя в эту комнату", + "@commandHint_invite": { + "type": "String", + "description": "Usage hint for the command /invite" + }, + "commandHint_join": "Присоединиться к данной комнате", + "@commandHint_join": { + "type": "String", + "description": "Usage hint for the command /join" + }, + "commandHint_kick": "Удалить данного пользователя из этой комнаты", + "@commandHint_kick": { + "type": "String", + "description": "Usage hint for the command /kick" + }, + "commandHint_leave": "Покинуть эту комнату", + "@commandHint_leave": { + "type": "String", + "description": "Usage hint for the command /leave" + }, + "commandHint_me": "Опишите себя", + "@commandHint_me": { + "type": "String", + "description": "Usage hint for the command /me" + }, + "commandHint_myroomavatar": "Установите свою фотографию для этой комнаты (автор: mxc-uri)", + "@commandHint_myroomavatar": { + "type": "String", + "description": "Usage hint for the command /myroomavatar" + }, + "commandHint_myroomnick": "Задайте отображаемое имя для этой комнаты", + "@commandHint_myroomnick": { + "type": "String", + "description": "Usage hint for the command /myroomnick" + }, + "commandHint_op": "Установить уровень прав данного пользователя (по умолчанию: 50)", + "@commandHint_op": { + "type": "String", + "description": "Usage hint for the command /op" + }, + "commandHint_plain": "Отправить неотформатированный текст", + "@commandHint_plain": { + "type": "String", + "description": "Usage hint for the command /plain" + }, + "commandHint_react": "Отправить ответ как реакцию", + "@commandHint_react": { + "type": "String", + "description": "Usage hint for the command /react" + }, + "commandHint_send": "Отправить текст", + "@commandHint_send": { + "type": "String", + "description": "Usage hint for the command /send" + }, + "commandHint_unban": "Разблокировать данного пользователя в этой комнате", + "@commandHint_unban": { + "type": "String", + "description": "Usage hint for the command /unban" + }, + "commandInvalid": "Недопустимая команда", + "@commandInvalid": { + "type": "String" + }, + "commandMissing": "{command} не является командой.", + "@commandMissing": { + "type": "String", + "placeholders": { + "command": { + "type": "String" + } + }, + "description": "State that {command} is not a valid /command." + }, + "compareEmojiMatch": "Сравните эмодзи", + "@compareEmojiMatch": { + "type": "String", + "placeholders": {} + }, + "compareNumbersMatch": "Сравните числа", + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "configureChat": "Настроить чат", + "@configureChat": { + "type": "String", + "placeholders": {} + }, + "confirm": "Подтвердить", + "@confirm": { + "type": "String", + "placeholders": {} + }, + "connect": "Присоединиться", + "@connect": { + "type": "String", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "Контакт был приглашен в группу", + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "containsDisplayName": "Содержит отображаемое имя", + "@containsDisplayName": { + "type": "String", + "placeholders": {} + }, + "containsUserName": "Содержит имя пользователя", + "@containsUserName": { + "type": "String", + "placeholders": {} + }, + "contentHasBeenReported": "О контенте было сообщено администраторам сервера", + "@contentHasBeenReported": { + "type": "String", + "placeholders": {} + }, + "copiedToClipboard": "Скопировано в буфер обмена", + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "copy": "Копировать", + "@copy": { + "type": "String", + "placeholders": {} + }, + "copyToClipboard": "Скопировать в буфер обмена", + "@copyToClipboard": { + "type": "String", + "placeholders": {} + }, + "couldNotDecryptMessage": "Не удалось расшифровать сообщение: {error}", + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "countParticipants": "{count} участника(ов)", + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "create": "Создать", + "@create": { + "type": "String", + "placeholders": {} + }, + "createdTheChat": "💬 {username} создал(а) чат", + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "createNewSpace": "Новое пространство", + "@createNewSpace": { + "type": "String", + "placeholders": {} + }, + "currentlyActive": "В настоящее время активен(а)", + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "darkTheme": "Тёмная", + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "dateAndTimeOfDay": "{timeOfDay}, {date}", + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "dateWithoutYear": "{day}-{month}", + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "dateWithYear": "{day}-{month}-{year}", + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "deactivateAccountWarning": "Это деактивирует вашу учётную запись пользователя. Данное действие не может быть отменено! Вы уверены?", + "@deactivateAccountWarning": { + "type": "String", + "placeholders": {} + }, + "defaultPermissionLevel": "Уровень разрешений по умолчанию для новых пользователей", + "@defaultPermissionLevel": { + "type": "String", + "placeholders": {} + }, + "delete": "Удалить", + "@delete": { + "type": "String", + "placeholders": {} + }, + "deleteAccount": "Удалить аккаунт", + "@deleteAccount": { + "type": "String", + "placeholders": {} + }, + "deleteMessage": "Удалить сообщение", + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "device": "Устройство", + "@device": { + "type": "String", + "placeholders": {} + }, + "deviceId": "Идентификатор устройства", + "@deviceId": { + "type": "String", + "placeholders": {} + }, + "devices": "Устройства", + "@devices": { + "type": "String", + "placeholders": {} + }, + "directChats": "Личные чаты", + "@directChats": { + "type": "String", + "placeholders": {} + }, + "displaynameHasBeenChanged": "Отображаемое имя было изменено", + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "downloadFile": "Скачать файл", + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "edit": "Редактировать", + "@edit": { + "type": "String", + "placeholders": {} + }, + "editBlockedServers": "Редактировать заблокированные серверы", + "@editBlockedServers": { + "type": "String", + "placeholders": {} + }, + "editDisplayname": "Отображаемое имя", + "@editDisplayname": { + "type": "String", + "placeholders": {} + }, + "editRoomAliases": "Редактировать псевдонимы комнаты", + "@editRoomAliases": { + "type": "String", + "placeholders": {} + }, + "editRoomAvatar": "Изменить аватар комнаты", + "@editRoomAvatar": { + "type": "String", + "placeholders": {} + }, + "emoteExists": "Эмодзи уже существует!", + "@emoteExists": { + "type": "String", + "placeholders": {} + }, + "emoteInvalid": "Недопустимый код эмодзи!", + "@emoteInvalid": { + "type": "String", + "placeholders": {} + }, + "emotePacks": "Наборы эмодзи для комнаты", + "@emotePacks": { + "type": "String", + "placeholders": {} + }, + "emoteSettings": "Настройки эмодзи", + "@emoteSettings": { + "type": "String", + "placeholders": {} + }, + "emoteShortcode": "Код эмодзи", + "@emoteShortcode": { + "type": "String", + "placeholders": {} + }, + "emoteWarnNeedToPick": "Вам нужно задать код эмодзи и изображение!", + "@emoteWarnNeedToPick": { + "type": "String", + "placeholders": {} + }, + "emptyChat": "Пустой чат", + "@emptyChat": { + "type": "String", + "placeholders": {} + }, + "enableEmotesGlobally": "Включить набор эмодзи глобально", + "@enableEmotesGlobally": { + "type": "String", + "placeholders": {} + }, + "enableEncryption": "Включить шифрование", + "@enableEncryption": { + "type": "String", + "placeholders": {} + }, + "enableEncryptionWarning": "Вы больше не сможете отключить шифрование. Вы уверены?", + "@enableEncryptionWarning": { + "type": "String", + "placeholders": {} + }, + "encrypted": "Зашифровано", + "@encrypted": { + "type": "String", + "placeholders": {} + }, + "encryption": "Шифрование", + "@encryption": { + "type": "String", + "placeholders": {} + }, + "encryptionNotEnabled": "Шифрование не включено", + "@encryptionNotEnabled": { + "type": "String", + "placeholders": {} + }, + "endedTheCall": "{senderName} завершил(а) звонок", + "@endedTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "enterAnEmailAddress": "Введите адрес электронной почты", + "@enterAnEmailAddress": { + "type": "String", + "placeholders": {} + }, + "enterYourHomeserver": "Введите адрес вашего домашнего сервера", + "@enterYourHomeserver": { + "type": "String", + "placeholders": {} + }, + "errorObtainingLocation": "Ошибка получения местоположения: {error}", + "@errorObtainingLocation": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "everythingReady": "Всё готово!", + "@everythingReady": { + "type": "String", + "placeholders": {} + }, + "extremeOffensive": "Крайне оскорбительный", + "@extremeOffensive": { + "type": "String", + "placeholders": {} + }, + "fileName": "Имя файла", + "@fileName": { + "type": "String", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "String", + "placeholders": {} + }, + "fontSize": "Размер шрифта", + "@fontSize": { + "type": "String", + "placeholders": {} + }, + "forward": "Переслать", + "@forward": { + "type": "String", + "placeholders": {} + }, + "fromJoining": "С момента присоединения", + "@fromJoining": { + "type": "String", + "placeholders": {} + }, + "fromTheInvitation": "С момента приглашения", + "@fromTheInvitation": { + "type": "String", + "placeholders": {} + }, + "goToTheNewRoom": "В новую комнату", + "@goToTheNewRoom": { + "type": "String", + "placeholders": {} + }, + "group": "Группа", + "@group": { + "type": "String", + "placeholders": {} + }, + "groupIsPublic": "Публичная группа", + "@groupIsPublic": { + "type": "String", + "placeholders": {} + }, + "groups": "Группы", + "@groups": { + "type": "String", + "placeholders": {} + }, + "groupWith": "Группа с {displayname}", + "@groupWith": { + "type": "String", + "placeholders": { + "displayname": { + "type": "String" + } + } + }, + "guestsAreForbidden": "Гости не могут присоединиться", + "@guestsAreForbidden": { + "type": "String", + "placeholders": {} + }, + "guestsCanJoin": "Гости могут присоединиться", + "@guestsCanJoin": { + "type": "String", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "{username} отозвал(а) приглашение для {targetName}", + "@hasWithdrawnTheInvitationFor": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "help": "Помощь", + "@help": { + "type": "String", + "placeholders": {} + }, + "hideRedactedEvents": "Скрыть отредактированные события", + "@hideRedactedEvents": { + "type": "String", + "placeholders": {} + }, + "hideUnknownEvents": "Скрыть неизвестные события", + "@hideUnknownEvents": { + "type": "String", + "placeholders": {} + }, + "howOffensiveIsThisContent": "Насколько оскорбительным является этот контент?", + "@howOffensiveIsThisContent": { + "type": "String", + "placeholders": {} + }, + "id": "ID", + "@id": { + "type": "String", + "placeholders": {} + }, + "identity": "Идентификация", + "@identity": { + "type": "String", + "placeholders": {} + }, + "ignore": "Игнорировать", + "@ignore": { + "type": "String", + "placeholders": {} + }, + "ignoredUsers": "Игнорируемые пользователи", + "@ignoredUsers": { + "type": "String", + "placeholders": {} + }, + "iHaveClickedOnLink": "Я перешёл по ссылке", + "@iHaveClickedOnLink": { + "type": "String", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "Неверный пароль или ключ восстановления", + "@incorrectPassphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "inoffensive": "Безобидный", + "@inoffensive": { + "type": "String", + "placeholders": {} + }, + "inviteContact": "Пригласить контакт", + "@inviteContact": { + "type": "String", + "placeholders": {} + }, + "inviteContactToGroup": "Пригласить контакт в {groupName}", + "@inviteContactToGroup": { + "type": "String", + "placeholders": { + "groupName": { + "type": "String" + } + } + }, + "invited": "Приглашён", + "@invited": { + "type": "String", + "placeholders": {} + }, + "invitedUser": "📩 {username} пригласил(а) {targetName}", + "@invitedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "invitedUsersOnly": "Только приглашённым пользователям", + "@invitedUsersOnly": { + "type": "String", + "placeholders": {} + }, + "inviteForMe": "Приглашение для меня", + "@inviteForMe": { + "type": "String", + "placeholders": {} + }, + "inviteText": "{username} пригласил(а) вас в FluffyChat. \n1. Посетите https://fluffychat.im и установите приложение \n2. Зарегистрируйтесь или войдите \n3. Откройте ссылку приглашения: \n {link}", + "@inviteText": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "link": { + "type": "String" + } + } + }, + "isTyping": "печатает…", + "@isTyping": { + "type": "String", + "placeholders": {} + }, + "joinedTheChat": "👋 {username} присоединился(ась) к чату", + "@joinedTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "joinRoom": "Присоединиться к комнате", + "@joinRoom": { + "type": "String", + "placeholders": {} + }, + "kicked": "👞 {username} выгнал(а) {targetName}", + "@kicked": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickedAndBanned": "🙅 {username} выгнал(а) и заблокировал(а) {targetName}", + "@kickedAndBanned": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickFromChat": "Выгнать из чата", + "@kickFromChat": { + "type": "String", + "placeholders": {} + }, + "lastActiveAgo": "Последнее посещение: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "String", + "placeholders": { + "localizedTimeShort": { + "type": "String" + } + } + }, + "leave": "Покинуть", + "@leave": { + "type": "String", + "placeholders": {} + }, + "leftTheChat": "Покинуть чат", + "@leftTheChat": { + "type": "String", + "placeholders": {} + }, + "license": "Лицензия", + "@license": { + "type": "String", + "placeholders": {} + }, + "lightTheme": "Светлая", + "@lightTheme": { + "type": "String", + "placeholders": {} + }, + "loadCountMoreParticipants": "{count, plural, one{Загрузить еще # участника} few{Загрузить еще # участников} other{Загрузить еще # участников}}", + "@loadCountMoreParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "loadingPleaseWait": "Загрузка... Пожалуйста, подождите.", + "@loadingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "loadMore": "Загрузить больше…", + "@loadMore": { + "type": "String", + "placeholders": {} + }, + "locationDisabledNotice": "Службы определения местоположения отключены. Включите их, чтобы иметь возможность обмениваться информацией о своем местоположении.", + "@locationDisabledNotice": { + "type": "String", + "placeholders": {} + }, + "locationPermissionDeniedNotice": "Разрешение на определение местоположения отклонено. Пожалуйста, предоставьте это разрешение, чтобы иметь возможность делиться своим местоположением.", + "@locationPermissionDeniedNotice": { + "type": "String", + "placeholders": {} + }, + "login": "Войти", + "@login": { + "type": "String", + "placeholders": {} + }, + "logInTo": "Войти в {homeserver}", + "@logInTo": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "logout": "Выйти", + "@logout": { + "type": "String", + "placeholders": {} + }, + "memberChanges": "Изменения участников", + "@memberChanges": { + "type": "String", + "placeholders": {} + }, + "mention": "Упомянуть", + "@mention": { + "type": "String", + "placeholders": {} + }, + "messages": "Сообщения", + "@messages": { + "type": "String", + "placeholders": {} + }, + "moderator": "Модератор", + "@moderator": { + "type": "String", + "placeholders": {} + }, + "muteChat": "Отключить уведомления", + "@muteChat": { + "type": "String", + "placeholders": {} + }, + "needPantalaimonWarning": "Помните, что вам нужен Pantalaimon для использования сквозного шифрования.", + "@needPantalaimonWarning": { + "type": "String", + "placeholders": {} + }, + "newChat": "Новый чат", + "@newChat": { + "type": "String", + "placeholders": {} + }, + "newMessageInFluffyChat": "💬 Новое сообщение во FluffyChat", + "@newMessageInFluffyChat": { + "type": "String", + "placeholders": {} + }, + "newVerificationRequest": "Новый запрос на подтверждение!", + "@newVerificationRequest": { + "type": "String", + "placeholders": {} + }, + "next": "Далее", + "@next": { + "type": "String", + "placeholders": {} + }, + "no": "Нет", + "@no": { + "type": "String", + "placeholders": {} + }, + "noConnectionToTheServer": "Нет соединения с сервером", + "@noConnectionToTheServer": { + "type": "String", + "placeholders": {} + }, + "noEmotesFound": "Эмодзи не найдены 😕", + "@noEmotesFound": { + "type": "String", + "placeholders": {} + }, + "noEncryptionForPublicRooms": "Вы можете активировать шифрование только тогда, когда комната перестает быть общедоступной.", + "@noEncryptionForPublicRooms": { + "type": "String", + "placeholders": {} + }, + "noGoogleServicesWarning": "Похоже, у вас нет служб Google на вашем телефоне. Это хорошее решение для вашей конфиденциальности! Для получения push-уведомлений во FluffyChat мы рекомендуем использовать ntfy. С ntfy или другим провайдером единых уведомлений вы можете получать push-уведомления безопасным способом передачи данных. Скачать ntfy можно из F-Droid или из Play Маркета.", + "@noGoogleServicesWarning": { + "type": "String", + "placeholders": {} + }, + "noMatrixServer": "{server1} не является matrix-сервером, использовать {server2} вместо него?", + "@noMatrixServer": { + "type": "String", + "placeholders": { + "server1": { + "type": "String" + }, + "server2": { + "type": "String" + } + } + }, + "none": "Ничего", + "@none": { + "type": "String", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "Вы ещё не добавили способ восстановления пароля.", + "@noPasswordRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "noPermission": "Нет прав доступа", + "@noPermission": { + "type": "String", + "placeholders": {} + }, + "noRoomsFound": "Комнаты не найдены…", + "@noRoomsFound": { + "type": "String", + "placeholders": {} + }, + "notifications": "Уведомления", + "@notifications": { + "type": "String", + "placeholders": {} + }, + "notificationsEnabledForThisAccount": "Уведомления включены для этой учётной записи", + "@notificationsEnabledForThisAccount": { + "type": "String", + "placeholders": {} + }, + "numUsersTyping": "{count} пользователей печатают…", + "@numUsersTyping": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "obtainingLocation": "Получение местоположения…", + "@obtainingLocation": { + "type": "String", + "placeholders": {} + }, + "offensive": "Оскорбительный", + "@offensive": { + "type": "String", + "placeholders": {} + }, + "offline": "Не в сети", + "@offline": { + "type": "String", + "placeholders": {} + }, + "ok": "Ок", + "@ok": { + "type": "String", + "placeholders": {} + }, + "online": "В сети", + "@online": { + "type": "String", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "Резервное копирование ключей на сервере включено", + "@onlineKeyBackupEnabled": { + "type": "String", + "placeholders": {} + }, + "oopsPushError": "Ой! К сожалению, при настройке push-уведомлений произошла ошибка.", + "@oopsPushError": { + "type": "String", + "placeholders": {} + }, + "oopsSomethingWentWrong": "Ой, что-то пошло не так…", + "@oopsSomethingWentWrong": { + "type": "String", + "placeholders": {} + }, + "openAppToReadMessages": "Откройте приложение для чтения сообщений", + "@openAppToReadMessages": { + "type": "String", + "placeholders": {} + }, + "openCamera": "Открыть камеру", + "@openCamera": { + "type": "String", + "placeholders": {} + }, + "openInMaps": "Открыть на картах", + "@openInMaps": { + "type": "String", + "placeholders": {} + }, + "or": "Или", + "@or": { + "type": "String", + "placeholders": {} + }, + "participant": "Участник", + "@participant": { + "type": "String", + "placeholders": {} + }, + "passphraseOrKey": "пароль или ключ восстановления", + "@passphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "password": "Пароль", + "@password": { + "type": "String", + "placeholders": {} + }, + "passwordForgotten": "Забыли пароль", + "@passwordForgotten": { + "type": "String", + "placeholders": {} + }, + "passwordHasBeenChanged": "Пароль был изменён", + "@passwordHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "passwordRecovery": "Восстановление пароля", + "@passwordRecovery": { + "type": "String", + "placeholders": {} + }, + "people": "Люди", + "@people": { + "type": "String", + "placeholders": {} + }, + "pickImage": "Выбрать изображение", + "@pickImage": { + "type": "String", + "placeholders": {} + }, + "pin": "Закрепить", + "@pin": { + "type": "String", + "placeholders": {} + }, + "play": "Проиграть {fileName}", + "@play": { + "type": "String", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "pleaseChoose": "Пожалуйста, выберите", + "@pleaseChoose": { + "type": "String", + "placeholders": {} + }, + "pleaseChooseAPasscode": "Пожалуйста, выберите код доступа", + "@pleaseChooseAPasscode": { + "type": "String", + "placeholders": {} + }, + "pleaseClickOnLink": "Пожалуйста, нажмите на ссылку в электронной почте, для того чтобы продолжить.", + "@pleaseClickOnLink": { + "type": "String", + "placeholders": {} + }, + "pleaseEnter4Digits": "Введите 4 цифры или оставьте поле пустым, чтобы отключить блокировку приложения.", + "@pleaseEnter4Digits": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPassword": "Пожалуйста, введите ваш пароль", + "@pleaseEnterYourPassword": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPin": "Пожалуйста, введите свой пин-код", + "@pleaseEnterYourPin": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourUsername": "Пожалуйста, введите имя пользователя", + "@pleaseEnterYourUsername": { + "type": "String", + "placeholders": {} + }, + "pleaseFollowInstructionsOnWeb": "Следуйте инструкциям на веб-сайте и нажмите «Далее».", + "@pleaseFollowInstructionsOnWeb": { + "type": "String", + "placeholders": {} + }, + "privacy": "Конфиденциальность", + "@privacy": { + "type": "String", + "placeholders": {} + }, + "publicRooms": "Публичные комнаты", + "@publicRooms": { + "type": "String", + "placeholders": {} + }, + "pushRules": "Правила push", + "@pushRules": { + "type": "String", + "placeholders": {} + }, + "reason": "Причина", + "@reason": { + "type": "String", + "placeholders": {} + }, + "recording": "Запись", + "@recording": { + "type": "String", + "placeholders": {} + }, + "redactedAnEvent": "{username} отредактировал(а) событие", + "@redactedAnEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "redactMessage": "Отредактировать сообщение", + "@redactMessage": { + "type": "String", + "placeholders": {} + }, + "register": "Зарегистрироваться", + "@register": { + "type": "String", + "placeholders": {} + }, + "reject": "Отказать", + "@reject": { + "type": "String", + "placeholders": {} + }, + "rejectedTheInvitation": "{username} отклонил(а) приглашение", + "@rejectedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "rejoin": "Зайти повторно", + "@rejoin": { + "type": "String", + "placeholders": {} + }, + "remove": "Удалить", + "@remove": { + "type": "String", + "placeholders": {} + }, + "removeAllOtherDevices": "Удалить все другие устройства", + "@removeAllOtherDevices": { + "type": "String", + "placeholders": {} + }, + "removedBy": "Удалено пользователем {username}", + "@removedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "removeDevice": "Удалить устройство", + "@removeDevice": { + "type": "String", + "placeholders": {} + }, + "unbanFromChat": "Разблокировать в чате", + "@unbanFromChat": { + "type": "String", + "placeholders": {} + }, + "removeYourAvatar": "Удалить свой аватар", + "@removeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "replaceRoomWithNewerVersion": "Заменить комнату более новой версией", + "@replaceRoomWithNewerVersion": { + "type": "String", + "placeholders": {} + }, + "reply": "Ответить", + "@reply": { + "type": "String", + "placeholders": {} + }, + "reportMessage": "Сообщить о сообщении", + "@reportMessage": { + "type": "String", + "placeholders": {} + }, + "requestPermission": "Запросить разрешение", + "@requestPermission": { + "type": "String", + "placeholders": {} + }, + "roomHasBeenUpgraded": "Комната обновлена", + "@roomHasBeenUpgraded": { + "type": "String", + "placeholders": {} + }, + "roomVersion": "Версия комнаты", + "@roomVersion": { + "type": "String", + "placeholders": {} + }, + "saveFile": "Сохранить файл", + "@saveFile": { + "type": "String", + "placeholders": {} + }, + "search": "Поиск", + "@search": { + "type": "String", + "placeholders": {} + }, + "security": "Безопасность", + "@security": { + "type": "String", + "placeholders": {} + }, + "seenByUser": "Просмотрено пользователем {username}", + "@seenByUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "send": "Прислать", + "@send": { + "type": "String", + "placeholders": {} + }, + "sendAMessage": "Отправить сообщение", + "@sendAMessage": { + "type": "String", + "placeholders": {} + }, + "sendAsText": "Отправить как текст", + "@sendAsText": { + "type": "String" + }, + "sendAudio": "Отправить аудио", + "@sendAudio": { + "type": "String", + "placeholders": {} + }, + "sendFile": "Отправить файл", + "@sendFile": { + "type": "String", + "placeholders": {} + }, + "sendImage": "Отправить изображение", + "@sendImage": { + "type": "String", + "placeholders": {} + }, + "sendMessages": "Отправить сообщения", + "@sendMessages": { + "type": "String", + "placeholders": {} + }, + "sendOriginal": "Отправить оригинал", + "@sendOriginal": { + "type": "String", + "placeholders": {} + }, + "sendSticker": "Отправить стикер", + "@sendSticker": { + "type": "String", + "placeholders": {} + }, + "sendVideo": "Отправить видео", + "@sendVideo": { + "type": "String", + "placeholders": {} + }, + "sentAFile": "📁 {username} отправил(а) файл", + "@sentAFile": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAnAudio": "🎤 {username} отправил(а) аудио", + "@sentAnAudio": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAPicture": "🖼️ {username} отправил(а) изображение", + "@sentAPicture": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentASticker": "😊 {username} отправил(а) стикер", + "@sentASticker": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAVideo": "🎥 {username} отправил(а) видео", + "@sentAVideo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentCallInformations": "{senderName} отправил(а) информацию о звонке", + "@sentCallInformations": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "setAsCanonicalAlias": "Установить как основной псевдоним", + "@setAsCanonicalAlias": { + "type": "String", + "placeholders": {} + }, + "setCustomEmotes": "Установить пользовательские эмодзи", + "@setCustomEmotes": { + "type": "String", + "placeholders": {} + }, + "setInvitationLink": "Установить ссылку для приглашения", + "@setInvitationLink": { + "type": "String", + "placeholders": {} + }, + "setPermissionsLevel": "Установить уровень разрешений", + "@setPermissionsLevel": { + "type": "String", + "placeholders": {} + }, + "setStatus": "Задать статус", + "@setStatus": { + "type": "String", + "placeholders": {} + }, + "settings": "Настройки", + "@settings": { + "type": "String", + "placeholders": {} + }, + "share": "Поделиться", + "@share": { + "type": "String", + "placeholders": {} + }, + "sharedTheLocation": "{username} поделился(ась) местоположением", + "@sharedTheLocation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "shareLocation": "Поделиться местоположением", + "@shareLocation": { + "type": "String", + "placeholders": {} + }, + "showPassword": "Показать пароль", + "@showPassword": { + "type": "String", + "placeholders": {} + }, + "singlesignon": "Единая точка входа", + "@singlesignon": { + "type": "String", + "placeholders": {} + }, + "skip": "Пропустить", + "@skip": { + "type": "String", + "placeholders": {} + }, + "sourceCode": "Исходный код", + "@sourceCode": { + "type": "String", + "placeholders": {} + }, + "spaceIsPublic": "Публичное пространство", + "@spaceIsPublic": { + "type": "String", + "placeholders": {} + }, + "spaceName": "Название пространства", + "@spaceName": { + "type": "String", + "placeholders": {} + }, + "startedACall": "{senderName} начал(а) звонок", + "@startedACall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "status": "Статус", + "@status": { + "type": "String", + "placeholders": {} + }, + "statusExampleMessage": "Как у вас сегодня дела?", + "@statusExampleMessage": { + "type": "String", + "placeholders": {} + }, + "submit": "Отправить", + "@submit": { + "type": "String", + "placeholders": {} + }, + "synchronizingPleaseWait": "Синхронизация… Пожалуйста, подождите.", + "@synchronizingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "systemTheme": "Системная", + "@systemTheme": { + "type": "String", + "placeholders": {} + }, + "theyDontMatch": "Они не совпадают", + "@theyDontMatch": { + "type": "String", + "placeholders": {} + }, + "theyMatch": "Они совпадают", + "@theyMatch": { + "type": "String", + "placeholders": {} + }, + "title": "FluffyChat", + "@title": { + "description": "Title for the application", + "type": "String", + "placeholders": {} + }, + "toggleFavorite": "Переключить избранное", + "@toggleFavorite": { + "type": "String", + "placeholders": {} + }, + "toggleMuted": "Переключить без звука", + "@toggleMuted": { + "type": "String", + "placeholders": {} + }, + "toggleUnread": "Отметить как прочитанное/непрочитанное", + "@toggleUnread": { + "type": "String", + "placeholders": {} + }, + "tooManyRequestsWarning": "Слишком много запросов. Пожалуйста, повторите попытку позже!", + "@tooManyRequestsWarning": { + "type": "String", + "placeholders": {} + }, + "transferFromAnotherDevice": "Перенос с другого устройства", + "@transferFromAnotherDevice": { + "type": "String", + "placeholders": {} + }, + "tryToSendAgain": "Попробуйте отправить ещё раз", + "@tryToSendAgain": { + "type": "String", + "placeholders": {} + }, + "unavailable": "Недоступен", + "@unavailable": { + "type": "String", + "placeholders": {} + }, + "unbannedUser": "{username} разблокировал(а) {targetName}", + "@unbannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "unblockDevice": "Разблокировать устройство", + "@unblockDevice": { + "type": "String", + "placeholders": {} + }, + "unknownDevice": "Неизвестное устройство", + "@unknownDevice": { + "type": "String", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "Неизвестный алгоритм шифрования", + "@unknownEncryptionAlgorithm": { + "type": "String", + "placeholders": {} + }, + "unknownEvent": "Неизвестное событие '{type}'", + "@unknownEvent": { + "type": "String", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "unmuteChat": "Включить уведомления", + "@unmuteChat": { + "type": "String", + "placeholders": {} + }, + "unpin": "Открепить", + "@unpin": { + "type": "String", + "placeholders": {} + }, + "unreadChats": "{unreadCount, plural, one{# непрочитанный чат} few{# непрочитанных чата} other{# непрочитанных чатов}}", + "@unreadChats": { + "type": "String", + "placeholders": { + "unreadCount": { + "type": "int" + } + } + }, + "userAndOthersAreTyping": "{username} и еще {count} печатают…", + "@userAndOthersAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "userAndUserAreTyping": "{username} и {username2} печатают…", + "@userAndUserAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "username2": { + "type": "String" + } + } + }, + "userIsTyping": "{username} печатает…", + "@userIsTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "userLeftTheChat": "🚪 {username} покинул(а) чат", + "@userLeftTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "username": "Имя пользователя", + "@username": { + "type": "String", + "placeholders": {} + }, + "userSentUnknownEvent": "{username} отправил(а) событие типа \"{type}\"", + "@userSentUnknownEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "type": { + "type": "String" + } + } + }, + "verified": "Проверено", + "@verified": { + "type": "String", + "placeholders": {} + }, + "verify": "Проверить", + "@verify": { + "type": "String", + "placeholders": {} + }, + "verifyStart": "Начать проверку", + "@verifyStart": { + "type": "String", + "placeholders": {} + }, + "verifySuccess": "Вы успешно проверены!", + "@verifySuccess": { + "type": "String", + "placeholders": {} + }, + "verifyTitle": "Проверка другой учётной записи", + "@verifyTitle": { + "type": "String", + "placeholders": {} + }, + "videoCall": "Видеозвонок", + "@videoCall": { + "type": "String", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "Видимость истории чата", + "@visibilityOfTheChatHistory": { + "type": "String", + "placeholders": {} + }, + "visibleForAllParticipants": "Видима для всех участников", + "@visibleForAllParticipants": { + "type": "String", + "placeholders": {} + }, + "visibleForEveryone": "Видна всем", + "@visibleForEveryone": { + "type": "String", + "placeholders": {} + }, + "voiceMessage": "Отправить голосовое сообщение", + "@voiceMessage": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "Жду, когда партнер примет запроc…", + "@waitingPartnerAcceptRequest": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerEmoji": "Жду, когда партнер примет эмодзи…", + "@waitingPartnerEmoji": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerNumbers": "В ожидании партнёра, чтобы принять числа…", + "@waitingPartnerNumbers": { + "type": "String", + "placeholders": {} + }, + "wallpaper": "Обои:", + "@wallpaper": { + "type": "String", + "placeholders": {} + }, + "warning": "Предупреждение!", + "@warning": { + "type": "String", + "placeholders": {} + }, + "weSentYouAnEmail": "Мы отправили вам электронное письмо", + "@weSentYouAnEmail": { + "type": "String", + "placeholders": {} + }, + "whoCanPerformWhichAction": "Кто и какое действие может выполнять", + "@whoCanPerformWhichAction": { + "type": "String", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "Кому разрешено вступать в эту группу", + "@whoIsAllowedToJoinThisGroup": { + "type": "String", + "placeholders": {} + }, + "whyDoYouWantToReportThis": "Почему вы хотите сообщить об этом?", + "@whyDoYouWantToReportThis": { + "type": "String", + "placeholders": {} + }, + "wipeChatBackup": "Удалить резервную копию чата, чтобы создать новый ключ восстановления?", + "@wipeChatBackup": { + "type": "String", + "placeholders": {} + }, + "withTheseAddressesRecoveryDescription": "По этим адресам вы можете восстановить свой пароль.", + "@withTheseAddressesRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "writeAMessage": "Напишите сообщение…", + "@writeAMessage": { + "type": "String", + "placeholders": {} + }, + "yes": "Да", + "@yes": { + "type": "String", + "placeholders": {} + }, + "you": "Вы", + "@you": { + "type": "String", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "Вы больше не участвуете в этом чате", + "@youAreNoLongerParticipatingInThisChat": { + "type": "String", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "Вы были заблокированы в этом чате", + "@youHaveBeenBannedFromThisChat": { + "type": "String", + "placeholders": {} + }, + "yourPublicKey": "Ваш открытый ключ", + "@yourPublicKey": { + "type": "String", + "placeholders": {} + }, + "chatHasBeenAddedToThisSpace": "Чат был добавлен в это пространство", + "@chatHasBeenAddedToThisSpace": {}, + "addToSpace": "Добавить в пространство", + "@addToSpace": {}, + "scanQrCode": "Сканировать QR-код", + "@scanQrCode": {}, + "sendOnEnter": "Отправлять по Enter", + "@sendOnEnter": {}, + "homeserver": "Домашний сервер", + "@homeserver": {}, + "serverRequiresEmail": "Этот сервер должен подтвердить ваш адрес электронной почты для регистрации.", + "@serverRequiresEmail": {}, + "enableMultiAccounts": "(БЕТА) Включить несколько учетных записей на этом устройстве", + "@enableMultiAccounts": {}, + "bundleName": "Название пакета", + "@bundleName": {}, + "removeFromBundle": "Удалить из этого пакета", + "@removeFromBundle": {}, + "addToBundle": "Добавить в пакет", + "@addToBundle": {}, + "editBundlesForAccount": "Изменить пакеты для этой учетной записи", + "@editBundlesForAccount": {}, + "addAccount": "Добавить учетную запись", + "@addAccount": {}, + "link": "Ссылка", + "@link": {}, + "oneClientLoggedOut": "Один из ваших клиентов вышел", + "@oneClientLoggedOut": {}, + "yourChatBackupHasBeenSetUp": "Резервное копирование чата настроено.", + "@yourChatBackupHasBeenSetUp": {}, + "unverified": "Не проверено", + "@unverified": {}, + "commandHint_clearcache": "Очистить кэш", + "@commandHint_clearcache": { + "type": "String", + "description": "Usage hint for the command /clearcache" + }, + "commandHint_discardsession": "Удалить сеанс", + "@commandHint_discardsession": { + "type": "String", + "description": "Usage hint for the command /discardsession" + }, + "commandHint_dm": "Начните личный чат\nИспользуйте --no-encryption, чтобы отключить шифрование", + "@commandHint_dm": { + "type": "String", + "description": "Usage hint for the command /dm" + }, + "messageInfo": "Информация о сообщении", + "@messageInfo": {}, + "openGallery": "Открыть галерею", + "@openGallery": {}, + "removeFromSpace": "Удалить из пространства", + "@removeFromSpace": {}, + "commandHint_create": "Создайте пустой групповой чат\nИспользуйте --no-encryption, чтобы отключить шифрование", + "@commandHint_create": { + "type": "String", + "description": "Usage hint for the command /create" + }, + "sender": "Отправитель", + "@sender": {}, + "addToSpaceDescription": "Выберите пространство, чтобы добавить к нему этот чат.", + "@addToSpaceDescription": {}, + "start": "Начать", + "@start": {}, + "time": "Время", + "@time": {}, + "messageType": "Тип сообщения", + "@messageType": {}, + "repeatPassword": "Повторите пароль", + "@repeatPassword": {}, + "openVideoCamera": "Открыть камеру для видео", + "@openVideoCamera": { + "type": "String", + "placeholders": {} + }, + "videoWithSize": "Видео ({size})", + "@videoWithSize": { + "type": "String", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "publish": "Опубликовать", + "@publish": {}, + "dismiss": "Отклонить", + "@dismiss": {}, + "markAsRead": "Отметить как прочитанное", + "@markAsRead": {}, + "reportUser": "Сообщить о пользователе", + "@reportUser": {}, + "openChat": "Открыть чат", + "@openChat": {}, + "reactedWith": "{sender} реагирует с {reaction}", + "@reactedWith": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "reaction": { + "type": "String" + } + } + }, + "emojis": "Эмодзи", + "@emojis": {}, + "voiceCall": "Голосовой звонок", + "@voiceCall": {}, + "unsupportedAndroidVersion": "Неподдерживаемая версия Android", + "@unsupportedAndroidVersion": {}, + "unsupportedAndroidVersionLong": "Для этой функции требуется более новая версия Android. Проверьте наличие обновлений или поддержку Lineage OS.", + "@unsupportedAndroidVersionLong": {}, + "placeCall": "Совершить звонок", + "@placeCall": {}, + "videoCallsBetaWarning": "Обратите внимание, что видеозвонки в настоящее время находятся в бета-версии. Они могут работать не так, как ожидалось, или вообще не работать на всех платформах.", + "@videoCallsBetaWarning": {}, + "experimentalVideoCalls": "Экспериментальные видеозвонки", + "@experimentalVideoCalls": {}, + "emailOrUsername": "Адрес электронной почты или имя пользователя", + "@emailOrUsername": {}, + "pinMessage": "Прикрепить к комнате", + "@pinMessage": {}, + "confirmEventUnpin": "Вы уверены, что хотите навсегда открепить событие?", + "@confirmEventUnpin": {}, + "switchToAccount": "Переключиться на учётную запись {number}", + "@switchToAccount": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "nextAccount": "Следующая учётная запись", + "@nextAccount": {}, + "previousAccount": "Предыдущая учётная запись", + "@previousAccount": {}, + "addWidget": "Добавить виджет", + "@addWidget": {}, + "widgetVideo": "Видео", + "@widgetVideo": {}, + "widgetEtherpad": "Текстовая записка", + "@widgetEtherpad": {}, + "widgetCustom": "Пользовательский", + "@widgetCustom": {}, + "widgetJitsi": "Совещание Jitsi", + "@widgetJitsi": {}, + "widgetName": "Имя", + "@widgetName": {}, + "widgetUrlError": "Этот URL не действителен.", + "@widgetUrlError": {}, + "widgetNameError": "Пожалуйста, укажите отображаемое имя.", + "@widgetNameError": {}, + "errorAddingWidget": "Ошибка при добавлении виджета.", + "@errorAddingWidget": {}, + "separateChatTypes": "Разделять личные чаты и группы", + "@separateChatTypes": { + "type": "String", + "placeholders": {} + }, + "youRejectedTheInvitation": "Вы отклонили приглашение", + "@youRejectedTheInvitation": {}, + "youAcceptedTheInvitation": "👍 Вы приняли приглашение", + "@youAcceptedTheInvitation": {}, + "youUnbannedUser": "Вы разблокировали {user}", + "@youUnbannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youJoinedTheChat": "Вы присоединились к чату", + "@youJoinedTheChat": {}, + "youKickedAndBanned": "🙅 Вы выгнали и заблокировали {user}", + "@youKickedAndBanned": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youInvitedUser": "📩 Вы пригласили {user}", + "@youInvitedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youKicked": "👞 Вы выгнали {user}", + "@youKicked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youHaveWithdrawnTheInvitationFor": "Вы отозвали приглашение для {user}", + "@youHaveWithdrawnTheInvitationFor": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youBannedUser": "Вы заблокировали {user}", + "@youBannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youInvitedBy": "📩 Вы были приглашены {user}", + "@youInvitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "recoveryKeyLost": "Ключ восстановления утерян?", + "@recoveryKeyLost": {}, + "users": "Пользователи", + "@users": {}, + "unlockOldMessages": "Разблокировать старые сообщения", + "@unlockOldMessages": {}, + "storeInSecureStorageDescription": "Сохраните ключ восстановления в безопасном хранилище этого устройства.", + "@storeInSecureStorageDescription": {}, + "storeSecurlyOnThisDevice": "Сохранить на этом устройстве", + "@storeSecurlyOnThisDevice": {}, + "saveKeyManuallyDescription": "Сохраните этот ключ вручную, вызвав диалог общего доступа системы или буфера обмена.", + "@saveKeyManuallyDescription": {}, + "recoveryKey": "Ключ восстановления", + "@recoveryKey": {}, + "pleaseEnterRecoveryKey": "Введите ключ восстановления:", + "@pleaseEnterRecoveryKey": {}, + "pleaseEnterRecoveryKeyDescription": "Чтобы разблокировать старые сообщения, введите ключ восстановления, сгенерированный в предыдущем сеансе. Ваш ключ восстановления НЕ является вашим паролем.", + "@pleaseEnterRecoveryKeyDescription": {}, + "storeInAndroidKeystore": "Сохранить в Android KeyStore", + "@storeInAndroidKeystore": {}, + "storeInAppleKeyChain": "Сохранить в Apple KeyChain", + "@storeInAppleKeyChain": {}, + "countFiles": "{count, plural, one{# файл} few{# файла} other{# файлов}}", + "@countFiles": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "user": "Пользователь", + "@user": {}, + "confirmMatrixId": "Пожалуйста, подтвердите Matrix ID, чтобы удалить свою учётную запись.", + "@confirmMatrixId": {}, + "supposedMxid": "Это должно быть {mxid}", + "@supposedMxid": { + "type": "String", + "placeholders": { + "mxid": { + "type": "String" + } + } + }, + "dehydrateTor": "Пользователи TOR: Экспорт сеанса", + "@dehydrateTor": {}, + "indexedDbErrorLong": "К сожалению, по умолчанию хранилище сообщений не включено в приватном режиме.\nПожалуйста, посетите\n- about:config\n- установите для dom.indexedDB.privateBrowsing.enabled значение true\nВ противном случае запуск FluffyChat будет невозможен.", + "@indexedDbErrorLong": {}, + "custom": "Пользовательское", + "@custom": {}, + "hydrate": "Восстановить из файла резервной копии", + "@hydrate": {}, + "hydrateTor": "Пользователи TOR: Импорт экспорта сессии", + "@hydrateTor": {}, + "hydrateTorLong": "В прошлый раз вы экспортировали свою сессию в TOR? Быстро импортируйте его и продолжайте общение.", + "@hydrateTorLong": {}, + "dehydrateTorLong": "Для пользователей TOR рекомендуется экспортировать сессию перед закрытием окна.", + "@dehydrateTorLong": {}, + "dehydrate": "Экспорт сеанса и очистка устройства", + "@dehydrate": {}, + "dehydrateWarning": "Это действие не может быть отменено. Убедитесь, что вы безопасно сохранили файл резервной копии.", + "@dehydrateWarning": {}, + "indexedDbErrorTitle": "Проблемы с приватным режимом", + "@indexedDbErrorTitle": {}, + "otherCallingPermissions": "Микрофон, камера и другие разрешения FluffyChat", + "@otherCallingPermissions": {}, + "enterSpace": "Войти в пространство", + "@enterSpace": {}, + "screenSharingDetail": "Вы делитесь своим экраном в FuffyChat", + "@screenSharingDetail": {}, + "callingAccountDetails": "Позволяет FluffyChat использовать родное android приложение для звонков.", + "@callingAccountDetails": {}, + "newSpace": "Новое пространство", + "@newSpace": {}, + "appearOnTop": "Появляться сверху", + "@appearOnTop": {}, + "commandHint_markasdm": "Пометить как комнату личных сообщений", + "@commandHint_markasdm": {}, + "appearOnTopDetails": "Позволяет приложению отображаться сверху (не требуется, если у вас уже настроен Fluffychat как аккаунт для звонков)", + "@appearOnTopDetails": {}, + "foregroundServiceRunning": "Это уведомление появляется, когда запущена основная служба.", + "@foregroundServiceRunning": {}, + "newGroup": "Новая группа", + "@newGroup": {}, + "enterRoom": "Войти в комнату", + "@enterRoom": {}, + "allSpaces": "Все пространства", + "@allSpaces": {}, + "callingPermissions": "Разрешения на звонки", + "@callingPermissions": {}, + "callingAccount": "Аккаунт для звонков", + "@callingAccount": {}, + "commandHint_markasgroup": "Пометить как группу", + "@commandHint_markasgroup": {}, + "whyIsThisMessageEncrypted": "Почему это сообщение нечитаемо?", + "@whyIsThisMessageEncrypted": {}, + "noKeyForThisMessage": "Это может произойти, если сообщение было отправлено до того, как вы вошли в свою учетную запись на данном устройстве.\n\nТакже возможно, что отправитель заблокировал ваше устройство или что-то пошло не так с интернет-соединением.\n\nВы можете прочитать сообщение на другой сессии? Тогда вы можете перенести сообщение с неё! Перейдите в Настройки > Устройства и убедитесь, что ваши устройства проверили друг друга. Когда вы откроете комнату в следующий раз и обе сессии будут открыты, ключи будут переданы автоматически.\n\nВы не хотите потерять ключи при выходе из системы или переключении устройств? Убедитесь, что вы включили резервное копирование чата в настройках.", + "@noKeyForThisMessage": {}, + "screenSharingTitle": "общий доступ к экрану", + "@screenSharingTitle": {}, + "numChats": "", + "@numChats": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "fileIsTooBigForServer": "Отправка не удалась! Сервер поддерживает только вложения размером до {max}.", + "@fileIsTooBigForServer": {}, + "hideUnimportantStateEvents": "Скрыть необязательные события статуса", + "@hideUnimportantStateEvents": {}, + "sorryThatsNotPossible": "Извините... это невозможно", + "@sorryThatsNotPossible": {}, + "openLinkInBrowser": "Открыть ссылку в браузере", + "@openLinkInBrowser": {}, + "fileHasBeenSavedAt": "Файл сохранён в {path}", + "@fileHasBeenSavedAt": { + "type": "String", + "placeholders": { + "path": { + "type": "String" + } + } + }, + "commandHint_cuddle": "Отправить улыбку", + "@commandHint_cuddle": {}, + "readUpToHere": "Непрочитанное", + "@readUpToHere": {}, + "commandHint_hug": "Отправить обнимашки", + "@commandHint_hug": {}, + "cuddleContent": "{senderName} улыбнулся(ась) Вам", + "@cuddleContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "hugContent": "{senderName} обнял(а) Вас", + "@hugContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "jump": "Перейти", + "@jump": {}, + "doNotShowAgain": "Не показывать снова", + "@doNotShowAgain": {}, + "newSpaceDescription": "Пространства позволяют объединять Ваши чаты и создавать частные или общедоступные сообщества.", + "@newSpaceDescription": {}, + "disableEncryptionWarning": "В целях безопасности Вы не можете отключить шифрование в чате, где оно было включено.", + "@disableEncryptionWarning": {}, + "deviceKeys": "Ключи устройств:", + "@deviceKeys": {}, + "noBackupWarning": "Внимание! Без резервного копиирования, Вы потеряете доступ к своим зашифрованным сообщениям. Крайне рекомендуется включить резервное копирование перед выходом.", + "@noBackupWarning": {}, + "noOtherDevicesFound": "Другие устройства не найдены", + "@noOtherDevicesFound": {}, + "reportErrorDescription": "😭 О, нет. Что-то пошло не так. При желании вы можете сообщить об этой ошибке разработчикам.", + "@reportErrorDescription": {}, + "report": "пожаловаться", + "@report": {}, + "allRooms": "Все группы", + "@allRooms": { + "type": "String", + "placeholders": {} + }, + "startFirstChat": "Начните Ваш первый чат", + "@startFirstChat": {}, + "jumpToLastReadMessage": "Последнее прочитанное сообщение", + "@jumpToLastReadMessage": {}, + "wasDirectChatDisplayName": "Пустой чат (был {oldDisplayName})", + "@wasDirectChatDisplayName": { + "type": "String", + "placeholders": { + "oldDisplayName": { + "type": "String" + } + } + }, + "encryptThisChat": "Зашифровать этот чат", + "@encryptThisChat": {}, + "reopenChat": "Открыть чат заново", + "@reopenChat": {}, + "commandHint_googly": "Отправить выпученные глаза", + "@commandHint_googly": {}, + "signInWith": "Войти с {provider}", + "@signInWith": { + "type": "String", + "placeholders": { + "provider": { + "type": "String" + } + } + }, + "notAnImage": "Это не картинка.", + "@notAnImage": {}, + "importNow": "Импортировать сейчас", + "@importNow": {}, + "importEmojis": "Импортировать эмодзи", + "@importEmojis": {}, + "importFromZipFile": "Импортировать из ZIP-файла", + "@importFromZipFile": {}, + "exportEmotePack": "Экспортировать набор эмодзи как ZIP", + "@exportEmotePack": {}, + "replace": "Заменить", + "@replace": {}, + "googlyEyesContent": "{senderName} выпучил глаза", + "@googlyEyesContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "signInWithPassword": "Войти с помощью пароля", + "@signInWithPassword": {}, + "pleaseTryAgainLaterOrChooseDifferentServer": "Повторите попытку позже или выберите другой сервер.", + "@pleaseTryAgainLaterOrChooseDifferentServer": {}, + "sendTypingNotifications": "Отправлять уведомления о наборе текста", + "@sendTypingNotifications": {}, + "createGroup": "Создать группу", + "@createGroup": {}, + "inviteContactToGroupQuestion": "Вы хотите пригласить {contact} в чат \"{groupName}\"?", + "@inviteContactToGroupQuestion": {}, + "tryAgain": "Повторите попытку", + "@tryAgain": {}, + "addChatDescription": "Добавить описание чата...", + "@addChatDescription": {}, + "chatPermissions": "Права в чате", + "@chatPermissions": {}, + "chatDescription": "Описание чата", + "@chatDescription": {}, + "chatDescriptionHasBeenChanged": "Описание чата изменено", + "@chatDescriptionHasBeenChanged": {}, + "noChatDescriptionYet": "Описание чата не создано.", + "@noChatDescriptionYet": {}, + "invalidServerName": "Недопустимое имя сервера", + "@invalidServerName": {}, + "optionalRedactReason": "(Необязательно) Причина редактирования...", + "@optionalRedactReason": {}, + "redactMessageDescription": "Сообщение будет отредактировано для всех участников. Это необратимо.", + "@redactMessageDescription": {}, + "messagesStyle": "Сообщения:", + "@messagesStyle": {}, + "shareInviteLink": "Поделиться приглашением", + "@shareInviteLink": {}, + "redactedBy": "{username} отредактировал это событие", + "@redactedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "directChat": "Личный чат", + "@directChat": {}, + "profileNotFound": "Пользователь не найден на сервере. Это может быть проблемой подключения или пользователь не существует.", + "@profileNotFound": {}, + "setTheme": "Тема:", + "@setTheme": {}, + "redactedByBecause": "{username} отредактировал это событие. Причина: \"{reason}\"", + "@redactedByBecause": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "reason": { + "type": "String" + } + } + }, + "setChatDescription": "Установить описание чата", + "@setChatDescription": {}, + "setColorTheme": "Цветовая тема:", + "@setColorTheme": {}, + "invite": "Пригласить", + "@invite": {}, + "invitePrivateChat": "📨 Вас пригласили в приватный чат", + "@invitePrivateChat": {}, + "inviteGroupChat": "📨 Вас пригласили в групповой чат", + "@inviteGroupChat": {}, + "invalidInput": "Недопустимый ввод!", + "@invalidInput": {}, + "wrongPinEntered": "", + "@wrongPinEntered": { + "type": "String", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "emoteKeyboardNoRecents": "Недавно использованные эмодзи появятся здесь...", + "@emoteKeyboardNoRecents": { + "type": "String", + "placeholders": {} + }, + "banUserDescription": "Заблокированные в чате пользователи не смогут перезайти в чат, пока они не будут разблокированны.", + "@banUserDescription": {}, + "removeDevicesDescription": "Вы выйдете с этого устройства и больше не будете получать сообщения.", + "@removeDevicesDescription": {}, + "unbanUserDescription": "Пользователь сможет при желании зайти в чат снова.", + "@unbanUserDescription": {}, + "pushNotificationsNotAvailable": "Push-уведомления недоступны", + "@pushNotificationsNotAvailable": {}, + "makeAdminDescription": "Как только вы назначите этого пользователя администратором, вы не сможете этого отменить, так как их права доступа и ваши будут одинаковы.", + "@makeAdminDescription": {}, + "archiveRoomDescription": "Чат переместится в архив. Другим пользователям будет видно, что вы вышли из чата.", + "@archiveRoomDescription": {}, + "hasKnocked": "🚪 {user} постучался", + "@hasKnocked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "learnMore": "Узнать больше", + "@learnMore": {}, + "roomUpgradeDescription": "Затем чат будет воссоздан с новой версией комнаты. Все участники будут уведомлены о необходимости перейти в новый чат. Вы можете узнать больше о версиях комнат на https://spec.matrix.org/latest/rooms/", + "@roomUpgradeDescription": {}, + "pleaseEnterANumber": "Пожалуйста введите число больше 0", + "@pleaseEnterANumber": {}, + "kickUserDescription": "Пользователь будет изгнан из чата, но не будет заблокирован. В публичных чатах пользователь может перезайти когда угодно.", + "@kickUserDescription": {}, + "blockListDescription": "Вы можете заглушить тревожащих вас пользователей. Вы не будете получать сообщения или приглашения в комнату от пользователей из вашего личного чёрного списка.", + "@blockListDescription": {}, + "blockedUsers": "Заглушённые пользователи", + "@blockedUsers": {}, + "block": "Заглушить", + "@block": {}, + "blockUsername": "Игнорировать имя пользователя", + "@blockUsername": {}, + "createGroupAndInviteUsers": "Создать и начать приглашать", + "@createGroupAndInviteUsers": {}, + "startConversation": "Начать общение", + "@startConversation": {}, + "groupCanBeFoundViaSearch": "Группа может быть найдена поиском", + "@groupCanBeFoundViaSearch": {}, + "noUsersFoundWithQuery": "К сожалению пользователей с именем \"{query}\" не найдено. Убедитесь, что вы не совершили опечатку.", + "@noUsersFoundWithQuery": { + "type": "String", + "placeholders": { + "query": { + "type": "String" + } + } + }, + "yourGlobalUserIdIs": "Ваш глобальный идентификатор - ", + "@yourGlobalUserIdIs": {}, + "commandHint_sendraw": "Отправить сырой json", + "@commandHint_sendraw": {}, + "wrongRecoveryKey": "Простите... судя по всему это неверный ключ восстановления.", + "@wrongRecoveryKey": {}, + "groupName": "Название группы", + "@groupName": {}, + "databaseMigrationTitle": "База данных оптимизированна", + "@databaseMigrationTitle": {}, + "searchChatsRooms": "Поиск #чатов, @людей...", + "@searchChatsRooms": {}, + "databaseMigrationBody": "Пожалуйста, подождите. Это может занять некоторое время.", + "@databaseMigrationBody": {}, + "publicSpaces": "Публичные пространства", + "@publicSpaces": {}, + "passwordIsWrong": "Вы ввели неверный пароль", + "@passwordIsWrong": {}, + "pleaseEnterYourCurrentPassword": "Пожалуйста, введите свой текущий пароль", + "@pleaseEnterYourCurrentPassword": {}, + "publicLink": "Публичная ссылка", + "@publicLink": {}, + "nothingFound": "Ничего не найдено...", + "@nothingFound": {}, + "newPassword": "Новый пароль", + "@newPassword": {}, + "passwordsDoNotMatch": "Пароли не совпадают", + "@passwordsDoNotMatch": {}, + "select": "Выбрать", + "@select": {}, + "pleaseChooseAStrongPassword": "Пожалуйста, подберите сильный пароль", + "@pleaseChooseAStrongPassword": {}, + "leaveEmptyToClearStatus": "Чтобы очистить статус, оставьте поле пустым.", + "@leaveEmptyToClearStatus": {}, + "joinSpace": "Присоединиться к пространству", + "@joinSpace": {}, + "searchForUsers": "Поиск @пользователей...", + "@searchForUsers": {}, + "thisDevice": "Данное устройство:", + "@thisDevice": {}, + "decline": "Отклонить", + "@decline": {}, + "databaseBuildErrorBody": "Невозможно собрать базу данных SQlite. Приложение пытается использовать старую базу данных. Пожалуйста, сообщите об этой ошибке разработчикам по адресу {url}. Сообщение об ошибке: {error}", + "@databaseBuildErrorBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "initAppError": "Произошла ошибка при запуске приложения", + "@initAppError": {}, + "sessionLostBody": "Ваш сеанс утерян. Пожалуйста, сообщите об этой ошибке разработчикам по адресу {url}. Сообщение об ошибке: {error}", + "@sessionLostBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "restoreSessionBody": "Приложение пытается восстановить сеанс из резервной копии. Пожалуйста, сообщите об этой ошибке разработчикам по адресу {url}. Сообщение об ошибке: {error}", + "@restoreSessionBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "subspace": "Субпространство", + "@subspace": {}, + "addChatOrSubSpace": "Добавить чат или субпространство", + "@addChatOrSubSpace": {}, + "youInvitedToBy": "📩 Вы были приглашены по ссылке на:\n{alias}", + "@youInvitedToBy": { + "placeholders": { + "alias": { + "type": "String" + } + } + }, + "sendReadReceipts": "Отправка квитанций о прочтении", + "@sendReadReceipts": {}, + "verifyOtherUser": "🔐 Подтвердить другого пользователя", + "@verifyOtherUser": {}, + "verifyOtherDevice": "🔐 Подтвердить другое устройство", + "@verifyOtherDevice": {}, + "forwardMessageTo": "Переслать сообщение в {roomName}?", + "@forwardMessageTo": { + "type": "String", + "placeholders": { + "roomName": { + "type": "String" + } + } + }, + "sendReadReceiptsDescription": "Другие участники чата могут видеть, когда вы прочитали сообщение.", + "@sendReadReceiptsDescription": {}, + "transparent": "Прозрачный", + "@transparent": {}, + "verifyOtherUserDescription": "Если вы подтвердите другого пользователя, то вы можете быть уверены зная, кому вы действительно пишете. 💪\n\nКогда вы начинаете подтверждение, вы и другой пользователь увидите всплывающее окно в приложении. Там вы увидите ряд чисел или эмодзи, которые вы должны сравнить друг с другом.\n\nЛучший способ сделать это - встретиться в реальной жизни или по видео звонку. 👭", + "@verifyOtherUserDescription": {}, + "verifyOtherDeviceDescription": "При подтверждении другого устройства эти устройства могут обмениваться ключами, повышая общую безопасность. 💪 При запуске подтверждения в приложении на обоих устройствах появится всплывающее окно. Там вы увидите ряд чисел или эмодзи, которые вы должны сравнить друг с другом. Лучше иметь оба устройства под рукой перед началом проверки. 🤳", + "@verifyOtherDeviceDescription": {}, + "formattedMessagesDescription": "Отображать содержимое расширенных сообщений, такой как жирный текст, с помощью Markdown.", + "@formattedMessagesDescription": {}, + "acceptedKeyVerification": "{sender} принял(а) подтверждение ключей", + "@acceptedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "canceledKeyVerification": "{sender} отклонил(а) подтверждение ключей", + "@canceledKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "sendTypingNotificationsDescription": "Другие участники чата могут видеть, когда вы набираете новое сообщение.", + "@sendTypingNotificationsDescription": {}, + "formattedMessages": "Форматированные сообщения", + "@formattedMessages": {}, + "startedKeyVerification": "{sender} начал(а) подтверждение ключей", + "@startedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "isReadyForKeyVerification": "{sender} готов(а) к подтверждению ключей", + "@isReadyForKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "requestedKeyVerification": "{sender} запросил(а) подтверждение ключей", + "@requestedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "completedKeyVerification": "{sender} завершил(а) подтверждение ключей", + "@completedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "incomingMessages": "Входящие сообщения", + "@incomingMessages": {}, + "presencesToggle": "Показывать сообщения в статусах других пользователей", + "@presencesToggle": { + "type": "String", + "placeholders": {} + }, + "presenceStyle": "Представление:", + "@presenceStyle": { + "type": "String", + "placeholders": {} + }, + "hidePresences": "Скрыть список статусов?", + "@hidePresences": {}, + "stickers": "Стикеры", + "@stickers": {}, + "discover": "Исследовать", + "@discover": {}, + "globalChatId": "ID глобального чата", + "@globalChatId": {}, + "customEmojisAndStickersBody": "Добавить или поделиться пользовательскими эмодзи или стикерами, которые могут быть применены в любом чате.", + "@customEmojisAndStickersBody": {}, + "hideMemberChangesInPublicChatsBody": "Для улучшения читаемости не показывать на временной шкале входы и выходы из чата.", + "@hideMemberChangesInPublicChatsBody": {}, + "knocking": "Стучаться", + "@knocking": {}, + "accessAndVisibility": "Доступность и видимость", + "@accessAndVisibility": {}, + "publicChatAddresses": "Адресы публичного чата", + "@publicChatAddresses": {}, + "accessAndVisibilityDescription": "Кому разрешено войти в этот чат и как этот чат может быть обнаружен.", + "@accessAndVisibilityDescription": {}, + "userRole": "Роль пользователя", + "@userRole": {}, + "noDatabaseEncryption": "Шифрование базы данных не поддерживается на этой платформе", + "@noDatabaseEncryption": {}, + "appLockDescription": "Заблокировать приложение когда не используется пин код", + "@appLockDescription": {}, + "calls": "Звонки", + "@calls": {}, + "customEmojisAndStickers": "Пользовательские эмодзи и стикеры", + "@customEmojisAndStickers": {}, + "hideRedactedMessages": "Скрыть редактированные сообщения", + "@hideRedactedMessages": {}, + "hideInvalidOrUnknownMessageFormats": "Скрыть неправильные или неизвестные форматы сообщения", + "@hideInvalidOrUnknownMessageFormats": {}, + "hideRedactedMessagesBody": "Если кто-то редактирует сообщение, оно будет скрыто в чате.", + "@hideRedactedMessagesBody": {}, + "hideMemberChangesInPublicChats": "Скрыть изменения участников в публичных чатах", + "@hideMemberChangesInPublicChats": {}, + "overview": "Обзор", + "@overview": {}, + "notifyMeFor": "Уведомлять меня о", + "@notifyMeFor": {}, + "passwordRecoverySettings": "Настройки восстановления пароля", + "@passwordRecoverySettings": {}, + "userWouldLikeToChangeTheChat": "{user} желает присоединиться к чату.", + "@userWouldLikeToChangeTheChat": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "knock": "Постучаться", + "@knock": {}, + "usersMustKnock": "Пользователи должны постучаться", + "@usersMustKnock": {}, + "noOneCanJoin": "Никто не может присоединиться", + "@noOneCanJoin": {}, + "noPublicLinkHasBeenCreatedYet": "Публичная ссылка еще не была создана", + "@noPublicLinkHasBeenCreatedYet": {}, + "chatCanBeDiscoveredViaSearchOnServer": "Чат может быть обнаружен через поиск в {server}", + "@chatCanBeDiscoveredViaSearchOnServer": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "createNewAddress": "Создать новый адрес", + "@createNewAddress": {}, + "minimumPowerLevel": "{level} является минимальным уровнем.", + "@minimumPowerLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "String" + } + } + }, + "commandHint_ignore": "Игнорировать данный matrix ID", + "@commandHint_ignore": {}, + "commandHint_unignore": "Не игнорировать данный matrix ID", + "@commandHint_unignore": {}, + "unreadChatsInApp": "", + "@unreadChatsInApp": { + "type": "String", + "placeholders": { + "appname": { + "type": "String" + }, + "unread": { + "type": "String" + } + } + }, + "thereAreCountUsersBlocked": "Сейчас {count, plural, one{заблокирован # пользователь} few{заблокированы # пользователя} other{заблокированы # пользователей}}.", + "@thereAreCountUsersBlocked": { + "type": "String", + "count": {} + }, + "restricted": "Запрещено", + "@restricted": {}, + "knockRestricted": "Стук запрещен", + "@knockRestricted": {}, + "searchIn": "Поиск в чате \"{chat}\"...", + "@searchIn": { + "type": "String", + "placeholders": { + "chat": { + "type": "String" + } + } + }, + "searchMore": "Найти еще...", + "@searchMore": {}, + "gallery": "Галерея", + "@gallery": {}, + "files": "Файлы", + "@files": {}, + "swipeRightToLeftToReply": "Для ответа проведите справа налево", + "@swipeRightToLeftToReply": {}, + "userLevel": "{level} - Пользователь", + "@userLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "moderatorLevel": "{level} - Модератор", + "@moderatorLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "adminLevel": "{level} - Администратор", + "@adminLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "changeGeneralChatSettings": "Изменить общие настройки чата", + "@changeGeneralChatSettings": {}, + "changeTheChatPermissions": "Изменить права доступа к чату", + "@changeTheChatPermissions": {}, + "changeTheDescriptionOfTheGroup": "Изменить описание чата", + "@changeTheDescriptionOfTheGroup": {}, + "inviteOtherUsers": "Пригласить других пользователей в этот чат", + "@inviteOtherUsers": {}, + "changeTheVisibilityOfChatHistory": "Изменить видимость истории чата", + "@changeTheVisibilityOfChatHistory": {}, + "countChatsAndCountParticipants": "", + "@countChatsAndCountParticipants": { + "type": "String", + "placeholders": { + "chats": { + "type": "int" + }, + "participants": { + "type": "int" + } + } + }, + "unread": "Непрочитанные", + "@unread": {}, + "space": "Пространство", + "@space": {}, + "spaces": "Пространства", + "@spaces": {}, + "markAsUnread": "Отметить как непрочитанное", + "@markAsUnread": {}, + "goToSpace": "Перейти к пространству: {space}", + "@goToSpace": { + "type": "String", + "space": {} + }, + "sendCanceled": "Отправка отменена", + "@sendCanceled": {}, + "noChatsFoundHere": "Не было найдено ни одного чата. Начать с кем-нибудь новый чат можно, нажав кнопку ниже. ⤵️", + "@noChatsFoundHere": {}, + "updateInstalled": "🎉 Обновление {version} успешно установлено!", + "@updateInstalled": { + "type": "String", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "changelog": "Список изменений", + "@changelog": {}, + "invitedBy": "📩 Приглашен(а) {user}", + "@invitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "doesNotSeemToBeAValidHomeserver": "Этот домашний сервер выглядит несовместимым. Нет ли в ссылке опечаток?", + "@doesNotSeemToBeAValidHomeserver": {}, + "noMoreChatsFound": "Больше чатов не обнаружено...", + "@noMoreChatsFound": {}, + "alwaysUse24HourFormat": "true", + "@alwaysUse24HourFormat": { + "description": "Set to true to always display time of day in 24 hour format." + }, + "compressVideo": "Сжатие видео...", + "@compressVideo": {}, + "oneOfYourDevicesIsNotVerified": "Одно из ваших устройств не подтверждено", + "@oneOfYourDevicesIsNotVerified": {}, + "chatPermissionsDescription": "Задайте уровень власти, необходимый для совершения определённых действий в этом чате. Уровни власти 0, 50 и 100 обычно означают пользователей, модераторов и администраторов соответственно, но любая градация также возможна.", + "@chatPermissionsDescription": {}, + "prepareSendingAttachment": "Подготовка к отправке вложения...", + "@prepareSendingAttachment": {}, + "sendRoomNotifications": "Упоминать @room", + "@sendRoomNotifications": {}, + "calculatingFileSize": "Вычисление размера файла...", + "@calculatingFileSize": {}, + "sendingAttachment": "Отправка вложения...", + "@sendingAttachment": {}, + "generatingVideoThumbnail": "Создание превью видео...", + "@generatingVideoThumbnail": {}, + "noticeChatBackupDeviceVerification": "Примечание: Если вы подключите все свои устройства к резервному копированию чатов, то они автоматически станут подтверждёнными.", + "@noticeChatBackupDeviceVerification": {}, + "changeTheCanonicalRoomAlias": "Изменить основной общедоступный адрес чата", + "@changeTheCanonicalRoomAlias": {}, + "loginWithMatrixId": "Войти через Matrix ID", + "@loginWithMatrixId": {}, + "whatIsAHomeserver": "Для чего нужен домашний сервер?", + "@whatIsAHomeserver": {}, + "homeserverDescription": "Все ваши данные хранятся на домашнем сервере, прямо как у вашего провайдера электронной почты. Вы можете выбрать, какому серверу вы их доверите, при этом сохраняя возможность общаться со всеми. Узнайте больше на https://matrix.org.", + "@homeserverDescription": {}, + "discoverHomeservers": "Список домашних серверов", + "@discoverHomeservers": {}, + "joinedChats": "Вступленные чаты", + "@joinedChats": {}, + "serverInformation": "Информация о сервере:", + "@serverInformation": {}, + "sendingAttachmentCountOfCount": "Отправляется вложение {index} из {length}...", + "@sendingAttachmentCountOfCount": { + "type": "integer", + "placeholders": { + "index": { + "type": "int" + }, + "length": { + "type": "int" + } + } + }, + "welcomeText": "Привет. Это FluffyChat. Вы можете подписаться на любой сервер, который совместим с https://matrix.org. А потом поболтать с кем нибудь. Это огромная децентрализованная сеть обмена сообщениями!", + "@welcomeText": {}, + "noContactInformationProvided": "Сервер не предоставляет никакой правдивой контактной информации", + "@noContactInformationProvided": {}, + "aboutHomeserver": "О сервере {homeserver}", + "@aboutHomeserver": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "boldText": "Жирный шрифт", + "@boldText": {}, + "strikeThrough": "Перечёркнутый", + "@strikeThrough": {}, + "pleaseFillOut": "Пожалуйста, заполните", + "@pleaseFillOut": {}, + "invalidUrl": "Не верный URL", + "@invalidUrl": {}, + "addLink": "Добавить ссылку", + "@addLink": {}, + "italicText": "Italic", + "@italicText": {}, + "unableToJoinChat": "Невозможно присоединиться к чату. Возможно, другая сторона уже закончила разговор.", + "@unableToJoinChat": {}, + "serverLimitReached": "", + "@serverLimitReached": { + "type": "integer", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "continueText": "Продолжить", + "@continueText": {}, + "blur": "Размытие:", + "@blur": {}, + "opacity": "Прозрачность:", + "@opacity": {}, + "setWallpaper": "Установить обои", + "@setWallpaper": {}, + "manageAccount": "Управление аккаунтом", + "@manageAccount": {}, + "contactServerAdmin": "Админ сервера", + "@contactServerAdmin": {}, + "contactServerSecurity": "Безопасность контактов сервера", + "@contactServerSecurity": {}, + "supportPage": "Поддержка", + "@supportPage": {}, + "name": "Имя", + "@name": {}, + "version": "Версия", + "@version": {}, + "website": "Сайт", + "@website": {}, + "sendImages": "Отправить {count} изображение", + "@sendImages": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "compress": "Сжатие", + "@compress": {}, + "notificationRuleMessage": "Сообщение", + "@notificationRuleMessage": {}, + "appWantsToUseForLoginDescription": "Вы позволяете приложению и веб-сайту делиться информацией о вас.", + "@appWantsToUseForLoginDescription": {}, + "newChatRequest": "📩 Запрос нового чата", + "@newChatRequest": {}, + "allDevices": "Все устройства", + "@allDevices": {}, + "roomNotificationSettings": "Настройки уведомлений комнаты", + "@roomNotificationSettings": {}, + "notificationRuleContainsUserName": "Содержит имя пользователя", + "@notificationRuleContainsUserName": {}, + "notificationRuleMaster": "Отключить все уведомления", + "@notificationRuleMaster": {}, + "notificationRuleSuppressNoticesDescription": "Отключить уведомления от автоматизированных клиентов, таких как боты.", + "@notificationRuleSuppressNoticesDescription": {}, + "notificationRuleInviteForMe": "Приглашение для меня", + "@notificationRuleInviteForMe": {}, + "notificationRuleMemberEventDescription": "Отключить уведомления о событиях о членстве.", + "@notificationRuleMemberEventDescription": {}, + "notificationRuleIsRoomMention": "Упоминание комнаты", + "@notificationRuleIsRoomMention": {}, + "notificationRuleReactionDescription": "Отключить уведомления о реакциях.", + "@notificationRuleReactionDescription": {}, + "notificationRuleCall": "Звонок", + "@notificationRuleCall": {}, + "notificationRuleSuppressEditsDescription": "Отключить уведомления о отредактированных сообщениях.", + "@notificationRuleSuppressEditsDescription": {}, + "notificationRuleEncrypted": "Зашифровано", + "@notificationRuleEncrypted": {}, + "more": "Больше", + "@more": {}, + "synchronizingPleaseWaitCounter": " Синхронизация… ({percentage}%)", + "@synchronizingPleaseWaitCounter": { + "type": "String", + "placeholders": { + "percentage": { + "type": "String" + } + } + }, + "appWantsToUseForLogin": "Использовать '{server}' для входа", + "@appWantsToUseForLogin": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "contentNotificationSettings": "Настройки уведомлений по тексту", + "@contentNotificationSettings": {}, + "generalNotificationSettings": "Общие настройки уведомлений", + "@generalNotificationSettings": {}, + "userSpecificNotificationSettings": "Настроки уведомлений пользователя", + "@userSpecificNotificationSettings": {}, + "otherNotificationSettings": "Другие настройки уведомлений", + "@otherNotificationSettings": {}, + "notificationRuleContainsUserNameDescription": "Уведомляет пользователя, когда сообщение содержит его имя пользователя.", + "@notificationRuleContainsUserNameDescription": {}, + "notificationRuleMasterDescription": "Перекрывает все другие правила и отключает все уведомления.", + "@notificationRuleMasterDescription": {}, + "notificationRuleSuppressNotices": "Отключить автоматические сообщения", + "@notificationRuleSuppressNotices": {}, + "notificationRuleIsUserMention": "Упоминание пользователя", + "@notificationRuleIsUserMention": {}, + "notificationRuleContainsDisplayName": "Содержит отображаемое имя", + "@notificationRuleContainsDisplayName": {}, + "notificationRuleReaction": "Реакция", + "@notificationRuleReaction": {}, + "takeAPhoto": "Снять фото", + "@takeAPhoto": {}, + "recordAVideo": "Записать видео", + "@recordAVideo": {}, + "enterNewChat": "Введите новый чат", + "@enterNewChat": {}, + "otherPartyNotLoggedIn": "Другая сторона в настоящее время не вошла в систему и поэтому не может получать сообщения!", + "@otherPartyNotLoggedIn": {}, + "open": "Открыть", + "@open": {}, + "waitingForServer": "Ожидание сервера...", + "@waitingForServer": {}, + "appIntroduction": "FluffyChat позволяет вам общаться с друзьями с разными мессенджерами. Узнайте больше на https://matrix.org или просто нажмите *Продолжить*.", + "@appIntroduction": {}, + "previous": "Предыдущий", + "@previous": {}, + "notificationRuleCallDescription": "Уведомляет пользователя про звонки.", + "@notificationRuleCallDescription": {}, + "notificationRuleEncryptedRoomOneToOne": "Шифрованная комната «Один на один»", + "@notificationRuleEncryptedRoomOneToOne": {}, + "notificationRuleEncryptedRoomOneToOneDescription": "Уведомляет пользователя про сообщение в зашифрованных комнатах «Один на один».", + "@notificationRuleEncryptedRoomOneToOneDescription": {}, + "notificationRuleRoomOneToOne": "Комната «Один на один»", + "@notificationRuleRoomOneToOne": {}, + "setCustomPermissionLevel": "Установить уровень пользовательских разрешений", + "@setCustomPermissionLevel": {}, + "setPermissionsLevelDescription": "Выберите одну из стандартных ролей ниже или введите произвольный уровень прав от 0 до 100.", + "@setPermissionsLevelDescription": {}, + "ignoreUser": "Заглушить пользователя", + "@ignoreUser": {}, + "normalUser": "Обычный пользователь", + "@normalUser": {}, + "commandHint_roomupgrade": "Обновить комнату до указанной версии", + "@commandHint_roomupgrade": {}, + "notificationRuleInviteForMeDescription": "Уведомляет пользователя, когда его приглашают в комнату.", + "@notificationRuleInviteForMeDescription": {}, + "countInvited": "{count, plural, one{Приглашён # участник} few{Приглашены # участника} other{Приглашены # участников}}", + "@countInvited": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "unknownPushRule": "Неизвестное правило оповещения '{rule}'", + "@unknownPushRule": { + "type": "String", + "placeholders": { + "rule": { + "type": "String" + } + } + }, + "checkList": "Контрольный список", + "@checkList": {}, + "countVotes": "{count, plural, =1{Один голос} other{{count} голосов}}", + "@countVotes": { + "type": "int", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "countReplies": "{count, plural, =1{Один ответ} other{{count} ответов}}", + "@countReplies": { + "type": "int", + "placeholders": { + "count": { + "type": "int" + } + } + } +} diff --git a/lib/l10n/intl_sk.arb b/lib/l10n/intl_sk.arb new file mode 100644 index 0000000..4645b33 --- /dev/null +++ b/lib/l10n/intl_sk.arb @@ -0,0 +1,1457 @@ +{ + "@@locale": "sk", + "@@last_modified": "2021-08-14 12:41:09.879987", + "about": "O aplikácii", + "@about": { + "type": "String", + "placeholders": {} + }, + "accept": "Prijať", + "@accept": { + "type": "String", + "placeholders": {} + }, + "acceptedTheInvitation": "{username} prijali pozvánku", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "account": "Účet", + "@account": { + "type": "String", + "placeholders": {} + }, + "activatedEndToEndEncryption": "{username} aktivovali koncové šifrovanie", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "admin": "Administrátor", + "@admin": { + "type": "String", + "placeholders": {} + }, + "alias": "alias", + "@alias": { + "type": "String", + "placeholders": {} + }, + "anyoneCanJoin": "Ktokoľvek sa môže pripojiť", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "archive": "Archivovať", + "@archive": { + "type": "String", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "Môžu sa pripojiť hostia", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "Ste si istí?", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "askSSSSSign": "Na overenie tejto osoby, prosím zadajte prístupovu frázu k \"bezpečému úložisku\" alebo \"klúč na obnovu\".", + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "askVerificationRequest": "Akcepovať žiadosť o verifikáciu od {username}?", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "banFromChat": "Zabanovať z chatu", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "banned": "Zabanovaný", + "@banned": { + "type": "String", + "placeholders": {} + }, + "bannedUser": "{username} zabanoval {targetName}", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "blockDevice": "Zakázať zariadenie", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "cancel": "Zrušiť", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "changedTheChatAvatar": "{username} si zmenili svôj avatar", + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheChatDescriptionTo": "{username} zmenili popis chatu na: „{description}“", + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "changedTheChatNameTo": "{username} zmenili meno chatu na: „{chatname}“", + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "changedTheChatPermissions": "{username} zmenili nastavenie oprávnení chatu", + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheDisplaynameTo": "{username} si zmenili prezývku na: {displayname}", + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "changedTheGuestAccessRules": "{username} zmenili prístupové práva pre hosťov", + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheGuestAccessRulesTo": "{username} zmenili prístupové práva pro hosťov na: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheHistoryVisibility": "{username} zmenili nastavenie viditelnosti histórie chatu", + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheHistoryVisibilityTo": "{username} zmenili nastavenie viditelnosti histórie chatu na: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheJoinRules": "{username} zmenili nastavenie pravidiel pripojenia", + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheJoinRulesTo": "{username} zmenili nastavenie pravidiel pripojenia na: {joinRules}", + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "changedTheProfileAvatar": "{username} si zmenili profilový obrázok", + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomAliases": "{username} zmenili nastavenie aliasov chatu", + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomInvitationLink": "{username} zmenili odkaz k pozvánke do miestnosti", + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changeTheHomeserver": "Zmeniť použitý server", + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "changeTheme": "Zmena štýlu", + "@changeTheme": { + "type": "String", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "Zmeniť názov skupiny", + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "channelCorruptedDecryptError": "Šifrovanie bolo poškodené", + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "chat": "Chat", + "@chat": { + "type": "String", + "placeholders": {} + }, + "chatDetails": "Podrobnosti o chate", + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "chooseAStrongPassword": "Vyberte si silné heslo", + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "close": "Zavrieť", + "@close": { + "type": "String", + "placeholders": {} + }, + "compareEmojiMatch": "Porovnajte a uistite sa, že nasledujúce emotikony sa zhodujú na oboch zariadeniach:", + "@compareEmojiMatch": { + "type": "String", + "placeholders": {} + }, + "compareNumbersMatch": "Porovnajte a uistite sa, že nasledujúce čísla sa zhodujú na oboch zariadeniach:", + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "confirm": "Potvrdiť", + "@confirm": { + "type": "String", + "placeholders": {} + }, + "connect": "Pripojiť", + "@connect": { + "type": "String", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "Kontakt bol pozvaný do skupiny", + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "copiedToClipboard": "Skopírované do schránky", + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "copy": "Kopírovať", + "@copy": { + "type": "String", + "placeholders": {} + }, + "couldNotDecryptMessage": "Nebolo možné dešifrovať správu: {error}", + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "countParticipants": "{count} účastníkov", + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "create": "Vytvoriť", + "@create": { + "type": "String", + "placeholders": {} + }, + "createdTheChat": "{username} založili chat", + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "currentlyActive": "Momentálne prítomní", + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "darkTheme": "Tmavá", + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "dateWithoutYear": "{day}.{month}", + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "dateWithYear": "{day}.{month}.{year}", + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "delete": "Odstrániť", + "@delete": { + "type": "String", + "placeholders": {} + }, + "deleteMessage": "Odstrániť správu", + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "device": "Zariadenie", + "@device": { + "type": "String", + "placeholders": {} + }, + "devices": "Zariadenia", + "@devices": { + "type": "String", + "placeholders": {} + }, + "displaynameHasBeenChanged": "Prezývka bola zmenená", + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "downloadFile": "Stiahnuť súbor", + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "editDisplayname": "Zmeniť prezývku", + "@editDisplayname": { + "type": "String", + "placeholders": {} + }, + "emoteExists": "Emotikon už existuje!", + "@emoteExists": { + "type": "String", + "placeholders": {} + }, + "emoteInvalid": "Nesprávné označenie emotikonu!", + "@emoteInvalid": { + "type": "String", + "placeholders": {} + }, + "emoteSettings": "Nastavenie emotikonov", + "@emoteSettings": { + "type": "String", + "placeholders": {} + }, + "emoteShortcode": "Kód emotikonu", + "@emoteShortcode": { + "type": "String", + "placeholders": {} + }, + "emoteWarnNeedToPick": "Musíte zvoliť kód emotikonu a obrázok!", + "@emoteWarnNeedToPick": { + "type": "String", + "placeholders": {} + }, + "emptyChat": "Prázdny chat", + "@emptyChat": { + "type": "String", + "placeholders": {} + }, + "enableEncryptionWarning": "Šifrovanie už nebude možné vypnúť. Ste si tým istí?", + "@enableEncryptionWarning": { + "type": "String", + "placeholders": {} + }, + "encryption": "Šifrovanie", + "@encryption": { + "type": "String", + "placeholders": {} + }, + "encryptionNotEnabled": "Šifrovanie nie je aktívne", + "@encryptionNotEnabled": { + "type": "String", + "placeholders": {} + }, + "enterYourHomeserver": "Zadajte svoj homeserver", + "@enterYourHomeserver": { + "type": "String", + "placeholders": {} + }, + "fileName": "Názov súboru", + "@fileName": { + "type": "String", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "String", + "placeholders": {} + }, + "forward": "Preposlať", + "@forward": { + "type": "String", + "placeholders": {} + }, + "fromJoining": "Od pripojenia", + "@fromJoining": { + "type": "String", + "placeholders": {} + }, + "fromTheInvitation": "Od pozvania", + "@fromTheInvitation": { + "type": "String", + "placeholders": {} + }, + "group": "Skupina", + "@group": { + "type": "String", + "placeholders": {} + }, + "groupIsPublic": "Skupina je verejná", + "@groupIsPublic": { + "type": "String", + "placeholders": {} + }, + "groupWith": "Skupina s {displayname}", + "@groupWith": { + "type": "String", + "placeholders": { + "displayname": { + "type": "String" + } + } + }, + "guestsAreForbidden": "Hostia sú zakázaní", + "@guestsAreForbidden": { + "type": "String", + "placeholders": {} + }, + "guestsCanJoin": "Hostia sa môžu pripojiť", + "@guestsCanJoin": { + "type": "String", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "{username} vzal späť pozvánku pre {targetName}", + "@hasWithdrawnTheInvitationFor": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "help": "Pomoc", + "@help": { + "type": "String", + "placeholders": {} + }, + "id": "ID", + "@id": { + "type": "String", + "placeholders": {} + }, + "identity": "Identita", + "@identity": { + "type": "String", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "Nesprávna prístupová fráza alebo kľúč na obnovenie", + "@incorrectPassphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "inviteContact": "Pozvať kontakt", + "@inviteContact": { + "type": "String", + "placeholders": {} + }, + "inviteContactToGroup": "Pozvať kontakt do {groupName}", + "@inviteContactToGroup": { + "type": "String", + "placeholders": { + "groupName": { + "type": "String" + } + } + }, + "invited": "Pozvanie", + "@invited": { + "type": "String", + "placeholders": {} + }, + "invitedUser": "{username} pozvali {targetName}", + "@invitedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "invitedUsersOnly": "Len pozvaní používatelia", + "@invitedUsersOnly": { + "type": "String", + "placeholders": {} + }, + "inviteText": "{username} vás pozval na FluffyChat.\n1. Nainštalujte si FluffyChat: https://fluffychat.im\n2. Zaregistrujte sa alebo sa prihláste\n3. Otvorte odkaz na pozvánku: {link}", + "@inviteText": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "link": { + "type": "String" + } + } + }, + "isTyping": "píše…", + "@isTyping": { + "type": "String", + "placeholders": {} + }, + "joinedTheChat": "{username} sa pripojili do chatu", + "@joinedTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "kicked": "{username} vyhodili {targetName}", + "@kicked": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickedAndBanned": "{username} vyhodili a zabanovali {targetName}", + "@kickedAndBanned": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickFromChat": "Vyhodiť z chatu", + "@kickFromChat": { + "type": "String", + "placeholders": {} + }, + "lastActiveAgo": "Naposledy prítomní: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "String", + "placeholders": { + "localizedTimeShort": { + "type": "String" + } + } + }, + "leave": "Opustiť", + "@leave": { + "type": "String", + "placeholders": {} + }, + "leftTheChat": "Opustili chat", + "@leftTheChat": { + "type": "String", + "placeholders": {} + }, + "license": "Licencia", + "@license": { + "type": "String", + "placeholders": {} + }, + "lightTheme": "Svetlá", + "@lightTheme": { + "type": "String", + "placeholders": {} + }, + "loadCountMoreParticipants": "Načítať ďalších {count} účastníkov", + "@loadCountMoreParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "loadingPleaseWait": "Načítava sa… Čakajte prosím.", + "@loadingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "loadMore": "Načítať viac…", + "@loadMore": { + "type": "String", + "placeholders": {} + }, + "login": "Prihlásiť sa", + "@login": { + "type": "String", + "placeholders": {} + }, + "logInTo": "Prihlásenie k {homeserver}", + "@logInTo": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "logout": "Odhlásiť sa", + "@logout": { + "type": "String", + "placeholders": {} + }, + "moderator": "Moderátor", + "@moderator": { + "type": "String", + "placeholders": {} + }, + "muteChat": "Stlmiť chat", + "@muteChat": { + "type": "String", + "placeholders": {} + }, + "needPantalaimonWarning": "Prosím berte na vedomie, že na koncové šifrovanie zatiaľ potrebujete Pantalaimon.", + "@needPantalaimonWarning": { + "type": "String", + "placeholders": {} + }, + "newMessageInFluffyChat": "Nová správa v FluffyChate", + "@newMessageInFluffyChat": { + "type": "String", + "placeholders": {} + }, + "newVerificationRequest": "Nová žiadosť o verifikáciu!", + "@newVerificationRequest": { + "type": "String", + "placeholders": {} + }, + "noEmotesFound": "Nenašli sa žiadne emotikony. 😕", + "@noEmotesFound": { + "type": "String", + "placeholders": {} + }, + "noGoogleServicesWarning": "Zdá sa, že nemáte žiadne služby Googlu v telefóne. To je dobré rozhodnutie pre vaše súkromie! Ak chcete dostávať push notifikácie vo FluffyChat, odporúčame používať microG: https://microg.org/.", + "@noGoogleServicesWarning": { + "type": "String", + "placeholders": {} + }, + "none": "Žiadne", + "@none": { + "type": "String", + "placeholders": {} + }, + "noPermission": "Chýba povolenie", + "@noPermission": { + "type": "String", + "placeholders": {} + }, + "noRoomsFound": "Nenašli sa žiadne miestnosti…", + "@noRoomsFound": { + "type": "String", + "placeholders": {} + }, + "ok": "ok", + "@ok": { + "type": "String", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "Online záloha kľúčov je zapnutá", + "@onlineKeyBackupEnabled": { + "type": "String", + "placeholders": {} + }, + "oopsSomethingWentWrong": "Och! Niečo sa pokazilo…", + "@oopsSomethingWentWrong": { + "type": "String", + "placeholders": {} + }, + "openAppToReadMessages": "Na prečítanie správy otvorte aplikáciu", + "@openAppToReadMessages": { + "type": "String", + "placeholders": {} + }, + "openCamera": "Otvoriť fotoaparát", + "@openCamera": { + "type": "String", + "placeholders": {} + }, + "passphraseOrKey": "prístupová fráza alebo kľúč na obnovenie", + "@passphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "password": "Heslo", + "@password": { + "type": "String", + "placeholders": {} + }, + "pickImage": "Vybrať obrázok", + "@pickImage": { + "type": "String", + "placeholders": {} + }, + "play": "Prehrať {fileName}", + "@play": { + "type": "String", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "pleaseEnterYourPassword": "Prosím zadajte svoje heslo", + "@pleaseEnterYourPassword": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourUsername": "Zadajte svoje používateľské meno", + "@pleaseEnterYourUsername": { + "type": "String", + "placeholders": {} + }, + "publicRooms": "Verejné miestnosti", + "@publicRooms": { + "type": "String", + "placeholders": {} + }, + "recording": "Nahrávam", + "@recording": { + "type": "String", + "placeholders": {} + }, + "redactedAnEvent": "{username} odstránili udalosť", + "@redactedAnEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "reject": "Odmietnuť", + "@reject": { + "type": "String", + "placeholders": {} + }, + "rejectedTheInvitation": "{username} odmietli pozvánku", + "@rejectedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "rejoin": "Vrátiť sa", + "@rejoin": { + "type": "String", + "placeholders": {} + }, + "remove": "Odstrániť", + "@remove": { + "type": "String", + "placeholders": {} + }, + "removeAllOtherDevices": "Odstráňiť všetky ostatné zariadenia", + "@removeAllOtherDevices": { + "type": "String", + "placeholders": {} + }, + "removedBy": "Odstánené užívateľom {username}", + "@removedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "removeDevice": "Odstráňiť zariadenie", + "@removeDevice": { + "type": "String", + "placeholders": {} + }, + "unbanFromChat": "Odblokovať", + "@unbanFromChat": { + "type": "String", + "placeholders": {} + }, + "reply": "Odpovedať", + "@reply": { + "type": "String", + "placeholders": {} + }, + "requestPermission": "Vyžiadať si povolenie", + "@requestPermission": { + "type": "String", + "placeholders": {} + }, + "roomHasBeenUpgraded": "Miestnosť bola upgradeovaná", + "@roomHasBeenUpgraded": { + "type": "String", + "placeholders": {} + }, + "seenByUser": "Videné užívateľom {username}", + "@seenByUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "send": "Odoslať", + "@send": { + "type": "String", + "placeholders": {} + }, + "sendAMessage": "Odoslať správu", + "@sendAMessage": { + "type": "String", + "placeholders": {} + }, + "sendFile": "Odoslať súbor", + "@sendFile": { + "type": "String", + "placeholders": {} + }, + "sendImage": "Odoslať obrázok", + "@sendImage": { + "type": "String", + "placeholders": {} + }, + "sentAFile": "{username} poslali súbor", + "@sentAFile": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAnAudio": "{username} poslali zvukovú nahrávku", + "@sentAnAudio": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAPicture": "{username} poslali obrázok", + "@sentAPicture": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentASticker": "{username} poslali nálepku", + "@sentASticker": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAVideo": "{username} poslali video", + "@sentAVideo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "setInvitationLink": "Nastaviť odkaz pre pozvánku", + "@setInvitationLink": { + "type": "String", + "placeholders": {} + }, + "setStatus": "Nastaviť status", + "@setStatus": { + "type": "String", + "placeholders": {} + }, + "settings": "Nastavenia", + "@settings": { + "type": "String", + "placeholders": {} + }, + "share": "Zdieľať", + "@share": { + "type": "String", + "placeholders": {} + }, + "sharedTheLocation": "{username} zdieľa lokáciu", + "@sharedTheLocation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "skip": "Preskočiť", + "@skip": { + "type": "String", + "placeholders": {} + }, + "sourceCode": "Zdrojový kód", + "@sourceCode": { + "type": "String", + "placeholders": {} + }, + "statusExampleMessage": "Ako sa dnes máte?", + "@statusExampleMessage": { + "type": "String", + "placeholders": {} + }, + "submit": "Odoslať", + "@submit": { + "type": "String", + "placeholders": {} + }, + "systemTheme": "Systémová farba", + "@systemTheme": { + "type": "String", + "placeholders": {} + }, + "theyDontMatch": "Sa nezhodujú", + "@theyDontMatch": { + "type": "String", + "placeholders": {} + }, + "theyMatch": "Zhodujú sa", + "@theyMatch": { + "type": "String", + "placeholders": {} + }, + "title": "FluffyChat", + "@title": { + "description": "Title for the application", + "type": "String", + "placeholders": {} + }, + "tryToSendAgain": "Skúsiť znova odoslať", + "@tryToSendAgain": { + "type": "String", + "placeholders": {} + }, + "unbannedUser": "{username} odbanovali {targetName}", + "@unbannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "unblockDevice": "Odblokovať zariadenie", + "@unblockDevice": { + "type": "String", + "placeholders": {} + }, + "unknownDevice": "Neznáme zariadenie", + "@unknownDevice": { + "type": "String", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "Neznámy šifrovací algoritmus", + "@unknownEncryptionAlgorithm": { + "type": "String", + "placeholders": {} + }, + "unknownEvent": "Neznáma udalosť „{type}“", + "@unknownEvent": { + "type": "String", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "unmuteChat": "Zrušiť stlmenie chatu", + "@unmuteChat": { + "type": "String", + "placeholders": {} + }, + "unreadChats": "{unreadCount, plural, other{{unreadCount} neprečítaných chatov}}", + "@unreadChats": { + "type": "String", + "placeholders": { + "unreadCount": { + "type": "int" + } + } + }, + "userAndOthersAreTyping": "{username} a {count} dalších píšu…", + "@userAndOthersAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "userAndUserAreTyping": "{username} a {username2} píšu…", + "@userAndUserAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "username2": { + "type": "String" + } + } + }, + "userIsTyping": "{username} píše…", + "@userIsTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "userLeftTheChat": "{username} opustili chat", + "@userLeftTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "username": "Užívateľské meno", + "@username": { + "type": "String", + "placeholders": {} + }, + "userSentUnknownEvent": "{username} poslali udalosť {type}", + "@userSentUnknownEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "type": { + "type": "String" + } + } + }, + "verify": "Overiť", + "@verify": { + "type": "String", + "placeholders": {} + }, + "verifyStart": "Spustiť verifikáciu", + "@verifyStart": { + "type": "String", + "placeholders": {} + }, + "verifySuccess": "Verifikácia bola úspešná!", + "@verifySuccess": { + "type": "String", + "placeholders": {} + }, + "verifyTitle": "Verifikujem protiľahlý účet", + "@verifyTitle": { + "type": "String", + "placeholders": {} + }, + "videoCall": "Videohovor", + "@videoCall": { + "type": "String", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "Viditeľnosť histórie chatu", + "@visibilityOfTheChatHistory": { + "type": "String", + "placeholders": {} + }, + "visibleForAllParticipants": "Viditeľné pre všetkých účastníkov", + "@visibleForAllParticipants": { + "type": "String", + "placeholders": {} + }, + "visibleForEveryone": "Viditeľné pre každého", + "@visibleForEveryone": { + "type": "String", + "placeholders": {} + }, + "voiceMessage": "Hlasová správa", + "@voiceMessage": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "Čaká sa, kým partner prijme požiadavku…", + "@waitingPartnerAcceptRequest": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerEmoji": "Čaká sa, kým partner prijme emotikon…", + "@waitingPartnerEmoji": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerNumbers": "Čaká sa na to, kým partner prijme čísla…", + "@waitingPartnerNumbers": { + "type": "String", + "placeholders": {} + }, + "wallpaper": "Pozadie", + "@wallpaper": { + "type": "String", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "Kto môže vstúpiť do tejto skupiny", + "@whoIsAllowedToJoinThisGroup": { + "type": "String", + "placeholders": {} + }, + "writeAMessage": "Napísať správu…", + "@writeAMessage": { + "type": "String", + "placeholders": {} + }, + "yes": "Áno", + "@yes": { + "type": "String", + "placeholders": {} + }, + "you": "Vy", + "@you": { + "type": "String", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "Už sa nezúčastňujete tohto chatu", + "@youAreNoLongerParticipatingInThisChat": { + "type": "String", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "Máte zablokovaný prístup k tomuto chatu", + "@youHaveBeenBannedFromThisChat": { + "type": "String", + "placeholders": {} + }, + "people": "Ľudia", + "@people": { + "type": "String", + "placeholders": {} + }, + "chats": "Čety", + "@chats": { + "type": "String", + "placeholders": {} + }, + "changePassword": "Zmeniť heslo", + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "changeDeviceName": "Zmeniť názov zariadenia", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "badServerVersionsException": "Domovský server podporuje verzie špecifikácie:\n{serverVersions}\nAle táto aplikácie podporuje iba {supportedVersions}", + "@badServerVersionsException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "answeredTheCall": "{senderName} prevzal hovor", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "sendAudio": "Poslať zvuk", + "@sendAudio": { + "type": "String", + "placeholders": {} + }, + "addEmail": "Pridať email", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "appLock": "Uzamknutie aplikácie", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "security": "Bezpečnosť", + "@security": { + "type": "String", + "placeholders": {} + }, + "reportMessage": "Nahlásiť správu", + "@reportMessage": { + "type": "String", + "placeholders": {} + }, + "sendSticker": "Poslať nálepku", + "@sendSticker": { + "type": "String", + "placeholders": {} + }, + "roomVersion": "Verzia miestnosti", + "@roomVersion": { + "type": "String", + "placeholders": {} + }, + "sendMessages": "Poslať správy", + "@sendMessages": { + "type": "String", + "placeholders": {} + }, + "joinRoom": "Pripojiť sa k miestnosti", + "@joinRoom": { + "type": "String", + "placeholders": {} + }, + "setPermissionsLevel": "Nastaviť úroveň oprávnení", + "@setPermissionsLevel": { + "type": "String", + "placeholders": {} + }, + "badServerLoginTypesException": "Server podporuje tieto typy prihlásenia:\n{serverVersions}\nAle táto aplikácia podporuje iba:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "chatBackup": "Záloha chatov", + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "addToSpace": "Pridať do priestoru", + "@addToSpace": {}, + "cantOpenUri": "Nemožno otvoriť identifikátor prostriedku {uri}", + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "yourChatBackupHasBeenSetUp": "Záloha vašich chatov bola nastavená.", + "@yourChatBackupHasBeenSetUp": {}, + "repeatPassword": "Zopakujte heslo", + "@repeatPassword": {}, + "all": "Všetky", + "@all": { + "type": "String", + "placeholders": {} + }, + "allChats": "Všetky chaty", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "areYouSureYouWantToLogout": "Ste si istí, že sa chcete odhlásiť?", + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "sendOnEnter": "Odoslať pri vstupe", + "@sendOnEnter": {}, + "ignoredUsers": "Ignorovaní užívatelia", + "@ignoredUsers": { + "type": "String", + "placeholders": {} + }, + "ignore": "Ignorovať", + "@ignore": { + "type": "String", + "placeholders": {} + }, + "search": "Hľadať", + "@search": { + "type": "String", + "placeholders": {} + }, + "sendAsText": "Poslať ako text", + "@sendAsText": { + "type": "String" + }, + "sendOriginal": "Poslať originál", + "@sendOriginal": { + "type": "String", + "placeholders": {} + }, + "sendVideo": "Poslať video", + "@sendVideo": { + "type": "String", + "placeholders": {} + }, + "importNow": "Importovať teraz", + "@importNow": {} +} diff --git a/lib/l10n/intl_sl.arb b/lib/l10n/intl_sl.arb new file mode 100644 index 0000000..4bf5f58 --- /dev/null +++ b/lib/l10n/intl_sl.arb @@ -0,0 +1,659 @@ +{ + "repeatPassword": "Ponovite geslo", + "@repeatPassword": {}, + "about": "O aplikaciji", + "@about": { + "type": "String", + "placeholders": {} + }, + "accept": "Sprejmi", + "@accept": { + "type": "String", + "placeholders": {} + }, + "account": "Račun", + "@account": { + "type": "String", + "placeholders": {} + }, + "activatedEndToEndEncryption": "Uporabnik {username} je aktiviral šifriranje od konca do konca", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "addEmail": "Dodajte e-pošto", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "addToSpace": "Dodajte v prostor", + "@addToSpace": {}, + "alias": "vzdevek", + "@alias": { + "type": "String", + "placeholders": {} + }, + "all": "Vse", + "@all": { + "type": "String", + "placeholders": {} + }, + "allChats": "Vsi klepeti", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "answeredTheCall": "Oseba {senderName} je odgovorila na klic", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "anyoneCanJoin": "Pridruži se lahko vsak", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "appLock": "Zaklepanje aplikacije", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "askSSSSSign": "Če želite podpisati drugo osebo, vnesite geslo za varno trgovino ali obnovitveni ključ.", + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "askVerificationRequest": "Ali želite sprejeti to zahtevo za preverjanje od {username}?", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "autoplayImages": "Samodejno predvajajte animirane nalepke in čustva", + "@autoplayImages": { + "type": "String", + "placeholder": {} + }, + "badServerLoginTypesException": "Domači strežnik podpira vrste prijave:\n{serverVersions}\nToda ta aplikacija podpira samo:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "sendOnEnter": "Pošlji ob vstopu", + "@sendOnEnter": {}, + "banFromChat": "Prepoved klepeta", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "banned": "Prepovedano", + "@banned": { + "type": "String", + "placeholders": {} + }, + "bannedUser": "{username} je prepovedan v {targetName}", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "blockDevice": "Blokirana naprava", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "blocked": "Blokirano", + "@blocked": { + "type": "String", + "placeholders": {} + }, + "botMessages": "Botova sporočila", + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "cancel": "Prekliči", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "cantOpenUri": "URI-ja {uri} ni mogoče odpreti", + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "changedTheChatAvatar": "{username} je spremenil avatar za klepet", + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheChatPermissions": "{username} je spremenila dovoljenja za klepet", + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheDisplaynameTo": "{username} je spremenil svoje prikazno ime v: '{displayname}'", + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "changedTheGuestAccessRules": "{username} je spremenila pravila dostopa za goste", + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheGuestAccessRulesTo": "{username} je spremenila pravila dostopa za goste v: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheHistoryVisibilityTo": "{username} je spremenil vidnost zgodovine v: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheJoinRules": "{username} je spremenil pravila za pridružitev", + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheJoinRulesTo": "{username} je spremenila pravila pridružitve v: {joinRules}", + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "changedTheProfileAvatar": "{username} je spremenil avatar", + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomAliases": "{username} je spremenil vzdevke sobe", + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomInvitationLink": "{username} je spremenil povezavo za povabilo", + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changePassword": "Spremeni geslo", + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "changeTheHomeserver": "Spremenite domači strežnik", + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "changeTheme": "Spremenite svoj slog", + "@changeTheme": { + "type": "String", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "Spremenite ime skupine", + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "changeYourAvatar": "Spremenite svoj avatar", + "@changeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "chat": "Klepet", + "@chat": { + "type": "String", + "placeholders": {} + }, + "yourChatBackupHasBeenSetUp": "Varnostna kopija klepeta je nastavljena.", + "@yourChatBackupHasBeenSetUp": {}, + "chatBackup": "Varnostno kopiranje klepeta", + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "chatDetails": "Podrobnosti klepeta", + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "chatHasBeenAddedToThisSpace": "Klepet je bil dodan v ta prostor", + "@chatHasBeenAddedToThisSpace": {}, + "chats": "Klepeti", + "@chats": { + "type": "String", + "placeholders": {} + }, + "chooseAStrongPassword": "Izberite močno geslo", + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "clearArchive": "Počisti arhiv", + "@clearArchive": {}, + "close": "Zapri", + "@close": { + "type": "String", + "placeholders": {} + }, + "commandHint_ban": "Izključi določenega uporabnika iz te sobe", + "@commandHint_ban": { + "type": "String", + "description": "Usage hint for the command /ban" + }, + "commandHint_html": "Pošljite besedilo v obliki HTML", + "@commandHint_html": { + "type": "String", + "description": "Usage hint for the command /html" + }, + "commandHint_invite": "Povabi danega uporabnika v to sobo", + "@commandHint_invite": { + "type": "String", + "description": "Usage hint for the command /invite" + }, + "commandHint_join": "Pridružite se dani sobi", + "@commandHint_join": { + "type": "String", + "description": "Usage hint for the command /join" + }, + "commandHint_kick": "Odstranite danega uporabnika iz te sobe", + "@commandHint_kick": { + "type": "String", + "description": "Usage hint for the command /kick" + }, + "commandHint_me": "Opisi sebe", + "@commandHint_me": { + "type": "String", + "description": "Usage hint for the command /me" + }, + "commandHint_myroomavatar": "Nastavite svojo sliko za to sobo", + "@commandHint_myroomavatar": { + "type": "String", + "description": "Usage hint for the command /myroomavatar" + }, + "commandHint_op": "Nastavite raven moči danega uporabnika (privzeto: 50)", + "@commandHint_op": { + "type": "String", + "description": "Usage hint for the command /op" + }, + "commandHint_react": "Pošljite odgovor kot reakcijo", + "@commandHint_react": { + "type": "String", + "description": "Usage hint for the command /react" + }, + "commandHint_send": "Pošlji besedilo", + "@commandHint_send": { + "type": "String", + "description": "Usage hint for the command /send" + }, + "commandHint_unban": "Prekliči izključitev določenega uporabnika iz te sobe", + "@commandHint_unban": { + "type": "String", + "description": "Usage hint for the command /unban" + }, + "commandInvalid": "Ukaz ni veljaven", + "@commandInvalid": { + "type": "String" + }, + "commandMissing": "{command} is not a command.", + "@commandMissing": { + "type": "String", + "placeholders": { + "command": { + "type": "String" + } + }, + "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": "String", + "placeholders": {} + }, + "compareNumbersMatch": "Primerjajte in se prepričajte, da se naslednje številke ujemajo s številkami druge naprave:", + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "configureChat": "Konfigurirajte klepet", + "@configureChat": { + "type": "String", + "placeholders": {} + }, + "confirm": "Potrdi", + "@confirm": { + "type": "String", + "placeholders": {} + }, + "containsDisplayName": "Vsebuje prikazno ime", + "@containsDisplayName": { + "type": "String", + "placeholders": {} + }, + "containsUserName": "Vsebuje uporabniško ime", + "@containsUserName": { + "type": "String", + "placeholders": {} + }, + "archive": "Arhiv", + "@archive": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "Ali si prepričan?", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "acceptedTheInvitation": "{username} je sprejel povabilo", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "areYouSureYouWantToLogout": "Ali ste prepričani, da se želite odjaviti?", + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "changedTheChatDescriptionTo": "{username} je spremenil opis klepeta v: '{description}'", + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "areGuestsAllowedToJoin": "Ali se lahko gostujoči uporabniki pridružijo", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "admin": "Admin", + "@admin": { + "type": "String", + "placeholders": {} + }, + "badServerVersionsException": "Domači strežnik podpira različice Spec:\n{serverVersions}\nToda ta aplikacija podpira samo {supportedVersions}", + "@badServerVersionsException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "changedTheChatNameTo": "{username} je spremenil ime klepeta v: '{chatname}'", + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "changeDeviceName": "Spremenite ime naprave", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "changedTheHistoryVisibility": "{username} je spremenila vidnost zgodovine", + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "channelCorruptedDecryptError": "Šifriranje je poškodovano", + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "contentHasBeenReported": "Vsebina je bila prijavljena skrbnikom strežnika", + "@contentHasBeenReported": { + "type": "String", + "placeholders": {} + }, + "chatBackupDescription": "Varnostna kopija klepeta je zavarovana z varnostnim ključem. Prosimo, pazite, da ga ne izgubite.", + "@chatBackupDescription": { + "type": "String", + "placeholders": {} + }, + "commandHint_myroomnick": "Nastavite prikazno ime za to sobo", + "@commandHint_myroomnick": { + "type": "String", + "description": "Usage hint for the command /myroomnick" + }, + "connect": "Povežite se", + "@connect": { + "type": "String", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "Kontakt je bil povabljen v skupino", + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "commandHint_leave": "Zapusti to sobo", + "@commandHint_leave": { + "type": "String", + "description": "Usage hint for the command /leave" + }, + "commandHint_plain": "Pošlji neformatirano besedilo", + "@commandHint_plain": { + "type": "String", + "description": "Usage hint for the command /plain" + }, + "copiedToClipboard": "Kopirano v odložišče", + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "copy": "Kopiraj", + "@copy": { + "type": "String", + "placeholders": {} + }, + "copyToClipboard": "Kopiraj v odložišče", + "@copyToClipboard": { + "type": "String", + "placeholders": {} + }, + "couldNotDecryptMessage": "Sporočila ni bilo mogoče dešifrirati: {error}", + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "countParticipants": "{count} udeležencev", + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "create": "Ustvari", + "@create": { + "type": "String", + "placeholders": {} + }, + "createNewSpace": "Nov prostor", + "@createNewSpace": { + "type": "String", + "placeholders": {} + }, + "currentlyActive": "Trenutno aktiven", + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "darkTheme": "Temno", + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "defaultPermissionLevel": "Privzeta raven dovoljenja", + "@defaultPermissionLevel": { + "type": "String", + "placeholders": {} + }, + "dateWithYear": "{day}-{month}-{year}", + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "dateWithoutYear": "{month}-{day}", + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "createdTheChat": "{username} je ustvaril klepet", + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "deactivateAccountWarning": "S tem boste deaktivirali vaš uporabniški račun. Tega ni mogoče razveljaviti! Ali si prepričan?", + "@deactivateAccountWarning": { + "type": "String", + "placeholders": {} + } +} diff --git a/lib/l10n/intl_sr.arb b/lib/l10n/intl_sr.arb new file mode 100644 index 0000000..d3aa4ff --- /dev/null +++ b/lib/l10n/intl_sr.arb @@ -0,0 +1,1966 @@ +{ + "@@last_modified": "2021-08-14 12:41:09.857024", + "about": "О програму", + "@about": { + "type": "String", + "placeholders": {} + }, + "accept": "Прихвати", + "@accept": { + "type": "String", + "placeholders": {} + }, + "acceptedTheInvitation": "{username} прихвата позивницу", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "account": "Налог", + "@account": { + "type": "String", + "placeholders": {} + }, + "activatedEndToEndEncryption": "{username} укључи шифровање с краја на крај", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "addEmail": "Додај е-адресу", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "admin": "Админ", + "@admin": { + "type": "String", + "placeholders": {} + }, + "alias": "алијас", + "@alias": { + "type": "String", + "placeholders": {} + }, + "all": "Сви", + "@all": { + "type": "String", + "placeholders": {} + }, + "answeredTheCall": "{senderName} одговори на позив", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "anyoneCanJoin": "свако може да се придружи", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "appLock": "Закључавање апликације", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "archive": "Архива", + "@archive": { + "type": "String", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "Да ли је гостима дозвољен приступ", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "Сигурни сте?", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "areYouSureYouWantToLogout": "Заиста желите да се одјавите?", + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "askSSSSSign": "Да бисте могли да пријавите другу особу, унесите своју безбедносну фразу или кључ опоравка.", + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "askVerificationRequest": "Прихватате ли захтев за верификацију од корисника {username}?", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "badServerLoginTypesException": "Домаћи сервер подржава начине пријаве:\n{serverVersions}\nали ова апликација подржава само:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "badServerVersionsException": "Домаћи сервер подржава верзије:\n{serverVersions}\nали ова апликација подржава само {supportedVersions}", + "@badServerVersionsException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "banFromChat": "Забрани у ћаскању", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "banned": "Забрањен", + "@banned": { + "type": "String", + "placeholders": {} + }, + "bannedUser": "{username} забрани корисника {targetName}", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "blockDevice": "Блокирај уређај", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "blocked": "Блокиран", + "@blocked": { + "type": "String", + "placeholders": {} + }, + "botMessages": "Поруке Бота", + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "cancel": "Откажи", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "changeDeviceName": "Промени назив уређаја", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "changedTheChatAvatar": "{username} промени аватар ћаскања", + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheChatDescriptionTo": "{username} промени опис ћаскања у: „{description}“", + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "changedTheChatNameTo": "{username} промени назив ћаскања у: „{chatname}“", + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "changedTheChatPermissions": "{username} измени дозволе ћаскања", + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheDisplaynameTo": "{username} промени приказно име на: „{displayname}“", + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "changedTheGuestAccessRules": "{username} измени правила за приступ гостију", + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheGuestAccessRulesTo": "{username} измени правила за приступ гостију на: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheHistoryVisibility": "{username} измени видљивост историје", + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheHistoryVisibilityTo": "{username} измени видљивост историје на: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheJoinRules": "{username} измени правила приступања", + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheJoinRulesTo": "{username} измени правила приступања на: {joinRules}", + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "changedTheProfileAvatar": "{username} измени свој аватар", + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomAliases": "{username} измени алијас собе", + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomInvitationLink": "{username} измени везу позивнице", + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changePassword": "Измени лозинку", + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "changeTheHomeserver": "Промени домаћи сервер", + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "changeTheme": "Измените изглед", + "@changeTheme": { + "type": "String", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "Измени назив групе", + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "changeYourAvatar": "Измените свој аватар", + "@changeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "channelCorruptedDecryptError": "Шифровање је покварено", + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "chat": "Ћаскање", + "@chat": { + "type": "String", + "placeholders": {} + }, + "chatBackup": "Копија ћаскања", + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "chatBackupDescription": "Ваша резервна копија ћаскања је обезбеђена кључем. Немојте да га изгубите.", + "@chatBackupDescription": { + "type": "String", + "placeholders": {} + }, + "chatDetails": "Детаљи ћаскања", + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "chats": "Ћаскања", + "@chats": { + "type": "String", + "placeholders": {} + }, + "chooseAStrongPassword": "Изаберите јаку лозинку", + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "clearArchive": "Очисти архиву", + "@clearArchive": {}, + "close": "Затвори", + "@close": { + "type": "String", + "placeholders": {} + }, + "commandHint_ban": "Блокирај задатог корисника за ову собу", + "@commandHint_ban": { + "type": "String", + "description": "Usage hint for the command /ban" + }, + "commandHint_html": "Шаљи ХТМЛ обликован текст", + "@commandHint_html": { + "type": "String", + "description": "Usage hint for the command /html" + }, + "commandHint_invite": "Позови задатог корисника у собу", + "@commandHint_invite": { + "type": "String", + "description": "Usage hint for the command /invite" + }, + "commandHint_join": "Придружи се наведеној соби", + "@commandHint_join": { + "type": "String", + "description": "Usage hint for the command /join" + }, + "commandHint_kick": "Уклони задатог корисника из собе", + "@commandHint_kick": { + "type": "String", + "description": "Usage hint for the command /kick" + }, + "commandHint_leave": "Напусти ову собу", + "@commandHint_leave": { + "type": "String", + "description": "Usage hint for the command /leave" + }, + "commandHint_me": "Опишите себе", + "@commandHint_me": { + "type": "String", + "description": "Usage hint for the command /me" + }, + "commandHint_myroomnick": "Поставља ваш надимак за ову собу", + "@commandHint_myroomnick": { + "type": "String", + "description": "Usage hint for the command /myroomnick" + }, + "commandHint_op": "Подеси ниво задатог корисника (подразумевано: 50)", + "@commandHint_op": { + "type": "String", + "description": "Usage hint for the command /op" + }, + "commandHint_plain": "Шаљи неформатиран текст", + "@commandHint_plain": { + "type": "String", + "description": "Usage hint for the command /plain" + }, + "commandHint_react": "Шаљи одговор као реакцију", + "@commandHint_react": { + "type": "String", + "description": "Usage hint for the command /react" + }, + "commandHint_send": "Пошаљи текст", + "@commandHint_send": { + "type": "String", + "description": "Usage hint for the command /send" + }, + "commandHint_unban": "Скини забрану задатом кориснику за ову собу", + "@commandHint_unban": { + "type": "String", + "description": "Usage hint for the command /unban" + }, + "compareEmojiMatch": "Упоредите и проверите да су емоџији идентични као на другом уређају:", + "@compareEmojiMatch": { + "type": "String", + "placeholders": {} + }, + "compareNumbersMatch": "Упоредите и проверите да су следећи бројеви идентични као на другом уређају:", + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "configureChat": "Подешавање ћаскања", + "@configureChat": { + "type": "String", + "placeholders": {} + }, + "confirm": "Потврди", + "@confirm": { + "type": "String", + "placeholders": {} + }, + "connect": "Повежи се", + "@connect": { + "type": "String", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "Особа је позвана у групу", + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "containsDisplayName": "Садржи приказно име", + "@containsDisplayName": { + "type": "String", + "placeholders": {} + }, + "containsUserName": "Садржи корисничко име", + "@containsUserName": { + "type": "String", + "placeholders": {} + }, + "contentHasBeenReported": "Садржај је пријављен администраторима сервера", + "@contentHasBeenReported": { + "type": "String", + "placeholders": {} + }, + "copiedToClipboard": "Копирано у клипборд", + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "copy": "Копирај", + "@copy": { + "type": "String", + "placeholders": {} + }, + "copyToClipboard": "Копирај у клипборд", + "@copyToClipboard": { + "type": "String", + "placeholders": {} + }, + "couldNotDecryptMessage": "Не могу да дешифрујем поруку: {error}", + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "countParticipants": "учесника: {count}", + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "create": "Направи", + "@create": { + "type": "String", + "placeholders": {} + }, + "createdTheChat": "{username} направи ћаскање", + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "currentlyActive": "Тренутно активно", + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "darkTheme": "тамни", + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "dateWithoutYear": "{day} {month}", + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "dateWithYear": "{day} {month} {year}", + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "deactivateAccountWarning": "Ово ће деактивирати ваш кориснички налог. Не може се повратити! Сигурни сте?", + "@deactivateAccountWarning": { + "type": "String", + "placeholders": {} + }, + "defaultPermissionLevel": "Подразумевани ниво приступа", + "@defaultPermissionLevel": { + "type": "String", + "placeholders": {} + }, + "delete": "Обриши", + "@delete": { + "type": "String", + "placeholders": {} + }, + "deleteAccount": "Обриши налог", + "@deleteAccount": { + "type": "String", + "placeholders": {} + }, + "deleteMessage": "Брисање поруке", + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "device": "Уређај", + "@device": { + "type": "String", + "placeholders": {} + }, + "deviceId": "ИД уређаја", + "@deviceId": { + "type": "String", + "placeholders": {} + }, + "devices": "Уређаји", + "@devices": { + "type": "String", + "placeholders": {} + }, + "directChats": "Директна ћаскања", + "@directChats": { + "type": "String", + "placeholders": {} + }, + "displaynameHasBeenChanged": "Име за приказ је измењено", + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "downloadFile": "Преузми фајл", + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "edit": "Уреди", + "@edit": { + "type": "String", + "placeholders": {} + }, + "editBlockedServers": "Уреди блокиране сервере", + "@editBlockedServers": { + "type": "String", + "placeholders": {} + }, + "editDisplayname": "Уреди име за приказ", + "@editDisplayname": { + "type": "String", + "placeholders": {} + }, + "editRoomAliases": "Уреди алијасе собе", + "@editRoomAliases": { + "type": "String", + "placeholders": {} + }, + "editRoomAvatar": "Уређује аватар собе", + "@editRoomAvatar": { + "type": "String", + "placeholders": {} + }, + "emoteExists": "Емоти већ постоји!", + "@emoteExists": { + "type": "String", + "placeholders": {} + }, + "emoteInvalid": "Неисправна скраћеница за емоти!", + "@emoteInvalid": { + "type": "String", + "placeholders": {} + }, + "emotePacks": "Пакети емотија за собу", + "@emotePacks": { + "type": "String", + "placeholders": {} + }, + "emoteSettings": "Поставке емотија", + "@emoteSettings": { + "type": "String", + "placeholders": {} + }, + "emoteShortcode": "скраћеница", + "@emoteShortcode": { + "type": "String", + "placeholders": {} + }, + "emoteWarnNeedToPick": "Морате да изаберете скраћеницу и слику за емоти!", + "@emoteWarnNeedToPick": { + "type": "String", + "placeholders": {} + }, + "emptyChat": "празно ћаскање", + "@emptyChat": { + "type": "String", + "placeholders": {} + }, + "enableEmotesGlobally": "Глобално укључи пакет емотија", + "@enableEmotesGlobally": { + "type": "String", + "placeholders": {} + }, + "enableEncryption": "Укључује шифровање", + "@enableEncryption": { + "type": "String", + "placeholders": {} + }, + "enableEncryptionWarning": "Шифровање више нећете моћи да искључите. Сигурни сте?", + "@enableEncryptionWarning": { + "type": "String", + "placeholders": {} + }, + "encrypted": "Шифровано", + "@encrypted": { + "type": "String", + "placeholders": {} + }, + "encryption": "Шифровање", + "@encryption": { + "type": "String", + "placeholders": {} + }, + "encryptionNotEnabled": "Шифровање није укључено", + "@encryptionNotEnabled": { + "type": "String", + "placeholders": {} + }, + "endedTheCall": "{senderName} заврши позив", + "@endedTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "enterAnEmailAddress": "Унесите адресу е-поште", + "@enterAnEmailAddress": { + "type": "String", + "placeholders": {} + }, + "enterYourHomeserver": "Унесите свој домаћи сервер", + "@enterYourHomeserver": { + "type": "String", + "placeholders": {} + }, + "everythingReady": "Све је спремно!", + "@everythingReady": { + "type": "String", + "placeholders": {} + }, + "extremeOffensive": "Екстремно увредљив", + "@extremeOffensive": { + "type": "String", + "placeholders": {} + }, + "fileName": "Назив фајла", + "@fileName": { + "type": "String", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "String", + "placeholders": {} + }, + "fontSize": "Величина фонта", + "@fontSize": { + "type": "String", + "placeholders": {} + }, + "forward": "Напред", + "@forward": { + "type": "String", + "placeholders": {} + }, + "fromJoining": "од приступања", + "@fromJoining": { + "type": "String", + "placeholders": {} + }, + "fromTheInvitation": "од позивања", + "@fromTheInvitation": { + "type": "String", + "placeholders": {} + }, + "goToTheNewRoom": "Иди у нову собу", + "@goToTheNewRoom": { + "type": "String", + "placeholders": {} + }, + "group": "Група", + "@group": { + "type": "String", + "placeholders": {} + }, + "groupIsPublic": "Група је јавна", + "@groupIsPublic": { + "type": "String", + "placeholders": {} + }, + "groups": "Групе", + "@groups": { + "type": "String", + "placeholders": {} + }, + "groupWith": "Група са корисником {displayname}", + "@groupWith": { + "type": "String", + "placeholders": { + "displayname": { + "type": "String" + } + } + }, + "guestsAreForbidden": "гости су забрањени", + "@guestsAreForbidden": { + "type": "String", + "placeholders": {} + }, + "guestsCanJoin": "гости могу приступити", + "@guestsCanJoin": { + "type": "String", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "{username} поништи позивницу за корисника {targetName}", + "@hasWithdrawnTheInvitationFor": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "help": "Помоћ", + "@help": { + "type": "String", + "placeholders": {} + }, + "hideRedactedEvents": "Сакриј редиговане догађаје", + "@hideRedactedEvents": { + "type": "String", + "placeholders": {} + }, + "hideUnknownEvents": "Сакриј непознате догађаје", + "@hideUnknownEvents": { + "type": "String", + "placeholders": {} + }, + "howOffensiveIsThisContent": "Колико је увредљив овај садржај?", + "@howOffensiveIsThisContent": { + "type": "String", + "placeholders": {} + }, + "id": "ИД", + "@id": { + "type": "String", + "placeholders": {} + }, + "identity": "Идентитет", + "@identity": { + "type": "String", + "placeholders": {} + }, + "ignore": "Игнориши", + "@ignore": { + "type": "String", + "placeholders": {} + }, + "ignoredUsers": "Игнорисани корисници", + "@ignoredUsers": { + "type": "String", + "placeholders": {} + }, + "iHaveClickedOnLink": "Кликнуо сам на везу", + "@iHaveClickedOnLink": { + "type": "String", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "Неисправна фраза или кључ опоравка", + "@incorrectPassphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "inoffensive": "Није увредљив", + "@inoffensive": { + "type": "String", + "placeholders": {} + }, + "inviteContact": "Позивање особа", + "@inviteContact": { + "type": "String", + "placeholders": {} + }, + "inviteContactToGroup": "Позови особу у групу {groupName}", + "@inviteContactToGroup": { + "type": "String", + "placeholders": { + "groupName": { + "type": "String" + } + } + }, + "invited": "Позван", + "@invited": { + "type": "String", + "placeholders": {} + }, + "invitedUser": "{username} позва корисника {targetName}", + "@invitedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "invitedUsersOnly": "само позвани корисници", + "@invitedUsersOnly": { + "type": "String", + "placeholders": {} + }, + "inviteForMe": "Позивнице за мене", + "@inviteForMe": { + "type": "String", + "placeholders": {} + }, + "inviteText": "{username} вас позива у FluffyChat. \n1. Инсталирајте FluffyChat: https://fluffychat.im \n2. Региструјте се или пријавите \n3. Отворите везу позивнице: {link}", + "@inviteText": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "link": { + "type": "String" + } + } + }, + "isTyping": "куца…", + "@isTyping": { + "type": "String", + "placeholders": {} + }, + "joinedTheChat": "{username} се придружи ћаскању", + "@joinedTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "joinRoom": "Придружи се соби", + "@joinRoom": { + "type": "String", + "placeholders": {} + }, + "kicked": "{username} избаци корисника {targetName}", + "@kicked": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickedAndBanned": "{username} избаци и забрани корисника {targetName}", + "@kickedAndBanned": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickFromChat": "Избаци из ћаскања", + "@kickFromChat": { + "type": "String", + "placeholders": {} + }, + "lastActiveAgo": "Последња активност: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "String", + "placeholders": { + "localizedTimeShort": { + "type": "String" + } + } + }, + "leave": "Напусти", + "@leave": { + "type": "String", + "placeholders": {} + }, + "leftTheChat": "Напусти ћаскање", + "@leftTheChat": { + "type": "String", + "placeholders": {} + }, + "license": "Лиценца", + "@license": { + "type": "String", + "placeholders": {} + }, + "lightTheme": "светли", + "@lightTheme": { + "type": "String", + "placeholders": {} + }, + "loadCountMoreParticipants": "Учитај још {count} учесника", + "@loadCountMoreParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "loadingPleaseWait": "Учитавам… Сачекајте.", + "@loadingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "loadMore": "Учитај још…", + "@loadMore": { + "type": "String", + "placeholders": {} + }, + "login": "Пријава", + "@login": { + "type": "String", + "placeholders": {} + }, + "logInTo": "Пријава на {homeserver}", + "@logInTo": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "logout": "Одјава", + "@logout": { + "type": "String", + "placeholders": {} + }, + "memberChanges": "Измене чланова", + "@memberChanges": { + "type": "String", + "placeholders": {} + }, + "mention": "Спомени", + "@mention": { + "type": "String", + "placeholders": {} + }, + "messages": "Поруке", + "@messages": { + "type": "String", + "placeholders": {} + }, + "moderator": "Модератор", + "@moderator": { + "type": "String", + "placeholders": {} + }, + "muteChat": "Ућуткај ћаскање", + "@muteChat": { + "type": "String", + "placeholders": {} + }, + "needPantalaimonWarning": "За сада, потребан је Пантелејмон (Pantalaimon) да бисте користили шифровање с краја на крај.", + "@needPantalaimonWarning": { + "type": "String", + "placeholders": {} + }, + "newChat": "Ново ћаскање", + "@newChat": { + "type": "String", + "placeholders": {} + }, + "newMessageInFluffyChat": "Нова порука — FluffyChat", + "@newMessageInFluffyChat": { + "type": "String", + "placeholders": {} + }, + "newVerificationRequest": "Нови захтев за верификацију!", + "@newVerificationRequest": { + "type": "String", + "placeholders": {} + }, + "next": "Следеће", + "@next": { + "type": "String", + "placeholders": {} + }, + "no": "Не", + "@no": { + "type": "String", + "placeholders": {} + }, + "noConnectionToTheServer": "Нема везе са сервером", + "@noConnectionToTheServer": { + "type": "String", + "placeholders": {} + }, + "noEmotesFound": "Нема емотија. 😕", + "@noEmotesFound": { + "type": "String", + "placeholders": {} + }, + "noEncryptionForPublicRooms": "Шифровање се може активирати након што соба престане да буде јавно доступна.", + "@noEncryptionForPublicRooms": { + "type": "String", + "placeholders": {} + }, + "noGoogleServicesWarning": "Чини се да немате Гугл услуге на телефону. То је добра одлука за вашу приватност! Да би се протурале нотификације у FluffyChat, препоручујемо коришћење https://microg.org/ или https://unifiedpush.org/", + "@noGoogleServicesWarning": { + "type": "String", + "placeholders": {} + }, + "none": "Ништа", + "@none": { + "type": "String", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "Још нисте одредили начин за опоравак лозинке.", + "@noPasswordRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "noPermission": "Нема дозвола", + "@noPermission": { + "type": "String", + "placeholders": {} + }, + "noRoomsFound": "Нисам нашао собе…", + "@noRoomsFound": { + "type": "String", + "placeholders": {} + }, + "notifications": "Обавештења", + "@notifications": { + "type": "String", + "placeholders": {} + }, + "notificationsEnabledForThisAccount": "Обавештења укључена за овај налог", + "@notificationsEnabledForThisAccount": { + "type": "String", + "placeholders": {} + }, + "numUsersTyping": "{count} корисника куца…", + "@numUsersTyping": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "offensive": "Увредљив", + "@offensive": { + "type": "String", + "placeholders": {} + }, + "offline": "Ван везе", + "@offline": { + "type": "String", + "placeholders": {} + }, + "ok": "у реду", + "@ok": { + "type": "String", + "placeholders": {} + }, + "online": "На вези", + "@online": { + "type": "String", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "Резерва кључева на мрежи је укључена", + "@onlineKeyBackupEnabled": { + "type": "String", + "placeholders": {} + }, + "oopsPushError": "Нажалост, дошло је до грешке при подешавању дотурања обавештења.", + "@oopsPushError": { + "type": "String", + "placeholders": {} + }, + "oopsSomethingWentWrong": "Нешто је пошло наопако…", + "@oopsSomethingWentWrong": { + "type": "String", + "placeholders": {} + }, + "openAppToReadMessages": "Отворите апликацију да прочитате поруке", + "@openAppToReadMessages": { + "type": "String", + "placeholders": {} + }, + "openCamera": "Отвори камеру", + "@openCamera": { + "type": "String", + "placeholders": {} + }, + "or": "или", + "@or": { + "type": "String", + "placeholders": {} + }, + "participant": "Учесник", + "@participant": { + "type": "String", + "placeholders": {} + }, + "passphraseOrKey": "фраза или кључ опоравка", + "@passphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "password": "Лозинка", + "@password": { + "type": "String", + "placeholders": {} + }, + "passwordForgotten": "Заборављена лозинка", + "@passwordForgotten": { + "type": "String", + "placeholders": {} + }, + "passwordHasBeenChanged": "Лозинка је промењена", + "@passwordHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "passwordRecovery": "Опоравак лозинке", + "@passwordRecovery": { + "type": "String", + "placeholders": {} + }, + "people": "Људи", + "@people": { + "type": "String", + "placeholders": {} + }, + "pickImage": "Избор слике", + "@pickImage": { + "type": "String", + "placeholders": {} + }, + "pin": "Закачи", + "@pin": { + "type": "String", + "placeholders": {} + }, + "play": "Пусти {fileName}", + "@play": { + "type": "String", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "pleaseChoose": "Изаберите", + "@pleaseChoose": { + "type": "String", + "placeholders": {} + }, + "pleaseChooseAPasscode": "Изаберите код за пролаз", + "@pleaseChooseAPasscode": { + "type": "String", + "placeholders": {} + }, + "pleaseClickOnLink": "Кликните на везу у примљеној е-пошти па наставите.", + "@pleaseClickOnLink": { + "type": "String", + "placeholders": {} + }, + "pleaseEnter4Digits": "Унесите 4 цифре или оставите празно да не закључавате апликацију.", + "@pleaseEnter4Digits": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPassword": "Унесите своју лозинку", + "@pleaseEnterYourPassword": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPin": "Унесите свој пин", + "@pleaseEnterYourPin": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourUsername": "Унесите своје корисничко име", + "@pleaseEnterYourUsername": { + "type": "String", + "placeholders": {} + }, + "pleaseFollowInstructionsOnWeb": "Испратите упутства на веб сајту и тапните на „Следеће“.", + "@pleaseFollowInstructionsOnWeb": { + "type": "String", + "placeholders": {} + }, + "privacy": "Приватност", + "@privacy": { + "type": "String", + "placeholders": {} + }, + "publicRooms": "Јавне собе", + "@publicRooms": { + "type": "String", + "placeholders": {} + }, + "pushRules": "Правила протурања", + "@pushRules": { + "type": "String", + "placeholders": {} + }, + "reason": "Разлог", + "@reason": { + "type": "String", + "placeholders": {} + }, + "recording": "Снимам", + "@recording": { + "type": "String", + "placeholders": {} + }, + "redactedAnEvent": "{username} редигова догађај", + "@redactedAnEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "redactMessage": "Редигуј поруку", + "@redactMessage": { + "type": "String", + "placeholders": {} + }, + "register": "Регистрација", + "@register": { + "type": "String", + "placeholders": {} + }, + "reject": "Одбиј", + "@reject": { + "type": "String", + "placeholders": {} + }, + "rejectedTheInvitation": "{username} одби позивницу", + "@rejectedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "rejoin": "Поново се придружи", + "@rejoin": { + "type": "String", + "placeholders": {} + }, + "remove": "Уклони", + "@remove": { + "type": "String", + "placeholders": {} + }, + "removeAllOtherDevices": "Уклони све остале уређаје", + "@removeAllOtherDevices": { + "type": "String", + "placeholders": {} + }, + "removedBy": "Уклонио корисник {username}", + "@removedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "removeDevice": "Уклони уређај", + "@removeDevice": { + "type": "String", + "placeholders": {} + }, + "unbanFromChat": "Уклони изгнанство", + "@unbanFromChat": { + "type": "String", + "placeholders": {} + }, + "removeYourAvatar": "Уклоните свој аватар", + "@removeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "replaceRoomWithNewerVersion": "Замени собу новијом верзијом", + "@replaceRoomWithNewerVersion": { + "type": "String", + "placeholders": {} + }, + "reply": "Одговори", + "@reply": { + "type": "String", + "placeholders": {} + }, + "reportMessage": "Пријави поруку", + "@reportMessage": { + "type": "String", + "placeholders": {} + }, + "requestPermission": "Затражи дозволу", + "@requestPermission": { + "type": "String", + "placeholders": {} + }, + "roomHasBeenUpgraded": "Соба је надограђена", + "@roomHasBeenUpgraded": { + "type": "String", + "placeholders": {} + }, + "roomVersion": "Верзија собе", + "@roomVersion": { + "type": "String", + "placeholders": {} + }, + "search": "Претражи", + "@search": { + "type": "String", + "placeholders": {} + }, + "security": "Безбедност", + "@security": { + "type": "String", + "placeholders": {} + }, + "seenByUser": "{username} прегледа", + "@seenByUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "send": "Пошаљи", + "@send": { + "type": "String", + "placeholders": {} + }, + "sendAMessage": "Пошаљи поруку", + "@sendAMessage": { + "type": "String", + "placeholders": {} + }, + "sendAudio": "Пошаљи аудио", + "@sendAudio": { + "type": "String", + "placeholders": {} + }, + "sendFile": "Пошаљи фајл", + "@sendFile": { + "type": "String", + "placeholders": {} + }, + "sendImage": "Пошаљи слику", + "@sendImage": { + "type": "String", + "placeholders": {} + }, + "sendMessages": "Слање порука", + "@sendMessages": { + "type": "String", + "placeholders": {} + }, + "sendOriginal": "Пошаљи оригинал", + "@sendOriginal": { + "type": "String", + "placeholders": {} + }, + "sendVideo": "Пошаљи видео", + "@sendVideo": { + "type": "String", + "placeholders": {} + }, + "sentAFile": "{username} посла фајл", + "@sentAFile": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAnAudio": "{username} посла аудио", + "@sentAnAudio": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAPicture": "{username} посла слику", + "@sentAPicture": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentASticker": "{username} посла налепницу", + "@sentASticker": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAVideo": "{username} посла видео", + "@sentAVideo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentCallInformations": "{senderName} посла податке о позиву", + "@sentCallInformations": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "setAsCanonicalAlias": "Постави као главни алијас", + "@setAsCanonicalAlias": { + "type": "String", + "placeholders": {} + }, + "setCustomEmotes": "постави посебне емотије", + "@setCustomEmotes": { + "type": "String", + "placeholders": {} + }, + "setInvitationLink": "Поставља везу позивнице", + "@setInvitationLink": { + "type": "String", + "placeholders": {} + }, + "setPermissionsLevel": "Одреди ниво дозволе", + "@setPermissionsLevel": { + "type": "String", + "placeholders": {} + }, + "setStatus": "Постави статус", + "@setStatus": { + "type": "String", + "placeholders": {} + }, + "settings": "Поставке", + "@settings": { + "type": "String", + "placeholders": {} + }, + "share": "Подели", + "@share": { + "type": "String", + "placeholders": {} + }, + "sharedTheLocation": "{username} подели локацију", + "@sharedTheLocation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "showPassword": "Прикажи лозинку", + "@showPassword": { + "type": "String", + "placeholders": {} + }, + "singlesignon": "Јединствена пријава", + "@singlesignon": { + "type": "String", + "placeholders": {} + }, + "skip": "Прескочи", + "@skip": { + "type": "String", + "placeholders": {} + }, + "sourceCode": "Изворни код", + "@sourceCode": { + "type": "String", + "placeholders": {} + }, + "startedACall": "{senderName} започе позив", + "@startedACall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "status": "Стање", + "@status": { + "type": "String", + "placeholders": {} + }, + "statusExampleMessage": "Како сте данас?", + "@statusExampleMessage": { + "type": "String", + "placeholders": {} + }, + "submit": "Пошаљи", + "@submit": { + "type": "String", + "placeholders": {} + }, + "systemTheme": "системски", + "@systemTheme": { + "type": "String", + "placeholders": {} + }, + "theyDontMatch": "Не поклапају се", + "@theyDontMatch": { + "type": "String", + "placeholders": {} + }, + "theyMatch": "Поклапају се", + "@theyMatch": { + "type": "String", + "placeholders": {} + }, + "title": "FluffyChat", + "@title": { + "description": "Title for the application", + "type": "String", + "placeholders": {} + }, + "toggleFavorite": "Мењај омиљеност", + "@toggleFavorite": { + "type": "String", + "placeholders": {} + }, + "toggleMuted": "Мењај ућутканост", + "@toggleMuted": { + "type": "String", + "placeholders": {} + }, + "toggleUnread": "Означи не/прочитано", + "@toggleUnread": { + "type": "String", + "placeholders": {} + }, + "tooManyRequestsWarning": "Превише упита. Покушајте касније!", + "@tooManyRequestsWarning": { + "type": "String", + "placeholders": {} + }, + "transferFromAnotherDevice": "Пренос са другог уређаја", + "@transferFromAnotherDevice": { + "type": "String", + "placeholders": {} + }, + "tryToSendAgain": "Покушај слање поново", + "@tryToSendAgain": { + "type": "String", + "placeholders": {} + }, + "unavailable": "Недоступно", + "@unavailable": { + "type": "String", + "placeholders": {} + }, + "unbannedUser": "{username} одблокира корисника {targetName}", + "@unbannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "unblockDevice": "Одблокирај уређај", + "@unblockDevice": { + "type": "String", + "placeholders": {} + }, + "unknownDevice": "Непознат уређај", + "@unknownDevice": { + "type": "String", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "Непознат алгоритам шифровања", + "@unknownEncryptionAlgorithm": { + "type": "String", + "placeholders": {} + }, + "unknownEvent": "Непознат догађај „{type}“", + "@unknownEvent": { + "type": "String", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "unmuteChat": "Врати обавештења", + "@unmuteChat": { + "type": "String", + "placeholders": {} + }, + "unpin": "Откачи", + "@unpin": { + "type": "String", + "placeholders": {} + }, + "unreadChats": "{unreadCount, plural, other{непрочитаних ћаскања: {unreadCount}}}", + "@unreadChats": { + "type": "String", + "placeholders": { + "unreadCount": { + "type": "int" + } + } + }, + "userAndOthersAreTyping": "{username} и {count} корисника куцају…", + "@userAndOthersAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "userAndUserAreTyping": "{username} и {username2} куцају…", + "@userAndUserAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "username2": { + "type": "String" + } + } + }, + "userIsTyping": "{username} куца…", + "@userIsTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "userLeftTheChat": "{username} напусти ћаскање", + "@userLeftTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "username": "Корисничко име", + "@username": { + "type": "String", + "placeholders": {} + }, + "userSentUnknownEvent": "{username} посла {type} догађај", + "@userSentUnknownEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "type": { + "type": "String" + } + } + }, + "verified": "Оверен", + "@verified": { + "type": "String", + "placeholders": {} + }, + "verify": "Верификуј", + "@verify": { + "type": "String", + "placeholders": {} + }, + "verifyStart": "Покрени верификацију", + "@verifyStart": { + "type": "String", + "placeholders": {} + }, + "verifySuccess": "Успешно сте верификовали!", + "@verifySuccess": { + "type": "String", + "placeholders": {} + }, + "verifyTitle": "Верификујем други налог", + "@verifyTitle": { + "type": "String", + "placeholders": {} + }, + "videoCall": "Видео позив", + "@videoCall": { + "type": "String", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "Одреди видљивост историје", + "@visibilityOfTheChatHistory": { + "type": "String", + "placeholders": {} + }, + "visibleForAllParticipants": "видљиво свим учесницима", + "@visibleForAllParticipants": { + "type": "String", + "placeholders": {} + }, + "visibleForEveryone": "видљиво свима", + "@visibleForEveryone": { + "type": "String", + "placeholders": {} + }, + "voiceMessage": "Гласовна порука", + "@voiceMessage": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "Чекам да саговорник прихвати захтев…", + "@waitingPartnerAcceptRequest": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerEmoji": "Чекам да саговорник прихвати емоџије…", + "@waitingPartnerEmoji": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerNumbers": "Чекам да саговорник прихвати бројеве…", + "@waitingPartnerNumbers": { + "type": "String", + "placeholders": {} + }, + "wallpaper": "Тапета", + "@wallpaper": { + "type": "String", + "placeholders": {} + }, + "warning": "Упозорење!", + "@warning": { + "type": "String", + "placeholders": {} + }, + "weSentYouAnEmail": "Послали смо вам е-пошту", + "@weSentYouAnEmail": { + "type": "String", + "placeholders": {} + }, + "whoCanPerformWhichAction": "ко може шта да ради", + "@whoCanPerformWhichAction": { + "type": "String", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "Ко може да се придружи групи", + "@whoIsAllowedToJoinThisGroup": { + "type": "String", + "placeholders": {} + }, + "whyDoYouWantToReportThis": "Зашто желите ово да пријавите?", + "@whyDoYouWantToReportThis": { + "type": "String", + "placeholders": {} + }, + "wipeChatBackup": "Да обришем резервну копију како би направио нови сигурносни кључ?", + "@wipeChatBackup": { + "type": "String", + "placeholders": {} + }, + "withTheseAddressesRecoveryDescription": "Са овим адресама можете опоравити своју лозинку.", + "@withTheseAddressesRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "writeAMessage": "напишите поруку…", + "@writeAMessage": { + "type": "String", + "placeholders": {} + }, + "yes": "Да", + "@yes": { + "type": "String", + "placeholders": {} + }, + "you": "Ви", + "@you": { + "type": "String", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "Више не учествујете у овом ћаскању", + "@youAreNoLongerParticipatingInThisChat": { + "type": "String", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "Забрањено вам је ово ћаскање", + "@youHaveBeenBannedFromThisChat": { + "type": "String", + "placeholders": {} + }, + "yourPublicKey": "Ваш јавни кључ", + "@yourPublicKey": { + "type": "String", + "placeholders": {} + } +} diff --git a/lib/l10n/intl_sv.arb b/lib/l10n/intl_sv.arb new file mode 100644 index 0000000..c3e78d7 --- /dev/null +++ b/lib/l10n/intl_sv.arb @@ -0,0 +1,2858 @@ +{ + "@@last_modified": "2021-08-14 12:41:09.835634", + "about": "Om", + "@about": { + "type": "String", + "placeholders": {} + }, + "accept": "Acceptera", + "@accept": { + "type": "String", + "placeholders": {} + }, + "acceptedTheInvitation": "👍 {username} accepterade inbjudan", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "account": "Konto", + "@account": { + "type": "String", + "placeholders": {} + }, + "activatedEndToEndEncryption": "🔐 {username} aktiverade ändpunktskryptering", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "admin": "Admin", + "@admin": { + "type": "String", + "placeholders": {} + }, + "alias": "alias", + "@alias": { + "type": "String", + "placeholders": {} + }, + "all": "Alla", + "@all": { + "type": "String", + "placeholders": {} + }, + "answeredTheCall": "{senderName} besvarade samtalet", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "anyoneCanJoin": "Vem som helst kan gå med", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "appLock": "App-lås", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "archive": "Arkiv", + "@archive": { + "type": "String", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "Får gästanvändare gå med", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "Är du säker?", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "areYouSureYouWantToLogout": "Är du säker på att du vill logga ut?", + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "askSSSSSign": "För att kunna signera den andra personen, vänligen ange din lösenfras eller återställningsnyckel för säker lagring.", + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "askVerificationRequest": "Acceptera denna verifikationsförfrågan från {username}?", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "badServerVersionsException": "Hemservern stöjder Spec-versionen:\n{serverVersions}\nMen denna app stödjer enbart {supportedVersions}", + "@badServerVersionsException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "banFromChat": "Bannlys från chatt", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "banned": "Bannlyst", + "@banned": { + "type": "String", + "placeholders": {} + }, + "bannedUser": "{username} bannlös {targetName}", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "blockDevice": "Blockera Enhet", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "botMessages": "Bot meddelanden", + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "cancel": "Avbryt", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "changeDeviceName": "Ändra enhetsnamn", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "changedTheChatAvatar": "{username} ändrade sin chatt-avatar", + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheChatDescriptionTo": "{username} ändrade chatt-beskrivningen till: '{description}'", + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "changedTheChatNameTo": "{username} ändrade sitt chatt-namn till: '{chatname}'", + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "changedTheChatPermissions": "{username} ändrade chatt-rättigheterna", + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheDisplaynameTo": "{username} ändrade visningsnamnet till: '{displayname}'", + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "changedTheGuestAccessRules": "{username} ändrade reglerna för gästaccess", + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheGuestAccessRulesTo": "{username} ändrade reglerna för gästaccess till: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheHistoryVisibility": "{username} ändrade historikens synlighet", + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheHistoryVisibilityTo": "{username} ändrade historikens synlighet till: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheJoinRules": "{username} ändrade anslutningsreglerna", + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheJoinRulesTo": "{username} ändrade anslutningsreglerna till {joinRules}", + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "changedTheProfileAvatar": "{username} ändrade sin avatar", + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomAliases": "{username} ändrade rummets alias", + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomInvitationLink": "{username} ändrade inbjudningslänken", + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changePassword": "Ändra lösenord", + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "changeTheHomeserver": "Ändra hemserver", + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "changeTheme": "Ändra din stil", + "@changeTheme": { + "type": "String", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "Ändra namn på gruppen", + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "channelCorruptedDecryptError": "Krypteringen har blivit korrupt", + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "chat": "Chatt", + "@chat": { + "type": "String", + "placeholders": {} + }, + "chatDetails": "Chatt-detaljer", + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "chooseAStrongPassword": "Välj ett starkt lösenord", + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "close": "Stäng", + "@close": { + "type": "String", + "placeholders": {} + }, + "compareEmojiMatch": "Vänligen jämför uttryckssymbolerna", + "@compareEmojiMatch": { + "type": "String", + "placeholders": {} + }, + "compareNumbersMatch": "Vänligen jämför siffrorna", + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "configureChat": "Konfigurera chatt", + "@configureChat": { + "type": "String", + "placeholders": {} + }, + "confirm": "Bekräfta", + "@confirm": { + "type": "String", + "placeholders": {} + }, + "connect": "Anslut", + "@connect": { + "type": "String", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "Kontakten har blivit inbjuden till gruppen", + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "containsDisplayName": "Innehåller visningsnamn", + "@containsDisplayName": { + "type": "String", + "placeholders": {} + }, + "containsUserName": "Innehåller användarnamn", + "@containsUserName": { + "type": "String", + "placeholders": {} + }, + "contentHasBeenReported": "Innehållet har rapporterats till server-admins", + "@contentHasBeenReported": { + "type": "String", + "placeholders": {} + }, + "copiedToClipboard": "Kopierat till urklipp", + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "copy": "Kopiera", + "@copy": { + "type": "String", + "placeholders": {} + }, + "couldNotDecryptMessage": "Kunde ej avkoda meddelande: {error}", + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "countParticipants": "{count} deltagare", + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "create": "Skapa", + "@create": { + "type": "String", + "placeholders": {} + }, + "createdTheChat": "💬 {username} skapade chatten", + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "currentlyActive": "För närvarande aktiv", + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "darkTheme": "Mörkt", + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "dateWithoutYear": "{day}-{month}", + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "dateWithYear": "{year}-{month}-{day}", + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "deactivateAccountWarning": "Detta kommer att avaktivera ditt konto. Det här går inte att ångra! Är du säker?", + "@deactivateAccountWarning": { + "type": "String", + "placeholders": {} + }, + "defaultPermissionLevel": "Standard behörighetsnivå", + "@defaultPermissionLevel": { + "type": "String", + "placeholders": {} + }, + "delete": "Radera", + "@delete": { + "type": "String", + "placeholders": {} + }, + "deleteAccount": "Ta bort konto", + "@deleteAccount": { + "type": "String", + "placeholders": {} + }, + "deleteMessage": "Ta bort meddelande", + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "device": "Enhet", + "@device": { + "type": "String", + "placeholders": {} + }, + "deviceId": "Enhets-ID", + "@deviceId": { + "type": "String", + "placeholders": {} + }, + "devices": "Enheter", + "@devices": { + "type": "String", + "placeholders": {} + }, + "directChats": "Direkt chatt", + "@directChats": { + "type": "String", + "placeholders": {} + }, + "displaynameHasBeenChanged": "Visningsnamn har ändrats", + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "downloadFile": "Ladda ner fil", + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "edit": "Ändra", + "@edit": { + "type": "String", + "placeholders": {} + }, + "editBlockedServers": "redigera blockerade servrar", + "@editBlockedServers": { + "type": "String", + "placeholders": {} + }, + "editDisplayname": "Ändra visningsnamn", + "@editDisplayname": { + "type": "String", + "placeholders": {} + }, + "editRoomAvatar": "redigera rumsavatar", + "@editRoomAvatar": { + "type": "String", + "placeholders": {} + }, + "emoteExists": "Dekalen existerar redan!", + "@emoteExists": { + "type": "String", + "placeholders": {} + }, + "emoteInvalid": "Ogiltig dekal-kod!", + "@emoteInvalid": { + "type": "String", + "placeholders": {} + }, + "emotePacks": "Dekalpaket för rummet", + "@emotePacks": { + "type": "String", + "placeholders": {} + }, + "emoteSettings": "Emote inställningar", + "@emoteSettings": { + "type": "String", + "placeholders": {} + }, + "emoteShortcode": "Dekal kod", + "@emoteShortcode": { + "type": "String", + "placeholders": {} + }, + "emoteWarnNeedToPick": "Du måste välja en dekal-kod och en bild!", + "@emoteWarnNeedToPick": { + "type": "String", + "placeholders": {} + }, + "emptyChat": "Tom chatt", + "@emptyChat": { + "type": "String", + "placeholders": {} + }, + "enableEmotesGlobally": "Aktivera dekal-paket globalt", + "@enableEmotesGlobally": { + "type": "String", + "placeholders": {} + }, + "enableEncryption": "Aktivera kryptering", + "@enableEncryption": { + "type": "String", + "placeholders": {} + }, + "enableEncryptionWarning": "Du kommer inte ha fortsatt möjlighet till att inaktivera krypteringen. Är du säker?", + "@enableEncryptionWarning": { + "type": "String", + "placeholders": {} + }, + "encrypted": "Krypterad", + "@encrypted": { + "type": "String", + "placeholders": {} + }, + "encryption": "Kryptering", + "@encryption": { + "type": "String", + "placeholders": {} + }, + "encryptionNotEnabled": "Kryptering är ej aktiverad", + "@encryptionNotEnabled": { + "type": "String", + "placeholders": {} + }, + "endedTheCall": "{senderName} avslutade samtalet", + "@endedTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "enterAnEmailAddress": "Ange en e-postaddress", + "@enterAnEmailAddress": { + "type": "String", + "placeholders": {} + }, + "enterYourHomeserver": "Ange din hemserver", + "@enterYourHomeserver": { + "type": "String", + "placeholders": {} + }, + "extremeOffensive": "Extremt stötande", + "@extremeOffensive": { + "type": "String", + "placeholders": {} + }, + "fileName": "Filnamn", + "@fileName": { + "type": "String", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "String", + "placeholders": {} + }, + "forward": "Framåt", + "@forward": { + "type": "String", + "placeholders": {} + }, + "fromJoining": "Från att gå med", + "@fromJoining": { + "type": "String", + "placeholders": {} + }, + "fromTheInvitation": "Från inbjudan", + "@fromTheInvitation": { + "type": "String", + "placeholders": {} + }, + "group": "Grupp", + "@group": { + "type": "String", + "placeholders": {} + }, + "groupIsPublic": "Gruppen är publik", + "@groupIsPublic": { + "type": "String", + "placeholders": {} + }, + "groups": "Grupper", + "@groups": { + "type": "String", + "placeholders": {} + }, + "groupWith": "Gruppen med {displayname}", + "@groupWith": { + "type": "String", + "placeholders": { + "displayname": { + "type": "String" + } + } + }, + "guestsAreForbidden": "Gäster är förbjudna", + "@guestsAreForbidden": { + "type": "String", + "placeholders": {} + }, + "guestsCanJoin": "Gäster kan ansluta", + "@guestsCanJoin": { + "type": "String", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "{username} har tagit tillbaka inbjudan för {targetName}", + "@hasWithdrawnTheInvitationFor": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "help": "Hjälp", + "@help": { + "type": "String", + "placeholders": {} + }, + "hideRedactedEvents": "Göm redigerade händelser", + "@hideRedactedEvents": { + "type": "String", + "placeholders": {} + }, + "hideUnknownEvents": "Göm okända händelser", + "@hideUnknownEvents": { + "type": "String", + "placeholders": {} + }, + "howOffensiveIsThisContent": "Hur stötande är detta innehåll?", + "@howOffensiveIsThisContent": { + "type": "String", + "placeholders": {} + }, + "id": "ID", + "@id": { + "type": "String", + "placeholders": {} + }, + "identity": "Identitet", + "@identity": { + "type": "String", + "placeholders": {} + }, + "ignore": "Ignorera", + "@ignore": { + "type": "String", + "placeholders": {} + }, + "ignoredUsers": "Ignorera användare", + "@ignoredUsers": { + "type": "String", + "placeholders": {} + }, + "iHaveClickedOnLink": "Jag har klickat på länken", + "@iHaveClickedOnLink": { + "type": "String", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "Felaktig lösenordsfras eller åsterställningsnyckel", + "@incorrectPassphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "inoffensive": "Oförargligt", + "@inoffensive": { + "type": "String", + "placeholders": {} + }, + "inviteContact": "Bjud in kontakt", + "@inviteContact": { + "type": "String", + "placeholders": {} + }, + "inviteContactToGroup": "Bjud in kontakt till {groupName}", + "@inviteContactToGroup": { + "type": "String", + "placeholders": { + "groupName": { + "type": "String" + } + } + }, + "invited": "Inbjuden", + "@invited": { + "type": "String", + "placeholders": {} + }, + "invitedUser": "📩 {username} bjöd in {targetName}", + "@invitedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "invitedUsersOnly": "Endast inbjudna användare", + "@invitedUsersOnly": { + "type": "String", + "placeholders": {} + }, + "inviteForMe": "Inbjudning till mig", + "@inviteForMe": { + "type": "String", + "placeholders": {} + }, + "inviteText": "{username} bjöd in dig till FluffyChat.\n1. Besök fluffychat.im och installera appen\n2. Registrera dig eller logga in\n3. Öppna inbjudningslänk:\n {link}", + "@inviteText": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "link": { + "type": "String" + } + } + }, + "isTyping": "skriver…", + "@isTyping": { + "type": "String", + "placeholders": {} + }, + "joinedTheChat": "👋 {username} anslöt till chatten", + "@joinedTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "joinRoom": "Anslut till rum", + "@joinRoom": { + "type": "String", + "placeholders": {} + }, + "kicked": "👞 {username} sparkade ut {targetName}", + "@kicked": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickedAndBanned": "🙅 {username} sparkade och bannade {targetName}", + "@kickedAndBanned": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickFromChat": "Sparka från chatt", + "@kickFromChat": { + "type": "String", + "placeholders": {} + }, + "lastActiveAgo": "Senast aktiv: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "String", + "placeholders": { + "localizedTimeShort": { + "type": "String" + } + } + }, + "leave": "Lämna", + "@leave": { + "type": "String", + "placeholders": {} + }, + "leftTheChat": "Lämnade chatten", + "@leftTheChat": { + "type": "String", + "placeholders": {} + }, + "license": "Licens", + "@license": { + "type": "String", + "placeholders": {} + }, + "lightTheme": "Ljust", + "@lightTheme": { + "type": "String", + "placeholders": {} + }, + "loadCountMoreParticipants": "Ladda {count} mer deltagare", + "@loadCountMoreParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "loadingPleaseWait": "Laddar... Var god vänta.", + "@loadingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "loadMore": "Ladda mer…", + "@loadMore": { + "type": "String", + "placeholders": {} + }, + "login": "Logga in", + "@login": { + "type": "String", + "placeholders": {} + }, + "logInTo": "Logga in till {homeserver}", + "@logInTo": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "logout": "Logga ut", + "@logout": { + "type": "String", + "placeholders": {} + }, + "memberChanges": "Medlemsändringar", + "@memberChanges": { + "type": "String", + "placeholders": {} + }, + "mention": "Nämn", + "@mention": { + "type": "String", + "placeholders": {} + }, + "messages": "Meddelanden", + "@messages": { + "type": "String", + "placeholders": {} + }, + "moderator": "Moderator", + "@moderator": { + "type": "String", + "placeholders": {} + }, + "muteChat": "Tysta chatt", + "@muteChat": { + "type": "String", + "placeholders": {} + }, + "needPantalaimonWarning": "Var medveten om att du behöver Pantalaimon för att använda ändpunktskryptering tillsvidare.", + "@needPantalaimonWarning": { + "type": "String", + "placeholders": {} + }, + "newChat": "Ny chatt", + "@newChat": { + "type": "String", + "placeholders": {} + }, + "newMessageInFluffyChat": "💬 Nya meddelanden i FluffyChat", + "@newMessageInFluffyChat": { + "type": "String", + "placeholders": {} + }, + "newVerificationRequest": "Ny verifikationsbegäran!", + "@newVerificationRequest": { + "type": "String", + "placeholders": {} + }, + "next": "Nästa", + "@next": { + "type": "String", + "placeholders": {} + }, + "no": "Nej", + "@no": { + "type": "String", + "placeholders": {} + }, + "noConnectionToTheServer": "Ingen anslutning till servern", + "@noConnectionToTheServer": { + "type": "String", + "placeholders": {} + }, + "noEmotesFound": "Hittade inga dekaler. 😕", + "@noEmotesFound": { + "type": "String", + "placeholders": {} + }, + "noGoogleServicesWarning": "De ser ut som att du inte har google-tjänster på din telefon. Det är ett bra beslut för din integritet! För att få aviseringar i FluffyChat rekommenderar vi att använda https://microg.org/ eller https://unifiedpush.org/ .", + "@noGoogleServicesWarning": { + "type": "String", + "placeholders": {} + }, + "none": "Ingen", + "@none": { + "type": "String", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "Du har inte lagt till något sätt för att återställa ditt lösenord än.", + "@noPasswordRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "noPermission": "Ingen behörighet", + "@noPermission": { + "type": "String", + "placeholders": {} + }, + "noRoomsFound": "Hittade inga rum…", + "@noRoomsFound": { + "type": "String", + "placeholders": {} + }, + "notifications": "Aviseringar", + "@notifications": { + "type": "String", + "placeholders": {} + }, + "notificationsEnabledForThisAccount": "Aviseringar är påslaget för detta konto", + "@notificationsEnabledForThisAccount": { + "type": "String", + "placeholders": {} + }, + "numUsersTyping": "{count} användare skriver…", + "@numUsersTyping": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "offensive": "Stötande", + "@offensive": { + "type": "String", + "placeholders": {} + }, + "offline": "Offline", + "@offline": { + "type": "String", + "placeholders": {} + }, + "ok": "OK", + "@ok": { + "type": "String", + "placeholders": {} + }, + "online": "Online", + "@online": { + "type": "String", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "Online Nyckel-backup är aktiverad", + "@onlineKeyBackupEnabled": { + "type": "String", + "placeholders": {} + }, + "oopsSomethingWentWrong": "Hoppsan, något gick fel…", + "@oopsSomethingWentWrong": { + "type": "String", + "placeholders": {} + }, + "openAppToReadMessages": "Öppna app för att lästa meddelanden", + "@openAppToReadMessages": { + "type": "String", + "placeholders": {} + }, + "openCamera": "Öppna kamera", + "@openCamera": { + "type": "String", + "placeholders": {} + }, + "participant": "Deltagare", + "@participant": { + "type": "String", + "placeholders": {} + }, + "passphraseOrKey": "lösenord eller återställningsnyckel", + "@passphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "password": "Lösenord", + "@password": { + "type": "String", + "placeholders": {} + }, + "passwordForgotten": "Glömt lösenord", + "@passwordForgotten": { + "type": "String", + "placeholders": {} + }, + "passwordHasBeenChanged": "Lösenordet har ändrats", + "@passwordHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "passwordRecovery": "Återställ lösenord", + "@passwordRecovery": { + "type": "String", + "placeholders": {} + }, + "pickImage": "Välj en bild", + "@pickImage": { + "type": "String", + "placeholders": {} + }, + "pin": "Nåla fast", + "@pin": { + "type": "String", + "placeholders": {} + }, + "play": "Spela {fileName}", + "@play": { + "type": "String", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "pleaseChooseAPasscode": "Ange ett lösenord", + "@pleaseChooseAPasscode": { + "type": "String", + "placeholders": {} + }, + "pleaseClickOnLink": "Klicka på länken i e-postmeddelandet för att sedan fortsätta.", + "@pleaseClickOnLink": { + "type": "String", + "placeholders": {} + }, + "pleaseEnter4Digits": "Ange 4 siffror eller lämna tom för att inaktivera app-lås.", + "@pleaseEnter4Digits": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPassword": "Ange ditt lösenord", + "@pleaseEnterYourPassword": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourUsername": "Ange ditt användarnamn", + "@pleaseEnterYourUsername": { + "type": "String", + "placeholders": {} + }, + "pleaseFollowInstructionsOnWeb": "Följ instruktionerna på hemsidan och tryck på nästa.", + "@pleaseFollowInstructionsOnWeb": { + "type": "String", + "placeholders": {} + }, + "privacy": "Integritet", + "@privacy": { + "type": "String", + "placeholders": {} + }, + "publicRooms": "Publika Rum", + "@publicRooms": { + "type": "String", + "placeholders": {} + }, + "pushRules": "Regler", + "@pushRules": { + "type": "String", + "placeholders": {} + }, + "reason": "Anledning", + "@reason": { + "type": "String", + "placeholders": {} + }, + "recording": "Spelar in", + "@recording": { + "type": "String", + "placeholders": {} + }, + "redactedAnEvent": "{username} redigerade en händelse", + "@redactedAnEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "redactMessage": "Redigera meddelande", + "@redactMessage": { + "type": "String", + "placeholders": {} + }, + "reject": "Avböj", + "@reject": { + "type": "String", + "placeholders": {} + }, + "rejectedTheInvitation": "{username} avböjde inbjudan", + "@rejectedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "rejoin": "Återanslut", + "@rejoin": { + "type": "String", + "placeholders": {} + }, + "remove": "Ta bort", + "@remove": { + "type": "String", + "placeholders": {} + }, + "removeAllOtherDevices": "Ta bort alla andra enheter", + "@removeAllOtherDevices": { + "type": "String", + "placeholders": {} + }, + "removedBy": "Bortagen av {username}", + "@removedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "removeDevice": "Ta bort enhet", + "@removeDevice": { + "type": "String", + "placeholders": {} + }, + "unbanFromChat": "Ta bort chatt-blockering", + "@unbanFromChat": { + "type": "String", + "placeholders": {} + }, + "replaceRoomWithNewerVersion": "Ersätt rum med nyare version", + "@replaceRoomWithNewerVersion": { + "type": "String", + "placeholders": {} + }, + "reply": "Svara", + "@reply": { + "type": "String", + "placeholders": {} + }, + "reportMessage": "Rapportera meddelande", + "@reportMessage": { + "type": "String", + "placeholders": {} + }, + "requestPermission": "Begär behörighet", + "@requestPermission": { + "type": "String", + "placeholders": {} + }, + "roomHasBeenUpgraded": "Rummet har blivit uppgraderat", + "@roomHasBeenUpgraded": { + "type": "String", + "placeholders": {} + }, + "search": "Sök", + "@search": { + "type": "String", + "placeholders": {} + }, + "security": "Säkerhet", + "@security": { + "type": "String", + "placeholders": {} + }, + "seenByUser": "Sedd av {username}", + "@seenByUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "send": "Skicka", + "@send": { + "type": "String", + "placeholders": {} + }, + "sendAMessage": "Skicka ett meddelande", + "@sendAMessage": { + "type": "String", + "placeholders": {} + }, + "sendAudio": "Skicka ljud", + "@sendAudio": { + "type": "String", + "placeholders": {} + }, + "sendFile": "Skicka fil", + "@sendFile": { + "type": "String", + "placeholders": {} + }, + "sendImage": "Skicka bild", + "@sendImage": { + "type": "String", + "placeholders": {} + }, + "sendMessages": "Skickade meddelanden", + "@sendMessages": { + "type": "String", + "placeholders": {} + }, + "sendOriginal": "Skicka orginal", + "@sendOriginal": { + "type": "String", + "placeholders": {} + }, + "sendVideo": "Skicka video", + "@sendVideo": { + "type": "String", + "placeholders": {} + }, + "sentAFile": "📁 {username} skickade en fil", + "@sentAFile": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAnAudio": "🎤 {username} skickade ett ljudklipp", + "@sentAnAudio": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAPicture": "🖼️ {username} skickade en bild", + "@sentAPicture": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentASticker": "😊 {username} skickade ett klistermärke", + "@sentASticker": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAVideo": "🎥 {username} skickade en video", + "@sentAVideo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentCallInformations": "{senderName} skickade samtalsinformation", + "@sentCallInformations": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "setCustomEmotes": "Ställ in anpassade dekaler", + "@setCustomEmotes": { + "type": "String", + "placeholders": {} + }, + "setInvitationLink": "Ställ in inbjudningslänk", + "@setInvitationLink": { + "type": "String", + "placeholders": {} + }, + "setPermissionsLevel": "Ställ in behörighetsnivå", + "@setPermissionsLevel": { + "type": "String", + "placeholders": {} + }, + "setStatus": "Ställ in status", + "@setStatus": { + "type": "String", + "placeholders": {} + }, + "settings": "Inställningar", + "@settings": { + "type": "String", + "placeholders": {} + }, + "share": "Dela", + "@share": { + "type": "String", + "placeholders": {} + }, + "sharedTheLocation": "{username} delade sin position", + "@sharedTheLocation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "skip": "Hoppa över", + "@skip": { + "type": "String", + "placeholders": {} + }, + "sourceCode": "Källkod", + "@sourceCode": { + "type": "String", + "placeholders": {} + }, + "startedACall": "{senderName} startade ett samtal", + "@startedACall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "status": "Status", + "@status": { + "type": "String", + "placeholders": {} + }, + "statusExampleMessage": "Hur mår du i dag?", + "@statusExampleMessage": { + "type": "String", + "placeholders": {} + }, + "submit": "Skicka in", + "@submit": { + "type": "String", + "placeholders": {} + }, + "systemTheme": "System", + "@systemTheme": { + "type": "String", + "placeholders": {} + }, + "theyDontMatch": "Dom Matchar Inte", + "@theyDontMatch": { + "type": "String", + "placeholders": {} + }, + "theyMatch": "Dom Matchar", + "@theyMatch": { + "type": "String", + "placeholders": {} + }, + "title": "FluffyChat", + "@title": { + "description": "Title for the application", + "type": "String", + "placeholders": {} + }, + "toggleFavorite": "Växla favorit", + "@toggleFavorite": { + "type": "String", + "placeholders": {} + }, + "toggleMuted": "Växla tystad", + "@toggleMuted": { + "type": "String", + "placeholders": {} + }, + "toggleUnread": "Markera läst/oläst", + "@toggleUnread": { + "type": "String", + "placeholders": {} + }, + "tooManyRequestsWarning": "För många förfrågningar. Vänligen försök senare!", + "@tooManyRequestsWarning": { + "type": "String", + "placeholders": {} + }, + "tryToSendAgain": "Försök att skicka igen", + "@tryToSendAgain": { + "type": "String", + "placeholders": {} + }, + "unavailable": "Upptagen", + "@unavailable": { + "type": "String", + "placeholders": {} + }, + "unbannedUser": "{username} avbannade {targetName}", + "@unbannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "unblockDevice": "Avblockera enhet", + "@unblockDevice": { + "type": "String", + "placeholders": {} + }, + "unknownDevice": "Okänd enhet", + "@unknownDevice": { + "type": "String", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "Okänd krypteringsalgoritm", + "@unknownEncryptionAlgorithm": { + "type": "String", + "placeholders": {} + }, + "unknownEvent": "Okänd händelse '{type}'", + "@unknownEvent": { + "type": "String", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "unmuteChat": "Slå på ljudet för chatten", + "@unmuteChat": { + "type": "String", + "placeholders": {} + }, + "unpin": "Avnåla", + "@unpin": { + "type": "String", + "placeholders": {} + }, + "unreadChats": "{unreadCount, plural, =1{en oläst chatt} other{{unreadCount} olästa chattar}}", + "@unreadChats": { + "type": "String", + "placeholders": { + "unreadCount": { + "type": "int" + } + } + }, + "userAndOthersAreTyping": "{username} och {count} andra skriver…", + "@userAndOthersAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "userAndUserAreTyping": "{username} och {username2} skriver…", + "@userAndUserAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "username2": { + "type": "String" + } + } + }, + "userIsTyping": "{username} skriver…", + "@userIsTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "userLeftTheChat": "🚪 {username} lämnade chatten", + "@userLeftTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "username": "Användarnamn", + "@username": { + "type": "String", + "placeholders": {} + }, + "userSentUnknownEvent": "{username} skickade en {type} händelse", + "@userSentUnknownEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "type": { + "type": "String" + } + } + }, + "verify": "Verifiera", + "@verify": { + "type": "String", + "placeholders": {} + }, + "verifyStart": "Starta verifiering", + "@verifyStart": { + "type": "String", + "placeholders": {} + }, + "verifySuccess": "Du har lyckats verifiera!", + "@verifySuccess": { + "type": "String", + "placeholders": {} + }, + "verifyTitle": "Verifiera andra konton", + "@verifyTitle": { + "type": "String", + "placeholders": {} + }, + "videoCall": "Videosamtal", + "@videoCall": { + "type": "String", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "Chatt-historikens synlighet", + "@visibilityOfTheChatHistory": { + "type": "String", + "placeholders": {} + }, + "visibleForAllParticipants": "Synlig för alla deltagare", + "@visibleForAllParticipants": { + "type": "String", + "placeholders": {} + }, + "visibleForEveryone": "Synlig för alla", + "@visibleForEveryone": { + "type": "String", + "placeholders": {} + }, + "voiceMessage": "Röstmeddelande", + "@voiceMessage": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "Väntar på att deltagaren accepterar begäran…", + "@waitingPartnerAcceptRequest": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerEmoji": "Väntar på att deltagaren accepterar emojien…", + "@waitingPartnerEmoji": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerNumbers": "Väntar på att deltagaren accepterar nummer…", + "@waitingPartnerNumbers": { + "type": "String", + "placeholders": {} + }, + "wallpaper": "Bakgrund:", + "@wallpaper": { + "type": "String", + "placeholders": {} + }, + "warning": "Varning!", + "@warning": { + "type": "String", + "placeholders": {} + }, + "weSentYouAnEmail": "Vi skickade dig ett e-postmeddelande", + "@weSentYouAnEmail": { + "type": "String", + "placeholders": {} + }, + "whoCanPerformWhichAction": "Vem kan utföra vilken åtgärd", + "@whoCanPerformWhichAction": { + "type": "String", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "Vilka som är tilllåtna att ansluta till denna grupp", + "@whoIsAllowedToJoinThisGroup": { + "type": "String", + "placeholders": {} + }, + "whyDoYouWantToReportThis": "Varför vill du rapportera detta?", + "@whyDoYouWantToReportThis": { + "type": "String", + "placeholders": {} + }, + "withTheseAddressesRecoveryDescription": "Med dessa addresser kan du återställa ditt lösenord.", + "@withTheseAddressesRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "writeAMessage": "Skriv ett meddelande…", + "@writeAMessage": { + "type": "String", + "placeholders": {} + }, + "yes": "Ja", + "@yes": { + "type": "String", + "placeholders": {} + }, + "you": "Du", + "@you": { + "type": "String", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "Du deltar inte längre i denna chatt", + "@youAreNoLongerParticipatingInThisChat": { + "type": "String", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "Du har blivit bannad från denna chatt", + "@youHaveBeenBannedFromThisChat": { + "type": "String", + "placeholders": {} + }, + "yourPublicKey": "Din publika nyckel", + "@yourPublicKey": { + "type": "String", + "placeholders": {} + }, + "commandHint_html": "Skicka HTML-formatted text", + "@commandHint_html": { + "type": "String", + "description": "Usage hint for the command /html" + }, + "commandHint_ban": "Bannlys användaren från detta rum", + "@commandHint_ban": { + "type": "String", + "description": "Usage hint for the command /ban" + }, + "clearArchive": "Rensa arkiv", + "@clearArchive": {}, + "chats": "Chatter", + "@chats": { + "type": "String", + "placeholders": {} + }, + "chatHasBeenAddedToThisSpace": "Chatt har lagts till i detta utrymme", + "@chatHasBeenAddedToThisSpace": {}, + "chatBackup": "Chatt backup", + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "changeYourAvatar": "Ändra din avatar", + "@changeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "cantOpenUri": "Kan inte öppna URL {uri}", + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "blocked": "Blockerad", + "@blocked": { + "type": "String", + "placeholders": {} + }, + "badServerLoginTypesException": "Hemma servern stödjer följande inloggnings typer :\n {serverVersions}\nMen denna applikation stödjer enbart:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "autoplayImages": "Automatisk spela upp animerade klistermärken och emoji", + "@autoplayImages": { + "type": "String", + "placeholder": {} + }, + "allChats": "Alla chattar", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "addToSpace": "Lägg till i utrymme", + "@addToSpace": {}, + "addEmail": "Lägg till e-post", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "commandHint_myroomavatar": "Sätt din bild för detta rum (by mxc-uri)", + "@commandHint_myroomavatar": { + "type": "String", + "description": "Usage hint for the command /myroomavatar" + }, + "commandHint_me": "Beskriv dig själv", + "@commandHint_me": { + "type": "String", + "description": "Usage hint for the command /me" + }, + "commandHint_leave": "Lämna detta rum", + "@commandHint_leave": { + "type": "String", + "description": "Usage hint for the command /leave" + }, + "commandHint_kick": "Ta bort användare från detta rum", + "@commandHint_kick": { + "type": "String", + "description": "Usage hint for the command /kick" + }, + "commandHint_join": "Gå med i rum", + "@commandHint_join": { + "type": "String", + "description": "Usage hint for the command /join" + }, + "commandHint_invite": "Bjud in användaren till detta rum", + "@commandHint_invite": { + "type": "String", + "description": "Usage hint for the command /invite" + }, + "locationPermissionDeniedNotice": "Plats åtkomst nekad. Var god godkän detta för att kunna dela din plats.", + "@locationPermissionDeniedNotice": { + "type": "String", + "placeholders": {} + }, + "locationDisabledNotice": "Platstjänster är inaktiverade. Var god aktivera dom för att kunna dela din plats.", + "@locationDisabledNotice": { + "type": "String", + "placeholders": {} + }, + "goToTheNewRoom": "Gå till det nya rummet", + "@goToTheNewRoom": { + "type": "String", + "placeholders": {} + }, + "fontSize": "Textstorlek", + "@fontSize": { + "type": "String", + "placeholders": {} + }, + "everythingReady": "Allt är klart!", + "@everythingReady": { + "type": "String", + "placeholders": {} + }, + "errorObtainingLocation": "Fel vid erhållande av plats: {error}", + "@errorObtainingLocation": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "editRoomAliases": "Redigera rum alias", + "@editRoomAliases": { + "type": "String", + "placeholders": {} + }, + "createNewSpace": "Nytt utrymme", + "@createNewSpace": { + "type": "String", + "placeholders": {} + }, + "copyToClipboard": "Kopiera till urklipp", + "@copyToClipboard": { + "type": "String", + "placeholders": {} + }, + "commandMissing": "{command} är inte ett kommando.", + "@commandMissing": { + "type": "String", + "placeholders": { + "command": { + "type": "String" + } + }, + "description": "State that {command} is not a valid /command." + }, + "commandInvalid": "Felaktigt kommando", + "@commandInvalid": { + "type": "String" + }, + "commandHint_unban": "Tillåt användare i rummet", + "@commandHint_unban": { + "type": "String", + "description": "Usage hint for the command /unban" + }, + "commandHint_send": "Skicka text", + "@commandHint_send": { + "type": "String", + "description": "Usage hint for the command /send" + }, + "commandHint_react": "Skicka svar som reaktion", + "@commandHint_react": { + "type": "String", + "description": "Usage hint for the command /react" + }, + "commandHint_plain": "Skicka oformaterad text", + "@commandHint_plain": { + "type": "String", + "description": "Usage hint for the command /plain" + }, + "commandHint_op": "Sätt användarens kraft nivå ( standard: 50)", + "@commandHint_op": { + "type": "String", + "description": "Usage hint for the command /op" + }, + "commandHint_myroomnick": "Sätt ditt användarnamn för rummet", + "@commandHint_myroomnick": { + "type": "String", + "description": "Usage hint for the command /myroomnick" + }, + "noEncryptionForPublicRooms": "Du kan endast aktivera kryptering när rummet inte längre är publikt tillgängligt.", + "@noEncryptionForPublicRooms": { + "type": "String", + "placeholders": {} + }, + "noMatrixServer": "{server1} är inte en matrix server, använd {server2} istället?", + "@noMatrixServer": { + "type": "String", + "placeholders": { + "server1": { + "type": "String" + }, + "server2": { + "type": "String" + } + } + }, + "obtainingLocation": "Erhåller plats…", + "@obtainingLocation": { + "type": "String", + "placeholders": {} + }, + "pleaseChoose": "Var god välj", + "@pleaseChoose": { + "type": "String", + "placeholders": {} + }, + "people": "Människor", + "@people": { + "type": "String", + "placeholders": {} + }, + "or": "Eller", + "@or": { + "type": "String", + "placeholders": {} + }, + "openInMaps": "Öppna i karta", + "@openInMaps": { + "type": "String", + "placeholders": {} + }, + "oopsPushError": "Oj! Tyvärr gick inte aviseringar att slå på.", + "@oopsPushError": { + "type": "String", + "placeholders": {} + }, + "synchronizingPleaseWait": "Synkroniserar… Var god vänta.", + "@synchronizingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "spaceName": "Utrymmes namn", + "@spaceName": { + "type": "String", + "placeholders": {} + }, + "spaceIsPublic": "Utrymme är publikt", + "@spaceIsPublic": { + "type": "String", + "placeholders": {} + }, + "showPassword": "Visa lösenord", + "@showPassword": { + "type": "String", + "placeholders": {} + }, + "shareLocation": "Dela plats", + "@shareLocation": { + "type": "String", + "placeholders": {} + }, + "setAsCanonicalAlias": "Sätt som primärt alias", + "@setAsCanonicalAlias": { + "type": "String", + "placeholders": {} + }, + "sendSticker": "Skicka klistermärke", + "@sendSticker": { + "type": "String", + "placeholders": {} + }, + "sendAsText": "Skicka som text", + "@sendAsText": { + "type": "String" + }, + "saveFile": "Spara fil", + "@saveFile": { + "type": "String", + "placeholders": {} + }, + "roomVersion": "Rum version", + "@roomVersion": { + "type": "String", + "placeholders": {} + }, + "removeYourAvatar": "Ta bort din avatar", + "@removeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "register": "Registrera", + "@register": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPin": "Ange din pin-kod", + "@pleaseEnterYourPin": { + "type": "String", + "placeholders": {} + }, + "wipeChatBackup": "Radera din chatt-backup för att skapa en ny återställningsnyckel?", + "@wipeChatBackup": { + "type": "String", + "placeholders": {} + }, + "verified": "Verifierad", + "@verified": { + "type": "String", + "placeholders": {} + }, + "transferFromAnotherDevice": "Överför till annan enhet", + "@transferFromAnotherDevice": { + "type": "String", + "placeholders": {} + }, + "chatBackupDescription": "Din chatt backup är skyddad av en säkerhetsnyckel. Se till att du inte förlorar den.", + "@chatBackupDescription": { + "type": "String", + "placeholders": {} + }, + "commandHint_create": "Skapa en tom grupp-chatt\nAnvänd --no-encryption för att inaktivera kryptering", + "@commandHint_create": { + "type": "String", + "description": "Usage hint for the command /create" + }, + "commandHint_discardsession": "Kasta bort sessionen", + "@commandHint_discardsession": { + "type": "String", + "description": "Usage hint for the command /discardsession" + }, + "commandHint_dm": "Starta en direkt-chatt\nAnvänd --no-encryption för att inaktivera kryptering", + "@commandHint_dm": { + "type": "String", + "description": "Usage hint for the command /dm" + }, + "homeserver": "Hemserver", + "@homeserver": {}, + "oneClientLoggedOut": "En av dina klienter har loggats ut", + "@oneClientLoggedOut": {}, + "addAccount": "Lägg till konto", + "@addAccount": {}, + "editBundlesForAccount": "Lägg till paket för detta konto", + "@editBundlesForAccount": {}, + "addToBundle": "Utöka paket", + "@addToBundle": {}, + "bundleName": "Paketnamn", + "@bundleName": {}, + "serverRequiresEmail": "Servern behöver validera din e-postadress för registrering.", + "@serverRequiresEmail": {}, + "singlesignon": "Single Sign On", + "@singlesignon": { + "type": "String", + "placeholders": {} + }, + "unverified": "Ej verifierad", + "@unverified": {}, + "messageInfo": "Meddelandeinformation", + "@messageInfo": {}, + "messageType": "Meddelandetyp", + "@messageType": {}, + "time": "Tid", + "@time": {}, + "sender": "Avsändare", + "@sender": {}, + "removeFromSpace": "Ta bort från utrymme", + "@removeFromSpace": {}, + "addToSpaceDescription": "Välj ett utrymme som chatten skall läggas till i.", + "@addToSpaceDescription": {}, + "start": "Starta", + "@start": {}, + "openGallery": "Öppna galleri", + "@openGallery": {}, + "repeatPassword": "Upprepa lösenord", + "@repeatPassword": {}, + "markAsRead": "Markera som läst", + "@markAsRead": {}, + "commandHint_clearcache": "Rensa cache", + "@commandHint_clearcache": { + "type": "String", + "description": "Usage hint for the command /clearcache" + }, + "openVideoCamera": "Aktivera kamera för video", + "@openVideoCamera": { + "type": "String", + "placeholders": {} + }, + "link": "Länk", + "@link": {}, + "publish": "Publicera", + "@publish": {}, + "videoWithSize": "Video ({size})", + "@videoWithSize": { + "type": "String", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "reportUser": "Rapportera användare", + "@reportUser": {}, + "openChat": "Öppna Chatt", + "@openChat": {}, + "sendOnEnter": "Skicka med Enter", + "@sendOnEnter": {}, + "scanQrCode": "Skanna QR-kod", + "@scanQrCode": {}, + "yourChatBackupHasBeenSetUp": "Din chatt-backup har konfigurerats.", + "@yourChatBackupHasBeenSetUp": {}, + "removeFromBundle": "Ta bort från paket", + "@removeFromBundle": {}, + "enableMultiAccounts": "(BETA) Aktivera multi-konton på denna enhet", + "@enableMultiAccounts": {}, + "emojis": "Uttryckssymboler", + "@emojis": {}, + "placeCall": "Ring", + "@placeCall": {}, + "voiceCall": "Röstsamtal", + "@voiceCall": {}, + "unsupportedAndroidVersion": "Inget stöd för denna version av Android", + "@unsupportedAndroidVersion": {}, + "videoCallsBetaWarning": "Videosamtal är för närvarande under testning. De kanske inte fungerar som det är tänkt eller på alla plattformar.", + "@videoCallsBetaWarning": {}, + "unsupportedAndroidVersionLong": "Denna funktion kräver en senare version av Android.", + "@unsupportedAndroidVersionLong": {}, + "dismiss": "Avfärda", + "@dismiss": {}, + "reactedWith": "{sender} reagerade med {reaction}", + "@reactedWith": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "reaction": { + "type": "String" + } + } + }, + "pinMessage": "Fäst i rum", + "@pinMessage": {}, + "confirmEventUnpin": "Är du säker på att händelsen inte längre skall vara fastnålad?", + "@confirmEventUnpin": {}, + "experimentalVideoCalls": "Experimentella videosamtal", + "@experimentalVideoCalls": {}, + "switchToAccount": "Byt till konto {number}", + "@switchToAccount": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "nextAccount": "Nästa konto", + "@nextAccount": {}, + "previousAccount": "Föregående konto", + "@previousAccount": {}, + "emailOrUsername": "Användarnamn eller e-postadress", + "@emailOrUsername": {}, + "addWidget": "Lägg till widget", + "@addWidget": {}, + "widgetVideo": "Video", + "@widgetVideo": {}, + "widgetEtherpad": "Anteckning", + "@widgetEtherpad": {}, + "widgetCustom": "Anpassad", + "@widgetCustom": {}, + "widgetName": "Namn", + "@widgetName": {}, + "widgetUrlError": "Detta är inte en giltig URL.", + "@widgetUrlError": {}, + "errorAddingWidget": "Ett fel uppstod när widgeten skulle läggas till.", + "@errorAddingWidget": {}, + "widgetJitsi": "Jitsi-möte", + "@widgetJitsi": {}, + "widgetNameError": "Vänligen ange ett visningsnamn.", + "@widgetNameError": {}, + "storeSecurlyOnThisDevice": "Lagra säkert på denna enhet", + "@storeSecurlyOnThisDevice": {}, + "youJoinedTheChat": "Du gick med i chatten", + "@youJoinedTheChat": {}, + "youAcceptedTheInvitation": "👍 Du accepterade inbjudan", + "@youAcceptedTheInvitation": {}, + "youKicked": "👞 Du sparkade ut {user}", + "@youKicked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "hugContent": "{senderName} kramar dig", + "@hugContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "commandHint_markasgroup": "Märk som grupp", + "@commandHint_markasgroup": {}, + "recoveryKeyLost": "Borttappad återställningsnyckel?", + "@recoveryKeyLost": {}, + "indexedDbErrorTitle": "Problem med privat läge", + "@indexedDbErrorTitle": {}, + "youHaveWithdrawnTheInvitationFor": "Du har återkallat inbjudan till {user}", + "@youHaveWithdrawnTheInvitationFor": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youUnbannedUser": "Du återkallade förbudet för {user}", + "@youUnbannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "unlockOldMessages": "Lås upp äldre meddelanden", + "@unlockOldMessages": {}, + "newSpace": "Nytt utrymme", + "@newSpace": {}, + "googlyEyesContent": "{senderName} skickar dig googly ögon", + "@googlyEyesContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "dehydrate": "Exportera sessionen och rensa enheten", + "@dehydrate": {}, + "dehydrateWarning": "Denna åtgärd kan inte ångras. Försäkra dig om att backupen är i säkert förvar.", + "@dehydrateWarning": {}, + "dehydrateTor": "TOR-användare: Exportera session", + "@dehydrateTor": {}, + "hydrateTor": "TOR-användare: Importera session från tidigare export", + "@hydrateTor": {}, + "hydrateTorLong": "Exporterade du sessionen när du senast använde TOR? Importera den enkelt och fortsätt chatta.", + "@hydrateTorLong": {}, + "recoveryKey": "Återställningsnyckel", + "@recoveryKey": {}, + "separateChatTypes": "Separata direktchattar och grupper", + "@separateChatTypes": { + "type": "String", + "placeholders": {} + }, + "startFirstChat": "Starta din första chatt", + "@startFirstChat": {}, + "pleaseEnterRecoveryKeyDescription": "Ange din återställningsnyckel från en tidigare session för att låsa upp äldre meddelanden. Din återställningsnyckel är INTE ditt lösenord.", + "@pleaseEnterRecoveryKeyDescription": {}, + "encryptThisChat": "Kryptera denna chatt", + "@encryptThisChat": {}, + "dehydrateTorLong": "TOR-användare rekommenderas att exportera sessionen innan fönstret stängs.", + "@dehydrateTorLong": {}, + "noBackupWarning": "Varning! Om du inte aktiverar säkerhetskopiering av chattar så tappar du åtkomst till krypterade meddelanden. Det är rekommenderat att du aktiverar säkerhetskopiering innan du loggar ut.", + "@noBackupWarning": {}, + "noOtherDevicesFound": "Inga andra enheter hittades", + "@noOtherDevicesFound": {}, + "disableEncryptionWarning": "Av säkerhetsskäl kan du inte stänga av kryptering i en chatt där det tidigare aktiverats.", + "@disableEncryptionWarning": {}, + "sorryThatsNotPossible": "Det där är inte möjligt", + "@sorryThatsNotPossible": {}, + "confirmMatrixId": "Bekräfta ditt Matrix-ID för att radera ditt konto.", + "@confirmMatrixId": {}, + "supposedMxid": "Detta bör vara {mxid}", + "@supposedMxid": { + "type": "String", + "placeholders": { + "mxid": { + "type": "String" + } + } + }, + "pleaseEnterRecoveryKey": "Ange din återställningsnyckel:", + "@pleaseEnterRecoveryKey": {}, + "commandHint_markasdm": "Märk som rum för direktmeddelanden för det givante Matrix ID", + "@commandHint_markasdm": {}, + "user": "Användare", + "@user": {}, + "indexedDbErrorLong": "Meddelandelagring är tyvärr inte aktiverat i privat läge som standard.\nGå till\n - about:config\n - sätt dom.indexedDB.privateBrowsing.enabled till true\nAnnars går det inte att använda FluffyChat.", + "@indexedDbErrorLong": {}, + "storeInSecureStorageDescription": "Lagra återställningsnyckeln på säker plats på denna enhet.", + "@storeInSecureStorageDescription": {}, + "storeInAppleKeyChain": "Lagra i Apples nyckelkedja (KeyChain)", + "@storeInAppleKeyChain": {}, + "foregroundServiceRunning": "Denna avisering visas när förgrundstjänsten körs.", + "@foregroundServiceRunning": {}, + "custom": "Anpassad", + "@custom": {}, + "countFiles": "{count} filer", + "@countFiles": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "screenSharingTitle": "skärmdelning", + "@screenSharingTitle": {}, + "noKeyForThisMessage": "Detta kan hända om meddelandet skickades innan du loggade in på ditt konto i den här enheten.\n\nDet kan också vara så att avsändaren har blockerat din enhet eller att något gick fel med internetanslutningen.\n\nKan du läsa meddelandet i en annan session? I sådana fall kan du överföra meddelandet från den sessionen! Gå till Inställningar > Enhet och säkerställ att dina enheter har verifierat varandra. När du öppnar rummet nästa gång och båda sessionerna är i förgrunden, så kommer nycklarna att överföras automatiskt.\n\nVill du inte förlora nycklarna vid utloggning eller när du byter enhet? Säkerställ att du har aktiverat säkerhetskopiering för chatten i inställningarna.", + "@noKeyForThisMessage": {}, + "fileIsTooBigForServer": "Servern informerar om att filen är för stor för att skickas.", + "@fileIsTooBigForServer": {}, + "deviceKeys": "Enhetsnycklar:", + "@deviceKeys": {}, + "enterSpace": "Gå till utrymme", + "@enterSpace": {}, + "commandHint_googly": "Skicka några googly ögon", + "@commandHint_googly": {}, + "commandHint_cuddle": "Skicka en omfamning", + "@commandHint_cuddle": {}, + "commandHint_hug": "Skicka en kram", + "@commandHint_hug": {}, + "users": "Användare", + "@users": {}, + "cuddleContent": "{senderName} omfamnar dig", + "@cuddleContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "hydrate": "Återställ från säkerhetskopia", + "@hydrate": {}, + "screenSharingDetail": "Du delar din skärm i FluffyChat", + "@screenSharingDetail": {}, + "youRejectedTheInvitation": "Du avvisade inbjudan", + "@youRejectedTheInvitation": {}, + "youBannedUser": "Du förbjöd {user}", + "@youBannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youInvitedBy": "📩 Du har blivit inbjuden av {user}", + "@youInvitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youInvitedUser": "📩 Du bjöd in {user}", + "@youInvitedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youKickedAndBanned": "🙅 Du sparkade ut och förbjöd {user}", + "@youKickedAndBanned": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "saveKeyManuallyDescription": "Spara nyckeln manuellt genom att aktivera dela-funktionen eller urklippshanteraren på enheten.", + "@saveKeyManuallyDescription": {}, + "storeInAndroidKeystore": "Lagra i Androids nyckellagring (KeyStore)", + "@storeInAndroidKeystore": {}, + "callingPermissions": "Samtalsbehörighet", + "@callingPermissions": {}, + "callingAccount": "Samtalskonto", + "@callingAccount": {}, + "callingAccountDetails": "Tillåt FluffyChat att använda Androids ring-app.", + "@callingAccountDetails": {}, + "appearOnTop": "Visa ovanpå", + "@appearOnTop": {}, + "appearOnTopDetails": "Tillåt att appen visas ovanpå (behövs inte om du redan har FluffyChat konfigurerat som ett samtalskonto)", + "@appearOnTopDetails": {}, + "otherCallingPermissions": "Mikrofon, kamera och andra behörigheter för FluffyChat", + "@otherCallingPermissions": {}, + "whyIsThisMessageEncrypted": "Varför kan inte detta meddelande läsas?", + "@whyIsThisMessageEncrypted": {}, + "newGroup": "Ny grupp", + "@newGroup": {}, + "enterRoom": "Gå till rummet", + "@enterRoom": {}, + "allSpaces": "Alla utrymmen", + "@allSpaces": {}, + "numChats": "{number} chattar", + "@numChats": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "hideUnimportantStateEvents": "Göm oviktiga tillståndshändelser", + "@hideUnimportantStateEvents": {}, + "doNotShowAgain": "Visa inte igen", + "@doNotShowAgain": {}, + "wasDirectChatDisplayName": "Tom chatt (var {oldDisplayName})", + "@wasDirectChatDisplayName": { + "type": "String", + "placeholders": { + "oldDisplayName": { + "type": "String" + } + } + }, + "newSpaceDescription": "Utrymmen möjliggör konsolidering av chattar och att bygga privata eller offentliga gemenskaper.", + "@newSpaceDescription": {}, + "reopenChat": "Återöppna chatt", + "@reopenChat": {}, + "jumpToLastReadMessage": "Hoppa till det senast lästa meddelandet", + "@jumpToLastReadMessage": {}, + "readUpToHere": "Läs upp till hit", + "@readUpToHere": {}, + "fileHasBeenSavedAt": "Filen har sparats i {path}", + "@fileHasBeenSavedAt": { + "type": "String", + "placeholders": { + "path": { + "type": "String" + } + } + }, + "allRooms": "Alla gruppchattar", + "@allRooms": { + "type": "String", + "placeholders": {} + }, + "reportErrorDescription": "😭 Åh nej. Något gick fel. Om du vill ian du rapportera denna bugg till utvecklarna.", + "@reportErrorDescription": {}, + "setColorTheme": "Välj färgtema:", + "@setColorTheme": {}, + "banUserDescription": "Användaren kommer bannlysas från chatten och kommer inte kunna gå med i chatten igen tills bannlysningen avslutas.", + "@banUserDescription": {}, + "removeDevicesDescription": "Du kommer att bli utloggad från den här enheten och kommer inte längre kunna få meddelanden.", + "@removeDevicesDescription": {}, + "tryAgain": "Försök igen", + "@tryAgain": {}, + "unbanUserDescription": "Användaren kommer kunna gå med i chatten igen om den försöker.", + "@unbanUserDescription": {}, + "messagesStyle": "Meddelanden:", + "@messagesStyle": {}, + "chatDescription": "Chattbeskrivning", + "@chatDescription": {}, + "pushNotificationsNotAvailable": "Aviseringar är inte tillgängligt", + "@pushNotificationsNotAvailable": {}, + "invalidServerName": "Ogiltigt servernamn", + "@invalidServerName": {}, + "chatPermissions": "Chatt-behörigheter", + "@chatPermissions": {}, + "signInWithPassword": "Logga in med lösenord", + "@signInWithPassword": {}, + "makeAdminDescription": "När du gör denna användare till administratör kommer du inte kunna ångra det eftersom de kommer ha samma behörigheter som du.", + "@makeAdminDescription": {}, + "setChatDescription": "Ändra chattens beskrivning", + "@setChatDescription": {}, + "importFromZipFile": "Importera från .zip-fil", + "@importFromZipFile": {}, + "redactedBy": "Borttaget av {username}", + "@redactedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "signInWith": "Logga in med {provider}", + "@signInWith": { + "type": "String", + "placeholders": { + "provider": { + "type": "String" + } + } + }, + "optionalRedactReason": "(Frivilligt) Anledning till att ta bort det här meddelandet…", + "@optionalRedactReason": {}, + "archiveRoomDescription": "Den här chatten kommer flyttas till arkivet. Andra användare kommer kunna se att du har lämnat chatten.", + "@archiveRoomDescription": {}, + "exportEmotePack": "Exportera Emote-pack som .zip", + "@exportEmotePack": {}, + "inviteContactToGroupQuestion": "Vill du bjuda in {contact} till chatten ”{groupName}”?", + "@inviteContactToGroupQuestion": {}, + "redactedByBecause": "Borttaget av {username} på grund av: ”{reason}”", + "@redactedByBecause": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "reason": { + "type": "String" + } + } + }, + "redactMessageDescription": "Meddelandet kommer tas bort för alla medlemmar i denna konversation. Detta kan inte ångras.", + "@redactMessageDescription": {}, + "invalidInput": "Ogiltig input!", + "@invalidInput": {}, + "report": "rapportera", + "@report": {}, + "addChatDescription": "Lägg till en chattbeskrivning…", + "@addChatDescription": {}, + "hasKnocked": "{user} har knackat", + "@hasKnocked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "openLinkInBrowser": "Öppna länk i webbläsare", + "@openLinkInBrowser": {}, + "directChat": "Direktchatt", + "@directChat": {}, + "wrongPinEntered": "Fel pin-kod inslagen! Försök igen om {seconds} sekunder…", + "@wrongPinEntered": { + "type": "String", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "sendTypingNotifications": "Skicka skrivnotifikationer", + "@sendTypingNotifications": {}, + "inviteGroupChat": "📨 Bjud in gruppchatt", + "@inviteGroupChat": {}, + "invitePrivateChat": "📨 Bjud in privat chatt", + "@invitePrivateChat": {}, + "importEmojis": "Importera emojier", + "@importEmojis": {}, + "noChatDescriptionYet": "Ingen chatt-beskrivning än.", + "@noChatDescriptionYet": {}, + "learnMore": "Lär dig mer", + "@learnMore": {}, + "notAnImage": "Inte en bildfil.", + "@notAnImage": {}, + "chatDescriptionHasBeenChanged": "Chattbeskrivningen ändrades", + "@chatDescriptionHasBeenChanged": {}, + "roomUpgradeDescription": "Chatten kommer då att återskapas med den nya rumversionen. Alla medlemmar kommer bli påminda om att de måste byta till den nya chatten. Du kan läsa mer om rumversioner på https://spec.matrix.org/latest/rooms/", + "@roomUpgradeDescription": {}, + "pleaseEnterANumber": "Vänligen ange ett nummer större än 0", + "@pleaseEnterANumber": {}, + "profileNotFound": "Användaren kunde onte hittas på servern. Kanske är det ett anslutningsproblem eller så finns inte användaren.", + "@profileNotFound": {}, + "jump": "Hoppa", + "@jump": {}, + "shareInviteLink": "Dela inbjudningslänk", + "@shareInviteLink": {}, + "emoteKeyboardNoRecents": "Nyligen använda emotes kommer dyka upp här…", + "@emoteKeyboardNoRecents": { + "type": "String", + "placeholders": {} + }, + "setTheme": "Välj tema:", + "@setTheme": {}, + "replace": "Ersätt", + "@replace": {}, + "pleaseTryAgainLaterOrChooseDifferentServer": "Vänligen försök igen eller välj en annan server.", + "@pleaseTryAgainLaterOrChooseDifferentServer": {}, + "createGroup": "Skapa grupp", + "@createGroup": {}, + "kickUserDescription": "Användaren sparkas ut ur chatten men bannlyses inte. I offentliga chattar kan användaren gå med igen när som helst.", + "@kickUserDescription": {}, + "importNow": "Importera nu", + "@importNow": {}, + "invite": "Bjud in", + "@invite": {}, + "databaseBuildErrorBody": "Kan inte bygga SQlite-databasen. Appen försöker använda den gamla databasen för nu. Vänligen rapportera problemet till utvecklarna här: {url}. Felmeddelandet är: {error}", + "@databaseBuildErrorBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "blockListDescription": "Du kan blockera användare som stör dig. Du kommer inte få några meddelanden eller rum-inbjudningar från användarna på din personliga blocklista.", + "@blockListDescription": {}, + "createGroupAndInviteUsers": "Skapa en grupp och bjud in användare", + "@createGroupAndInviteUsers": {}, + "initAppError": "Ett problem skedde när appen initierades", + "@initAppError": {}, + "thisDevice": "Denna enhet:", + "@thisDevice": {}, + "startConversation": "Starta konversation", + "@startConversation": {}, + "publicSpaces": "Offentliga utrymmen", + "@publicSpaces": {}, + "blockedUsers": "Blockerade användare", + "@blockedUsers": {}, + "passwordIsWrong": "Det angivna lösenordet är fel", + "@passwordIsWrong": {}, + "pleaseEnterYourCurrentPassword": "Vänligen skriv ditt nuvarande lösenord", + "@pleaseEnterYourCurrentPassword": {}, + "groupCanBeFoundViaSearch": "Gruppen kan hittas genom sökning", + "@groupCanBeFoundViaSearch": {}, + "publicLink": "Offentlig länk", + "@publicLink": {}, + "noUsersFoundWithQuery": "Tyvärr kunde ingen användare hittas med ”{query}”. Vänligen kontrollera om du gjort ett stavfel.", + "@noUsersFoundWithQuery": { + "type": "String", + "placeholders": { + "query": { + "type": "String" + } + } + }, + "block": "blockera", + "@block": {}, + "nothingFound": "Inget hittades…", + "@nothingFound": {}, + "yourGlobalUserIdIs": "Ditt globala användar-ID är: ", + "@yourGlobalUserIdIs": {}, + "decline": "Neka", + "@decline": {}, + "newPassword": "Nytt lösenord", + "@newPassword": {}, + "passwordsDoNotMatch": "Lösenorden passar inte", + "@passwordsDoNotMatch": {}, + "commandHint_sendraw": "Skicka rå json", + "@commandHint_sendraw": {}, + "wrongRecoveryKey": "Tyvärr verkar detta inte vara den korrekta återställningsnyckeln.", + "@wrongRecoveryKey": {}, + "subspace": "Underutrymme", + "@subspace": {}, + "select": "Ange val", + "@select": {}, + "sessionLostBody": "Din session är förlorad. Vänligen rapportera detta fel till utvecklarna här: {url}. Felmeddelandet är: {error}", + "@sessionLostBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "pleaseChooseAStrongPassword": "Vänligen välj ett starkt lösenord", + "@pleaseChooseAStrongPassword": {}, + "blockUsername": "Ignorera användarnamn", + "@blockUsername": {}, + "addChatOrSubSpace": "Lägg till chatt eller underutrymme", + "@addChatOrSubSpace": {}, + "groupName": "Gruppnamn", + "@groupName": {}, + "leaveEmptyToClearStatus": "Lämna tom för att ta bort din status.", + "@leaveEmptyToClearStatus": {}, + "joinSpace": "Gå med i utrymme", + "@joinSpace": {}, + "searchForUsers": "Sök efter @användare…", + "@searchForUsers": {}, + "restoreSessionBody": "Appen försöker nu få tillbaks din session från backupen. Vänligen rapportera detta problem till utvecklarna här: {url}. Felmeddelandet är: {error}", + "@restoreSessionBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "databaseMigrationTitle": "Databasen är optimerad", + "@databaseMigrationTitle": {}, + "searchChatsRooms": "Sök efter #chattar, @användare…", + "@searchChatsRooms": {}, + "databaseMigrationBody": "Var vänlig vänta. Detta kan ta en stund.", + "@databaseMigrationBody": {}, + "youInvitedToBy": "📩 Du har blivit inbjuden via länk till:\n{alias}", + "@youInvitedToBy": { + "placeholders": { + "alias": { + "type": "String" + } + } + }, + "sendTypingNotificationsDescription": "Andra deltagare i en diskussion kan se när du skriver.", + "@sendTypingNotificationsDescription": {}, + "formattedMessagesDescription": "Visa formaterat meddelandeinnehåll som fet stil med markdown.", + "@formattedMessagesDescription": {}, + "verifyOtherUser": "🔐 Verifiera användaren", + "@verifyOtherUser": {}, + "formattedMessages": "Formaterade meddelanden", + "@formattedMessages": {}, + "canceledKeyVerification": "{sender} avbröt nyckelverifieringen", + "@canceledKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "completedKeyVerification": "{sender} fullbordade nyckelverifieringen", + "@completedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "requestedKeyVerification": "{sender} begärde nyckelverifiering", + "@requestedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "transparent": "Transparent", + "@transparent": {}, + "startedKeyVerification": "{sender} påbörjade nyckelverifiering", + "@startedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "presenceStyle": "Närvaro:", + "@presenceStyle": { + "type": "String", + "placeholders": {} + }, + "presencesToggle": "Visa statusmeddelanden från andra användare", + "@presencesToggle": { + "type": "String", + "placeholders": {} + }, + "hidePresences": "Dölj statuslista?", + "@hidePresences": {}, + "sendReadReceipts": "Skicka läskvitton", + "@sendReadReceipts": {}, + "verifyOtherDevice": "🔐 Verifiera enhet", + "@verifyOtherDevice": {}, + "acceptedKeyVerification": "{sender} accepterade nyckelverifieringen", + "@acceptedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "incomingMessages": "Inkommande meddelanden", + "@incomingMessages": {}, + "forwardMessageTo": "Vidarebefordra meddelandet till {roomName}?", + "@forwardMessageTo": { + "type": "String", + "placeholders": { + "roomName": { + "type": "String" + } + } + }, + "verifyOtherUserDescription": "Om du verifierar en användare så kan du vara säker på vem du verkligen skriver till. 💪\n\nNär du påbörjar en verifiering så ser du och den andra användaren en popup-ruta i appen. I den rutan ser du ett antal tecken som du jämför med vad den andra användaren ser.\n\nDet bästa sättet att göra detta är att träffas fysiskt, eller genom att starta ett videosamtal. 👭", + "@verifyOtherUserDescription": {}, + "verifyOtherDeviceDescription": "När du verifierar en enhet så kan era enheter utväxla nycklar, vilket förbättrar säkerheten. 💪 När du påbörjar en verifiering så ser du en popup-ruta på båda enheterna. I den rutan ser du ett antal tecken som du jämför med det som visas på den andra enheten. Det är bäst att ha båda enheterna till hands innan du påbörjar verifieringen. 🤳", + "@verifyOtherDeviceDescription": {}, + "isReadyForKeyVerification": "{sender} är redo för nyckelverifiering", + "@isReadyForKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "sendReadReceiptsDescription": "Andra deltagare i en diskussion kan se när du läst ett meddelande.", + "@sendReadReceiptsDescription": {}, + "stickers": "Klistermärken", + "@stickers": {}, + "discover": "Upptäck", + "@discover": {} +} diff --git a/lib/l10n/intl_ta.arb b/lib/l10n/intl_ta.arb new file mode 100644 index 0000000..3484d7b --- /dev/null +++ b/lib/l10n/intl_ta.arb @@ -0,0 +1,3380 @@ +{ + "@@last_modified": "2021-08-14 12:41:09.826673", + "acceptedTheInvitation": "👍 {username} அழைப்பை ஏற்றுக்கொண்டது", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "accept": "ஏற்றுக்கொள்", + "@accept": { + "type": "String", + "placeholders": {} + }, + "about": "பற்றி", + "@about": { + "type": "String", + "placeholders": {} + }, + "sendCanceled": "அனுப்பப்பட்டது ரத்து செய்யப்பட்டது", + "@sendCanceled": {}, + "chatDetails": "அரட்டை விவரங்கள்", + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "globalChatId": "உலகளாவிய அரட்டை ஐடி", + "@globalChatId": {}, + "accessAndVisibility": "அணுகல் மற்றும் தெரிவுநிலை", + "@accessAndVisibility": {}, + "enterYourHomeserver": "உங்கள் ஓம்சர்வரை உள்ளிடவும்", + "@enterYourHomeserver": { + "type": "String", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "நிகழ்நிலை விசை காப்புப்பிரதி இயக்கப்பட்டது", + "@onlineKeyBackupEnabled": { + "type": "String", + "placeholders": {} + }, + "recoveryKey": "மீட்பு விசை", + "@recoveryKey": {}, + "setStatus": "நிலையை அமைக்கவும்", + "@setStatus": { + "type": "String", + "placeholders": {} + }, + "title": "பஞ்சுபோன்ற", + "@title": { + "description": "Title for the application", + "type": "String", + "placeholders": {} + }, + "verify": "சரிபார்க்கவும்", + "@verify": { + "type": "String", + "placeholders": {} + }, + "verifyStart": "சரிபார்ப்பைத் தொடங்கவும்", + "@verifyStart": { + "type": "String", + "placeholders": {} + }, + "unsupportedAndroidVersion": "ஆதரிக்கப்படாத ஆண்ட்ராய்டு பதிப்பு", + "@unsupportedAndroidVersion": {}, + "invitedBy": "{user} அழைத்தார்", + "@invitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "startConversation": "உரையாடலைத் தொடங்குங்கள்", + "@startConversation": {}, + "commandHint_sendraw": "மூல சாதொபொகு ஐ அனுப்புங்கள்", + "@commandHint_sendraw": {}, + "passwordIsWrong": "நீங்கள் உள்ளிட்ட கடவுச்சொல் தவறு", + "@passwordIsWrong": {}, + "publicLink": "பொது இணைப்பு", + "@publicLink": {}, + "forwardMessageTo": "செய்தியை {roomName}க்கு அனுப்பவா?", + "@forwardMessageTo": { + "type": "String", + "placeholders": { + "roomName": { + "type": "String" + } + } + }, + "completedKeyVerification": "{sender} நிறைவு செய்யப்பட்ட விசை சரிபார்ப்பு", + "@completedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "incomingMessages": "உள்வரும் செய்திகள்", + "@incomingMessages": {}, + "password": "கடவுச்சொல்", + "@password": { + "type": "String", + "placeholders": {} + }, + "emptyChat": "வெற்று அரட்டை", + "@emptyChat": { + "type": "String", + "placeholders": {} + }, + "encrypted": "குறியாக்கப்பட்டது", + "@encrypted": { + "type": "String", + "placeholders": {} + }, + "reject": "நிராகரிக்கவும்", + "@reject": { + "type": "String", + "placeholders": {} + }, + "importNow": "இப்போது இறக்குமதி செய்யுங்கள்", + "@importNow": {}, + "changedTheChatAvatar": "{username} அரட்டை அவதாரத்தை மாற்றியது", + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "widgetName": "பெயர்", + "@widgetName": {}, + "chooseAStrongPassword": "வலுவான கடவுச்சொல்லைத் தேர்வுசெய்க", + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "commandHint_me": "உங்களை விவரிக்கவும்", + "@commandHint_me": { + "type": "String", + "description": "Usage hint for the command /me" + }, + "commandHint_unban": "இந்த அறையிலிருந்து கொடுக்கப்பட்ட பயனரைத் தடுக்கிறது", + "@commandHint_unban": { + "type": "String", + "description": "Usage hint for the command /unban" + }, + "countParticipants": "{count} பங்கேற்பாளர்கள்", + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "editDisplayname": "காட்சி பெயர் திருத்து", + "@editDisplayname": { + "type": "String", + "placeholders": {} + }, + "fileName": "கோப்பு பெயர்", + "@fileName": { + "type": "String", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "{targetName} க்கான அழைப்பை {username} திரும்பப் பெற்றுள்ளார்", + "@hasWithdrawnTheInvitationFor": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "identity": "முற்றொருமை", + "@identity": { + "type": "String", + "placeholders": {} + }, + "removedBy": "{username} ஆல் அகற்றப்பட்டது", + "@removedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "requestPermission": "இசைவு கோருங்கள்", + "@requestPermission": { + "type": "String", + "placeholders": {} + }, + "user": "பயனர்", + "@user": {}, + "optionalRedactReason": "(விரும்பினால்) இந்த செய்தியை மாற்றியமைப்பதற்கான காரணம் ...", + "@optionalRedactReason": {}, + "device": "சாதனம்", + "@device": { + "type": "String", + "placeholders": {} + }, + "license": "உரிமம்", + "@license": { + "type": "String", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "குழுவிற்கு தொடர்பு அழைக்கப்பட்டுள்ளது", + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "passphraseOrKey": "கடவுச்சொல் அல்லது மீட்பு விசை", + "@passphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "widgetNameError": "காட்சி பெயரை வழங்கவும்.", + "@widgetNameError": {}, + "select": "தேர்ந்தெடு", + "@select": {}, + "compareEmojiMatch": "தயவுசெய்து ஈமோசிகளை ஒப்பிடுக", + "@compareEmojiMatch": { + "type": "String", + "placeholders": {} + }, + "dateWithoutYear": "{month}-{day}", + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "fromTheInvitation": "அழைப்பிலிருந்து", + "@fromTheInvitation": { + "type": "String", + "placeholders": {} + }, + "help": "உதவி", + "@help": { + "type": "String", + "placeholders": {} + }, + "invited": "அழைக்கப்பட்டார்", + "@invited": { + "type": "String", + "placeholders": {} + }, + "invitedUsersOnly": "பயனர்களை மட்டுமே அழைத்தது", + "@invitedUsersOnly": { + "type": "String", + "placeholders": {} + }, + "kickedAndBanned": "🙅 {username} உதைத்து {targetName} ஐத் தடை செய்தார்", + "@kickedAndBanned": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "mention": "குறிப்பு", + "@mention": { + "type": "String", + "placeholders": {} + }, + "newVerificationRequest": "புதிய சரிபார்ப்பு கோரிக்கை!", + "@newVerificationRequest": { + "type": "String", + "placeholders": {} + }, + "shareInviteLink": "இணைப்பைப் பகிரவும்", + "@shareInviteLink": {}, + "pickImage": "ஒரு படத்தைத் தேர்ந்தெடுக்கவும்", + "@pickImage": { + "type": "String", + "placeholders": {} + }, + "pin": "முள்", + "@pin": { + "type": "String", + "placeholders": {} + }, + "unavailable": "கிடைக்கவில்லை", + "@unavailable": { + "type": "String", + "placeholders": {} + }, + "voiceCall": "குரல் அழைப்பு", + "@voiceCall": {}, + "youKickedAndBanned": "🙅 நீங்கள் உதைத்து தடைசெய்துள்ளீர்கள் {user}", + "@youKickedAndBanned": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youKicked": "👞 {user}ஐ உதைத்துள்ளீர்கள்", + "@youKicked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "storeInAppleKeyChain": "ஆப்பிள் கீச்சினில் சேமிக்கவும்", + "@storeInAppleKeyChain": {}, + "searchForUsers": "@Users ஐத் தேடுங்கள் ...", + "@searchForUsers": {}, + "pleaseEnterYourCurrentPassword": "உங்கள் தற்போதைய கடவுச்சொல்லை உள்ளிடவும்", + "@pleaseEnterYourCurrentPassword": {}, + "anyoneCanJoin": "யார் வேண்டுமானாலும் சேரலாம்", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "archive": "காப்பகம்", + "@archive": { + "type": "String", + "placeholders": {} + }, + "banFromChat": "அரட்டையிலிருந்து தடை", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "cancel": "ரத்துசெய்", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "edit": "தொகு", + "@edit": { + "type": "String", + "placeholders": {} + }, + "iHaveClickedOnLink": "நான் இணைப்பைக் சொடுக்கு செய்துள்ளேன்", + "@iHaveClickedOnLink": { + "type": "String", + "placeholders": {} + }, + "pleaseClickOnLink": "மின்னஞ்சலில் உள்ள இணைப்பைக் சொடுக்கு செய்து தொடரவும்.", + "@pleaseClickOnLink": { + "type": "String", + "placeholders": {} + }, + "changeTheme": "உங்கள் பாணியை மாற்றவும்", + "@changeTheme": { + "type": "String", + "placeholders": {} + }, + "fontSize": "எழுத்துரு அளவு", + "@fontSize": { + "type": "String", + "placeholders": {} + }, + "cantOpenUri": "யூரி {uri} வேலை ஐ திறக்க முடியாது", + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "repeatPassword": "கடவுச்சொல்லை மீண்டும் செய்யவும்", + "@repeatPassword": {}, + "youRejectedTheInvitation": "நீங்கள் அழைப்பை நிராகரித்தீர்கள்", + "@youRejectedTheInvitation": {}, + "confirmMatrixId": "உங்கள் கணக்கை நீக்க உங்கள் மேட்ரிக்ச் ஐடியை உறுதிப்படுத்தவும்.", + "@confirmMatrixId": {}, + "supposedMxid": "இது {mxid} be ஆக இருக்க வேண்டும்", + "@supposedMxid": { + "type": "String", + "placeholders": { + "mxid": { + "type": "String" + } + } + }, + "commandHint_googly": "சில கூகிள் கண்களை அனுப்பவும்", + "@commandHint_googly": {}, + "commandHint_cuddle": "ஒரு கசப்பு அனுப்பவும்", + "@commandHint_cuddle": {}, + "startFirstChat": "உங்கள் முதல் அரட்டையைத் தொடங்கவும்", + "@startFirstChat": {}, + "importEmojis": "ஈமோசிகளை இறக்குமதி செய்யுங்கள்", + "@importEmojis": {}, + "exportEmotePack": "எமோட் பேக் .zip என ஏற்றுமதி செய்யுங்கள்", + "@exportEmotePack": {}, + "replace": "மாற்றவும்", + "@replace": {}, + "tryAgain": "மீண்டும் முயற்சிக்கவும்", + "@tryAgain": {}, + "pushNotificationsNotAvailable": "புச் அறிவிப்புகள் கிடைக்கவில்லை", + "@pushNotificationsNotAvailable": {}, + "blockUsername": "பயனர்பெயரை புறக்கணிக்கவும்", + "@blockUsername": {}, + "start": "தொடங்கு", + "@start": {}, + "chatBackup": "அரட்டை காப்புப்பிரதி", + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "send": "அனுப்பு", + "@send": { + "type": "String", + "placeholders": {} + }, + "theyDontMatch": "அவர்கள் பொருந்தவில்லை", + "@theyDontMatch": { + "type": "String", + "placeholders": {} + }, + "sendMessages": "செய்திகளை அனுப்பவும்", + "@sendMessages": { + "type": "String", + "placeholders": {} + }, + "fluffychat": "பஞ்சுபோன்ற", + "@fluffychat": { + "type": "String", + "placeholders": {} + }, + "downloadFile": "கோப்பைப் பதிவிறக்கவும்", + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "createNewSpace": "புதிய இடம்", + "@createNewSpace": { + "type": "String", + "placeholders": {} + }, + "synchronizingPleaseWait": "ஒத்திசைத்தல்… தயவுசெய்து காத்திருங்கள்.", + "@synchronizingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "அறியப்படாத குறியாக்க வழிமுறை", + "@unknownEncryptionAlgorithm": { + "type": "String", + "placeholders": {} + }, + "unverified": "சரிபார்க்கப்படாதது", + "@unverified": {}, + "unmuteChat": "மாறுதல் அரட்டை", + "@unmuteChat": { + "type": "String", + "placeholders": {} + }, + "unreadChats": "{unreadCount, plural, =1{1 unread chat} other{{unreadCount} unread chats}}", + "@unreadChats": { + "type": "String", + "placeholders": { + "unreadCount": { + "type": "int" + } + } + }, + "verifyTitle": "பிற கணக்கை சரிபார்க்கிறது", + "@verifyTitle": { + "type": "String", + "placeholders": {} + }, + "videoCall": "வீடியோ அழைப்பு", + "@videoCall": { + "type": "String", + "placeholders": {} + }, + "visibleForAllParticipants": "பங்கேற்பாளர்கள் அனைவருக்கும் தெரியும்", + "@visibleForAllParticipants": { + "type": "String", + "placeholders": {} + }, + "voiceMessage": "குரல் செய்தி", + "@voiceMessage": { + "type": "String", + "placeholders": {} + }, + "reopenChat": "அரட்டையை மீண்டும் திறக்கவும்", + "@reopenChat": {}, + "formattedMessages": "வடிவமைக்கப்பட்ட செய்திகள்", + "@formattedMessages": {}, + "darkTheme": "இருண்ட", + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "guestsAreForbidden": "விருந்தினர்கள் தடைசெய்யப்பட்டுள்ளனர்", + "@guestsAreForbidden": { + "type": "String", + "placeholders": {} + }, + "guestsCanJoin": "விருந்தினர்கள் சேரலாம்", + "@guestsCanJoin": { + "type": "String", + "placeholders": {} + }, + "widgetUrlError": "இது சரியான முகவரி அல்ல.", + "@widgetUrlError": {}, + "commandHint_invite": "கொடுக்கப்பட்ட பயனரை இந்த அறைக்கு அழைக்கவும்", + "@commandHint_invite": { + "type": "String", + "description": "Usage hint for the command /invite" + }, + "commandHint_op": "கொடுக்கப்பட்ட பயனரின் ஆற்றல் மட்டத்தை அமைக்கவும் (இயல்புநிலை: 50)", + "@commandHint_op": { + "type": "String", + "description": "Usage hint for the command /op" + }, + "commandHint_plain": "வடிவமைக்கப்படாத உரையை அனுப்பவும்", + "@commandHint_plain": { + "type": "String", + "description": "Usage hint for the command /plain" + }, + "commandMissing": "{command} என்பது கட்டளை அல்ல.", + "@commandMissing": { + "type": "String", + "placeholders": { + "command": { + "type": "String" + } + }, + "description": "State that {command} is not a valid /command." + }, + "inviteForMe": "எனக்கு அழைக்கவும்", + "@inviteForMe": { + "type": "String", + "placeholders": {} + }, + "moderator": "மதிப்பீட்டாளர்", + "@moderator": { + "type": "String", + "placeholders": {} + }, + "shareLocation": "இருப்பிடத்தைப் பகிரவும்", + "@shareLocation": { + "type": "String", + "placeholders": {} + }, + "addEmail": "மின்னஞ்சல் சேர்க்கவும்", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "all": "அனைத்தும்", + "@all": { + "type": "String", + "placeholders": {} + }, + "lightTheme": "ஒளி", + "@lightTheme": { + "type": "String", + "placeholders": {} + }, + "allChats": "அனைத்து அரட்டைகளும்", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "sendOnEnter": "Enter ஐ அனுப்பவும்", + "@sendOnEnter": {}, + "pleaseEnterRecoveryKey": "உங்கள் மீட்பு விசையை உள்ளிடவும்:", + "@pleaseEnterRecoveryKey": {}, + "dehydrate": "ஏற்றுமதி அமர்வு மற்றும் சாதனத்தை துடைக்கவும்", + "@dehydrate": {}, + "ok": "சரி", + "@ok": { + "type": "String", + "placeholders": {} + }, + "configureChat": "அரட்டையை உள்ளமைக்கவும்", + "@configureChat": { + "type": "String", + "placeholders": {} + }, + "deviceId": "சாதன ஐடி", + "@deviceId": { + "type": "String", + "placeholders": {} + }, + "isTyping": "தட்டச்சு செய்கிறது…", + "@isTyping": { + "type": "String", + "placeholders": {} + }, + "joinedTheChat": "👋 {username} அரட்டையில் சேர்ந்தார்", + "@joinedTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "noConnectionToTheServer": "சேவையகத்துடன் எந்த தொடர்பும் இல்லை", + "@noConnectionToTheServer": { + "type": "String", + "placeholders": {} + }, + "noEmotesFound": "உணர்ச்சிகள் எதுவும் காணப்படவில்லை. 😕", + "@noEmotesFound": { + "type": "String", + "placeholders": {} + }, + "notifications": "அறிவிப்புகள்", + "@notifications": { + "type": "String", + "placeholders": {} + }, + "oopsPushError": "அச்சச்சோ! துரதிர்ச்டவசமாக, புச் அறிவிப்புகளை அமைக்கும் போது பிழை ஏற்பட்டது.", + "@oopsPushError": { + "type": "String", + "placeholders": {} + }, + "oopsSomethingWentWrong": "அச்சச்சோ, ஏதோ தவறு நடந்தது…", + "@oopsSomethingWentWrong": { + "type": "String", + "placeholders": {} + }, + "bundleName": "மூட்டை பெயர்", + "@bundleName": {}, + "enableMultiAccounts": "(பீட்டா) இந்த சாதனத்தில் பல கணக்குகளை இயக்கவும்", + "@enableMultiAccounts": {}, + "remove": "அகற்று", + "@remove": { + "type": "String", + "placeholders": {} + }, + "recoveryKeyLost": "மீட்பு விசை இழந்ததா?", + "@recoveryKeyLost": {}, + "sendAMessage": "ஒரு செய்தியை அனுப்பவும்", + "@sendAMessage": { + "type": "String", + "placeholders": {} + }, + "spaceIsPublic": "இடம் பொது", + "@spaceIsPublic": { + "type": "String", + "placeholders": {} + }, + "transferFromAnotherDevice": "மற்றொரு சாதனத்திலிருந்து மாற்றவும்", + "@transferFromAnotherDevice": { + "type": "String", + "placeholders": {} + }, + "visibleForEveryone": "அனைவருக்கும் தெரியும்", + "@visibleForEveryone": { + "type": "String", + "placeholders": {} + }, + "weSentYouAnEmail": "நாங்கள் உங்களுக்கு ஒரு மின்னஞ்சல் அனுப்பினோம்", + "@weSentYouAnEmail": { + "type": "String", + "placeholders": {} + }, + "enterRoom": "அறையை உள்ளிடவும்", + "@enterRoom": {}, + "report": "அறிக்கை", + "@report": {}, + "verifyOtherDevice": "Sevice பிற சாதனத்தை சரிபார்க்கவும்", + "@verifyOtherDevice": {}, + "startedACall": "{senderName} அழைப்பைத் தொடங்கினார்", + "@startedACall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "toggleFavorite": "பிடித்ததை மாற்றவும்", + "@toggleFavorite": { + "type": "String", + "placeholders": {} + }, + "userSentUnknownEvent": "{username} ஒரு {type} நிகழ்வை அனுப்பியது", + "@userSentUnknownEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "type": { + "type": "String" + } + } + }, + "verified": "சரிபார்க்கப்பட்டது", + "@verified": { + "type": "String", + "placeholders": {} + }, + "verifySuccess": "நீங்கள் வெற்றிகரமாக சரிபார்த்தீர்கள்!", + "@verifySuccess": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerNumbers": "பங்குதாரர் எண்களை ஏற்றுக்கொள்வதற்காக காத்திருக்கிறார்…", + "@waitingPartnerNumbers": { + "type": "String", + "placeholders": {} + }, + "warning": "எச்சரிக்கை!", + "@warning": { + "type": "String", + "placeholders": {} + }, + "pinMessage": "அறைக்கு முள்", + "@pinMessage": {}, + "addWidget": "விட்செட்டைச் சேர்க்கவும்", + "@addWidget": {}, + "widgetEtherpad": "உரை குறிப்பு", + "@widgetEtherpad": {}, + "widgetCustom": "தனிப்பயன்", + "@widgetCustom": {}, + "unlockOldMessages": "பழைய செய்திகளைத் திறக்கவும்", + "@unlockOldMessages": {}, + "appearOnTop": "மேலே தோன்றும்", + "@appearOnTop": {}, + "serverLimitReached": "சேவையக வரம்பு அடைந்தது! {seconds} விநாடிகள் காத்திருக்கிறது ...", + "@serverLimitReached": { + "type": "integer", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "acceptedKeyVerification": "{sender} ஏற்றுக்கொள்ளப்பட்ட விசை சரிபார்ப்பு", + "@acceptedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "copyToClipboard": "இடைநிலைப்பலகைக்கு நகலெடுக்கவும்", + "@copyToClipboard": { + "type": "String", + "placeholders": {} + }, + "createGroup": "குழுவை உருவாக்கவும்", + "@createGroup": {}, + "editBundlesForAccount": "இந்த கணக்கிற்கான மூட்டைகளைத் திருத்தவும்", + "@editBundlesForAccount": {}, + "seenByUser": "{username} ஆல் பார்த்தது", + "@seenByUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "unpin": "மூள்நீக்கு", + "@unpin": { + "type": "String", + "placeholders": {} + }, + "emojis": "ஈமோசிகள்", + "@emojis": {}, + "indexedDbErrorTitle": "தனியார் பயன்முறை சிக்கல்கள்", + "@indexedDbErrorTitle": {}, + "jumpToLastReadMessage": "கடைசி வாசிப்பு செய்திக்கு செல்லவும்", + "@jumpToLastReadMessage": {}, + "commandHint_markasgroup": "குழுவாக குறி", + "@commandHint_markasgroup": {}, + "commandHint_html": "உஉகுமொ வடிவமைக்கப்பட்ட உரையை அனுப்பவும்", + "@commandHint_html": { + "type": "String", + "description": "Usage hint for the command /html" + }, + "commandHint_kick": "இந்த அறையிலிருந்து கொடுக்கப்பட்ட பயனரை அகற்றவும்", + "@commandHint_kick": { + "type": "String", + "description": "Usage hint for the command /kick" + }, + "deleteMessage": "செய்தியை நீக்கு", + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "messageInfo": "செய்தி தகவல்", + "@messageInfo": {}, + "sentAFile": "📁 {username} கோப்பை அனுப்பியுள்ளார்", + "@sentAFile": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "videoWithSize": "வீடியோ ({size})", + "@videoWithSize": { + "type": "String", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "readUpToHere": "இங்கே படிக்கவும்", + "@readUpToHere": {}, + "chatDescriptionHasBeenChanged": "அரட்டை விளக்கம் மாற்றப்பட்டது", + "@chatDescriptionHasBeenChanged": {}, + "reportMessage": "செய்தி அறிக்கை", + "@reportMessage": { + "type": "String", + "placeholders": {} + }, + "kickFromChat": "அரட்டையிலிருந்து கிக்", + "@kickFromChat": { + "type": "String", + "placeholders": {} + }, + "widgetVideo": "ஒளிதோற்றம்", + "@widgetVideo": {}, + "redactedAnEvent": "{username} ஒரு நிகழ்வை மறுவடிவமைத்தது", + "@redactedAnEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "opacity": "ஒளிபுகாநிலை:", + "@opacity": {}, + "blur": "மங்கலானது:", + "@blur": {}, + "setWallpaper": "வால்பேப்பரை அமைக்கவும்", + "@setWallpaper": {}, + "statusExampleMessage": "இன்று நீங்கள் எப்படி இருக்கிறீர்கள்?", + "@statusExampleMessage": { + "type": "String", + "placeholders": {} + }, + "toggleUnread": "மார்க் படிக்க/படிக்கவில்லை", + "@toggleUnread": { + "type": "String", + "placeholders": {} + }, + "tooManyRequestsWarning": "பல கோரிக்கைகள். தயவுசெய்து பின்னர் மீண்டும் முயற்சிக்கவும்!", + "@tooManyRequestsWarning": { + "type": "String", + "placeholders": {} + }, + "unblockDevice": "சாதனத்தைத் தடைசெய்க", + "@unblockDevice": { + "type": "String", + "placeholders": {} + }, + "unknownDevice": "தெரியாத சாதனம்", + "@unknownDevice": { + "type": "String", + "placeholders": {} + }, + "addToSpaceDescription": "இந்த அரட்டையைச் சேர்க்க ஒரு இடத்தைத் தேர்ந்தெடுக்கவும்.", + "@addToSpaceDescription": {}, + "errorAddingWidget": "விட்செட்டைச் சேர்ப்பதில் பிழை.", + "@errorAddingWidget": {}, + "youInvitedToBy": "In இணைப்பு வழியாக நீங்கள் அழைக்கப்பட்டுள்ளீர்கள்:\n {alias}", + "@youInvitedToBy": { + "placeholders": { + "alias": { + "type": "String" + } + } + }, + "storeSecurlyOnThisDevice": "இந்த சாதனத்தில் பாதுகாப்பாக சேமிக்கவும்", + "@storeSecurlyOnThisDevice": {}, + "screenSharingTitle": "திரை பகிர்வு", + "@screenSharingTitle": {}, + "appearOnTopDetails": "பயன்பாடு மேலே தோன்ற அனுமதிக்கிறது (நீங்கள் ஏற்கனவே ஒரு அழைப்பு கணக்காக பஞ்சுபோன்ற அமைப்பைக் கொண்டிருந்தால் தேவையில்லை)", + "@appearOnTopDetails": {}, + "newGroup": "புதிய குழு", + "@newGroup": {}, + "noOtherDevicesFound": "வேறு சாதனங்கள் எதுவும் கிடைக்கவில்லை", + "@noOtherDevicesFound": {}, + "sendRoomNotifications": "ஒரு @ROOM அறிவிப்புகளை அனுப்பவும்", + "@sendRoomNotifications": {}, + "generatingVideoThumbnail": "வீடியோ சிறு உருவத்தை உருவாக்குதல் ...", + "@generatingVideoThumbnail": {}, + "reply": "பதில்", + "@reply": { + "type": "String", + "placeholders": {} + }, + "askSSSSSign": "மற்ற நபரில் கையெழுத்திட, தயவுசெய்து உங்கள் பாதுகாப்பான கடை பாச்ஃபிரேச் அல்லது மீட்பு விசையை உள்ளிடவும்.", + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "விருந்தினர் பயனர்கள் சேர அனுமதிக்கப்படுகிறார்களா", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "areYouSureYouWantToLogout": "நீங்கள் நிச்சயமாக வெளியேற விரும்புகிறீர்களா?", + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "aboutHomeserver": "{homeserver} பற்றி", + "@aboutHomeserver": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "swipeRightToLeftToReply": "பதிலளிக்க வலமிருந்து இடமாக ச்வைப் செய்யவும்", + "@swipeRightToLeftToReply": {}, + "unread": "படிக்காதது", + "@unread": {}, + "changedTheChatDescriptionTo": "{username} பயனர்பெயர் the அரட்டை விளக்கத்தை மாற்றியது: '{description}'", + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "deleteAccount": "கணக்கை நீக்கு", + "@deleteAccount": { + "type": "String", + "placeholders": {} + }, + "deviceKeys": "சாதன விசைகள்:", + "@deviceKeys": {}, + "noUsersFoundWithQuery": "துரதிர்ச்டவசமாக \"{query}\" உடன் எந்த பயனரையும் காண முடியவில்லை. நீங்கள் ஒரு எழுத்துப்பிழை செய்தீர்களா என்பதை சரிபார்க்கவும்.", + "@noUsersFoundWithQuery": { + "type": "String", + "placeholders": { + "query": { + "type": "String" + } + } + }, + "jump": "தாவு", + "@jump": {}, + "yourGlobalUserIdIs": "உங்கள் உலகளாவிய பயனர் ஐடி: ", + "@yourGlobalUserIdIs": {}, + "publicSpaces": "பொது இடங்கள்", + "@publicSpaces": {}, + "discover": "கண்டுபிடி", + "@discover": {}, + "commandHint_unignore": "கொடுக்கப்பட்ட மேட்ரிக்ச் ஐடியை இணைக்கவும்", + "@commandHint_unignore": {}, + "prepareSendingAttachment": "அனுப்பும் இணைப்பைத் தயாரிக்கவும் ...", + "@prepareSendingAttachment": {}, + "sendingAttachment": "இணைப்பை அனுப்புகிறது ...", + "@sendingAttachment": {}, + "continueText": "தொடரவும்", + "@continueText": {}, + "welcomeText": "ஏய் ஏய் 👋 இது பஞ்சுபோன்றது. Https://matrix.org உடன் இணக்கமான எந்த ஓம்சர்வரில் நீங்கள் உள்நுழையலாம். பின்னர் யாருடனும் அரட்டையடிக்கவும். இது ஒரு பெரிய பரவலாக்கப்பட்ட செய்தியிடல் நெட்வொர்க்!", + "@welcomeText": {}, + "name": "பெயர்", + "@name": {}, + "username": "பயனர்பெயர்", + "@username": { + "type": "String", + "placeholders": {} + }, + "whoCanPerformWhichAction": "எந்த செயலைச் செய்ய முடியும்", + "@whoCanPerformWhichAction": { + "type": "String", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "இந்த குழுவில் சேர யார் அனுமதிக்கப்படுகிறார்கள்", + "@whoIsAllowedToJoinThisGroup": { + "type": "String", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "இந்த அரட்டையில் நீங்கள் இனி பங்கேற்கவில்லை", + "@youAreNoLongerParticipatingInThisChat": { + "type": "String", + "placeholders": {} + }, + "yourPublicKey": "உங்கள் பொது விசை", + "@yourPublicKey": { + "type": "String", + "placeholders": {} + }, + "time": "நேரம்", + "@time": {}, + "publish": "வெளியிடுங்கள்", + "@publish": {}, + "openChat": "திறந்த அரட்டை", + "@openChat": {}, + "markAsRead": "படித்தபடி குறி", + "@markAsRead": {}, + "reportUser": "பயனர் புகாரளிக்கவும்", + "@reportUser": {}, + "dismiss": "தள்ளுபடி", + "@dismiss": {}, + "reactedWith": "{sender} {reaction} உடன் பதிலளித்தார்", + "@reactedWith": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "reaction": { + "type": "String" + } + } + }, + "placeCall": "அழைப்பு இடு", + "@placeCall": {}, + "videoCallsBetaWarning": "வீடியோ அழைப்புகள் தற்போது பீட்டாவில் உள்ளன என்பதை நினைவில் கொள்க. அவர்கள் எதிர்பார்த்தபடி வேலை செய்யக்கூடாது அல்லது எல்லா தளங்களிலும் வேலை செய்யக்கூடாது.", + "@videoCallsBetaWarning": {}, + "experimentalVideoCalls": "சோதனை வீடியோ அழைப்புகள்", + "@experimentalVideoCalls": {}, + "emailOrUsername": "மின்னஞ்சல் அல்லது பயனர்பெயர்", + "@emailOrUsername": {}, + "previousAccount": "முந்தைய கணக்கு", + "@previousAccount": {}, + "noOneCanJoin": "யாரும் சேர முடியாது", + "@noOneCanJoin": {}, + "userWouldLikeToChangeTheChat": "{user} அரட்டையில் சேர விரும்புகிறார்.", + "@userWouldLikeToChangeTheChat": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "newSpace": "புதிய இடம்", + "@newSpace": {}, + "enterSpace": "இடத்தை உள்ளிடவும்", + "@enterSpace": {}, + "wasDirectChatDisplayName": "வெற்று அரட்டை ({oldDisplayName})", + "@wasDirectChatDisplayName": { + "type": "String", + "placeholders": { + "oldDisplayName": { + "type": "String" + } + } + }, + "openLinkInBrowser": "உலாவியில் திறந்த இணைப்பை திறக்கவும்", + "@openLinkInBrowser": {}, + "reportErrorDescription": "😭 ஓ இல்லை. ஏதோ தவறு நடந்தது. நீங்கள் விரும்பினால், இந்த பிழையை டெவலப்பர்களிடம் புகாரளிக்கலாம்.", + "@reportErrorDescription": {}, + "setTheme": "கருப்பொருள் அமைக்கவும்:", + "@setTheme": {}, + "invite": "அழைக்கவும்", + "@invite": {}, + "wrongPinEntered": "தவறான முள் நுழைந்தது! {seconds} விநாடிகளில் மீண்டும் முயற்சிக்கவும் ...", + "@wrongPinEntered": { + "type": "String", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "pleaseEnterANumber": "தயவுசெய்து 0 ஐ விட அதிகமான எண்ணை உள்ளிடவும்", + "@pleaseEnterANumber": {}, + "kickUserDescription": "பயனர் அரட்டையிலிருந்து வெளியேற்றப்படுகிறார், ஆனால் தடை செய்யப்படவில்லை. பொது அரட்டைகளில், பயனர் எந்த நேரத்திலும் மீண்டும் சேரலாம்.", + "@kickUserDescription": {}, + "learnMore": "மேலும் அறிக", + "@learnMore": {}, + "chatCanBeDiscoveredViaSearchOnServer": "{server}", + "@chatCanBeDiscoveredViaSearchOnServer": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "knockRestricted": "நாக் தடை", + "@knockRestricted": {}, + "bannedUser": "{username} தடைசெய்யப்பட்ட {targetName}", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "blockDevice": "தொகுதி சாதனம்", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "blocked": "தடுக்கப்பட்டது", + "@blocked": { + "type": "String", + "placeholders": {} + }, + "changeDeviceName": "சாதனத்தின் பெயரை மாற்றவும்", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "changedTheDisplaynameTo": "{username} அவற்றின் காட்சி பெயர்: '{displayname}'", + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "changedTheGuestAccessRules": "{username} விருந்தினர் அணுகல் விதிகளை மாற்றியது", + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheProfileAvatar": "{username} அவர்களின் அவதாரத்தை மாற்றியது", + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomAliases": "{username} அறை மாற்றுப்பெயர்களை மாற்றியது", + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changeTheNameOfTheGroup": "குழுவின் பெயரை மாற்றவும்", + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "chats": "அரட்டைகள்", + "@chats": { + "type": "String", + "placeholders": {} + }, + "clearArchive": "தெளிவான காப்பகம்", + "@clearArchive": {}, + "close": "மூடு", + "@close": { + "type": "String", + "placeholders": {} + }, + "commandHint_create": "வெற்று குழு அரட்டையை உருவாக்கவும்\n குறியாக்கத்தை முடக்க-இல்லை-குறியாக்கத்தைப் பயன்படுத்தவும்", + "@commandHint_create": { + "type": "String", + "description": "Usage hint for the command /create" + }, + "compareNumbersMatch": "எண்களை ஒப்பிடுக", + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "connect": "இணை", + "@connect": { + "type": "String", + "placeholders": {} + }, + "containsUserName": "பயனர்பெயர் உள்ளது", + "@containsUserName": { + "type": "String", + "placeholders": {} + }, + "copiedToClipboard": "இடைநிலைப்பலகைக்கு நகலெடுக்கப்பட்டது", + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "copy": "நகலெடு", + "@copy": { + "type": "String", + "placeholders": {} + }, + "couldNotDecryptMessage": "செய்தியை மறைகுறியாக்க முடியவில்லை: {error}", + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "create": "உருவாக்கு", + "@create": { + "type": "String", + "placeholders": {} + }, + "chatPermissions": "அரட்டை அனுமதிகள்", + "@chatPermissions": {}, + "editRoomAliases": "அறை மாற்றுப்பெயர்களைத் திருத்து", + "@editRoomAliases": { + "type": "String", + "placeholders": {} + }, + "editRoomAvatar": "அறை அவதார் திருத்து", + "@editRoomAvatar": { + "type": "String", + "placeholders": {} + }, + "forward": "முன்னோக்கி", + "@forward": { + "type": "String", + "placeholders": {} + }, + "fromJoining": "சேருவதிலிருந்து", + "@fromJoining": { + "type": "String", + "placeholders": {} + }, + "groupWith": "{displayname} உடன் குழு", + "@groupWith": { + "type": "String", + "placeholders": { + "displayname": { + "type": "String" + } + } + }, + "hideRedactedMessages": "சரிசெய்யப்பட்ட செய்திகளை மறைக்கவும்", + "@hideRedactedMessages": {}, + "hideRedactedMessagesBody": "யாராவது ஒரு செய்தியை மாற்றியமைத்தால், இந்த செய்தி இனி அரட்டையில் காணப்படாது.", + "@hideRedactedMessagesBody": {}, + "howOffensiveIsThisContent": "இந்த உள்ளடக்கம் எவ்வளவு ஆபத்தானது?", + "@howOffensiveIsThisContent": { + "type": "String", + "placeholders": {} + }, + "inoffensive": "செயலற்றது", + "@inoffensive": { + "type": "String", + "placeholders": {} + }, + "inviteContact": "தொடர்பை அழைக்கவும்", + "@inviteContact": { + "type": "String", + "placeholders": {} + }, + "kicked": "👞 {username} {targetName} ஐ உதைத்தார்", + "@kicked": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "lastActiveAgo": "கடைசியாக செயலில்: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "String", + "placeholders": { + "localizedTimeShort": { + "type": "String" + } + } + }, + "leftTheChat": "அரட்டையை விட்டு வெளியேறினார்", + "@leftTheChat": { + "type": "String", + "placeholders": {} + }, + "loadCountMoreParticipants": "ஏற்றவும் {count} மேலும் பங்கேற்பாளர்கள்", + "@loadCountMoreParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "dehydrateWarning": "இந்த செயலை செயல்தவிர்க்க முடியாது. காப்புப்பிரதி கோப்பை பாதுகாப்பாக சேமித்து வைக்கவும்.", + "@dehydrateWarning": {}, + "dehydrateTor": "டோர் பயனர்கள்: ஏற்றுமதி அமர்வு", + "@dehydrateTor": {}, + "hydrateTor": "டோர் பயனர்கள்: இறக்குமதி அமர்வு ஏற்றுமதி", + "@hydrateTor": {}, + "loadMore": "மேலும் ஏற்றவும்…", + "@loadMore": { + "type": "String", + "placeholders": {} + }, + "logout": "வெளியேற்றம்", + "@logout": { + "type": "String", + "placeholders": {} + }, + "memberChanges": "உறுப்பினர் மாற்றங்கள்", + "@memberChanges": { + "type": "String", + "placeholders": {} + }, + "messagesStyle": "செய்திகள்:", + "@messagesStyle": {}, + "needPantalaimonWarning": "இப்போதைக்கு இறுதி முதல் இறுதி குறியாக்கத்தைப் பயன்படுத்த உங்களுக்கு பாண்டலாயமன் தேவை என்பதை நினைவில் கொள்க.", + "@needPantalaimonWarning": { + "type": "String", + "placeholders": {} + }, + "newMessageInFluffyChat": "Fuf பஞ்சுபோன்ற புதிய செய்தி", + "@newMessageInFluffyChat": { + "type": "String", + "placeholders": {} + }, + "noEncryptionForPublicRooms": "அறை இனி பகிரங்கமாக அணுக முடியாதவுடன் மட்டுமே நீங்கள் குறியாக்கத்தை செயல்படுத்த முடியும்.", + "@noEncryptionForPublicRooms": { + "type": "String", + "placeholders": {} + }, + "noMatrixServer": "{server1} என்பது மேட்ரிக்ஸ் சர்வர் இல்லை, அதற்கு பதிலாக {server2} ஐ பயன்படுத்தவா?", + "@noMatrixServer": { + "type": "String", + "placeholders": { + "server1": { + "type": "String" + }, + "server2": { + "type": "String" + } + } + }, + "noPermission": "இசைவு இல்லை", + "@noPermission": { + "type": "String", + "placeholders": {} + }, + "noRoomsFound": "அறைகள் எதுவும் கிடைக்கவில்லை…", + "@noRoomsFound": { + "type": "String", + "placeholders": {} + }, + "notificationsEnabledForThisAccount": "இந்த கணக்கிற்கு அறிவிப்புகள் இயக்கப்பட்டன", + "@notificationsEnabledForThisAccount": { + "type": "String", + "placeholders": {} + }, + "numUsersTyping": "{count} பயனர்கள் தட்டச்சு செய்கிறார்கள்…", + "@numUsersTyping": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "offensive": "தாக்குதல்", + "@offensive": { + "type": "String", + "placeholders": {} + }, + "openCamera": "திறந்த கேமரா", + "@openCamera": { + "type": "String", + "placeholders": {} + }, + "openVideoCamera": "வீடியோவுக்கு கேமரா திறக்கவும்", + "@openVideoCamera": { + "type": "String", + "placeholders": {} + }, + "addAccount": "கணக்கைச் சேர்க்கவும்", + "@addAccount": {}, + "openInMaps": "வரைபடங்களில் திறந்திருக்கும்", + "@openInMaps": { + "type": "String", + "placeholders": {} + }, + "link": "இணைப்பு", + "@link": {}, + "serverRequiresEmail": "இந்த சேவையகம் பதிவுக்கு உங்கள் மின்னஞ்சல் முகவரியை சரிபார்க்க வேண்டும்.", + "@serverRequiresEmail": {}, + "passwordForgotten": "கடவுச்சொல் மறந்துவிட்டது", + "@passwordForgotten": { + "type": "String", + "placeholders": {} + }, + "passwordHasBeenChanged": "கடவுச்சொல் மாற்றப்பட்டுள்ளது", + "@passwordHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "pleaseChooseAPasscode": "பாச் குறியீட்டைத் தேர்வுசெய்க", + "@pleaseChooseAPasscode": { + "type": "String", + "placeholders": {} + }, + "publicRooms": "பொது அறைகள்", + "@publicRooms": { + "type": "String", + "placeholders": {} + }, + "removeAllOtherDevices": "மற்ற எல்லா சாதனங்களையும் அகற்றவும்", + "@removeAllOtherDevices": { + "type": "String", + "placeholders": {} + }, + "roomHasBeenUpgraded": "அறை மேம்படுத்தப்பட்டுள்ளது", + "@roomHasBeenUpgraded": { + "type": "String", + "placeholders": {} + }, + "roomVersion": "அறை பதிப்பு", + "@roomVersion": { + "type": "String", + "placeholders": {} + }, + "saveFile": "கோப்பை சேமி", + "@saveFile": { + "type": "String", + "placeholders": {} + }, + "sentAnAudio": "🎤 {username} ஆடியோவை அனுப்பியுள்ளார்", + "@sentAnAudio": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAPicture": "🖼️ {username} படத்தை அனுப்பியுள்ளார்", + "@sentAPicture": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAVideo": "🎥 {username} ஒரு வீடியோவை அனுப்பியுள்ளார்", + "@sentAVideo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "setPermissionsLevel": "இசைவு அளவை அமைக்கவும்", + "@setPermissionsLevel": { + "type": "String", + "placeholders": {} + }, + "settings": "அமைப்புகள்", + "@settings": { + "type": "String", + "placeholders": {} + }, + "sharedTheLocation": "{username} அவற்றின் இருப்பிடத்தைப் பகிர்ந்து கொண்டது", + "@sharedTheLocation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "showPassword": "கடவுச்சொல்லைக் காட்டு", + "@showPassword": { + "type": "String", + "placeholders": {} + }, + "submit": "சமர்ப்பிக்கவும்", + "@submit": { + "type": "String", + "placeholders": {} + }, + "tryToSendAgain": "மீண்டும் அனுப்ப முயற்சிக்கவும்", + "@tryToSendAgain": { + "type": "String", + "placeholders": {} + }, + "sendTypingNotifications": "தட்டச்சு அறிவிப்புகளை அனுப்பவும்", + "@sendTypingNotifications": {}, + "enterAnEmailAddress": "மின்னஞ்சல் முகவரியை உள்ளிடவும்", + "@enterAnEmailAddress": { + "type": "String", + "placeholders": {} + }, + "blockListDescription": "உங்களை தொந்தரவு செய்யும் பயனர்களைத் தடுக்கலாம். உங்கள் தனிப்பட்ட தொகுதி பட்டியலில் பயனர்களிடமிருந்து எந்த செய்திகளையும் அல்லது அறை அழைப்புகளையும் நீங்கள் பெற முடியாது.", + "@blockListDescription": {}, + "incorrectPassphraseOrKey": "தவறான கடவுச்சொல் அல்லது மீட்பு விசை", + "@incorrectPassphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "loadingPleaseWait": "ஏற்றுகிறது… தயவுசெய்து காத்திருங்கள்.", + "@loadingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "no": "இல்லை", + "@no": { + "type": "String", + "placeholders": {} + }, + "people": "மக்கள்", + "@people": { + "type": "String", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "இந்த அரட்டையிலிருந்து உங்களுக்கு தடை விதிக்கப்பட்டுள்ளது", + "@youHaveBeenBannedFromThisChat": { + "type": "String", + "placeholders": {} + }, + "messageType": "செய்தி வகை", + "@messageType": {}, + "databaseMigrationTitle": "தரவுத்தளம் உகந்ததாக உள்ளது", + "@databaseMigrationTitle": {}, + "usersMustKnock": "பயனர்கள் தட்ட வேண்டும்", + "@usersMustKnock": {}, + "allSpaces": "அனைத்து இடங்களும்", + "@allSpaces": {}, + "importFromZipFile": ".Zip கோப்பிலிருந்து இறக்குமதி செய்யுங்கள்", + "@importFromZipFile": {}, + "activatedEndToEndEncryption": "{username} இறுதி குறியாக்கத்திற்கு செயல்படுத்தப்பட்ட முடிவு", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "addChatDescription": "அரட்டை விளக்கத்தைச் சேர்க்கவும் ...", + "@addChatDescription": {}, + "addToSpace": "விண்வெளியில் சேர்க்கவும்", + "@addToSpace": {}, + "commandHint_hug": "கட்டிப்பிடிக்கவும்", + "@commandHint_hug": {}, + "cuddleContent": "{senderName} பெயர் you உங்களை கசக்குகிறது", + "@cuddleContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "hugContent": "{senderName} உங்களை அணைத்துக்கொள்கிறது", + "@hugContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "appLock": "பயன்பாட்டு பூட்டு", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "appLockDescription": "முள் குறியீட்டைக் கொண்டு பயன்படுத்தாதபோது பயன்பாட்டைப் பூட்டவும்", + "@appLockDescription": {}, + "googlyEyesContent": "{senderName} உங்களுக்கு கூகிள் கண்களை அனுப்புகிறது", + "@googlyEyesContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "areYouSure": "நீங்கள் உறுதியாக இருக்கிறீர்களா?", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "askVerificationRequest": "{username}பயனர்பெயர் இருந்து இலிருந்து இந்த சரிபார்ப்பு கோரிக்கையை ஏற்றுக்கொள்ளவா?", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "autoplayImages": "அனிமேசன் செய்யப்பட்ட ச்டிக்கர்கள் மற்றும் உணர்ச்சிகளை தானாக இயக்கவும்", + "@autoplayImages": { + "type": "String", + "placeholder": {} + }, + "badServerLoginTypesException": "உள்நாட்டு வகைகளை ஓம்சர்வர் ஆதரிக்கிறது:\n {serverVersions}\n ஆனால் இந்த பயன்பாடு மட்டுமே ஆதரிக்கிறது:\n {supportedVersions}", + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "badServerVersionsException": "ஓம்சர்வர் ச்பெக் பதிப்புகளை ஆதரிக்கிறது:\n {serverVersions}\n ஆனால் இந்த பயன்பாடு {supportedVersions} மட்டுமே ஆதரிக்கிறது", + "@badServerVersionsException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "noChatsFoundHere": "இங்கே அரட்டைகள் எதுவும் காணப்படவில்லை. கீழே உள்ள பொத்தானைப் பயன்படுத்தி ஒருவருடன் புதிய அரட்டையைத் தொடங்கவும். ⤵️", + "@noChatsFoundHere": {}, + "space": "இடைவெளி", + "@space": {}, + "banned": "தடைசெய்யப்பட்டது", + "@banned": { + "type": "String", + "placeholders": {} + }, + "botMessages": "போட் செய்திகள்", + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "changedTheChatNameTo": "{username} அரட்டை பெயரை மாற்றியது: '{chatname}'", + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "changedTheHistoryVisibilityTo": "{username} வரலாற்று தெரிவுநிலையை மாற்றியது: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheJoinRules": "{username} சேர விதிகளை மாற்றியது", + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheJoinRulesTo": "{username} சேர விதிகளை மாற்றியது: {joinRules}", + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "changedTheRoomInvitationLink": "{username} அழைப்பிதழ் இணைப்பை மாற்றியது", + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changePassword": "கடவுச்சொல்லை மாற்றவும்", + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "changeTheHomeserver": "ஓம்சர்வரை மாற்றவும்", + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "changeYourAvatar": "உங்கள் அவதாரத்தை மாற்றவும்", + "@changeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "channelCorruptedDecryptError": "குறியாக்கம் சிதைந்துள்ளது", + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "chat": "அரட்டை", + "@chat": { + "type": "String", + "placeholders": {} + }, + "yourChatBackupHasBeenSetUp": "உங்கள் அரட்டை காப்புப்பிரதி அமைக்கப்பட்டுள்ளது.", + "@yourChatBackupHasBeenSetUp": {}, + "chatBackupDescription": "உங்கள் பழைய செய்திகள் மீட்பு விசையுடன் பாதுகாக்கப்படுகின்றன. நீங்கள் அதை இழக்கவில்லை என்பதை உறுதிப்படுத்திக் கொள்ளுங்கள்.", + "@chatBackupDescription": { + "type": "String", + "placeholders": {} + }, + "chatHasBeenAddedToThisSpace": "இந்த இடத்தில் அரட்டை சேர்க்கப்பட்டுள்ளது", + "@chatHasBeenAddedToThisSpace": {}, + "commandHint_markasdm": "கொடுக்கப்பட்ட மேட்ரிக்சிற்கான நேரடி செய்தி அறையாக குறிக்கவும்", + "@commandHint_markasdm": {}, + "commandHint_ban": "கொடுக்கப்பட்ட பயனரை இந்த அறையிலிருந்து தடை செய்யுங்கள்", + "@commandHint_ban": { + "type": "String", + "description": "Usage hint for the command /ban" + }, + "commandHint_clearcache": "தெளிவான தற்காலிக சேமிப்பு", + "@commandHint_clearcache": { + "type": "String", + "description": "Usage hint for the command /clearcache" + }, + "commandHint_discardsession": "அமர்வை நிராகரிக்கவும்", + "@commandHint_discardsession": { + "type": "String", + "description": "Usage hint for the command /discardsession" + }, + "commandHint_myroomavatar": "இந்த அறைக்கு உங்கள் படத்தை அமைக்கவும் (MXC-URI எழுதியது)", + "@commandHint_myroomavatar": { + "type": "String", + "description": "Usage hint for the command /myroomavatar" + }, + "commandHint_myroomnick": "இந்த அறைக்கு உங்கள் காட்சி பெயரை அமைக்கவும்", + "@commandHint_myroomnick": { + "type": "String", + "description": "Usage hint for the command /myroomnick" + }, + "commandInvalid": "கட்டளை தவறானது", + "@commandInvalid": { + "type": "String" + }, + "confirm": "உறுதிப்படுத்தவும்", + "@confirm": { + "type": "String", + "placeholders": {} + }, + "contentHasBeenReported": "உள்ளடக்கம் சேவையக நிர்வாகிகளுக்கு தெரிவிக்கப்பட்டுள்ளது", + "@contentHasBeenReported": { + "type": "String", + "placeholders": {} + }, + "createdTheChat": "💬 {username} அரட்டையை உருவாக்கினார்", + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "currentlyActive": "தற்போது செயலில் உள்ளது", + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "dateWithYear": "{year}-{month}-{day}", + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "deactivateAccountWarning": "இது உங்கள் பயனர் கணக்கை செயலிழக்கச் செய்யும். இதை செயல்தவிர்க்க முடியாது! நீங்கள் உறுதியாக இருக்கிறீர்களா?", + "@deactivateAccountWarning": { + "type": "String", + "placeholders": {} + }, + "defaultPermissionLevel": "புதிய பயனர்களுக்கான இயல்புநிலை இசைவு நிலை", + "@defaultPermissionLevel": { + "type": "String", + "placeholders": {} + }, + "delete": "நீக்கு", + "@delete": { + "type": "String", + "placeholders": {} + }, + "devices": "சாதனங்கள்", + "@devices": { + "type": "String", + "placeholders": {} + }, + "directChats": "நேரடி அரட்டைகள்", + "@directChats": { + "type": "String", + "placeholders": {} + }, + "allRooms": "அனைத்து குழு அரட்டைகளும்", + "@allRooms": { + "type": "String", + "placeholders": {} + }, + "displaynameHasBeenChanged": "காட்சி பெயர் மாற்றப்பட்டுள்ளது", + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "editBlockedServers": "தடுக்கப்பட்ட சேவையகங்களைத் திருத்து", + "@editBlockedServers": { + "type": "String", + "placeholders": {} + }, + "emoteExists": "எமோட் ஏற்கனவே உள்ளது!", + "@emoteExists": { + "type": "String", + "placeholders": {} + }, + "emoteInvalid": "தவறான எமோட் சார்ட்கோட்!", + "@emoteInvalid": { + "type": "String", + "placeholders": {} + }, + "emoteKeyboardNoRecents": "அண்மைக் காலத்தில் பயன்படுத்தப்பட்ட உணர்ச்சிகள் இங்கே தோன்றும் ...", + "@emoteKeyboardNoRecents": { + "type": "String", + "placeholders": {} + }, + "emotePacks": "அறைக்கு எமோட் பொதிகள்", + "@emotePacks": { + "type": "String", + "placeholders": {} + }, + "emoteSettings": "எமோட் அமைப்புகள்", + "@emoteSettings": { + "type": "String", + "placeholders": {} + }, + "accessAndVisibilityDescription": "இந்த அரட்டையில் யார் சேர அனுமதிக்கப்படுகிறார்கள், அரட்டையை எவ்வாறு கண்டுபிடிப்பது.", + "@accessAndVisibilityDescription": {}, + "calls": "அழைப்புகள்", + "@calls": {}, + "customEmojisAndStickers": "தனிப்பயன் ஈமோசிகள் மற்றும் ச்டிக்கர்கள்", + "@customEmojisAndStickers": {}, + "customEmojisAndStickersBody": "எந்தவொரு அரட்டையிலும் பயன்படுத்தக்கூடிய தனிப்பயன் ஈமோசிகள் அல்லது ச்டிக்கர்களைச் சேர்க்கவும் அல்லது பகிரவும்.", + "@customEmojisAndStickersBody": {}, + "emoteShortcode": "சார்ட்கோட் எமோட்", + "@emoteShortcode": { + "type": "String", + "placeholders": {} + }, + "emoteWarnNeedToPick": "நீங்கள் ஒரு எமோட் சார்ட்கோட் மற்றும் ஒரு படத்தை எடுக்க வேண்டும்!", + "@emoteWarnNeedToPick": { + "type": "String", + "placeholders": {} + }, + "enableEmotesGlobally": "உலகளவில் எமோட் பேக்கை இயக்கவும்", + "@enableEmotesGlobally": { + "type": "String", + "placeholders": {} + }, + "enableEncryption": "குறியாக்கத்தை இயக்கவும்", + "@enableEncryption": { + "type": "String", + "placeholders": {} + }, + "enableEncryptionWarning": "நீங்கள் இனி குறியாக்கத்தை முடக்க முடியாது. நீங்கள் உறுதியாக இருக்கிறீர்களா?", + "@enableEncryptionWarning": { + "type": "String", + "placeholders": {} + }, + "encryptionNotEnabled": "குறியாக்கம் இயக்கப்படவில்லை", + "@encryptionNotEnabled": { + "type": "String", + "placeholders": {} + }, + "encryption": "குறியாக்கம்", + "@encryption": { + "type": "String", + "placeholders": {} + }, + "endedTheCall": "{senderName} அழைப்பை முடித்தார்", + "@endedTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "homeserver": "ஓம்சர்வர்", + "@homeserver": {}, + "errorObtainingLocation": "இருப்பிடத்தைப் பெறுவதில் பிழை: {error}", + "@errorObtainingLocation": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "everythingReady": "எல்லாம் தயாராக!", + "@everythingReady": { + "type": "String", + "placeholders": {} + }, + "extremeOffensive": "மிகவும் தாக்குதல்", + "@extremeOffensive": { + "type": "String", + "placeholders": {} + }, + "goToTheNewRoom": "புதிய அறைக்குச் செல்லுங்கள்", + "@goToTheNewRoom": { + "type": "String", + "placeholders": {} + }, + "group": "குழு", + "@group": { + "type": "String", + "placeholders": {} + }, + "chatDescription": "அரட்டை விளக்கம்", + "@chatDescription": {}, + "groupIsPublic": "குழு பொது", + "@groupIsPublic": { + "type": "String", + "placeholders": {} + }, + "hideRedactedEvents": "திருத்தப்பட்ட நிகழ்வுகளை மறைக்கவும்", + "@hideRedactedEvents": { + "type": "String", + "placeholders": {} + }, + "hideInvalidOrUnknownMessageFormats": "தவறான அல்லது அறியப்படாத செய்தி வடிவங்களை மறைக்கவும்", + "@hideInvalidOrUnknownMessageFormats": {}, + "id": "ஐடி", + "@id": { + "type": "String", + "placeholders": {} + }, + "block": "தொகுதி", + "@block": {}, + "inviteContactToGroupQuestion": "\"{groupName}\" அரட்டைக்கு {contact} ஐ அழைக்க விரும்புகிறீர்களா?", + "@inviteContactToGroupQuestion": {}, + "inviteContactToGroup": "{groupName} க்கு தொடர்பை அழை", + "@inviteContactToGroup": { + "type": "String", + "placeholders": { + "groupName": { + "type": "String" + } + } + }, + "noChatDescriptionYet": "அரட்டை விளக்கம் இதுவரை உருவாக்கப்படவில்லை.", + "@noChatDescriptionYet": {}, + "invalidServerName": "தவறான சேவையக பெயர்", + "@invalidServerName": {}, + "redactMessageDescription": "இந்த உரையாடலில் பங்கேற்பாளர்கள் அனைவருக்கும் செய்தி திருத்தப்படும். இதை செயல்தவிர்க்க முடியாது.", + "@redactMessageDescription": {}, + "invitedUser": "📩 {username} {targetName} அழைக்கப்பட்டார்", + "@invitedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "inviteText": "{username} உங்களை பஞ்சுபோன்றதாக அழைத்தது.\n 1. FulufyChat.im ஐப் பார்வையிட்டு பயன்பாட்டை நிறுவவும்\n 2. பதிவு செய்யுங்கள் அல்லது உள்நுழைக\n 3. அழைப்பிதழ் இணைப்பைத் திறக்கவும்:\n {link}", + "@inviteText": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "link": { + "type": "String" + } + } + }, + "joinRoom": "அறையில் சேரவும்", + "@joinRoom": { + "type": "String", + "placeholders": {} + }, + "leave": "விடுப்பு", + "@leave": { + "type": "String", + "placeholders": {} + }, + "dehydrateTorLong": "TOR பயனர்களுக்கு, சாளரத்தை மூடுவதற்கு முன் அமர்வை ஏற்றுமதி செய்ய பரிந்துரைக்கப்படுகிறது.", + "@dehydrateTorLong": {}, + "hydrateTorLong": "உங்கள் அமர்வை கடைசியாக டோரில் ஏற்றுமதி செய்தீர்களா? விரைவாக அதை இறக்குமதி செய்து அரட்டையடிக்கவும்.", + "@hydrateTorLong": {}, + "hydrate": "காப்பு கோப்பிலிருந்து மீட்டமைக்கவும்", + "@hydrate": {}, + "locationDisabledNotice": "இருப்பிட சேவைகள் முடக்கப்பட்டுள்ளன. தயவுசெய்து உங்கள் இருப்பிடத்தைப் பகிர்ந்து கொள்ள அவர்களுக்கு உதவவும்.", + "@locationDisabledNotice": { + "type": "String", + "placeholders": {} + }, + "locationPermissionDeniedNotice": "இருப்பிட இசைவு மறுக்கப்பட்டது. உங்கள் இருப்பிடத்தைப் பகிர்ந்து கொள்ள தயவுசெய்து அவர்களுக்கு வழங்குங்கள்.", + "@locationPermissionDeniedNotice": { + "type": "String", + "placeholders": {} + }, + "login": "புகுபதிவு", + "@login": { + "type": "String", + "placeholders": {} + }, + "logInTo": "{homeserver} இல் உள்நுழைக", + "@logInTo": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "messages": "செய்திகள்", + "@messages": { + "type": "String", + "placeholders": {} + }, + "muteChat": "முடக்கு அரட்டை", + "@muteChat": { + "type": "String", + "placeholders": {} + }, + "newChat": "புதிய அரட்டை", + "@newChat": { + "type": "String", + "placeholders": {} + }, + "next": "அடுத்தது", + "@next": { + "type": "String", + "placeholders": {} + }, + "none": "எதுவுமில்லை", + "@none": { + "type": "String", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "உங்கள் கடவுச்சொல்லை மீட்டெடுப்பதற்கான வழியை நீங்கள் இன்னும் சேர்க்கவில்லை.", + "@noPasswordRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "openAppToReadMessages": "செய்திகளைப் படிக்க பயன்பாட்டைத் திறக்கவும்", + "@openAppToReadMessages": { + "type": "String", + "placeholders": {} + }, + "oneClientLoggedOut": "உங்கள் வாடிக்கையாளர்களில் ஒருவர் உள்நுழைந்துள்ளார்", + "@oneClientLoggedOut": {}, + "addToBundle": "மூட்டையில் சேர்க்கவும்", + "@addToBundle": {}, + "or": "அல்லது", + "@or": { + "type": "String", + "placeholders": {} + }, + "hideMemberChangesInPublicChats": "பொது அரட்டைகளில் உறுப்பினர் மாற்றங்களை மறைக்கவும்", + "@hideMemberChangesInPublicChats": {}, + "hideMemberChangesInPublicChatsBody": "வாசிப்புத்திறனை மேம்படுத்த யாராவது ஒரு பொது அரட்டையில் சேர்ந்தால் அல்லது விட்டுவிட்டால் அரட்டை காலவரிசையில் காட்ட வேண்டாம்.", + "@hideMemberChangesInPublicChatsBody": {}, + "overview": "கண்ணோட்டம்", + "@overview": {}, + "notifyMeFor": "எனக்கு அறிவிக்கவும்", + "@notifyMeFor": {}, + "passwordRecoverySettings": "கடவுச்சொல் மீட்பு அமைப்புகள்", + "@passwordRecoverySettings": {}, + "passwordRecovery": "கடவுச்சொல் மீட்பு", + "@passwordRecovery": { + "type": "String", + "placeholders": {} + }, + "pleaseChoose": "தயவுசெய்து தேர்வு செய்யவும்", + "@pleaseChoose": { + "type": "String", + "placeholders": {} + }, + "play": "{fileName} இயக்கு", + "@play": { + "type": "String", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "pleaseEnter4Digits": "பயன்பாட்டு பூட்டை முடக்க 4 இலக்கங்களை உள்ளிடவும் அல்லது காலியாக விடவும்.", + "@pleaseEnter4Digits": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPassword": "உங்கள் கடவுச்சொல்லை உள்ளிடவும்", + "@pleaseEnterYourPassword": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPin": "உங்கள் முள் உள்ளிடவும்", + "@pleaseEnterYourPin": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourUsername": "உங்கள் பயனர்பெயரை உள்ளிடவும்", + "@pleaseEnterYourUsername": { + "type": "String", + "placeholders": {} + }, + "pleaseFollowInstructionsOnWeb": "வலைத்தளத்தின் வழிமுறைகளைப் பின்பற்றி அடுத்து தட்டவும்.", + "@pleaseFollowInstructionsOnWeb": { + "type": "String", + "placeholders": {} + }, + "privacy": "தனியுரிமை", + "@privacy": { + "type": "String", + "placeholders": {} + }, + "reason": "காரணம்", + "@reason": { + "type": "String", + "placeholders": {} + }, + "redactedByBecause": "{username} ஆல் திருத்தப்பட்டது ஏனெனில்: \"{reason}\"", + "@redactedByBecause": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "reason": { + "type": "String" + } + } + }, + "register": "பதிவு செய்யுங்கள்", + "@register": { + "type": "String", + "placeholders": {} + }, + "rejectedTheInvitation": "{username} அழைப்பை நிராகரித்தது", + "@rejectedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "rejoin": "மீண்டும் சேரவும்", + "@rejoin": { + "type": "String", + "placeholders": {} + }, + "unbanFromChat": "அரட்டையிலிருந்து தடையின்றி", + "@unbanFromChat": { + "type": "String", + "placeholders": {} + }, + "removeYourAvatar": "உங்கள் அவதாரத்தை அகற்று", + "@removeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "replaceRoomWithNewerVersion": "புதிய பதிப்போடு அறையை மாற்றவும்", + "@replaceRoomWithNewerVersion": { + "type": "String", + "placeholders": {} + }, + "sendAsText": "உரையாக அனுப்பவும்", + "@sendAsText": { + "type": "String" + }, + "sendAudio": "ஆடியோ அனுப்பவும்", + "@sendAudio": { + "type": "String", + "placeholders": {} + }, + "sendImage": "படத்தை அனுப்பு", + "@sendImage": { + "type": "String", + "placeholders": {} + }, + "sendImages": "{count} படத்தை அனுப்பு", + "@sendImages": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "sendOriginal": "அசல் அனுப்பு", + "@sendOriginal": { + "type": "String", + "placeholders": {} + }, + "sendSticker": "ச்டிக்கரை அனுப்பவும்", + "@sendSticker": { + "type": "String", + "placeholders": {} + }, + "sendVideo": "வீடியோ அனுப்பவும்", + "@sendVideo": { + "type": "String", + "placeholders": {} + }, + "sentASticker": "😊 {username} ஒரு ச்டிக்கரை அனுப்பியது", + "@sentASticker": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentCallInformations": "{senderName} அனுப்பப்பட்ட அழைப்பு செய்தி", + "@sentCallInformations": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "separateChatTypes": "நேரடி அரட்டைகள் மற்றும் குழுக்களை பிரிக்கவும்", + "@separateChatTypes": { + "type": "String", + "placeholders": {} + }, + "setAsCanonicalAlias": "முதன்மையான மாற்றுப்பெயராக அமைக்கவும்", + "@setAsCanonicalAlias": { + "type": "String", + "placeholders": {} + }, + "setCustomEmotes": "தனிப்பயன் உணர்ச்சிகளை அமைக்கவும்", + "@setCustomEmotes": { + "type": "String", + "placeholders": {} + }, + "setChatDescription": "அரட்டை விளக்கத்தை அமைக்கவும்", + "@setChatDescription": {}, + "setInvitationLink": "அழைப்பிதழ் இணைப்பை அமைக்கவும்", + "@setInvitationLink": { + "type": "String", + "placeholders": {} + }, + "share": "பங்கு", + "@share": { + "type": "String", + "placeholders": {} + }, + "presenceStyle": "இருப்பு:", + "@presenceStyle": { + "type": "String", + "placeholders": {} + }, + "presencesToggle": "பிற பயனர்களிடமிருந்து நிலை செய்திகளைக் காட்டு", + "@presencesToggle": { + "type": "String", + "placeholders": {} + }, + "singlesignon": "ஒற்றை அடையாளம்", + "@singlesignon": { + "type": "String", + "placeholders": {} + }, + "skip": "தவிர்", + "@skip": { + "type": "String", + "placeholders": {} + }, + "sourceCode": "மூலக் குறியீடு", + "@sourceCode": { + "type": "String", + "placeholders": {} + }, + "spaceName": "விண்வெளி பெயர்", + "@spaceName": { + "type": "String", + "placeholders": {} + }, + "status": "நிலை", + "@status": { + "type": "String", + "placeholders": {} + }, + "systemTheme": "மண்டலம்", + "@systemTheme": { + "type": "String", + "placeholders": {} + }, + "theyMatch": "அவர்கள் பொருந்துகிறார்கள்", + "@theyMatch": { + "type": "String", + "placeholders": {} + }, + "unbannedUser": "{username} தடைசெய்யப்படாத {targetName}", + "@unbannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "unknownEvent": "அறியப்படாத நிகழ்வு '{type}'", + "@unknownEvent": { + "type": "String", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "userAndOthersAreTyping": "{username} மற்றும் {count} மற்றவர்கள் தட்டச்சு செய்கிறார்கள்…", + "@userAndOthersAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "userIsTyping": "{username} தட்டச்சு செய்கிறது…", + "@userIsTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "waitingPartnerAcceptRequest": "கூட்டாளர் கோரிக்கையை ஏற்றுக்கொள்வதற்காக காத்திருக்கிறார்…", + "@waitingPartnerAcceptRequest": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerEmoji": "பங்குதாரர் ஈமோசியை ஏற்றுக்கொள்வதற்காக காத்திருக்கிறார்…", + "@waitingPartnerEmoji": { + "type": "String", + "placeholders": {} + }, + "sender": "அனுப்புநர்", + "@sender": {}, + "openGallery": "திறந்த கேலரி", + "@openGallery": {}, + "wallpaper": "வால்பேப்பர்:", + "@wallpaper": { + "type": "String", + "placeholders": {} + }, + "whyDoYouWantToReportThis": "இதை ஏன் புகாரளிக்க விரும்புகிறீர்கள்?", + "@whyDoYouWantToReportThis": { + "type": "String", + "placeholders": {} + }, + "wipeChatBackup": "புதிய மீட்பு விசையை உருவாக்க உங்கள் அரட்டை காப்புப்பிரதியைத் துடைக்கவா?", + "@wipeChatBackup": { + "type": "String", + "placeholders": {} + }, + "withTheseAddressesRecoveryDescription": "இந்த முகவரிகள் மூலம் உங்கள் கடவுச்சொல்லை மீட்டெடுக்கலாம்.", + "@withTheseAddressesRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "writeAMessage": "ஒரு செய்தியை எழுதுங்கள்…", + "@writeAMessage": { + "type": "String", + "placeholders": {} + }, + "yes": "ஆம்", + "@yes": { + "type": "String", + "placeholders": {} + }, + "removeFromSpace": "இடத்திலிருந்து அகற்று", + "@removeFromSpace": {}, + "pleaseEnterRecoveryKeyDescription": "உங்கள் பழைய செய்திகளைத் திறக்க, முந்தைய அமர்வில் உருவாக்கப்பட்ட உங்கள் மீட்பு விசையை உள்ளிடவும். உங்கள் மீட்பு விசை உங்கள் கடவுச்சொல் அல்ல.", + "@pleaseEnterRecoveryKeyDescription": {}, + "confirmEventUnpin": "நிகழ்வை நிரந்தரமாக அவிழ்ப்பது உறுதி?", + "@confirmEventUnpin": {}, + "switchToAccount": "கணக்குக்கு மாறவும் {number}", + "@switchToAccount": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "nextAccount": "அடுத்த கணக்கு", + "@nextAccount": {}, + "youJoinedTheChat": "நீங்கள் அரட்டையில் சேர்ந்தீர்கள்", + "@youJoinedTheChat": {}, + "indexedDbErrorLong": "செய்தி சேமிப்பு துரதிர்ச்டவசமாக இயல்புநிலையாக தனிப்பட்ட பயன்முறையில் இயக்கப்படவில்லை.\n தயவுசெய்து பார்வையிடவும்\n - பற்றி: கட்டமைப்பு\n - கணம் dom.indexedDB.privateBrowsing.enabled பெறுநர் true\n இல்லையெனில், பஞ்சுபோன்றவை இயக்க முடியாது.", + "@indexedDbErrorLong": {}, + "youAcceptedTheInvitation": "👍 நீங்கள் அழைப்பை ஏற்றுக்கொண்டீர்கள்", + "@youAcceptedTheInvitation": {}, + "youBannedUser": "நீங்கள் {user} தடை செய்தீர்கள்", + "@youBannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youHaveWithdrawnTheInvitationFor": "{user}க்கான அழைப்பை திரும்பப் பெற்றுவிட்டீர்கள்", + "@youHaveWithdrawnTheInvitationFor": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youInvitedBy": "📩 நீங்கள் {user} ஆல் அழைக்கப்பட்டுள்ளீர்கள்", + "@youInvitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youInvitedUser": "📩 {user} ஐ அழைத்தீர்கள்", + "@youInvitedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youUnbannedUser": "நீங்கள் {user} தடைசெய்யவில்லை", + "@youUnbannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "hasKnocked": "🚪 {user} தட்டியது", + "@hasKnocked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "noPublicLinkHasBeenCreatedYet": "பொது இணைப்பு இதுவரை உருவாக்கப்படவில்லை", + "@noPublicLinkHasBeenCreatedYet": {}, + "knock": "தட்டவும்", + "@knock": {}, + "users": "பயனர்கள்", + "@users": {}, + "storeInSecureStorageDescription": "மீட்பு விசையை இந்த சாதனத்தின் பாதுகாப்பான சேமிப்பகத்தில் சேமிக்கவும்.", + "@storeInSecureStorageDescription": {}, + "saveKeyManuallyDescription": "கணினி பகிர்வு உரையாடல் அல்லது கிளிப்போர்டைத் தூண்டுவதன் மூலம் இந்த விசையை கைமுறையாக சேமிக்கவும்.", + "@saveKeyManuallyDescription": {}, + "storeInAndroidKeystore": "ஆண்ட்ராய்டு கீச்டோரில் சேமிக்கவும்", + "@storeInAndroidKeystore": {}, + "countFiles": "{count} கோப்புகள்", + "@countFiles": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "custom": "தனிப்பயன்", + "@custom": {}, + "foregroundServiceRunning": "முன்புற பணி இயங்கும்போது இந்த அறிவிப்பு தோன்றும்.", + "@foregroundServiceRunning": {}, + "screenSharingDetail": "உங்கள் திரையை FUFFYCHAT இல் பகிர்கிறீர்கள்", + "@screenSharingDetail": {}, + "callingPermissions": "அழைப்பு அனுமதிகள்", + "@callingPermissions": {}, + "callingAccount": "அழைப்பு கணக்கு", + "@callingAccount": {}, + "callingAccountDetails": "சொந்த ஆண்ட்ராய்டு டயலர் பயன்பாட்டைப் பயன்படுத்த பஞ்சுபோன்றது அனுமதிக்கிறது.", + "@callingAccountDetails": {}, + "otherCallingPermissions": "மைக்ரோஃபோன், கேமரா மற்றும் பிற பஞ்சுபோன்ற அனுமதிகள்", + "@otherCallingPermissions": {}, + "numChats": "{number} அரட்டைகள்", + "@numChats": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "hideUnimportantStateEvents": "முக்கியமற்ற மாநில நிகழ்வுகளை மறைக்கவும்", + "@hideUnimportantStateEvents": {}, + "whyIsThisMessageEncrypted": "இந்த செய்தி ஏன் படிக்க முடியாதது?", + "@whyIsThisMessageEncrypted": {}, + "noKeyForThisMessage": "இந்த சாதனத்தில் உங்கள் கணக்கில் கையொப்பமிடுவதற்கு முன்பு செய்தி அனுப்பப்பட்டால் இது நிகழலாம்.\n\n அனுப்புநர் உங்கள் சாதனத்தைத் தடுத்துள்ளார் அல்லது இணைய இணைப்பில் ஏதேனும் தவறு ஏற்பட்டுள்ளது.\n\n மற்றொரு அமர்வில் செய்தியைப் படிக்க முடியுமா? அதிலிருந்து செய்தியை மாற்றலாம்! அமைப்புகள்> சாதனங்களுக்குச் சென்று, உங்கள் சாதனங்கள் ஒருவருக்கொருவர் சரிபார்த்துள்ளன என்பதை உறுதிப்படுத்தவும். அடுத்த முறை நீங்கள் அறையைத் திறக்கும்போது, இரண்டு அமர்வுகளும் முன்னணியில் இருக்கும்போது, விசைகள் தானாகவே அனுப்பப்படும்.\n\n வெளியேறும்போது அல்லது சாதனங்களை மாற்றும்போது விசைகளை இழக்க நீங்கள் விரும்பவில்லையா? அமைப்புகளில் அரட்டை காப்புப்பிரதியை நீங்கள் இயக்கியுள்ளீர்கள் என்பதை உறுதிப்படுத்திக் கொள்ளுங்கள்.", + "@noKeyForThisMessage": {}, + "hidePresences": "நிலை பட்டியலை மறைக்கவா?", + "@hidePresences": {}, + "doNotShowAgain": "மீண்டும் காட்ட வேண்டாம்", + "@doNotShowAgain": {}, + "newSpaceDescription": "உங்கள் அரட்டைகளை ஒருங்கிணைத்து தனியார் அல்லது பொது சமூகங்களை உருவாக்க இடைவெளிகள் உங்களை அனுமதிக்கிறது.", + "@newSpaceDescription": {}, + "disableEncryptionWarning": "பாதுகாப்பு காரணங்களுக்காக நீங்கள் ஒரு அரட்டையில் குறியாக்கத்தை முடக்க முடியாது, அது இதற்கு முன்பு இயக்கப்பட்டிருக்கிறது.", + "@disableEncryptionWarning": {}, + "sorryThatsNotPossible": "மன்னிக்கவும் ... அது சாத்தியமில்லை", + "@sorryThatsNotPossible": {}, + "noBackupWarning": "எச்சரிக்கை! அரட்டை காப்புப்பிரதியை இயக்காமல், உங்கள் மறைகுறியாக்கப்பட்ட செய்திகளுக்கான அணுகலை இழப்பீர்கள். வெளியேறுவதற்கு முன் முதலில் அரட்டை காப்புப்பிரதியை இயக்க மிகவும் பரிந்துரைக்கப்படுகிறது.", + "@noBackupWarning": {}, + "fileIsTooBigForServer": "அனுப்ப முடியவில்லை! சேவையகம் {max} வரை இணைப்புகளை மட்டுமே ஆதரிக்கிறது.", + "@fileIsTooBigForServer": { + "type": "String", + "placeholders": { + "max": { + "type": "String" + } + } + }, + "fileHasBeenSavedAt": "கோப்பு {path}", + "@fileHasBeenSavedAt": { + "type": "String", + "placeholders": { + "path": { + "type": "String" + } + } + }, + "pleaseTryAgainLaterOrChooseDifferentServer": "தயவுசெய்து பின்னர் மீண்டும் முயற்சிக்கவும் அல்லது வேறு சேவையகத்தைத் தேர்வுசெய்க.", + "@pleaseTryAgainLaterOrChooseDifferentServer": {}, + "signInWith": "{provider} மூலம் உள்நுழையவும்", + "@signInWith": { + "type": "String", + "placeholders": { + "provider": { + "type": "String" + } + } + }, + "profileNotFound": "பயனரை சேவையகத்தில் காண முடியவில்லை. ஒரு இணைப்பு சிக்கல் இருக்கலாம் அல்லது பயனர் இல்லை.", + "@profileNotFound": {}, + "inviteGroupChat": "📨 குழு அரட்டை அழைப்பு", + "@inviteGroupChat": {}, + "invitePrivateChat": "Sative தனியார் அரட்டை அழைப்பு", + "@invitePrivateChat": {}, + "invalidInput": "தவறான உள்ளீடு!", + "@invalidInput": {}, + "archiveRoomDescription": "அரட்டை காப்பகத்திற்கு நகர்த்தப்படும். மற்ற பயனர்கள் நீங்கள் அரட்டையை விட்டுவிட்டீர்கள் என்பதைக் காண முடியும்.", + "@archiveRoomDescription": {}, + "removeDevicesDescription": "நீங்கள் இந்த சாதனத்திலிருந்து வெளியேறுவீர்கள், இனி செய்திகளைப் பெற முடியாது.", + "@removeDevicesDescription": {}, + "banUserDescription": "பயனர் அரட்டையிலிருந்து தடைசெய்யப்படுவார், மேலும் அவை தடைசெய்யப்படாத வரை மீண்டும் அரட்டையில் நுழைய முடியாது.", + "@banUserDescription": {}, + "makeAdminDescription": "இந்த பயனர் நிர்வாகியை நீங்கள் செய்தவுடன், இதை நீங்கள் செயல்தவிர்க்க முடியாமல் போகலாம், ஏனெனில் அவை உங்களைப் போன்ற அதே அனுமதிகளைக் கொண்டிருக்கும்.", + "@makeAdminDescription": {}, + "knocking": "தட்டுதல்", + "@knocking": {}, + "searchChatsRooms": "#Chats, Us பயனர்களைத் தேடுங்கள் ...", + "@searchChatsRooms": {}, + "nothingFound": "எதுவும் கிடைக்கவில்லை ...", + "@nothingFound": {}, + "groupName": "குழு பெயர்", + "@groupName": {}, + "createGroupAndInviteUsers": "ஒரு குழுவை உருவாக்கி பயனர்களை அழைக்கவும்", + "@createGroupAndInviteUsers": {}, + "groupCanBeFoundViaSearch": "தேடல் வழியாக குழுவை காணலாம்", + "@groupCanBeFoundViaSearch": {}, + "wrongRecoveryKey": "மன்னிக்கவும் ... இது சரியான மீட்பு விசையாகத் தெரியவில்லை.", + "@wrongRecoveryKey": {}, + "databaseMigrationBody": "தயவுசெய்து காத்திருங்கள். இது ஒரு கணம் ஆகலாம்.", + "@databaseMigrationBody": {}, + "newPassword": "புதிய கடவுச்சொல்", + "@newPassword": {}, + "pleaseChooseAStrongPassword": "வலுவான கடவுச்சொல்லைத் தேர்வுசெய்க", + "@pleaseChooseAStrongPassword": {}, + "passwordsDoNotMatch": "கடவுச்சொற்கள் பொருந்தவில்லை", + "@passwordsDoNotMatch": {}, + "joinSpace": "விண்வெளியில் சேரவும்", + "@joinSpace": {}, + "addChatOrSubSpace": "அரட்டை அல்லது துணை இடத்தைச் சேர்க்கவும்", + "@addChatOrSubSpace": {}, + "initAppError": "பயன்பாட்டைத் தொடங்கும்போது பிழை ஏற்பட்டது", + "@initAppError": {}, + "databaseBuildErrorBody": "SQlite தரவுத்தளத்தை உருவாக்க முடியவில்லை. ஆப்ஸ் தற்போதைக்கு மரபு தரவுத்தளத்தைப் பயன்படுத்த முயற்சிக்கிறது. {url} இல் டெவலப்பர்களிடம் இந்தப் பிழையைப் புகாரளிக்கவும். பிழை செய்தி: {error}", + "@databaseBuildErrorBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "sessionLostBody": "உங்கள் அமர்வு தொலைந்துவிட்டது. {url} இல் டெவலப்பர்களிடம் இந்தப் பிழையைப் புகாரளிக்கவும். பிழை செய்தி: {error}", + "@sessionLostBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "sendTypingNotificationsDescription": "அரட்டையில் பங்கேற்பாளர்கள் நீங்கள் ஒரு புதிய செய்தியைத் தட்டச்சு செய்யும் போது காணலாம்.", + "@sendTypingNotificationsDescription": {}, + "sendReadReceiptsDescription": "அரட்டையில் பங்கேற்பாளர்கள் நீங்கள் ஒரு செய்தியைப் படிக்கும்போது பார்க்கலாம்.", + "@sendReadReceiptsDescription": {}, + "formattedMessagesDescription": "மார்க் டவுனைப் பயன்படுத்தி தைரியமான உரை போன்ற பணக்கார செய்தி உள்ளடக்கத்தைக் காண்பி.", + "@formattedMessagesDescription": {}, + "verifyOtherUser": "Poser மற்ற பயனரை சரிபார்க்கவும்", + "@verifyOtherUser": {}, + "verifyOtherUserDescription": "நீங்கள் மற்றொரு பயனரைச் சரிபார்த்தால், நீங்கள் உண்மையில் யாருக்கு எழுதுகிறீர்கள் என்பது உங்களுக்குத் தெரியும் என்பதை நீங்கள் உறுதியாக நம்பலாம். 💪\n\nநீங்கள் ஒரு சரிபார்ப்பைத் தொடங்கும்போது, நீங்களும் மற்ற பயனரும் பயன்பாட்டில் ஒரு பாப்அப்பைக் காண்பீர்கள். நீங்கள் ஒருவருக்கொருவர் ஒப்பிட வேண்டிய தொடர்ச்சியான ஈமோசிகள் அல்லது எண்களைக் காண்பீர்கள்.\n\nஇதைச் செய்வதற்கான சிறந்த வழி வீடியோ அழைப்பைச் சந்திப்பது அல்லது தொடங்குவது. 👭", + "@verifyOtherUserDescription": {}, + "verifyOtherDeviceDescription": "நீங்கள் மற்றொரு சாதனத்தைச் சரிபார்க்கும்போது, அந்தச் சாதனங்கள் விசைகளைப் பரிமாறிக்கொள்ளலாம், உங்கள் ஒட்டுமொத்த பாதுகாப்பை அதிகரிக்கும். 💪 நீங்கள் ஒரு சரிபார்ப்பைத் தொடங்கும்போது, இரண்டு சாதனங்களிலும் பயன்பாட்டில் ஒரு பாப்அப் தோன்றும். நீங்கள் ஒருவருக்கொருவர் ஒப்பிட வேண்டிய தொடர்ச்சியான ஈமோசிகள் அல்லது எண்களைக் காண்பீர்கள். நீங்கள் சரிபார்ப்பைத் தொடங்குவதற்கு முன்பு இரண்டு சாதனங்களையும் எளிதில் வைத்திருப்பது நல்லது. 🤳", + "@verifyOtherDeviceDescription": {}, + "canceledKeyVerification": "{sender} ரத்து செய்யப்பட்ட விசை சரிபார்ப்பு", + "@canceledKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "isReadyForKeyVerification": "விசை சரிபார்ப்பிற்கு {sender} தயாராக உள்ளார்", + "@isReadyForKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "requestedKeyVerification": "{sender} கோரப்பட்ட விசை சரிபார்ப்பு", + "@requestedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "transparent": "வெளிப்படையானது", + "@transparent": {}, + "stickers": "ச்டிக்கர்கள்", + "@stickers": {}, + "commandHint_ignore": "கொடுக்கப்பட்ட மேட்ரிக்ச் ஐடியை புறக்கணிக்கவும்", + "@commandHint_ignore": {}, + "unreadChatsInApp": "{appname}: {unread} படிக்காத அரட்டைகள்", + "@unreadChatsInApp": { + "type": "String", + "placeholders": { + "appname": { + "type": "String" + }, + "unread": { + "type": "String" + } + } + }, + "thereAreCountUsersBlocked": "இப்போது {count} பயனர்கள் தடுக்கப்பட்டுள்ளனர்.", + "@thereAreCountUsersBlocked": { + "type": "String", + "count": {} + }, + "restricted": "தடைசெய்யப்பட்டது", + "@restricted": {}, + "moderatorLevel": "{level} - மதிப்பீட்டாளர்", + "@moderatorLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "adminLevel": "{level} - நிர்வாகி", + "@adminLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "changeGeneralChatSettings": "பொது அரட்டை அமைப்புகளை மாற்றவும்", + "@changeGeneralChatSettings": {}, + "inviteOtherUsers": "இந்த அரட்டைக்கு மற்ற பயனர்களை அழைக்கவும்", + "@inviteOtherUsers": {}, + "changeTheChatPermissions": "அரட்டை அனுமதிகளை மாற்றவும்", + "@changeTheChatPermissions": {}, + "changeTheVisibilityOfChatHistory": "அரட்டை வரலாற்றின் தெரிவுநிலையை மாற்றவும்", + "@changeTheVisibilityOfChatHistory": {}, + "changeTheCanonicalRoomAlias": "முக்கிய பொது அரட்டை முகவரியை மாற்றவும்", + "@changeTheCanonicalRoomAlias": {}, + "changeTheDescriptionOfTheGroup": "அரட்டையின் விளக்கத்தை மாற்றவும்", + "@changeTheDescriptionOfTheGroup": {}, + "chatPermissionsDescription": "இந்த அரட்டையில் சில செயல்களுக்கு எந்த ஆற்றல் நிலை தேவை என்பதை வரையறுக்கவும். 0, 50 மற்றும் 100 ஆற்றல் நிலைகள் பொதுவாக பயனர்கள், மதிப்பீட்டாளர்கள் மற்றும் நிர்வாகிகளைக் குறிக்கின்றன, ஆனால் எந்த தரமும் சாத்தியமாகும்.", + "@chatPermissionsDescription": {}, + "updateInstalled": "🎉 புதுப்பிப்பு {version} நிறுவப்பட்டது!", + "@updateInstalled": { + "type": "String", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "changelog": "மாற்றபதிவு", + "@changelog": {}, + "homeserverDescription": "உங்கள் எல்லா தரவுகளும் ஒரு மின்னஞ்சல் வழங்குநரைப் போலவே ஓம்சர்வரில் சேமிக்கப்படுகின்றன. நீங்கள் எந்த ஓம்சர்வரை பயன்படுத்த விரும்புகிறீர்கள் என்பதை நீங்கள் தேர்வு செய்யலாம், அதே நேரத்தில் நீங்கள் எல்லோரிடமும் தொடர்பு கொள்ளலாம். Https://matrix.org இல் மேலும் அறிக.", + "@homeserverDescription": {}, + "calculatingFileSize": "கோப்பு அளவைக் கணக்கிடுகிறது ...", + "@calculatingFileSize": {}, + "compressVideo": "அமைக்கும் வீடியோ ...", + "@compressVideo": {}, + "sendingAttachmentCountOfCount": "{length} இன் இணைப்பு {index}ஐ அனுப்புகிறது...", + "@sendingAttachmentCountOfCount": { + "type": "integer", + "placeholders": { + "index": { + "type": "int" + }, + "length": { + "type": "int" + } + } + }, + "oneOfYourDevicesIsNotVerified": "உங்கள் சாதனங்களில் ஒன்று சரிபார்க்கப்படவில்லை", + "@oneOfYourDevicesIsNotVerified": {}, + "noticeChatBackupDeviceVerification": "குறிப்பு: உங்கள் எல்லா சாதனங்களையும் அரட்டை காப்புப்பிரதியுடன் இணைக்கும்போது, அவை தானாகவே சரிபார்க்கப்படும்.", + "@noticeChatBackupDeviceVerification": {}, + "manageAccount": "கணக்கை நிர்வகிக்கவும்", + "@manageAccount": {}, + "noContactInformationProvided": "சேவையகம் எந்த சரியான தொடர்பு தகவலையும் வழங்காது", + "@noContactInformationProvided": {}, + "contactServerAdmin": "சேவையக நிர்வாகி தொடர்பு", + "@contactServerAdmin": {}, + "contactServerSecurity": "சேவையக பாதுகாப்பைத் தொடர்பு கொள்ளுங்கள்", + "@contactServerSecurity": {}, + "supportPage": "உதவி பக்கம்", + "@supportPage": {}, + "serverInformation": "சேவையக தகவல்:", + "@serverInformation": {}, + "version": "பதிப்பு", + "@version": {}, + "website": "வலைத்தளம்", + "@website": {}, + "compress": "சுருக்க", + "@compress": {}, + "alwaysUse24HourFormat": "தவறு", + "@alwaysUse24HourFormat": { + "description": "Set to true to always display time of day in 24 hour format." + }, + "admin": "நிர்வாகி", + "@admin": { + "type": "String", + "placeholders": {} + }, + "alias": "மாற்றுப்பெயர்", + "@alias": { + "type": "String", + "placeholders": {} + }, + "answeredTheCall": "{senderName} அழைப்புக்கு பதிலளித்தார்", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "commandHint_react": "ஒரு எதிர்வினையாக பதிலை அனுப்பவும்", + "@commandHint_react": { + "type": "String", + "description": "Usage hint for the command /react" + }, + "commandHint_send": "உரையை அனுப்பவும்", + "@commandHint_send": { + "type": "String", + "description": "Usage hint for the command /send" + }, + "containsDisplayName": "காட்சி பெயரைக் கொண்டுள்ளது", + "@containsDisplayName": { + "type": "String", + "placeholders": {} + }, + "removeFromBundle": "இந்த மூட்டையிலிருந்து அகற்றவும்", + "@removeFromBundle": {}, + "pushRules": "தள்ளி விதிகள்", + "@pushRules": { + "type": "String", + "placeholders": {} + }, + "recording": "பதிவு", + "@recording": { + "type": "String", + "placeholders": {} + }, + "redactedBy": "{username} ஆல் திருத்தப்பட்டது", + "@redactedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "directChat": "நேரடி அரட்டை", + "@directChat": {}, + "redactMessage": "திருத்தும் செய்தி", + "@redactMessage": { + "type": "String", + "placeholders": {} + }, + "userAndUserAreTyping": "{username} மற்றும் {username2} தட்டச்சு செய்கின்றன…", + "@userAndUserAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "username2": { + "type": "String" + } + } + }, + "userLeftTheChat": "🚪 {username} அரட்டையை விட்டு வெளியேறினார்", + "@userLeftTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "visibilityOfTheChatHistory": "அரட்டை வரலாற்றின் தெரிவுநிலை", + "@visibilityOfTheChatHistory": { + "type": "String", + "placeholders": {} + }, + "you": "நீங்கள்", + "@you": { + "type": "String", + "placeholders": {} + }, + "unsupportedAndroidVersionLong": "இந்த அம்சத்திற்கு புதிய ஆண்ட்ராய்டு பதிப்பு தேவைப்படுகிறது. புதுப்பிப்புகள் அல்லது பரம்பரை OS ஆதரவை சரிபார்க்கவும்.", + "@unsupportedAndroidVersionLong": {}, + "widgetJitsi": "சிட்சி சந்திக்கிறார்", + "@widgetJitsi": {}, + "signInWithPassword": "கடவுச்சொல்லுடன் உள்நுழைக", + "@signInWithPassword": {}, + "setColorTheme": "வண்ண கருப்பொருள் அமைக்கவும்:", + "@setColorTheme": {}, + "roomUpgradeDescription": "அரட்டை பின்னர் புதிய அறை பதிப்பில் மீண்டும் உருவாக்கப்படும். பங்கேற்பாளர்கள் அனைவருக்கும் புதிய அரட்டைக்கு மாற வேண்டும் என்று அறிவிக்கப்படும். அறை பதிப்புகள் பற்றி மேலும் அறிய https://spec.matrix.org/latest/rooms/", + "@roomUpgradeDescription": {}, + "account": "கணக்கு", + "@account": { + "type": "String", + "placeholders": {} + }, + "groups": "குழுக்கள்", + "@groups": { + "type": "String", + "placeholders": {} + }, + "blockedUsers": "தடுக்கப்பட்ட பயனர்கள்", + "@blockedUsers": {}, + "leaveEmptyToClearStatus": "உங்கள் நிலையை அழிக்க காலியாக விடவும்.", + "@leaveEmptyToClearStatus": {}, + "subspace": "துணை", + "@subspace": {}, + "decline": "வீழ்ச்சி", + "@decline": {}, + "thisDevice": "இந்த சாதனம்:", + "@thisDevice": {}, + "minimumPowerLevel": "{level} என்பது குறைந்தபட்ச ஆற்றல் நிலை.", + "@minimumPowerLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "String" + } + } + }, + "gallery": "கேலரி", + "@gallery": {}, + "files": "கோப்புகள்", + "@files": {}, + "noDatabaseEncryption": "இந்த மேடையில் தரவுத்தள குறியாக்கம் ஆதரிக்கப்படவில்லை", + "@noDatabaseEncryption": {}, + "goToSpace": "விண்வெளிக்குச் செல்லுங்கள்: {space}", + "@goToSpace": { + "type": "String", + "space": {} + }, + "markAsUnread": "படிக்காத எனக் குறிக்கவும்", + "@markAsUnread": {}, + "userLevel": "{level} - பயனர்", + "@userLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "notAnImage": "படக் கோப்பு அல்ல.", + "@notAnImage": {}, + "encryptThisChat": "இந்த அரட்டையை குறியாக்கவும்", + "@encryptThisChat": {}, + "userRole": "பயனர் பங்கு", + "@userRole": {}, + "publicChatAddresses": "பொது அரட்டை முகவரிகள்", + "@publicChatAddresses": {}, + "createNewAddress": "புதிய முகவரியை உருவாக்கவும்", + "@createNewAddress": {}, + "boldText": "தைரியமான உரை", + "@boldText": {}, + "italicText": "சாய்வு உரை", + "@italicText": {}, + "strikeThrough": "ச்ட்ரைகெத்ரோ", + "@strikeThrough": {}, + "pleaseFillOut": "தயவுசெய்து நிரப்பவும்", + "@pleaseFillOut": {}, + "invalidUrl": "தவறான முகவரி", + "@invalidUrl": {}, + "addLink": "இணைப்பைச் சேர்க்கவும்", + "@addLink": {}, + "searchIn": "அரட்டையில் தேடு \"{chat}\" ...", + "@searchIn": { + "type": "String", + "placeholders": { + "chat": { + "type": "String" + } + } + }, + "searchMore": "மேலும் தேடுங்கள் ...", + "@searchMore": {}, + "startedKeyVerification": "{sender} விசை சரிபார்ப்பைத் தொடங்கினார்", + "@startedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "loginWithMatrixId": "மேட்ரிக்ச்-ஐடியுடன் உள்நுழைக", + "@loginWithMatrixId": {}, + "discoverHomeservers": "ஓம்சர்சர்களைக் கண்டறியவும்", + "@discoverHomeservers": {}, + "whatIsAHomeserver": "ஓம்சர்வர் என்றால் என்ன?", + "@whatIsAHomeserver": {}, + "doesNotSeemToBeAValidHomeserver": "இணக்கமான ஓம்சர்வர் என்று தெரியவில்லை. தவறான URL?", + "@doesNotSeemToBeAValidHomeserver": {}, + "countChatsAndCountParticipants": "{chats} அரட்டைகள் மற்றும் {participants} பங்கேற்பாளர்கள்", + "@countChatsAndCountParticipants": { + "type": "String", + "placeholders": { + "chats": { + "type": "int" + }, + "participants": { + "type": "int" + } + } + }, + "noMoreChatsFound": "இனி அரட்டைகள் கிடைக்கவில்லை ...", + "@noMoreChatsFound": {}, + "joinedChats": "இணைந்த அரட்டைகள்", + "@joinedChats": {}, + "spaces": "இடங்கள்", + "@spaces": {}, + "changedTheChatPermissions": "{username} அரட்டை அனுமதிகளை மாற்றியுள்ளார்", + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheGuestAccessRulesTo": "{username} விருந்தினர் அணுகல் விதிகளை மாற்றியது: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheHistoryVisibility": "{username} வரலாற்று தெரிவுநிலையை மாற்றியது", + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "commandHint_join": "கொடுக்கப்பட்ட அறையில் சேரவும்", + "@commandHint_join": { + "type": "String", + "description": "Usage hint for the command /join" + }, + "commandHint_dm": "நேரடி அரட்டையைத் தொடங்கவும்\n குறியாக்கத்தை முடக்க-இல்லை-குறியாக்கத்தைப் பயன்படுத்தவும்", + "@commandHint_dm": { + "type": "String", + "description": "Usage hint for the command /dm" + }, + "commandHint_leave": "இந்த அறையை விட்டு விடுங்கள்", + "@commandHint_leave": { + "type": "String", + "description": "Usage hint for the command /leave" + }, + "toggleMuted": "முடக்கியது", + "@toggleMuted": { + "type": "String", + "placeholders": {} + }, + "unbanUserDescription": "அவர்கள் முயற்சித்தால் பயனர் மீண்டும் அரட்டையை உள்ளிட முடியும்.", + "@unbanUserDescription": {}, + "restoreSessionBody": "ஆப்ஸ் இப்போது உங்கள் அமர்வை காப்புப்பிரதியிலிருந்து மீட்டெடுக்க முயற்சிக்கிறது. {url} இல் டெவலப்பர்களிடம் இந்தப் பிழையைப் புகாரளிக்கவும். பிழை செய்தி: {error}", + "@restoreSessionBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "sendReadReceipts": "வாசிப்பு ரசீதுகளை அனுப்பவும்", + "@sendReadReceipts": {}, + "unableToJoinChat": "அரட்டையில் சேர முடியவில்லை. ஒருவேளை மற்ற கட்சி ஏற்கனவே உரையாடலை மூடியிருக்கலாம்.", + "@unableToJoinChat": {}, + "noGoogleServicesWarning": "ஃபயர்பேச் முகில் செய்தி உங்கள் சாதனத்தில் கிடைக்கவில்லை. இன்னும் புச் அறிவிப்புகளைப் பெற, NTFY ஐ நிறுவ பரிந்துரைக்கிறோம். NTFY அல்லது மற்றொரு ஒருங்கிணைந்த புச் வழங்குநருடன் நீங்கள் தரவு பாதுகாப்பான வழியில் புச் அறிவிப்புகளைப் பெறலாம். நீங்கள் பிளேச்டோரிலிருந்து அல்லது எஃப்-டிராய்டிலிருந்து NTFY ஐ பதிவிறக்கம் செய்யலாம்.", + "@noGoogleServicesWarning": { + "type": "String", + "placeholders": {} + }, + "scanQrCode": "QR குறியீட்டை ச்கேன் செய்யுங்கள்", + "@scanQrCode": {}, + "obtainingLocation": "இருப்பிடத்தைப் பெறுதல்…", + "@obtainingLocation": { + "type": "String", + "placeholders": {} + }, + "offline": "இணையமில்லாமல்", + "@offline": { + "type": "String", + "placeholders": {} + }, + "online": "ஆன்லைனில்", + "@online": { + "type": "String", + "placeholders": {} + }, + "participant": "பங்கேற்பாளர்", + "@participant": { + "type": "String", + "placeholders": {} + }, + "removeDevice": "சாதனத்தை அகற்று", + "@removeDevice": { + "type": "String", + "placeholders": {} + }, + "search": "தேடல்", + "@search": { + "type": "String", + "placeholders": {} + }, + "security": "பாதுகாப்பு", + "@security": { + "type": "String", + "placeholders": {} + }, + "sendFile": "கோப்பு அனுப்பவும்", + "@sendFile": { + "type": "String", + "placeholders": {} + }, + "setCustomPermissionLevel": "தனிப்பயன் இசைவு அளவை அமைக்கவும்", + "@setCustomPermissionLevel": {}, + "setPermissionsLevelDescription": "தயவுசெய்து கீழே ஒரு முன் வரையறுக்கப்பட்ட பாத்திரத்தைத் தேர்வுசெய்க அல்லது 0 மற்றும் 100 க்கு இடையில் தனிப்பயன் இசைவு நிலையை உள்ளிடவும்.", + "@setPermissionsLevelDescription": {}, + "ignoreUser": "பயனரை புறக்கணிக்கவும்", + "@ignoreUser": {}, + "normalUser": "சாதாரண பயனர்", + "@normalUser": {}, + "commandHint_roomupgrade": "கொடுக்கப்பட்ட அறை பதிப்பிற்கு இந்த அறையை மேம்படுத்தவும்", + "@commandHint_roomupgrade": {}, + "checkList": "சரிபார்ப்பு பட்டியல்", + "@checkList": {}, + "countInvited": "{count} அழைக்கப்பட்டது", + "@countInvited": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "synchronizingPleaseWaitCounter": " ஒத்திசைத்தல்… ({percentage}%)", + "@synchronizingPleaseWaitCounter": { + "type": "String", + "placeholders": { + "percentage": { + "type": "String" + } + } + }, + "previous": "முந்தைய", + "@previous": {}, + "otherPartyNotLoggedIn": "மற்ற கட்சி தற்போது உள்நுழைந்திருக்கவில்லை, எனவே செய்திகளைப் பெற முடியாது!", + "@otherPartyNotLoggedIn": {}, + "appWantsToUseForLogin": "உள்நுழைய '{server}' ஐப் பயன்படுத்தவும்", + "@appWantsToUseForLogin": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "appWantsToUseForLoginDescription": "உங்களைப் பற்றிய தகவல்களைப் பகிர பயன்பாடு மற்றும் வலைத்தளத்தை இதன்மூலம் அனுமதிக்கிறீர்கள்.", + "@appWantsToUseForLoginDescription": {}, + "open": "திற", + "@open": {}, + "waitingForServer": "சேவையகத்திற்காக காத்திருக்கிறது ...", + "@waitingForServer": {}, + "appIntroduction": "வெவ்வேறு தூதர்களில் உங்கள் நண்பர்களுடன் அரட்டையடிக்க உங்களை பஞ்சுபோன்றது உங்களை அனுமதிக்கிறது. Https://matrix.org இல் மேலும் அறிக அல்லது *தொடரவும் *தட்டவும்.", + "@appIntroduction": {}, + "newChatRequest": "அரட்டை கோரிக்கை", + "@newChatRequest": {}, + "contentNotificationSettings": "உள்ளடக்க அறிவிப்பு அமைப்புகள்", + "@contentNotificationSettings": {}, + "generalNotificationSettings": "பொது அறிவிப்பு அமைப்புகள்", + "@generalNotificationSettings": {}, + "roomNotificationSettings": "அறை அறிவிப்பு அமைப்புகள்", + "@roomNotificationSettings": {}, + "userSpecificNotificationSettings": "பயனர் குறிப்பிட்ட அறிவிப்பு அமைப்புகள்", + "@userSpecificNotificationSettings": {}, + "otherNotificationSettings": "பிற அறிவிப்பு அமைப்புகள்", + "@otherNotificationSettings": {}, + "notificationRuleContainsUserName": "பயனர் பெயரைக் கொண்டுள்ளது", + "@notificationRuleContainsUserName": {}, + "notificationRuleContainsUserNameDescription": "ஒரு செய்தியில் அவற்றின் பயனர்பெயர் இருக்கும்போது பயனருக்கு அறிவிக்கிறது.", + "@notificationRuleContainsUserNameDescription": {}, + "notificationRuleMaster": "அனைத்து அறிவிப்புகளையும் முடக்குகிறது", + "@notificationRuleMaster": {}, + "notificationRuleMasterDescription": "மற்ற எல்லா விதிகளையும் மீறி அனைத்து அறிவிப்புகளையும் முடக்குகிறது.", + "@notificationRuleMasterDescription": {}, + "notificationRuleSuppressNotices": "தானியங்கு செய்திகளை அடக்கவும்", + "@notificationRuleSuppressNotices": {}, + "notificationRuleSuppressNoticesDescription": "போட்ச் போன்ற தானியங்கி வாடிக்கையாளர்களிடமிருந்து அறிவிப்புகளை அடக்குகிறது.", + "@notificationRuleSuppressNoticesDescription": {}, + "notificationRuleInviteForMe": "எனக்கு அழைக்கவும்", + "@notificationRuleInviteForMe": {}, + "notificationRuleInviteForMeDescription": "ஒரு அறைக்கு அழைக்கப்படும்போது பயனருக்கு அறிவிக்கிறது.", + "@notificationRuleInviteForMeDescription": {}, + "notificationRuleMemberEvent": "உறுப்பினர் நிகழ்வு", + "@notificationRuleMemberEvent": {}, + "notificationRuleMemberEventDescription": "உறுப்பினர் நிகழ்வுகளுக்கான அறிவிப்புகளை அடக்குகிறது.", + "@notificationRuleMemberEventDescription": {}, + "notificationRuleIsUserMention": "பயனர் குறிப்பு", + "@notificationRuleIsUserMention": {}, + "notificationRuleIsUserMentionDescription": "ஒரு செய்தியில் நேரடியாக குறிப்பிடப்படும்போது பயனருக்கு அறிவிக்கிறது.", + "@notificationRuleIsUserMentionDescription": {}, + "notificationRuleContainsDisplayName": "காட்சி பெயரைக் கொண்டுள்ளது", + "@notificationRuleContainsDisplayName": {}, + "notificationRuleContainsDisplayNameDescription": "ஒரு செய்தியில் அவற்றின் காட்சி பெயர் இருக்கும்போது பயனருக்கு அறிவிக்கிறது.", + "@notificationRuleContainsDisplayNameDescription": {}, + "notificationRuleIsRoomMention": "அறை குறிப்பு", + "@notificationRuleIsRoomMention": {}, + "notificationRuleIsRoomMentionDescription": "ஒரு அறை குறிப்பு இருக்கும்போது பயனருக்கு அறிவிக்கிறது.", + "@notificationRuleIsRoomMentionDescription": {}, + "notificationRuleRoomnotif": "அறை அறிவிப்பு", + "@notificationRuleRoomnotif": {}, + "notificationRuleRoomnotifDescription": "ஒரு செய்தியில் '@ROOM' இருக்கும்போது பயனருக்கு அறிவிக்கிறது.", + "@notificationRuleRoomnotifDescription": {}, + "notificationRuleTombstone": "கல்லறை", + "@notificationRuleTombstone": {}, + "notificationRuleTombstoneDescription": "அறை செயலிழக்கச் செய்திகளைப் பற்றி பயனருக்கு அறிவிக்கிறது.", + "@notificationRuleTombstoneDescription": {}, + "notificationRuleReaction": "எதிர்வினை", + "@notificationRuleReaction": {}, + "notificationRuleReactionDescription": "எதிர்வினைகளுக்கான அறிவிப்புகளை அடக்குகிறது.", + "@notificationRuleReactionDescription": {}, + "notificationRuleRoomServerAcl": "அறை சேவையகம் ACL", + "@notificationRuleRoomServerAcl": {}, + "notificationRuleRoomServerAclDescription": "அறை சேவையக அணுகல் கட்டுப்பாட்டு பட்டியல்களுக்கான (ACL) அறிவிப்புகளை அடக்குகிறது.", + "@notificationRuleRoomServerAclDescription": {}, + "notificationRuleSuppressEdits": "திருத்தங்களை அடக்கவும்", + "@notificationRuleSuppressEdits": {}, + "notificationRuleSuppressEditsDescription": "திருத்தப்பட்ட செய்திகளுக்கான அறிவிப்புகளை அடக்குகிறது.", + "@notificationRuleSuppressEditsDescription": {}, + "notificationRuleCall": "அழை", + "@notificationRuleCall": {}, + "notificationRuleCallDescription": "அழைப்புகள் பற்றி பயனருக்கு அறிவிக்கிறது.", + "@notificationRuleCallDescription": {}, + "notificationRuleEncryptedRoomOneToOne": "மறைகுறியாக்கப்பட்ட அறை ஒன்றுக்கு ஒன்று", + "@notificationRuleEncryptedRoomOneToOne": {}, + "notificationRuleEncryptedRoomOneToOneDescription": "மறைகுறியாக்கப்பட்ட ஒன்றுக்கு ஒன்று அறைகளில் செய்திகளைப் பற்றி பயனருக்கு அறிவிக்கிறது.", + "@notificationRuleEncryptedRoomOneToOneDescription": {}, + "notificationRuleRoomOneToOne": "அறை ஒன்று", + "@notificationRuleRoomOneToOne": {}, + "notificationRuleRoomOneToOneDescription": "ஒருவருக்கு ஒன்று அறைகளில் செய்திகளைப் பற்றி பயனருக்கு அறிவிக்கிறது.", + "@notificationRuleRoomOneToOneDescription": {}, + "notificationRuleMessage": "செய்தி", + "@notificationRuleMessage": {}, + "notificationRuleMessageDescription": "பொதுவான செய்திகளைப் பற்றி பயனருக்கு அறிவிக்கிறது.", + "@notificationRuleMessageDescription": {}, + "notificationRuleEncrypted": "குறியாக்கப்பட்டது", + "@notificationRuleEncrypted": {}, + "notificationRuleEncryptedDescription": "மறைகுறியாக்கப்பட்ட அறைகளில் செய்திகளைப் பற்றி பயனருக்கு அறிவிக்கிறது.", + "@notificationRuleEncryptedDescription": {}, + "notificationRuleJitsi": "சியோட்ச்", + "@notificationRuleJitsi": {}, + "notificationRuleJitsiDescription": "சிட்சி விட்செட் நிகழ்வுகளைப் பற்றி பயனருக்கு அறிவிக்கிறது.", + "@notificationRuleJitsiDescription": {}, + "notificationRuleServerAcl": "சேவையக ACL நிகழ்வுகளை அடக்கவும்", + "@notificationRuleServerAcl": {}, + "notificationRuleServerAclDescription": "சேவையக ACL நிகழ்வுகளுக்கான அறிவிப்புகளை அடக்குகிறது.", + "@notificationRuleServerAclDescription": {}, + "unknownPushRule": "அறியப்படாத புச் விதி '{rule}'", + "@unknownPushRule": { + "type": "String", + "placeholders": { + "rule": { + "type": "String" + } + } + }, + "sentVoiceMessage": "🎙️{duration} - {sender} இலிருந்து குரல் செய்தி", + "@sentVoiceMessage": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "duration": { + "type": "String" + } + } + }, + "deletePushRuleCanNotBeUndone": "இந்த அறிவிப்பு அமைப்பை நீங்கள் நீக்கினால், இதை செயல்தவிர்க்க முடியாது.", + "@deletePushRuleCanNotBeUndone": {}, + "more": "மேலும்", + "@more": {}, + "shareKeysWith": "விசைகளைப் பகிரவும் ...", + "@shareKeysWith": {}, + "shareKeysWithDescription": "மறைகுறியாக்கப்பட்ட அரட்டைகளில் உங்கள் செய்திகளுடன் படிக்க எந்த சாதனங்களை நம்ப வேண்டும்?", + "@shareKeysWithDescription": {}, + "allDevices": "அனைத்து சாதனங்களும்", + "@allDevices": {}, + "crossVerifiedDevicesIfEnabled": "இயக்கப்பட்டால் சரிபார்க்கப்பட்ட சாதனங்களை குறுக்கு", + "@crossVerifiedDevicesIfEnabled": {}, + "crossVerifiedDevices": "குறுக்கு சரிபார்க்கப்பட்ட சாதனங்கள்", + "@crossVerifiedDevices": {}, + "verifiedDevicesOnly": "சரிபார்க்கப்பட்ட சாதனங்கள் மட்டுமே", + "@verifiedDevicesOnly": {}, + "takeAPhoto": "புகைப்படம் எடுக்கவும்", + "@takeAPhoto": {}, + "recordAVideo": "வீடியோவைப் பதிவுசெய்க", + "@recordAVideo": {}, + "optionalMessage": "(விரும்பினால்) செய்தி ...", + "@optionalMessage": {}, + "notSupportedOnThisDevice": "இந்த சாதனத்தில் ஆதரிக்கப்படவில்லை", + "@notSupportedOnThisDevice": {}, + "enterNewChat": "புதிய அரட்டையை உள்ளிடவும்", + "@enterNewChat": {}, + "approve": "ஒப்புதல்", + "@approve": {}, + "youHaveKnocked": "நீங்கள் தட்டிவிட்டீர்கள்", + "@youHaveKnocked": {}, + "pleaseWaitUntilInvited": "அறையில் இருந்து யாராவது உங்களை அழைக்கும் வரை தயவுசெய்து இப்போது காத்திருங்கள்.", + "@pleaseWaitUntilInvited": {}, + "commandHint_logout": "உங்கள் தற்போதைய சாதனத்தை பதிவு செய்க", + "@commandHint_logout": {}, + "commandHint_logoutall": "அனைத்து செயலில் உள்ள சாதனங்களையும் அனுப்புகிறது", + "@commandHint_logoutall": {}, + "displayNavigationRail": "மொபைலில் வழிசெலுத்தல் ரெயிலைக் காட்டு", + "@displayNavigationRail": {}, + "customReaction": "தனிப்பயன் எதிர்வினை", + "@customReaction": {}, + "moreEvents": "மேலும் நிகழ்வுகள்", + "@moreEvents": {}, + "declineInvitation": "அழைப்பை நிராகரிக்கவும்", + "@declineInvitation": {} +} diff --git a/lib/l10n/intl_te.arb b/lib/l10n/intl_te.arb new file mode 100644 index 0000000..2128981 --- /dev/null +++ b/lib/l10n/intl_te.arb @@ -0,0 +1,15 @@ +{ + "alwaysUse24HourFormat": "", + "@alwaysUse24HourFormat": { + "description": "Set to true to always display time of day in 24 hour format." + }, + "notAnImage": "ఇమేజ్ ఫైల్ కాదు.", + "@notAnImage": {}, + "repeatPassword": "పాస్‌వర్డ్‌ను పునరావృతం చేయండి", + "@repeatPassword": {}, + "remove": "తొలగించు", + "@remove": { + "type": "String", + "placeholders": {} + } +} diff --git a/lib/l10n/intl_th.arb b/lib/l10n/intl_th.arb new file mode 100644 index 0000000..1d4371f --- /dev/null +++ b/lib/l10n/intl_th.arb @@ -0,0 +1,2152 @@ +{ + "hugContent": "{senderName} กอดคุณ", + "@hugContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "commandHint_cuddle": "ส่งเคล้าเคลียให้", + "@commandHint_cuddle": {}, + "admin": "แอดมิน", + "@admin": { + "type": "String", + "placeholders": {} + }, + "supposedMxid": "อันนี้ควรเป็น {mxid}", + "@supposedMxid": { + "type": "String", + "placeholders": { + "mxid": { + "type": "String" + } + } + }, + "askSSSSSign": "เพื่อให้สามารถลงนามบุคคลอื่นได้ โปรดป้อนรหัสผ่านร้านค้าที่ปลอดภัยหรือรหัสกู้คืนของคุณ", + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "remove": "ลบออก", + "@remove": { + "type": "String", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "ผู้ใช้ทั่วไปได้รับอนุญาตให้เข้าร่วมหรือไม่", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "sendOnEnter": "ส่งเมื่อกด enter", + "@sendOnEnter": {}, + "answeredTheCall": "{senderName} รับสายแล้ว", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "alias": "นามแฝง", + "@alias": { + "type": "String", + "placeholders": {} + }, + "all": "ทั้งหมด", + "@all": { + "type": "String", + "placeholders": {} + }, + "badServerLoginTypesException": "โฮมเซิร์ฟเวอร์รองรับประเภทการเข้าสู่ระบบ:\n{serverVersions}\nแต่แอปนี้รองรับเฉพาะ:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "edit": "แก้ไข", + "@edit": { + "type": "String", + "placeholders": {} + }, + "copy": "คัดลอก", + "@copy": { + "type": "String", + "placeholders": {} + }, + "importFromZipFile": "นำเข้าจากไฟล์ .zip", + "@importFromZipFile": {}, + "autoplayImages": "เล่นสติ๊กเกอร์และอิโมจิแบบเคลื่อนไหวโดยอัตโนมัติ", + "@autoplayImages": { + "type": "String", + "placeholder": {} + }, + "help": "ช่วยเหลือ", + "@help": { + "type": "String", + "placeholders": {} + }, + "chatDetails": "รายละเอียดแชท", + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "repeatPassword": "ใส่รหัสผ่านอีกรอบ", + "@repeatPassword": {}, + "delete": "ลบออก", + "@delete": { + "type": "String", + "placeholders": {} + }, + "acceptedTheInvitation": "👍 {username} ได้รับการชวนแล้ว", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "send": "ส่ง", + "@send": { + "type": "String", + "placeholders": {} + }, + "exportEmotePack": "ส่งอิโมจิแพ็คออกเป็นไฟล์ .zip", + "@exportEmotePack": {}, + "account": "บัญชี", + "@account": { + "type": "String", + "placeholders": {} + }, + "chat": "แชท", + "@chat": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "คุณแน่ใจไหม?", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "allChats": "แชททั้งหมด", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "addToSpace": "เพิ่มไปที่ space", + "@addToSpace": {}, + "about": "เกี่ยวกับ", + "@about": { + "type": "String", + "placeholders": {} + }, + "activatedEndToEndEncryption": "🔐 {username} เปิดใช้งาน end to end encryption", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "String", + "placeholders": {} + }, + "googlyEyesContent": "{senderName} ส่งตากวนๆให้คุณ", + "@googlyEyesContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "addChatDescription": "เพิ่มคำอธิบายการแชท", + "@addChatDescription": {}, + "appLock": "ล็อคแอป", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "sendTypingNotifications": "ส่งการแจ้งเตือนการพิมพ์", + "@sendTypingNotifications": {}, + "importEmojis": "นำเข้าอ๊โมจิ", + "@importEmojis": {}, + "confirmMatrixId": "กรุณายืนยัน Matrix ID ของคุณเพื่อลบบัญชีของคุณ", + "@confirmMatrixId": {}, + "notAnImage": "ไม่ใช่ไฟล์รูปภาพ", + "@notAnImage": {}, + "areYouSureYouWantToLogout": "คุณแน่ใจว่าคุณต้องการที่จะออกจากระบบ?", + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "cuddleContent": "{senderName} เคล้าเคลียคุณ", + "@cuddleContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "askVerificationRequest": "ยอมรับคำขอยืนยันนี้จาก {username} หรือไม่", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "addEmail": "เพิ่มอีเมล", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "commandHint_hug": "ส่งกอดให้", + "@commandHint_hug": {}, + "replace": "แทนที่", + "@replace": {}, + "archive": "คลังเก็บ", + "@archive": { + "type": "String", + "placeholders": {} + }, + "accept": "ยอมรับ", + "@accept": { + "type": "String", + "placeholders": {} + }, + "commandHint_googly": "ส่งสายตากวนๆ มาให้หน่อย", + "@commandHint_googly": {}, + "pin": "ปักหมุด", + "@pin": { + "type": "String", + "placeholders": {} + }, + "importNow": "นำเข้าเลย", + "@importNow": {}, + "anyoneCanJoin": "ใครๆ ก็สามารถเข้าร่วมได้", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "@showPassword": { + "type": "String", + "placeholders": {} + }, + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "@passphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "@pleaseEnterYourPassword": { + "type": "String", + "placeholders": {} + }, + "@theyMatch": { + "type": "String", + "placeholders": {} + }, + "@connect": { + "type": "String", + "placeholders": {} + }, + "@jumpToLastReadMessage": {}, + "@allRooms": { + "type": "String", + "placeholders": {} + }, + "@obtainingLocation": { + "type": "String", + "placeholders": {} + }, + "@chats": { + "type": "String", + "placeholders": {} + }, + "@widgetVideo": {}, + "@dismiss": {}, + "@unknownDevice": { + "type": "String", + "placeholders": {} + }, + "@emoteShortcode": { + "type": "String", + "placeholders": {} + }, + "@noEncryptionForPublicRooms": { + "type": "String", + "placeholders": {} + }, + "@reportErrorDescription": {}, + "@directChats": { + "type": "String", + "placeholders": {} + }, + "@setPermissionsLevel": { + "type": "String", + "placeholders": {} + }, + "@inviteContactToGroup": { + "type": "String", + "placeholders": { + "groupName": { + "type": "String" + } + } + }, + "@addAccount": {}, + "@close": { + "type": "String", + "placeholders": {} + }, + "@configureChat": { + "type": "String", + "placeholders": {} + }, + "@chatHasBeenAddedToThisSpace": {}, + "@reply": { + "type": "String", + "placeholders": {} + }, + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "@removeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "@unsupportedAndroidVersion": {}, + "@device": { + "type": "String", + "placeholders": {} + }, + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "@commandHint_html": { + "type": "String", + "description": "Usage hint for the command /html" + }, + "@widgetJitsi": {}, + "@youAreNoLongerParticipatingInThisChat": { + "type": "String", + "placeholders": {} + }, + "@encryption": { + "type": "String", + "placeholders": {} + }, + "@messageType": {}, + "@indexedDbErrorLong": {}, + "@oneClientLoggedOut": {}, + "@toggleMuted": { + "type": "String", + "placeholders": {} + }, + "@unsupportedAndroidVersionLong": {}, + "@kicked": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "@title": { + "description": "Title for the application", + "type": "String", + "placeholders": {} + }, + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@verifySuccess": { + "type": "String", + "placeholders": {} + }, + "@sendFile": { + "type": "String", + "placeholders": {} + }, + "@newVerificationRequest": { + "type": "String", + "placeholders": {} + }, + "@startFirstChat": {}, + "@callingAccount": {}, + "@requestPermission": { + "type": "String", + "placeholders": {} + }, + "@sentAPicture": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@invited": { + "type": "String", + "placeholders": {} + }, + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "@setColorTheme": {}, + "@nextAccount": {}, + "@commandHint_create": { + "type": "String", + "description": "Usage hint for the command /create" + }, + "@singlesignon": { + "type": "String", + "placeholders": {} + }, + "@warning": { + "type": "String", + "placeholders": {} + }, + "@password": { + "type": "String", + "placeholders": {} + }, + "@allSpaces": {}, + "@editDisplayname": { + "type": "String", + "placeholders": {} + }, + "@user": {}, + "@roomVersion": { + "type": "String", + "placeholders": {} + }, + "@sentAFile": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@videoCall": { + "type": "String", + "placeholders": {} + }, + "@youAcceptedTheInvitation": {}, + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "@noMatrixServer": { + "type": "String", + "placeholders": { + "server1": { + "type": "String" + }, + "server2": { + "type": "String" + } + } + }, + "@userAndOthersAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "@youInvitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "@userIsTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@openAppToReadMessages": { + "type": "String", + "placeholders": {} + }, + "@sentAVideo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@banUserDescription": {}, + "@inviteContact": { + "type": "String", + "placeholders": {} + }, + "@widgetEtherpad": {}, + "@waitingPartnerAcceptRequest": { + "type": "String", + "placeholders": {} + }, + "@writeAMessage": { + "type": "String", + "placeholders": {} + }, + "@changeTheme": { + "type": "String", + "placeholders": {} + }, + "@id": { + "type": "String", + "placeholders": {} + }, + "@removeDevicesDescription": {}, + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@separateChatTypes": { + "type": "String", + "placeholders": {} + }, + "@tryAgain": {}, + "@blocked": { + "type": "String", + "placeholders": {} + }, + "@youKickedAndBanned": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "@removeDevice": { + "type": "String", + "placeholders": {} + }, + "@unbanUserDescription": {}, + "@userAndUserAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "username2": { + "type": "String" + } + } + }, + "@pleaseClickOnLink": { + "type": "String", + "placeholders": {} + }, + "@saveFile": { + "type": "String", + "placeholders": {} + }, + "@pickImage": { + "type": "String", + "placeholders": {} + }, + "@youRejectedTheInvitation": {}, + "@otherCallingPermissions": {}, + "@messagesStyle": {}, + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@invitedUsersOnly": { + "type": "String", + "placeholders": {} + }, + "@link": {}, + "@widgetUrlError": {}, + "@emailOrUsername": {}, + "@newSpaceDescription": {}, + "@chatDescription": {}, + "@callingAccountDetails": {}, + "@next": { + "type": "String", + "placeholders": {} + }, + "@pleaseFollowInstructionsOnWeb": { + "type": "String", + "placeholders": {} + }, + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "@editRoomAliases": { + "type": "String", + "placeholders": {} + }, + "@enterSpace": {}, + "@encryptThisChat": {}, + "@fileName": { + "type": "String", + "placeholders": {} + }, + "@unavailable": { + "type": "String", + "placeholders": {} + }, + "@previousAccount": {}, + "@publicRooms": { + "type": "String", + "placeholders": {} + }, + "@fromTheInvitation": { + "type": "String", + "placeholders": {} + }, + "@sendMessages": { + "type": "String", + "placeholders": {} + }, + "@incorrectPassphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "@emoteWarnNeedToPick": { + "type": "String", + "placeholders": {} + }, + "@reopenChat": {}, + "@pleaseEnterRecoveryKey": {}, + "@create": { + "type": "String", + "placeholders": {} + }, + "@toggleFavorite": { + "type": "String", + "placeholders": {} + }, + "@no": { + "type": "String", + "placeholders": {} + }, + "@widgetNameError": {}, + "@inoffensive": { + "type": "String", + "placeholders": {} + }, + "@unpin": { + "type": "String", + "placeholders": {} + }, + "@addToBundle": {}, + "@reportMessage": { + "type": "String", + "placeholders": {} + }, + "@spaceIsPublic": { + "type": "String", + "placeholders": {} + }, + "@addWidget": {}, + "@removeAllOtherDevices": { + "type": "String", + "placeholders": {} + }, + "@unblockDevice": { + "type": "String", + "placeholders": {} + }, + "@countFiles": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@noKeyForThisMessage": {}, + "@enableEncryptionWarning": { + "type": "String", + "placeholders": {} + }, + "@inviteText": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "link": { + "type": "String" + } + } + }, + "@shareLocation": { + "type": "String", + "placeholders": {} + }, + "@reason": { + "type": "String", + "placeholders": {} + }, + "@commandHint_markasgroup": {}, + "@errorObtainingLocation": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@hydrateTor": {}, + "@pushNotificationsNotAvailable": {}, + "@passwordRecovery": { + "type": "String", + "placeholders": {} + }, + "@storeInAppleKeyChain": {}, + "@replaceRoomWithNewerVersion": { + "type": "String", + "placeholders": {} + }, + "@hydrate": {}, + "@invalidServerName": {}, + "@chatPermissions": {}, + "@voiceMessage": { + "type": "String", + "placeholders": {} + }, + "@wipeChatBackup": { + "type": "String", + "placeholders": {} + }, + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "@sender": {}, + "@storeInAndroidKeystore": {}, + "@hideRedactedEvents": { + "type": "String", + "placeholders": {} + }, + "@online": { + "type": "String", + "placeholders": {} + }, + "@signInWithPassword": {}, + "@ignoredUsers": { + "type": "String", + "placeholders": {} + }, + "@lastActiveAgo": { + "type": "String", + "placeholders": { + "localizedTimeShort": { + "type": "String" + } + } + }, + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "@weSentYouAnEmail": { + "type": "String", + "placeholders": {} + }, + "@offensive": { + "type": "String", + "placeholders": {} + }, + "@needPantalaimonWarning": { + "type": "String", + "placeholders": {} + }, + "@makeAdminDescription": {}, + "@loadMore": { + "type": "String", + "placeholders": {} + }, + "@noEmotesFound": { + "type": "String", + "placeholders": {} + }, + "@synchronizingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "@transferFromAnotherDevice": { + "type": "String", + "placeholders": {} + }, + "@passwordHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "@pushRules": { + "type": "String", + "placeholders": {} + }, + "@goToTheNewRoom": { + "type": "String", + "placeholders": {} + }, + "@commandHint_clearcache": { + "type": "String", + "description": "Usage hint for the command /clearcache" + }, + "@loadingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "@saveKeyManuallyDescription": {}, + "@none": { + "type": "String", + "placeholders": {} + }, + "@editBundlesForAccount": {}, + "@enableEncryption": { + "type": "String", + "placeholders": {} + }, + "@whyIsThisMessageEncrypted": {}, + "@unreadChats": { + "type": "String", + "placeholders": { + "unreadCount": { + "type": "int" + } + } + }, + "@rejectedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@setChatDescription": {}, + "@userLeftTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@spaceName": { + "type": "String", + "placeholders": {} + }, + "@toggleUnread": { + "type": "String", + "placeholders": {} + }, + "@or": { + "type": "String", + "placeholders": {} + }, + "@dehydrateWarning": {}, + "@sendOriginal": { + "type": "String", + "placeholders": {} + }, + "@noOtherDevicesFound": {}, + "@whoIsAllowedToJoinThisGroup": { + "type": "String", + "placeholders": {} + }, + "@emptyChat": { + "type": "String", + "placeholders": {} + }, + "@seenByUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@storeSecurlyOnThisDevice": {}, + "@yourChatBackupHasBeenSetUp": {}, + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "@redactedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@submit": { + "type": "String", + "placeholders": {} + }, + "@videoCallsBetaWarning": {}, + "@unmuteChat": { + "type": "String", + "placeholders": {} + }, + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@redactedAnEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@compareEmojiMatch": { + "type": "String", + "placeholders": {} + }, + "@participant": { + "type": "String", + "placeholders": {} + }, + "@logInTo": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "@yes": { + "type": "String", + "placeholders": {} + }, + "@containsDisplayName": { + "type": "String", + "placeholders": {} + }, + "@signInWith": { + "type": "String", + "placeholders": { + "provider": { + "type": "String" + } + } + }, + "@username": { + "type": "String", + "placeholders": {} + }, + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@fileIsTooBigForServer": {}, + "@homeserver": {}, + "@people": { + "type": "String", + "placeholders": {} + }, + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "@leftTheChat": { + "type": "String", + "placeholders": {} + }, + "@verified": { + "type": "String", + "placeholders": {} + }, + "@setStatus": { + "type": "String", + "placeholders": {} + }, + "@groupWith": { + "type": "String", + "placeholders": { + "displayname": { + "type": "String" + } + } + }, + "@callingPermissions": {}, + "@newMessageInFluffyChat": { + "type": "String", + "placeholders": {} + }, + "@readUpToHere": {}, + "@start": {}, + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "@deviceId": { + "type": "String", + "placeholders": {} + }, + "@register": { + "type": "String", + "placeholders": {} + }, + "@unlockOldMessages": {}, + "@identity": { + "type": "String", + "placeholders": {} + }, + "@numChats": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "@ignore": { + "type": "String", + "placeholders": {} + }, + "@recording": { + "type": "String", + "placeholders": {} + }, + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@moderator": { + "type": "String", + "placeholders": {} + }, + "@optionalRedactReason": {}, + "@waitingPartnerEmoji": { + "type": "String", + "placeholders": {} + }, + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "@tryToSendAgain": { + "type": "String", + "placeholders": {} + }, + "@guestsCanJoin": { + "type": "String", + "placeholders": {} + }, + "@ok": { + "type": "String", + "placeholders": {} + }, + "@copyToClipboard": { + "type": "String", + "placeholders": {} + }, + "@dehydrate": {}, + "@locationPermissionDeniedNotice": { + "type": "String", + "placeholders": {} + }, + "@hasWithdrawnTheInvitationFor": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "@visibleForAllParticipants": { + "type": "String", + "placeholders": {} + }, + "@noRoomsFound": { + "type": "String", + "placeholders": {} + }, + "@banned": { + "type": "String", + "placeholders": {} + }, + "@sendAsText": { + "type": "String" + }, + "@inviteForMe": { + "type": "String", + "placeholders": {} + }, + "@archiveRoomDescription": {}, + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "@sendSticker": { + "type": "String", + "placeholders": {} + }, + "@switchToAccount": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "@commandInvalid": { + "type": "String" + }, + "@setAsCanonicalAlias": { + "type": "String", + "placeholders": {} + }, + "@whyDoYouWantToReportThis": { + "type": "String", + "placeholders": {} + }, + "@locationDisabledNotice": { + "type": "String", + "placeholders": {} + }, + "@placeCall": {}, + "@removedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@newChat": { + "type": "String", + "placeholders": {} + }, + "@notifications": { + "type": "String", + "placeholders": {} + }, + "@commandHint_plain": { + "type": "String", + "description": "Usage hint for the command /plain" + }, + "@emoteSettings": { + "type": "String", + "placeholders": {} + }, + "@experimentalVideoCalls": {}, + "@openCamera": { + "type": "String", + "placeholders": {} + }, + "@pleaseEnterRecoveryKeyDescription": {}, + "@guestsAreForbidden": { + "type": "String", + "placeholders": {} + }, + "@mention": { + "type": "String", + "placeholders": {} + }, + "@openInMaps": { + "type": "String", + "placeholders": {} + }, + "@withTheseAddressesRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "@inviteContactToGroupQuestion": {}, + "@emoteExists": { + "type": "String", + "placeholders": {} + }, + "@redactedByBecause": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "reason": { + "type": "String" + } + } + }, + "@isTyping": { + "type": "String", + "placeholders": {} + }, + "@youHaveWithdrawnTheInvitationFor": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "@group": { + "type": "String", + "placeholders": {} + }, + "@leave": { + "type": "String", + "placeholders": {} + }, + "@skip": { + "type": "String", + "placeholders": {} + }, + "@appearOnTopDetails": {}, + "@roomHasBeenUpgraded": { + "type": "String", + "placeholders": {} + }, + "@enterRoom": {}, + "@enableEmotesGlobally": { + "type": "String", + "placeholders": {} + }, + "@pleaseChooseAPasscode": { + "type": "String", + "placeholders": {} + }, + "@noPasswordRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@reportUser": {}, + "@sharedTheLocation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@commandHint_send": { + "type": "String", + "description": "Usage hint for the command /send" + }, + "@onlineKeyBackupEnabled": { + "type": "String", + "placeholders": {} + }, + "@unbannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "@confirmEventUnpin": {}, + "@badServerVersionsException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "@youInvitedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "@kickedAndBanned": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "@noConnectionToTheServer": { + "type": "String", + "placeholders": {} + }, + "@fileHasBeenSavedAt": { + "type": "String", + "placeholders": { + "path": { + "type": "String" + } + } + }, + "@license": { + "type": "String", + "placeholders": {} + }, + "@unbanFromChat": { + "type": "String", + "placeholders": {} + }, + "@commandMissing": { + "type": "String", + "placeholders": { + "command": { + "type": "String" + } + }, + "description": "State that {command} is not a valid /command." + }, + "@redactMessageDescription": {}, + "@rejoin": { + "type": "String", + "placeholders": {} + }, + "@recoveryKey": {}, + "@redactMessage": { + "type": "String", + "placeholders": {} + }, + "@forward": { + "type": "String", + "placeholders": {} + }, + "@commandHint_discardsession": { + "type": "String", + "description": "Usage hint for the command /discardsession" + }, + "@invalidInput": {}, + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "@hideUnknownEvents": { + "type": "String", + "placeholders": {} + }, + "@dehydrateTorLong": {}, + "@yourPublicKey": { + "type": "String", + "placeholders": {} + }, + "@tooManyRequestsWarning": { + "type": "String", + "placeholders": {} + }, + "@invitedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "@kickFromChat": { + "type": "String", + "placeholders": {} + }, + "@commandHint_myroomnick": { + "type": "String", + "description": "Usage hint for the command /myroomnick" + }, + "@offline": { + "type": "String", + "placeholders": {} + }, + "@noPermission": { + "type": "String", + "placeholders": {} + }, + "@doNotShowAgain": {}, + "@report": {}, + "@status": { + "type": "String", + "placeholders": {} + }, + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "@groupIsPublic": { + "type": "String", + "placeholders": {} + }, + "@verifyStart": { + "type": "String", + "placeholders": {} + }, + "@memberChanges": { + "type": "String", + "placeholders": {} + }, + "@joinRoom": { + "type": "String", + "placeholders": {} + }, + "@unverified": {}, + "@howOffensiveIsThisContent": { + "type": "String", + "placeholders": {} + }, + "@serverRequiresEmail": {}, + "@hideUnimportantStateEvents": {}, + "@screenSharingTitle": {}, + "@widgetCustom": {}, + "@sentCallInformations": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "@addToSpaceDescription": {}, + "@youBannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "@theyDontMatch": { + "type": "String", + "placeholders": {} + }, + "@youHaveBeenBannedFromThisChat": { + "type": "String", + "placeholders": {} + }, + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "@sentAnAudio": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@editRoomAvatar": { + "type": "String", + "placeholders": {} + }, + "@encrypted": { + "type": "String", + "placeholders": {} + }, + "@commandHint_leave": { + "type": "String", + "description": "Usage hint for the command /leave" + }, + "@commandHint_myroomavatar": { + "type": "String", + "description": "Usage hint for the command /myroomavatar" + }, + "@cancel": { + "type": "String", + "placeholders": {} + }, + "@hasKnocked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "@publish": {}, + "@openLinkInBrowser": {}, + "@clearArchive": {}, + "@commandHint_react": { + "type": "String", + "description": "Usage hint for the command /react" + }, + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@commandHint_me": { + "type": "String", + "description": "Usage hint for the command /me" + }, + "@pleaseEnterYourUsername": { + "type": "String", + "placeholders": {} + }, + "@messageInfo": {}, + "@disableEncryptionWarning": {}, + "@directChat": {}, + "@encryptionNotEnabled": { + "type": "String", + "placeholders": {} + }, + "@wrongPinEntered": { + "type": "String", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "@lightTheme": { + "type": "String", + "placeholders": {} + }, + "@inviteGroupChat": {}, + "@appearOnTop": {}, + "@invitePrivateChat": {}, + "@verifyTitle": { + "type": "String", + "placeholders": {} + }, + "@foregroundServiceRunning": {}, + "@enterAnEmailAddress": { + "type": "String", + "placeholders": {} + }, + "@voiceCall": {}, + "@commandHint_kick": { + "type": "String", + "description": "Usage hint for the command /kick" + }, + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "@createNewSpace": { + "type": "String", + "placeholders": {} + }, + "@commandHint_unban": { + "type": "String", + "description": "Usage hint for the command /unban" + }, + "@unknownEncryptionAlgorithm": { + "type": "String", + "placeholders": {} + }, + "@commandHint_ban": { + "type": "String", + "description": "Usage hint for the command /ban" + }, + "@confirm": { + "type": "String", + "placeholders": {} + }, + "@wasDirectChatDisplayName": { + "type": "String", + "placeholders": { + "oldDisplayName": { + "type": "String" + } + } + }, + "@noChatDescriptionYet": {}, + "@defaultPermissionLevel": { + "type": "String", + "placeholders": {} + }, + "@removeFromBundle": {}, + "@numUsersTyping": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@fontSize": { + "type": "String", + "placeholders": {} + }, + "@whoCanPerformWhichAction": { + "type": "String", + "placeholders": {} + }, + "@learnMore": {}, + "@iHaveClickedOnLink": { + "type": "String", + "placeholders": {} + }, + "@you": { + "type": "String", + "placeholders": {} + }, + "@users": {}, + "@openGallery": {}, + "@chatDescriptionHasBeenChanged": {}, + "@search": { + "type": "String", + "placeholders": {} + }, + "@newGroup": {}, + "@bundleName": {}, + "@dehydrateTor": {}, + "@removeFromSpace": {}, + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "@commandHint_op": { + "type": "String", + "description": "Usage hint for the command /op" + }, + "@commandHint_join": { + "type": "String", + "description": "Usage hint for the command /join" + }, + "@sourceCode": { + "type": "String", + "placeholders": {} + }, + "@roomUpgradeDescription": {}, + "@commandHint_invite": { + "type": "String", + "description": "Usage hint for the command /invite" + }, + "@userSentUnknownEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "type": { + "type": "String" + } + } + }, + "@scanQrCode": {}, + "@logout": { + "type": "String", + "placeholders": {} + }, + "@pleaseEnterANumber": {}, + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "@youKicked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@profileNotFound": {}, + "@jump": {}, + "@groups": { + "type": "String", + "placeholders": {} + }, + "@reactedWith": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "reaction": { + "type": "String" + } + } + }, + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "@sorryThatsNotPossible": {}, + "@videoWithSize": { + "type": "String", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "@oopsSomethingWentWrong": { + "type": "String", + "placeholders": {} + }, + "@loadCountMoreParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@shareInviteLink": {}, + "@commandHint_markasdm": {}, + "@recoveryKeyLost": {}, + "@containsUserName": { + "type": "String", + "placeholders": {} + }, + "@messages": { + "type": "String", + "placeholders": {} + }, + "@login": { + "type": "String", + "placeholders": {} + }, + "@deviceKeys": {}, + "@waitingPartnerNumbers": { + "type": "String", + "placeholders": {} + }, + "@noGoogleServicesWarning": { + "type": "String", + "placeholders": {} + }, + "@everythingReady": { + "type": "String", + "placeholders": {} + }, + "@emoteKeyboardNoRecents": { + "type": "String", + "placeholders": {} + }, + "@setCustomEmotes": { + "type": "String", + "placeholders": {} + }, + "@startedACall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "@emoteInvalid": { + "type": "String", + "placeholders": {} + }, + "@systemTheme": { + "type": "String", + "placeholders": {} + }, + "@notificationsEnabledForThisAccount": { + "type": "String", + "placeholders": {} + }, + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "@visibilityOfTheChatHistory": { + "type": "String", + "placeholders": {} + }, + "@settings": { + "type": "String", + "placeholders": {} + }, + "@setTheme": {}, + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "@youJoinedTheChat": {}, + "@wallpaper": { + "type": "String", + "placeholders": {} + }, + "@openVideoCamera": { + "type": "String", + "placeholders": {} + }, + "@play": { + "type": "String", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "@chatBackupDescription": { + "type": "String", + "placeholders": {} + }, + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "@passwordForgotten": { + "type": "String", + "placeholders": {} + }, + "@statusExampleMessage": { + "type": "String", + "placeholders": {} + }, + "@security": { + "type": "String", + "placeholders": {} + }, + "@markAsRead": {}, + "@sendAudio": { + "type": "String", + "placeholders": {} + }, + "@widgetName": {}, + "@sentASticker": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@errorAddingWidget": {}, + "@commandHint_dm": { + "type": "String", + "description": "Usage hint for the command /dm" + }, + "@reject": { + "type": "String", + "placeholders": {} + }, + "@extremeOffensive": { + "type": "String", + "placeholders": {} + }, + "@editBlockedServers": { + "type": "String", + "placeholders": {} + }, + "@oopsPushError": { + "type": "String", + "placeholders": {} + }, + "@youUnbannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "@deactivateAccountWarning": { + "type": "String", + "placeholders": {} + }, + "@joinedTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "@visibleForEveryone": { + "type": "String", + "placeholders": {} + }, + "@pleaseEnter4Digits": { + "type": "String", + "placeholders": {} + }, + "@newSpace": {}, + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "@devices": { + "type": "String", + "placeholders": {} + }, + "@unknownEvent": { + "type": "String", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "@emojis": {}, + "@pleaseEnterYourPin": { + "type": "String", + "placeholders": {} + }, + "@pleaseChoose": { + "type": "String", + "placeholders": {} + }, + "@share": { + "type": "String", + "placeholders": {} + }, + "@pleaseTryAgainLaterOrChooseDifferentServer": {}, + "@createGroup": {}, + "@privacy": { + "type": "String", + "placeholders": {} + }, + "@changeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "@sendImage": { + "type": "String", + "placeholders": {} + }, + "@hydrateTorLong": {}, + "@time": {}, + "@enterYourHomeserver": { + "type": "String", + "placeholders": {} + }, + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "@contentHasBeenReported": { + "type": "String", + "placeholders": {} + }, + "@custom": {}, + "@noBackupWarning": {}, + "@fromJoining": { + "type": "String", + "placeholders": {} + }, + "@verify": { + "type": "String", + "placeholders": {} + }, + "@sendVideo": { + "type": "String", + "placeholders": {} + }, + "@storeInSecureStorageDescription": {}, + "@openChat": {}, + "@kickUserDescription": {}, + "@sendAMessage": { + "type": "String", + "placeholders": {} + }, + "@deleteAccount": { + "type": "String", + "placeholders": {} + }, + "@setInvitationLink": { + "type": "String", + "placeholders": {} + }, + "@pinMessage": {}, + "@screenSharingDetail": {}, + "@muteChat": { + "type": "String", + "placeholders": {} + }, + "@invite": {}, + "@enableMultiAccounts": {}, + "@emotePacks": { + "type": "String", + "placeholders": {} + }, + "@indexedDbErrorTitle": {}, + "@endedTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + } +} diff --git a/lib/l10n/intl_tr.arb b/lib/l10n/intl_tr.arb new file mode 100644 index 0000000..a59752e --- /dev/null +++ b/lib/l10n/intl_tr.arb @@ -0,0 +1,3211 @@ +{ + "@@locale": "tr", + "@@last_modified": "2021-08-14 12:41:09.803728", + "about": "Hakkında", + "@about": { + "type": "String", + "placeholders": {} + }, + "accept": "Kabul et", + "@accept": { + "type": "String", + "placeholders": {} + }, + "acceptedTheInvitation": "👍 {username} katılma davetini kabul etti", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "account": "Hesap", + "@account": { + "type": "String", + "placeholders": {} + }, + "activatedEndToEndEncryption": "🔐 {username} uçtan uca şifrelemeyi etkinleştirdi", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "addEmail": "E-posta ekle", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "addToSpace": "Alana ekle", + "@addToSpace": {}, + "admin": "Yönetici", + "@admin": { + "type": "String", + "placeholders": {} + }, + "alias": "takma ad", + "@alias": { + "type": "String", + "placeholders": {} + }, + "all": "Tümü", + "@all": { + "type": "String", + "placeholders": {} + }, + "allChats": "Tüm sohbetler", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "answeredTheCall": "{senderName} aramayı yanıtladı", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "anyoneCanJoin": "Herkes katılabilir", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "appLock": "Uygulama kilidi", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "archive": "Arşiv", + "@archive": { + "type": "String", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "Misafir kullanıcıların katılmasına izin veriliyor mu", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "Emin misiniz?", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "areYouSureYouWantToLogout": "Oturumu açmak istediğinizden emin misiniz?", + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "askSSSSSign": "Diğer kişiyi imzalayabilmek için lütfen güvenli depolama parolanızı veya kurtarma anahtarınızı girin.", + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "askVerificationRequest": "{username} kişisinden gelen bu doğrulama isteği kabul edilsin mi?", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "autoplayImages": "Canlandırmalı çıkartmaları ve ifadeleri otomatik olarak oynat", + "@autoplayImages": { + "type": "String", + "placeholder": {} + }, + "badServerLoginTypesException": "Ana sunucu aşağıdaki oturum açma türlerini destekliyor:\n{serverVersions}\nAncak bu uygulama yalnızca aşağıdakileri destekliyor:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "badServerVersionsException": "Ana sunucu aşağıdaki Spec sürümlerini destekliyor:\n{serverVersions}\nAncak bu uygulama yalnızca {supportedVersions} destekliyor", + "@badServerVersionsException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "banFromChat": "Sohbetten engelle", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "banned": "Engellendi", + "@banned": { + "type": "String", + "placeholders": {} + }, + "bannedUser": "{username}, {targetName} kişisini engelledi", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "blockDevice": "Aygıtı Engelle", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "blocked": "Engellendi", + "@blocked": { + "type": "String", + "placeholders": {} + }, + "botMessages": "Bot mesajları", + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "cancel": "İptal", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "cantOpenUri": "{uri} URI'si açılamıyor", + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "changeDeviceName": "Aygıt adını değiştir", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "changedTheChatAvatar": "{username} sohbet avatarını değiştirdi", + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheChatDescriptionTo": "{username} sohbet açıklamasını değiştirdi: '{description}'", + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "changedTheChatNameTo": "{username} sohbet adını değiştirdi: '{chatname}'", + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "changedTheChatPermissions": "{username} sohbet izinlerini değiştirdi", + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheDisplaynameTo": "{username} görünen adını '{displayname}' olarak değiştirdi", + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "changedTheGuestAccessRules": "{username} misafir erişim kurallarını değiştirdi", + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheGuestAccessRulesTo": "{username} misafir erişim kurallarını değiştirdi: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheHistoryVisibility": "{username} geçmiş görünürlüğünü değiştirdi", + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheHistoryVisibilityTo": "{username} geçmiş görünürlüğünü değiştirdi: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheJoinRules": "{username} katılım kurallarını değiştirdi", + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheJoinRulesTo": "{username} katılım kurallarını değiştirdi: {joinRules}", + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "changedTheProfileAvatar": "{username} avatarını değiştirdi", + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomAliases": "{username} oda takma adlarını değiştirdi", + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomInvitationLink": "{username} davet bağlantısını değiştirdi", + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changePassword": "Parolayı değiştir", + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "changeTheHomeserver": "Ana sunucuyu değiştir", + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "changeTheme": "Tarzınızı değiştirin", + "@changeTheme": { + "type": "String", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "Grubun adını değiştir", + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "changeYourAvatar": "Avatarınızı değiştirin", + "@changeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "channelCorruptedDecryptError": "Şifreleme bozuldu", + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "chat": "Sohbet", + "@chat": { + "type": "String", + "placeholders": {} + }, + "chatBackup": "Sohbet yedekleme", + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "chatBackupDescription": "Eski mesajlarınız bir kurtarma anahtarı ile güvence altına alındı. Lütfen kaybetmediğinizden emin olun.", + "@chatBackupDescription": { + "type": "String", + "placeholders": {} + }, + "chatDetails": "Sohbet ayrıntıları", + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "chatHasBeenAddedToThisSpace": "Sohbet bu alana eklendi", + "@chatHasBeenAddedToThisSpace": {}, + "chats": "Sohbetler", + "@chats": { + "type": "String", + "placeholders": {} + }, + "chooseAStrongPassword": "Güçlü bir parola seçin", + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "clearArchive": "Arşivi temizle", + "@clearArchive": {}, + "close": "Kapat", + "@close": { + "type": "String", + "placeholders": {} + }, + "commandHint_ban": "Verilen kullanıcıyı bu odadan yasaklayın", + "@commandHint_ban": { + "type": "String", + "description": "Usage hint for the command /ban" + }, + "commandHint_html": "HTML biçimli metin gönderin", + "@commandHint_html": { + "type": "String", + "description": "Usage hint for the command /html" + }, + "commandHint_invite": "Verilen kullanıcıyı bu odaya davet edin", + "@commandHint_invite": { + "type": "String", + "description": "Usage hint for the command /invite" + }, + "commandHint_join": "Verilen odaya katılın", + "@commandHint_join": { + "type": "String", + "description": "Usage hint for the command /join" + }, + "commandHint_kick": "Verilen kullanıcıyı bu odadan kaldırın", + "@commandHint_kick": { + "type": "String", + "description": "Usage hint for the command /kick" + }, + "commandHint_leave": "Bu odadan ayrılın", + "@commandHint_leave": { + "type": "String", + "description": "Usage hint for the command /leave" + }, + "commandHint_me": "Kendinizi tanımlayın", + "@commandHint_me": { + "type": "String", + "description": "Usage hint for the command /me" + }, + "commandHint_myroomavatar": "Bu oda için resminizi ayarlayın (mxc-uri ile)", + "@commandHint_myroomavatar": { + "type": "String", + "description": "Usage hint for the command /myroomavatar" + }, + "commandHint_myroomnick": "Bu oda için görünen adınızı ayarlayın", + "@commandHint_myroomnick": { + "type": "String", + "description": "Usage hint for the command /myroomnick" + }, + "commandHint_op": "Verilen kullanıcının güç seviyesini ayarlayın (öntanımlı: 50)", + "@commandHint_op": { + "type": "String", + "description": "Usage hint for the command /op" + }, + "commandHint_plain": "Biçimlendirilmemiş metin gönderin", + "@commandHint_plain": { + "type": "String", + "description": "Usage hint for the command /plain" + }, + "commandHint_react": "Tepki olarak yanıt gönderin", + "@commandHint_react": { + "type": "String", + "description": "Usage hint for the command /react" + }, + "commandHint_send": "Metin gönderin", + "@commandHint_send": { + "type": "String", + "description": "Usage hint for the command /send" + }, + "commandHint_unban": "Verilen kullanıcının bu odadaki yasağını kaldırın", + "@commandHint_unban": { + "type": "String", + "description": "Usage hint for the command /unban" + }, + "commandInvalid": "Komut geçersiz", + "@commandInvalid": { + "type": "String" + }, + "commandMissing": "{command} bir komut değil.", + "@commandMissing": { + "type": "String", + "placeholders": { + "command": { + "type": "String" + } + }, + "description": "State that {command} is not a valid /command." + }, + "compareEmojiMatch": "Lütfen emojileri karşılaştırın", + "@compareEmojiMatch": { + "type": "String", + "placeholders": {} + }, + "compareNumbersMatch": "Lütfen sayıları karşılaştırın", + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "configureChat": "Sohbeti yapılandır", + "@configureChat": { + "type": "String", + "placeholders": {} + }, + "confirm": "Onayla", + "@confirm": { + "type": "String", + "placeholders": {} + }, + "connect": "Bağlan", + "@connect": { + "type": "String", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "Kişi gruba davet edildi", + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "containsDisplayName": "Görünen ad içerir", + "@containsDisplayName": { + "type": "String", + "placeholders": {} + }, + "containsUserName": "Kullanıcı adı içerir", + "@containsUserName": { + "type": "String", + "placeholders": {} + }, + "contentHasBeenReported": "İçerik, sunucu yöneticilerine bildirildi", + "@contentHasBeenReported": { + "type": "String", + "placeholders": {} + }, + "copiedToClipboard": "Panoya kopyalandı", + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "copy": "Kopyala", + "@copy": { + "type": "String", + "placeholders": {} + }, + "copyToClipboard": "Panoya kopyala", + "@copyToClipboard": { + "type": "String", + "placeholders": {} + }, + "couldNotDecryptMessage": "Mesajın şifresi çözülemedi: {error}", + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "countParticipants": "{count} katılımcı", + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "create": "Oluştur", + "@create": { + "type": "String", + "placeholders": {} + }, + "createdTheChat": "💬 {username} sohbeti oluşturdu", + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "createNewSpace": "Yeni alan", + "@createNewSpace": { + "type": "String", + "placeholders": {} + }, + "currentlyActive": "Şu anda etkin", + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "darkTheme": "Koyu", + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "dateWithoutYear": "{day} {month}", + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "dateWithYear": "{day}/{month}/{year}", + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "deactivateAccountWarning": "Bu, kullanıcı hesabınızı devre dışı bırakacak. Bu geri alınamaz! Emin misiniz?", + "@deactivateAccountWarning": { + "type": "String", + "placeholders": {} + }, + "defaultPermissionLevel": "Yeni kullanıcılar içi öntanımlı izin seviyesi", + "@defaultPermissionLevel": { + "type": "String", + "placeholders": {} + }, + "delete": "Sil", + "@delete": { + "type": "String", + "placeholders": {} + }, + "deleteAccount": "Hesabı sil", + "@deleteAccount": { + "type": "String", + "placeholders": {} + }, + "deleteMessage": "Mesajı sil", + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "device": "Aygıt", + "@device": { + "type": "String", + "placeholders": {} + }, + "deviceId": "Aygıt kimliği", + "@deviceId": { + "type": "String", + "placeholders": {} + }, + "devices": "Aygıtlar", + "@devices": { + "type": "String", + "placeholders": {} + }, + "directChats": "Doğrudan Sohbetler", + "@directChats": { + "type": "String", + "placeholders": {} + }, + "displaynameHasBeenChanged": "Görünen ad değiştirildi", + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "downloadFile": "Dosyayı indir", + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "edit": "Düzenle", + "@edit": { + "type": "String", + "placeholders": {} + }, + "editBlockedServers": "Engellenen sunucuları düzenle", + "@editBlockedServers": { + "type": "String", + "placeholders": {} + }, + "editDisplayname": "Görünen adı düzenle", + "@editDisplayname": { + "type": "String", + "placeholders": {} + }, + "editRoomAliases": "Oda takma adlarını düzenle", + "@editRoomAliases": { + "type": "String", + "placeholders": {} + }, + "editRoomAvatar": "Oda avatarını düzenle", + "@editRoomAvatar": { + "type": "String", + "placeholders": {} + }, + "emoteExists": "İfade zaten var!", + "@emoteExists": { + "type": "String", + "placeholders": {} + }, + "emoteInvalid": "Geçersiz ifade kısa kodu!", + "@emoteInvalid": { + "type": "String", + "placeholders": {} + }, + "emotePacks": "Oda için ifade paketleri", + "@emotePacks": { + "type": "String", + "placeholders": {} + }, + "emoteSettings": "İfade Ayarları", + "@emoteSettings": { + "type": "String", + "placeholders": {} + }, + "emoteShortcode": "İfade kısa kodu", + "@emoteShortcode": { + "type": "String", + "placeholders": {} + }, + "emoteWarnNeedToPick": "Bir ifade kısa kodu ve bir resim seçmeniz gerekiyor!", + "@emoteWarnNeedToPick": { + "type": "String", + "placeholders": {} + }, + "emptyChat": "Boş sohbet", + "@emptyChat": { + "type": "String", + "placeholders": {} + }, + "enableEmotesGlobally": "İfade paketini küresel olarak etkinleştir", + "@enableEmotesGlobally": { + "type": "String", + "placeholders": {} + }, + "enableEncryption": "Şifrelemeyi etkinleştir", + "@enableEncryption": { + "type": "String", + "placeholders": {} + }, + "enableEncryptionWarning": "Artık şifrelemeyi devre dışı bırakamayacaksınız. Emin misiniz?", + "@enableEncryptionWarning": { + "type": "String", + "placeholders": {} + }, + "encrypted": "Şifreli", + "@encrypted": { + "type": "String", + "placeholders": {} + }, + "encryption": "Şifreleme", + "@encryption": { + "type": "String", + "placeholders": {} + }, + "encryptionNotEnabled": "Şifreleme etkinleştirilmedi", + "@encryptionNotEnabled": { + "type": "String", + "placeholders": {} + }, + "endedTheCall": "{senderName} aramayı sonlandırdı", + "@endedTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "enterAnEmailAddress": "Bir e-posta adresi girin", + "@enterAnEmailAddress": { + "type": "String", + "placeholders": {} + }, + "enterYourHomeserver": "Ana sunucunuzu girin", + "@enterYourHomeserver": { + "type": "String", + "placeholders": {} + }, + "errorObtainingLocation": "Konum alınırken hata oluştu: {error}", + "@errorObtainingLocation": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "everythingReady": "Herşey hazır!", + "@everythingReady": { + "type": "String", + "placeholders": {} + }, + "extremeOffensive": "Aşırı rahatsız edici", + "@extremeOffensive": { + "type": "String", + "placeholders": {} + }, + "fileName": "Dosya adı", + "@fileName": { + "type": "String", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "String", + "placeholders": {} + }, + "fontSize": "Yazı tipi boyutu", + "@fontSize": { + "type": "String", + "placeholders": {} + }, + "forward": "İlet", + "@forward": { + "type": "String", + "placeholders": {} + }, + "fromJoining": "Katılmadan", + "@fromJoining": { + "type": "String", + "placeholders": {} + }, + "fromTheInvitation": "Davetten", + "@fromTheInvitation": { + "type": "String", + "placeholders": {} + }, + "goToTheNewRoom": "Yeni odaya git", + "@goToTheNewRoom": { + "type": "String", + "placeholders": {} + }, + "group": "Grup", + "@group": { + "type": "String", + "placeholders": {} + }, + "groupIsPublic": "Grup herkese açık", + "@groupIsPublic": { + "type": "String", + "placeholders": {} + }, + "groups": "Gruplar", + "@groups": { + "type": "String", + "placeholders": {} + }, + "groupWith": "{displayname} ile grup", + "@groupWith": { + "type": "String", + "placeholders": { + "displayname": { + "type": "String" + } + } + }, + "guestsAreForbidden": "Misafirlere izin verilmiyor", + "@guestsAreForbidden": { + "type": "String", + "placeholders": {} + }, + "guestsCanJoin": "Misafirler katılabilir", + "@guestsCanJoin": { + "type": "String", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "{username}, {targetName} için daveti geri çekti", + "@hasWithdrawnTheInvitationFor": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "help": "Yardım", + "@help": { + "type": "String", + "placeholders": {} + }, + "hideRedactedEvents": "Düzenlenmiş etkinlikleri gizle", + "@hideRedactedEvents": { + "type": "String", + "placeholders": {} + }, + "hideUnknownEvents": "Bilinmeyen etkinlikleri gizle", + "@hideUnknownEvents": { + "type": "String", + "placeholders": {} + }, + "howOffensiveIsThisContent": "Bu içerik ne kadar rahatsız edici?", + "@howOffensiveIsThisContent": { + "type": "String", + "placeholders": {} + }, + "id": "Kimlik", + "@id": { + "type": "String", + "placeholders": {} + }, + "identity": "Kimlik", + "@identity": { + "type": "String", + "placeholders": {} + }, + "ignore": "Yok say", + "@ignore": { + "type": "String", + "placeholders": {} + }, + "ignoredUsers": "Yok sayılan kullanıcılar", + "@ignoredUsers": { + "type": "String", + "placeholders": {} + }, + "iHaveClickedOnLink": "Bağlantıya tıkladım", + "@iHaveClickedOnLink": { + "type": "String", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "Yanlış parola veya kurtarma anahtarı", + "@incorrectPassphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "inoffensive": "Rahatsız edici değil", + "@inoffensive": { + "type": "String", + "placeholders": {} + }, + "inviteContact": "Kişi davet et", + "@inviteContact": { + "type": "String", + "placeholders": {} + }, + "inviteContactToGroup": "Kişiyi {groupName} grubuna davet et", + "@inviteContactToGroup": { + "type": "String", + "placeholders": { + "groupName": { + "type": "String" + } + } + }, + "invited": "Davet edildi", + "@invited": { + "type": "String", + "placeholders": {} + }, + "invitedUser": "📩 {username}, {targetName} kişisini davet etti", + "@invitedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "invitedUsersOnly": "Sadece davet edilen kullanıcılar", + "@invitedUsersOnly": { + "type": "String", + "placeholders": {} + }, + "inviteForMe": "Benim için davet et", + "@inviteForMe": { + "type": "String", + "placeholders": {} + }, + "inviteText": "{username} sizi FluffyChat'e davet etti.\n1. fluffychat.im adresini ziyaret edin ve uygulamayı kurun \n2. Kaydolun veya oturum açın \n3. Davet bağlantısını açın: \n {link}", + "@inviteText": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "link": { + "type": "String" + } + } + }, + "isTyping": "yazıyor…", + "@isTyping": { + "type": "String", + "placeholders": {} + }, + "joinedTheChat": "👋 {username} sohbete katıldı", + "@joinedTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "joinRoom": "Odaya katıl", + "@joinRoom": { + "type": "String", + "placeholders": {} + }, + "kicked": "👞 {username}, {targetName} kişisini attı", + "@kicked": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickedAndBanned": "🙅 {username}, {targetName} kişisini attı ve engelledi", + "@kickedAndBanned": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickFromChat": "Sohbetten at", + "@kickFromChat": { + "type": "String", + "placeholders": {} + }, + "lastActiveAgo": "Son görülen: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "String", + "placeholders": { + "localizedTimeShort": { + "type": "String" + } + } + }, + "leave": "Ayrıl", + "@leave": { + "type": "String", + "placeholders": {} + }, + "leftTheChat": "Sohbetten ayrıldı", + "@leftTheChat": { + "type": "String", + "placeholders": {} + }, + "license": "Lisans", + "@license": { + "type": "String", + "placeholders": {} + }, + "lightTheme": "Açık", + "@lightTheme": { + "type": "String", + "placeholders": {} + }, + "loadCountMoreParticipants": "{count} katılımcı daha yükle", + "@loadCountMoreParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "loadingPleaseWait": "Yükleniyor… Lütfen bekleyin.", + "@loadingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "loadMore": "Daha fazla yükle…", + "@loadMore": { + "type": "String", + "placeholders": {} + }, + "locationDisabledNotice": "Konum hizmetleri devre dışı. Lütfen konumunuzu paylaşabilmek için etkinleştirin.", + "@locationDisabledNotice": { + "type": "String", + "placeholders": {} + }, + "locationPermissionDeniedNotice": "Konum izni reddedildi. Lütfen konumunuzu paylaşabilmek için izin verin.", + "@locationPermissionDeniedNotice": { + "type": "String", + "placeholders": {} + }, + "login": "Oturum aç", + "@login": { + "type": "String", + "placeholders": {} + }, + "logInTo": "{homeserver} üzerinde oturum aç", + "@logInTo": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "logout": "Oturumu kapat", + "@logout": { + "type": "String", + "placeholders": {} + }, + "memberChanges": "Üye değişiklikleri", + "@memberChanges": { + "type": "String", + "placeholders": {} + }, + "mention": "Bahset", + "@mention": { + "type": "String", + "placeholders": {} + }, + "messages": "Mesajlar", + "@messages": { + "type": "String", + "placeholders": {} + }, + "moderator": "Moderatör", + "@moderator": { + "type": "String", + "placeholders": {} + }, + "muteChat": "Sohbeti sessize al", + "@muteChat": { + "type": "String", + "placeholders": {} + }, + "needPantalaimonWarning": "Uçtan uca şifreleme kullanmak için şimdilik Pantalaimon'a ihtiyacınız olduğunu lütfen unutmayın.", + "@needPantalaimonWarning": { + "type": "String", + "placeholders": {} + }, + "newChat": "Yeni sohbet", + "@newChat": { + "type": "String", + "placeholders": {} + }, + "newMessageInFluffyChat": "💬 FluffyChat'te yeni mesaj", + "@newMessageInFluffyChat": { + "type": "String", + "placeholders": {} + }, + "newVerificationRequest": "Yeni doğrulama isteği!", + "@newVerificationRequest": { + "type": "String", + "placeholders": {} + }, + "next": "İleri", + "@next": { + "type": "String", + "placeholders": {} + }, + "no": "Hayır", + "@no": { + "type": "String", + "placeholders": {} + }, + "noConnectionToTheServer": "Sunucuyla bağlantı yok", + "@noConnectionToTheServer": { + "type": "String", + "placeholders": {} + }, + "noEmotesFound": "İfade bulunamadı. 😕", + "@noEmotesFound": { + "type": "String", + "placeholders": {} + }, + "noEncryptionForPublicRooms": "Şifrelemeyi yalnızca oda artık herkese açık olmadığında etkinleştirebilirsiniz.", + "@noEncryptionForPublicRooms": { + "type": "String", + "placeholders": {} + }, + "noGoogleServicesWarning": "Görünüşe göre cihazınızda Firebase Cloud Messaging yok. Buna rağmen bildirim almaya devam etmek için ntfy yüklemenizi öneriyoruz. ntfy veya başka bir Unified Push sağlayıcısı ile anlık bildirimlerinizi güvenli bir şekilde alabilirsiniz. ntfy'ı PlayStore veya F-Droid'den indirebilirsiniz.", + "@noGoogleServicesWarning": { + "type": "String", + "placeholders": {} + }, + "noMatrixServer": "{server1} matrix sunucusu değil, onun yerine {server2} kullanılsın mı?", + "@noMatrixServer": { + "type": "String", + "placeholders": { + "server1": { + "type": "String" + }, + "server2": { + "type": "String" + } + } + }, + "none": "Yok", + "@none": { + "type": "String", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "Henüz parolanızı kurtarmak için bir yol eklemediniz.", + "@noPasswordRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "noPermission": "İzin yok", + "@noPermission": { + "type": "String", + "placeholders": {} + }, + "noRoomsFound": "Oda bulunamadı…", + "@noRoomsFound": { + "type": "String", + "placeholders": {} + }, + "notifications": "Bildirimler", + "@notifications": { + "type": "String", + "placeholders": {} + }, + "notificationsEnabledForThisAccount": "Bu hesap için bildirimler etkinleştirildi", + "@notificationsEnabledForThisAccount": { + "type": "String", + "placeholders": {} + }, + "numUsersTyping": "{count} kullanıcı yazıyor…", + "@numUsersTyping": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "obtainingLocation": "Konum alınıyor…", + "@obtainingLocation": { + "type": "String", + "placeholders": {} + }, + "offensive": "Rahatsız edici", + "@offensive": { + "type": "String", + "placeholders": {} + }, + "offline": "Çevrim dışı", + "@offline": { + "type": "String", + "placeholders": {} + }, + "ok": "Tamam", + "@ok": { + "type": "String", + "placeholders": {} + }, + "online": "Çevrim içi", + "@online": { + "type": "String", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "Çevrim içi anahtar yedekleme etkinleştirildi", + "@onlineKeyBackupEnabled": { + "type": "String", + "placeholders": {} + }, + "oopsPushError": "Tüh! Maalesef anlık bildirimlerini ayarlarken bir hata oluştu.", + "@oopsPushError": { + "type": "String", + "placeholders": {} + }, + "oopsSomethingWentWrong": "Tüh, bir şeyler yanlış gitti…", + "@oopsSomethingWentWrong": { + "type": "String", + "placeholders": {} + }, + "openAppToReadMessages": "Mesajları okumak için uygulamayı aç", + "@openAppToReadMessages": { + "type": "String", + "placeholders": {} + }, + "openCamera": "Kamerayı aç", + "@openCamera": { + "type": "String", + "placeholders": {} + }, + "openInMaps": "Haritalarda aç", + "@openInMaps": { + "type": "String", + "placeholders": {} + }, + "or": "Veya", + "@or": { + "type": "String", + "placeholders": {} + }, + "participant": "Katılımcı", + "@participant": { + "type": "String", + "placeholders": {} + }, + "passphraseOrKey": "parola veya kurtarma anahtarı", + "@passphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "password": "Parola", + "@password": { + "type": "String", + "placeholders": {} + }, + "passwordForgotten": "Parola unutuldu", + "@passwordForgotten": { + "type": "String", + "placeholders": {} + }, + "passwordHasBeenChanged": "Parola değiştirildi", + "@passwordHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "passwordRecovery": "Parola kurtarma", + "@passwordRecovery": { + "type": "String", + "placeholders": {} + }, + "people": "İnsanlar", + "@people": { + "type": "String", + "placeholders": {} + }, + "pickImage": "Bir resim seç", + "@pickImage": { + "type": "String", + "placeholders": {} + }, + "pin": "Sabitle", + "@pin": { + "type": "String", + "placeholders": {} + }, + "play": "{fileName} dosyasını oynat", + "@play": { + "type": "String", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "pleaseChoose": "Lütfen seçin", + "@pleaseChoose": { + "type": "String", + "placeholders": {} + }, + "pleaseChooseAPasscode": "Lütfen bir geçiş kodu seçin", + "@pleaseChooseAPasscode": { + "type": "String", + "placeholders": {} + }, + "pleaseClickOnLink": "Lütfen e-postadaki bağlantıya tıklayın ve devam edin.", + "@pleaseClickOnLink": { + "type": "String", + "placeholders": {} + }, + "pleaseEnter4Digits": "Lütfen 4 basamak girin veya uygulama kilidini devre dışı bırakmak için boş bırakın.", + "@pleaseEnter4Digits": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPassword": "Lütfen parolanızı girin", + "@pleaseEnterYourPassword": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPin": "Lütfen PIN kodunuzu girin", + "@pleaseEnterYourPin": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourUsername": "Lütfen kullanıcı adınızı girin", + "@pleaseEnterYourUsername": { + "type": "String", + "placeholders": {} + }, + "pleaseFollowInstructionsOnWeb": "Lütfen web sitesindeki talimatları izleyin ve \"İleri\" düğmesine dokunun.", + "@pleaseFollowInstructionsOnWeb": { + "type": "String", + "placeholders": {} + }, + "privacy": "Gizlilik", + "@privacy": { + "type": "String", + "placeholders": {} + }, + "publicRooms": "Herkese Açık Odalar", + "@publicRooms": { + "type": "String", + "placeholders": {} + }, + "pushRules": "Gönderme kuralları", + "@pushRules": { + "type": "String", + "placeholders": {} + }, + "reason": "Neden", + "@reason": { + "type": "String", + "placeholders": {} + }, + "recording": "Kaydediliyor", + "@recording": { + "type": "String", + "placeholders": {} + }, + "redactedAnEvent": "{username} bir etkinliği düzenledi", + "@redactedAnEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "redactMessage": "Mesajı düzenle", + "@redactMessage": { + "type": "String", + "placeholders": {} + }, + "register": "Kaydol", + "@register": { + "type": "String", + "placeholders": {} + }, + "reject": "Reddet", + "@reject": { + "type": "String", + "placeholders": {} + }, + "rejectedTheInvitation": "{username} daveti reddetti", + "@rejectedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "rejoin": "Yeniden katıl", + "@rejoin": { + "type": "String", + "placeholders": {} + }, + "remove": "Kaldır", + "@remove": { + "type": "String", + "placeholders": {} + }, + "removeAllOtherDevices": "Diğer tüm aygıtları kaldır", + "@removeAllOtherDevices": { + "type": "String", + "placeholders": {} + }, + "removedBy": "{username} tarafından kaldırıldı", + "@removedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "removeDevice": "Aygıtı kaldır", + "@removeDevice": { + "type": "String", + "placeholders": {} + }, + "unbanFromChat": "Sohbet engelini kaldır", + "@unbanFromChat": { + "type": "String", + "placeholders": {} + }, + "removeYourAvatar": "Avatarınızı kaldırın", + "@removeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "replaceRoomWithNewerVersion": "Odayı yeni sürümle değiştir", + "@replaceRoomWithNewerVersion": { + "type": "String", + "placeholders": {} + }, + "reply": "Yanıtla", + "@reply": { + "type": "String", + "placeholders": {} + }, + "reportMessage": "Mesajı bildir", + "@reportMessage": { + "type": "String", + "placeholders": {} + }, + "requestPermission": "İzin iste", + "@requestPermission": { + "type": "String", + "placeholders": {} + }, + "roomHasBeenUpgraded": "Oda yükseltildi", + "@roomHasBeenUpgraded": { + "type": "String", + "placeholders": {} + }, + "roomVersion": "Oda sürümü", + "@roomVersion": { + "type": "String", + "placeholders": {} + }, + "saveFile": "Dosyayı kaydet", + "@saveFile": { + "type": "String", + "placeholders": {} + }, + "search": "Ara", + "@search": { + "type": "String", + "placeholders": {} + }, + "security": "Güvenlik", + "@security": { + "type": "String", + "placeholders": {} + }, + "seenByUser": "{username} tarafından görüldü", + "@seenByUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "send": "Gönder", + "@send": { + "type": "String", + "placeholders": {} + }, + "sendAMessage": "Bir mesaj gönder", + "@sendAMessage": { + "type": "String", + "placeholders": {} + }, + "sendAsText": "Metin olarak gönder", + "@sendAsText": { + "type": "String" + }, + "sendAudio": "Ses gönder", + "@sendAudio": { + "type": "String", + "placeholders": {} + }, + "sendFile": "Dosya gönder", + "@sendFile": { + "type": "String", + "placeholders": {} + }, + "sendImage": "Resim gönder", + "@sendImage": { + "type": "String", + "placeholders": {} + }, + "sendMessages": "Mesajları gönder", + "@sendMessages": { + "type": "String", + "placeholders": {} + }, + "sendOriginal": "Orijinali gönder", + "@sendOriginal": { + "type": "String", + "placeholders": {} + }, + "sendSticker": "Çıkartma gönder", + "@sendSticker": { + "type": "String", + "placeholders": {} + }, + "sendVideo": "Video gönder", + "@sendVideo": { + "type": "String", + "placeholders": {} + }, + "sentAFile": "📁 {username} bir dosya gönderdi", + "@sentAFile": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAnAudio": "🎤 {username} bir ses gönderdi", + "@sentAnAudio": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAPicture": "🖼️ {username} bir resim gönderdi", + "@sentAPicture": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentASticker": "😊 {username} bir çıkartma gönderdi", + "@sentASticker": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAVideo": "🎥 {username} bir video gönderdi", + "@sentAVideo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentCallInformations": "{senderName} arama bilgilerini gönderdi", + "@sentCallInformations": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "setAsCanonicalAlias": "Ana takma ad olarak ayarla", + "@setAsCanonicalAlias": { + "type": "String", + "placeholders": {} + }, + "setCustomEmotes": "Özel ifadeler ayarla", + "@setCustomEmotes": { + "type": "String", + "placeholders": {} + }, + "setInvitationLink": "Davet bağlantısı ayarla", + "@setInvitationLink": { + "type": "String", + "placeholders": {} + }, + "setPermissionsLevel": "İzin seviyesini ayarla", + "@setPermissionsLevel": { + "type": "String", + "placeholders": {} + }, + "setStatus": "Durumu ayarla", + "@setStatus": { + "type": "String", + "placeholders": {} + }, + "settings": "Ayarlar", + "@settings": { + "type": "String", + "placeholders": {} + }, + "share": "Paylaş", + "@share": { + "type": "String", + "placeholders": {} + }, + "sharedTheLocation": "{username} konumunu paylaştı", + "@sharedTheLocation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "shareLocation": "Konumu paylaş", + "@shareLocation": { + "type": "String", + "placeholders": {} + }, + "showPassword": "Parolayı göster", + "@showPassword": { + "type": "String", + "placeholders": {} + }, + "singlesignon": "Tek oturum açma", + "@singlesignon": { + "type": "String", + "placeholders": {} + }, + "skip": "Atla", + "@skip": { + "type": "String", + "placeholders": {} + }, + "sourceCode": "Kaynak kodları", + "@sourceCode": { + "type": "String", + "placeholders": {} + }, + "spaceIsPublic": "Alan herkese açık", + "@spaceIsPublic": { + "type": "String", + "placeholders": {} + }, + "spaceName": "Alan adı", + "@spaceName": { + "type": "String", + "placeholders": {} + }, + "startedACall": "{senderName} bir arama başlattı", + "@startedACall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "status": "Durum", + "@status": { + "type": "String", + "placeholders": {} + }, + "statusExampleMessage": "Bugün nasılsınız?", + "@statusExampleMessage": { + "type": "String", + "placeholders": {} + }, + "submit": "Gönder", + "@submit": { + "type": "String", + "placeholders": {} + }, + "synchronizingPleaseWait": "Eşzamanlanıyor… Lütfen bekleyin.", + "@synchronizingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "systemTheme": "Sistem", + "@systemTheme": { + "type": "String", + "placeholders": {} + }, + "theyDontMatch": "Eşleşmediler", + "@theyDontMatch": { + "type": "String", + "placeholders": {} + }, + "theyMatch": "Eşleştiler", + "@theyMatch": { + "type": "String", + "placeholders": {} + }, + "title": "FluffyChat", + "@title": { + "description": "Title for the application", + "type": "String", + "placeholders": {} + }, + "toggleFavorite": "Sık Kullanılanlara Ekle/Çıkar", + "@toggleFavorite": { + "type": "String", + "placeholders": {} + }, + "toggleMuted": "Sessize Al/Sessizden Çıkar", + "@toggleMuted": { + "type": "String", + "placeholders": {} + }, + "toggleUnread": "Okundu/Okunmadı Olarak İşaretle", + "@toggleUnread": { + "type": "String", + "placeholders": {} + }, + "tooManyRequestsWarning": "Çok fazla istek. Lütfen daha sonra tekrar deneyin!", + "@tooManyRequestsWarning": { + "type": "String", + "placeholders": {} + }, + "transferFromAnotherDevice": "Başka bir aygıttan aktar", + "@transferFromAnotherDevice": { + "type": "String", + "placeholders": {} + }, + "tryToSendAgain": "Tekrar göndermeyi deneyin", + "@tryToSendAgain": { + "type": "String", + "placeholders": {} + }, + "unavailable": "Yok", + "@unavailable": { + "type": "String", + "placeholders": {} + }, + "unbannedUser": "{username}, {targetName} kişisinin engelini kaldırdı", + "@unbannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "unblockDevice": "Aygıtın Engellemesini Kaldır", + "@unblockDevice": { + "type": "String", + "placeholders": {} + }, + "unknownDevice": "Bilinmeyen aygıt", + "@unknownDevice": { + "type": "String", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "Bilinmeyen şifreleme algoritması", + "@unknownEncryptionAlgorithm": { + "type": "String", + "placeholders": {} + }, + "unknownEvent": "Bilinmeyen etkinlik '{type}'", + "@unknownEvent": { + "type": "String", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "unmuteChat": "Sohbeti sessizden çıkar", + "@unmuteChat": { + "type": "String", + "placeholders": {} + }, + "unpin": "Sabitlemeyi kaldır", + "@unpin": { + "type": "String", + "placeholders": {} + }, + "unreadChats": "{unreadCount, plural, =1{1 okunmamış sohbet} other{{unreadCount} okunmamış sohbet}}", + "@unreadChats": { + "type": "String", + "placeholders": { + "unreadCount": { + "type": "int" + } + } + }, + "userAndOthersAreTyping": "{username} ve {count} diğer kişi yazıyor…", + "@userAndOthersAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "userAndUserAreTyping": "{username} ve {username2} yazıyor…", + "@userAndUserAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "username2": { + "type": "String" + } + } + }, + "userIsTyping": "{username} yazıyor…", + "@userIsTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "userLeftTheChat": "🚪 {username} sohbetten ayrıldı", + "@userLeftTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "username": "Kullanıcı adı", + "@username": { + "type": "String", + "placeholders": {} + }, + "userSentUnknownEvent": "{username} bir {type} etkinliği gönderdi", + "@userSentUnknownEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "type": { + "type": "String" + } + } + }, + "verified": "Doğrulandı", + "@verified": { + "type": "String", + "placeholders": {} + }, + "verify": "Doğrula", + "@verify": { + "type": "String", + "placeholders": {} + }, + "verifyStart": "Doğrulamayı Başlat", + "@verifyStart": { + "type": "String", + "placeholders": {} + }, + "verifySuccess": "Başarıyla doğrulandı!", + "@verifySuccess": { + "type": "String", + "placeholders": {} + }, + "verifyTitle": "Diğer hesap doğrulanıyor", + "@verifyTitle": { + "type": "String", + "placeholders": {} + }, + "videoCall": "Görüntülü arama", + "@videoCall": { + "type": "String", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "Sohbet geçmişi görünürlüğü", + "@visibilityOfTheChatHistory": { + "type": "String", + "placeholders": {} + }, + "visibleForAllParticipants": "Tüm katılımcılar için görünür", + "@visibleForAllParticipants": { + "type": "String", + "placeholders": {} + }, + "visibleForEveryone": "Herkes için görünür", + "@visibleForEveryone": { + "type": "String", + "placeholders": {} + }, + "voiceMessage": "Sesli mesaj", + "@voiceMessage": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "Ortağın isteği kabul etmesi bekleniyor…", + "@waitingPartnerAcceptRequest": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerEmoji": "Ortağın emojiyi kabul etmesi bekleniyor…", + "@waitingPartnerEmoji": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerNumbers": "Ortağın numaraları kabul etmesi bekleniyor…", + "@waitingPartnerNumbers": { + "type": "String", + "placeholders": {} + }, + "wallpaper": "Duvar kağıdı:", + "@wallpaper": { + "type": "String", + "placeholders": {} + }, + "warning": "Uyarı!", + "@warning": { + "type": "String", + "placeholders": {} + }, + "weSentYouAnEmail": "Size bir e-posta gönderdik", + "@weSentYouAnEmail": { + "type": "String", + "placeholders": {} + }, + "whoCanPerformWhichAction": "Kim hangi eylemi gerçekleştirebilir", + "@whoCanPerformWhichAction": { + "type": "String", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "Bu gruba kimler katılabilir", + "@whoIsAllowedToJoinThisGroup": { + "type": "String", + "placeholders": {} + }, + "whyDoYouWantToReportThis": "Bunu neden bildirmek istiyorsunuz?", + "@whyDoYouWantToReportThis": { + "type": "String", + "placeholders": {} + }, + "wipeChatBackup": "Yeni bir kurtarma anahtarı oluşturmak için sohbet yedeğiniz silinsin mi?", + "@wipeChatBackup": { + "type": "String", + "placeholders": {} + }, + "withTheseAddressesRecoveryDescription": "Bu adresler ile parolanızı kurtarabilirsiniz.", + "@withTheseAddressesRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "writeAMessage": "Bir mesaj yaz…", + "@writeAMessage": { + "type": "String", + "placeholders": {} + }, + "yes": "Evet", + "@yes": { + "type": "String", + "placeholders": {} + }, + "you": "Sen", + "@you": { + "type": "String", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "Artık bu sohbette katılımcı değilsiniz", + "@youAreNoLongerParticipatingInThisChat": { + "type": "String", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "Bu sohbetten engellendiniz", + "@youHaveBeenBannedFromThisChat": { + "type": "String", + "placeholders": {} + }, + "yourPublicKey": "Ortak anahtarınız", + "@yourPublicKey": { + "type": "String", + "placeholders": {} + }, + "scanQrCode": "QR kodunu tarayın", + "@scanQrCode": {}, + "sendOnEnter": "Enter tuşu ile gönder", + "@sendOnEnter": {}, + "homeserver": "Ana sunucu", + "@homeserver": {}, + "serverRequiresEmail": "Bu sunucunun kayıt için e-posta adresinizi doğrulaması gerekiyor.", + "@serverRequiresEmail": {}, + "enableMultiAccounts": "(BETA) Bu aygıtta çoklu hesapları etkinleştir", + "@enableMultiAccounts": {}, + "bundleName": "Paket adı", + "@bundleName": {}, + "removeFromBundle": "Bu paketten kaldır", + "@removeFromBundle": {}, + "addToBundle": "Pakete ekle", + "@addToBundle": {}, + "editBundlesForAccount": "Bu hesap için paketleri düzenle", + "@editBundlesForAccount": {}, + "addAccount": "Hesap ekle", + "@addAccount": {}, + "oneClientLoggedOut": "İstemcilerinizden birinin oturumu kapatıldı", + "@oneClientLoggedOut": {}, + "link": "Bağlantı", + "@link": {}, + "yourChatBackupHasBeenSetUp": "Sohbet yedeklemeniz ayarlandı.", + "@yourChatBackupHasBeenSetUp": {}, + "unverified": "Doğrulanmadı", + "@unverified": {}, + "repeatPassword": "Parolayı tekrarlayın", + "@repeatPassword": {}, + "messageInfo": "Mesaj bilgileri", + "@messageInfo": {}, + "time": "Zaman", + "@time": {}, + "messageType": "Mesaj Türü", + "@messageType": {}, + "sender": "Gönderen", + "@sender": {}, + "openGallery": "Galeriyi aç", + "@openGallery": {}, + "removeFromSpace": "Alandan kaldır", + "@removeFromSpace": {}, + "addToSpaceDescription": "Bu sohbeti eklemek için bir alan seçin.", + "@addToSpaceDescription": {}, + "start": "Başla", + "@start": {}, + "commandHint_clearcache": "Önbelleği temizleyin", + "@commandHint_clearcache": { + "type": "String", + "description": "Usage hint for the command /clearcache" + }, + "commandHint_dm": "Doğrudan sohbet başlatın\nŞifrelemeyi devre dışı bırakmak için --no-encryption kullanın", + "@commandHint_dm": { + "type": "String", + "description": "Usage hint for the command /dm" + }, + "commandHint_create": "Boş bir grup sohbeti oluşturun\nŞifrelemeyi devre dışı bırakmak için --no-encryption kullanın", + "@commandHint_create": { + "type": "String", + "description": "Usage hint for the command /create" + }, + "commandHint_discardsession": "Oturumu silin", + "@commandHint_discardsession": { + "type": "String", + "description": "Usage hint for the command /discardsession" + }, + "openVideoCamera": "Bir video için kamerayı aç", + "@openVideoCamera": { + "type": "String", + "placeholders": {} + }, + "publish": "Yayınla", + "@publish": {}, + "videoWithSize": "Video ({size})", + "@videoWithSize": { + "type": "String", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "dismiss": "Kapat", + "@dismiss": {}, + "markAsRead": "Okundu olarak işaretle", + "@markAsRead": {}, + "reportUser": "Kullanıcıyı bildir", + "@reportUser": {}, + "openChat": "Sohbeti Aç", + "@openChat": {}, + "reactedWith": "{sender}, {reaction} ile tepki verdi", + "@reactedWith": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "reaction": { + "type": "String" + } + } + }, + "emojis": "Emojiler", + "@emojis": {}, + "placeCall": "Arama yap", + "@placeCall": {}, + "voiceCall": "Sesli arama", + "@voiceCall": {}, + "unsupportedAndroidVersion": "Desteklenmeyen Android sürümü", + "@unsupportedAndroidVersion": {}, + "unsupportedAndroidVersionLong": "Bu özellik daha yeni bir Android sürümü gerektiriyor. Lütfen güncellemelere veya LineageOS desteğine bakın.", + "@unsupportedAndroidVersionLong": {}, + "pinMessage": "Odaya sabitle", + "@pinMessage": {}, + "confirmEventUnpin": "Etkinliğin sabitlemesini kalıcı olarak kaldırmak istediğinizden emin misiniz?", + "@confirmEventUnpin": {}, + "videoCallsBetaWarning": "Görüntülü aramaların şu anda beta aşamasında olduğunu lütfen unutmayın. Tüm platformlarda beklendiği gibi veya hiç çalışmayabilirler.", + "@videoCallsBetaWarning": {}, + "experimentalVideoCalls": "Deneysel görüntülü aramalar", + "@experimentalVideoCalls": {}, + "emailOrUsername": "E-posta veya kullanıcı adı", + "@emailOrUsername": {}, + "switchToAccount": "{number}. hesaba geç", + "@switchToAccount": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "nextAccount": "Sonraki hesap", + "@nextAccount": {}, + "previousAccount": "Önceki hesap", + "@previousAccount": {}, + "widgetJitsi": "Jitsi Meet", + "@widgetJitsi": {}, + "widgetCustom": "Özel", + "@widgetCustom": {}, + "widgetUrlError": "Bu geçerli bir URL değil.", + "@widgetUrlError": {}, + "widgetNameError": "Lütfen görünecek bir ad girin.", + "@widgetNameError": {}, + "errorAddingWidget": "Widget eklenirken hata oluştu.", + "@errorAddingWidget": {}, + "widgetVideo": "Video", + "@widgetVideo": {}, + "addWidget": "Widget ekle", + "@addWidget": {}, + "widgetEtherpad": "Metin notu", + "@widgetEtherpad": {}, + "widgetName": "Ad", + "@widgetName": {}, + "separateChatTypes": "Doğrudan Sohbetleri ve Grupları Ayır", + "@separateChatTypes": { + "type": "String", + "placeholders": {} + }, + "youJoinedTheChat": "Sohbete katıldınız", + "@youJoinedTheChat": {}, + "youAcceptedTheInvitation": "👍 Daveti kabul ettiniz", + "@youAcceptedTheInvitation": {}, + "youKickedAndBanned": "🙅 {user} kullanıcısını attınız ve yasakladınız", + "@youKickedAndBanned": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youUnbannedUser": "{user} kullanıcısının yasağını kaldırdınız", + "@youUnbannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youKicked": "👞 {user} kullanıcısını attınız", + "@youKicked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youRejectedTheInvitation": "Daveti reddettiniz", + "@youRejectedTheInvitation": {}, + "youHaveWithdrawnTheInvitationFor": "{user} için daveti geri çektiniz", + "@youHaveWithdrawnTheInvitationFor": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youInvitedBy": "📩 {user} tarafından davet edildiniz", + "@youInvitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youInvitedUser": "📩 {user} kullanıcısını davet ettiniz", + "@youInvitedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youBannedUser": "{user} kullanıcısını yasakladınız", + "@youBannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "storeInAppleKeyChain": "Apple KeyChain'de sakla", + "@storeInAppleKeyChain": {}, + "pleaseEnterRecoveryKey": "Lütfen kurtarma anahtarınızı girin:", + "@pleaseEnterRecoveryKey": {}, + "recoveryKeyLost": "Kurtarma anahtarı kayıp mı?", + "@recoveryKeyLost": {}, + "pleaseEnterRecoveryKeyDescription": "Eski mesajlarınızın kilidini açmak için lütfen önceki bir oturumda oluşturulan kurtarma anahtarınızı girin. Kurtarma anahtarınız parolanız DEĞİLDİR.", + "@pleaseEnterRecoveryKeyDescription": {}, + "users": "Kullanıcılar", + "@users": {}, + "storeInSecureStorageDescription": "Kurtarma anahtarını bu aygıtın güvenli deposunda saklayın.", + "@storeInSecureStorageDescription": {}, + "recoveryKey": "Kurtarma anahtarı", + "@recoveryKey": {}, + "storeInAndroidKeystore": "Android KeyStore'da sakla", + "@storeInAndroidKeystore": {}, + "unlockOldMessages": "Eski mesajların kilidini aç", + "@unlockOldMessages": {}, + "saveKeyManuallyDescription": "Sistem paylaşımı iletişim kutusunu veya panoyu tetikleyerek bu anahtarı elle kaydedin.", + "@saveKeyManuallyDescription": {}, + "storeSecurlyOnThisDevice": "Bu aygıtta güvenli bir şekilde sakla", + "@storeSecurlyOnThisDevice": {}, + "countFiles": "{count} dosya", + "@countFiles": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "dehydrate": "Oturumu dışa aktar ve aygıtı sil", + "@dehydrate": {}, + "dehydrateTorLong": "TOR kullanıcıları için, pencereyi kapatmadan önce oturumu dışa aktarmaları tavsiye edilir.", + "@dehydrateTorLong": {}, + "dehydrateTor": "TOR Kullanıcıları: Oturumu dışa aktar", + "@dehydrateTor": {}, + "hydrateTor": "TOR Kullanıcıları: Dışa aktarılan oturumu içe aktar", + "@hydrateTor": {}, + "hydrate": "Yedekleme dosyasından geri yükle", + "@hydrate": {}, + "indexedDbErrorTitle": "Gizli mod sorunları", + "@indexedDbErrorTitle": {}, + "dehydrateWarning": "Bu eylem geri alınamaz. Yedekleme dosyasını güvenli bir şekilde sakladığınızdan emin olun.", + "@dehydrateWarning": {}, + "hydrateTorLong": "TOR'da en son oturumunuzu dışa aktardınız mı? Hızlıca içe aktarın ve sohbete devam edin.", + "@hydrateTorLong": {}, + "indexedDbErrorLong": "Mesaj saklama özelliği ne yazık ki öntanımlı olarak gizli modda etkin değildir.\nLütfen\n - about:config sayfasına gidin ve\n - dom.indexedDB.privateBrowsing.enabled seçeneğini true olarak ayarlayın\nAksi takdirde FluffyChat çalıştırılamaz.", + "@indexedDbErrorLong": {}, + "user": "Kullanıcı", + "@user": {}, + "custom": "Özel", + "@custom": {}, + "confirmMatrixId": "Hesabınızı silmek için lütfen Matrix kimliğinizi doğrulayın.", + "@confirmMatrixId": {}, + "supposedMxid": "Bu {mxid} olmalıdır", + "@supposedMxid": { + "type": "String", + "placeholders": { + "mxid": { + "type": "String" + } + } + }, + "commandHint_markasgroup": "Grup olarak işaretle", + "@commandHint_markasgroup": {}, + "commandHint_markasdm": "Verilen Matrix kimliği için doğrudan mesaj odası olarak işaretle", + "@commandHint_markasdm": {}, + "whyIsThisMessageEncrypted": "Bu mesaj neden okunamıyor?", + "@whyIsThisMessageEncrypted": {}, + "noKeyForThisMessage": "Bu durum, mesaj siz bu aygıtta hesabınızda oturum açmadan önce gönderildiyse meydana gelebilir.\n\nGönderenin aygıtınızı engellemiş olması veya internet bağlantısında bir sorun olması da mümkündür.\n\nMesajı başka bir oturumda okuyabiliyor musunuz? O zaman mesajı oradan aktarabilirsiniz! Ayarlar > Aygıtlar bölümüne gidin ve aygıtlarınızın birbirini doğruladığından emin olun. Odayı bir sonraki sefer açtığınızda ve her iki oturum da ön planda olduğunda, anahtarlar otomatik olarak iletilecektir.\n\nOturumu kapatırken veya aygıt değiştirirken anahtarları kaybetmek istemiyor musunuz? Ayarlarda sohbet yedeklemesini etkinleştirdiğinizden emin olun.", + "@noKeyForThisMessage": {}, + "screenSharingTitle": "ekran paylaşımı", + "@screenSharingTitle": {}, + "callingPermissions": "Arama izinleri", + "@callingPermissions": {}, + "callingAccountDetails": "FluffyChat'in yerel android telefon uygulamasını kullanmasına izin verir.", + "@callingAccountDetails": {}, + "appearOnTop": "Üstte görün", + "@appearOnTop": {}, + "enterSpace": "Alana gir", + "@enterSpace": {}, + "enterRoom": "Odaya gir", + "@enterRoom": {}, + "allSpaces": "Tüm alanlar", + "@allSpaces": {}, + "otherCallingPermissions": "Mikrofon, kamera ve diğer FluffyChat izinleri", + "@otherCallingPermissions": {}, + "foregroundServiceRunning": "Bu bildirim, ön plan hizmeti çalışırken görünür.", + "@foregroundServiceRunning": {}, + "callingAccount": "Arama hesabı", + "@callingAccount": {}, + "appearOnTopDetails": "Uygulamanın üstte görünmesine izin verir (Fluffychat'ı zaten bir arama hesabı olarak ayarladıysanız gerekli değildir)", + "@appearOnTopDetails": {}, + "newGroup": "Yeni grup", + "@newGroup": {}, + "newSpace": "Yeni alan", + "@newSpace": {}, + "screenSharingDetail": "Ekranınızı FuffyChat'te paylaşıyorsunuz", + "@screenSharingDetail": {}, + "numChats": "{number} sohbet", + "@numChats": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "hideUnimportantStateEvents": "Önemsiz durum etkinliklerini gizle", + "@hideUnimportantStateEvents": {}, + "doNotShowAgain": "Tekrar gösterme", + "@doNotShowAgain": {}, + "googlyEyesContent": "{senderName} size şaşkın gözler gönderiyor", + "@googlyEyesContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "commandHint_cuddle": "Kucaklama gönder", + "@commandHint_cuddle": {}, + "commandHint_googly": "Şaşkın gözler gönder", + "@commandHint_googly": {}, + "commandHint_hug": "Sarılma gönder", + "@commandHint_hug": {}, + "cuddleContent": "{senderName} sizi kucaklıyor", + "@cuddleContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "hugContent": "{senderName} size sarılıyor", + "@hugContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "wasDirectChatDisplayName": "Boş sohbet ({oldDisplayName} idi)", + "@wasDirectChatDisplayName": { + "type": "String", + "placeholders": { + "oldDisplayName": { + "type": "String" + } + } + }, + "startFirstChat": "İlk sohbetinizi başlatın", + "@startFirstChat": {}, + "newSpaceDescription": "Alanlar, sohbetlerinizi birleştirmenize ve özel veya genel topluluklar oluşturmanıza olanak tanır.", + "@newSpaceDescription": {}, + "encryptThisChat": "Bu sohbeti şifrele", + "@encryptThisChat": {}, + "disableEncryptionWarning": "Güvenlik nedeniyle, daha önce etkinleştirildiği bir sohbette şifrelemeyi devre dışı bırakamazsınız.", + "@disableEncryptionWarning": {}, + "sorryThatsNotPossible": "Üzgünüm... bu mümkün değil", + "@sorryThatsNotPossible": {}, + "deviceKeys": "Aygıt anahtarları:", + "@deviceKeys": {}, + "reopenChat": "Sohbeti yeniden aç", + "@reopenChat": {}, + "noBackupWarning": "Uyarı! Sohbet yedeklemesini etkinleştirmezseniz, şifrelenen mesajlarınıza erişiminizi kaybedersiniz. Oturumu kapatmadan önce sohbet yedeklemesini etkinleştirmeniz önemle tavsiye edilir.", + "@noBackupWarning": {}, + "noOtherDevicesFound": "Başka aygıt bulunamadı", + "@noOtherDevicesFound": {}, + "fileIsTooBigForServer": "Gönderilemiyor! Sunucu yalnızca {max} değerine kadar olan ekleri destekliyor.", + "@fileIsTooBigForServer": {}, + "fileHasBeenSavedAt": "Dosya {path} konumuna kaydedildi", + "@fileHasBeenSavedAt": { + "type": "String", + "placeholders": { + "path": { + "type": "String" + } + } + }, + "jumpToLastReadMessage": "Son okunan mesaja atla", + "@jumpToLastReadMessage": {}, + "readUpToHere": "Buraya kadar oku", + "@readUpToHere": {}, + "jump": "Atla", + "@jump": {}, + "openLinkInBrowser": "Bağlantıyı tarayıcıda aç", + "@openLinkInBrowser": {}, + "allRooms": "Tüm Grup Sohbetleri", + "@allRooms": { + "type": "String", + "placeholders": {} + }, + "reportErrorDescription": "😭 Olamaz. Bir şeyler yanlış gitti. İsterseniz bu hatayı geliştiricilere bildirebilirsiniz.", + "@reportErrorDescription": {}, + "report": "bildir", + "@report": {}, + "signInWithPassword": "Parola ile oturum aç", + "@signInWithPassword": {}, + "pleaseTryAgainLaterOrChooseDifferentServer": "Lütfen daha sonra tekrar deneyin veya farklı bir sunucu seçin.", + "@pleaseTryAgainLaterOrChooseDifferentServer": {}, + "signInWith": "{provider} ile oturum aç", + "@signInWith": { + "type": "String", + "placeholders": { + "provider": { + "type": "String" + } + } + }, + "notAnImage": "Bir resim dosyası değil.", + "@notAnImage": {}, + "importNow": "Şimdi içe aktar", + "@importNow": {}, + "importEmojis": "İfadeleri İçe Aktar", + "@importEmojis": {}, + "importFromZipFile": ".zip dosyasından içe aktar", + "@importFromZipFile": {}, + "exportEmotePack": "İfade paketini .zip olarak dışa aktar", + "@exportEmotePack": {}, + "replace": "Değiştir", + "@replace": {}, + "sendTypingNotifications": "Yazma bildirimleri gönder", + "@sendTypingNotifications": {}, + "messagesStyle": "Mesajlar:", + "@messagesStyle": {}, + "createGroup": "Grup oluştur", + "@createGroup": {}, + "shareInviteLink": "Davet bağlantısını paylaş", + "@shareInviteLink": {}, + "profileNotFound": "Kullanıcı sunucuda bulunamadı. Belki bir bağlantı sorunu vardır veya kullanıcı mevcut değildir.", + "@profileNotFound": {}, + "setTheme": "Temayı ayarla:", + "@setTheme": {}, + "setColorTheme": "Renk temasını ayarla:", + "@setColorTheme": {}, + "inviteContactToGroupQuestion": "{contact} kişisini \"{groupName}\" sohbetine davet etmek istiyor musunuz?", + "@inviteContactToGroupQuestion": {}, + "tryAgain": "Tekrar deneyin", + "@tryAgain": {}, + "redactMessageDescription": "Bu mesaj bu görüşmedeki herkes için düzenlenecek. Bu işlem geri alınamaz.", + "@redactMessageDescription": {}, + "optionalRedactReason": "(İsteğe bağlı) Bu mesajı düzenleme nedeni…", + "@optionalRedactReason": {}, + "invite": "Davet et", + "@invite": {}, + "addChatDescription": "Sohbet açıklaması ekle...", + "@addChatDescription": {}, + "chatPermissions": "Sohbet izinleri", + "@chatPermissions": {}, + "chatDescription": "Sohbet açıklaması", + "@chatDescription": {}, + "noChatDescriptionYet": "Daha sohbet açıklaması oluşturulmadı.", + "@noChatDescriptionYet": {}, + "invalidServerName": "Geçersiz sunucu adı", + "@invalidServerName": {}, + "redactedBy": "{username} tarafından düzenlendi", + "@redactedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "redactedByBecause": "{username} tarafından \"{reason}\" nedeniyle düzenlendi", + "@redactedByBecause": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "reason": { + "type": "String" + } + } + }, + "setChatDescription": "Sohbet açıklamasını ayarla", + "@setChatDescription": {}, + "chatDescriptionHasBeenChanged": "Sohbet açıklaması değişti", + "@chatDescriptionHasBeenChanged": {}, + "directChat": "Doğrudan sohbet", + "@directChat": {}, + "inviteGroupChat": "📨 Grup sohbetine davet et", + "@inviteGroupChat": {}, + "invitePrivateChat": "📨 Gizli sohbete davet et", + "@invitePrivateChat": {}, + "emoteKeyboardNoRecents": "Son kullanılan ifadeler burada görünecek...", + "@emoteKeyboardNoRecents": { + "type": "String", + "placeholders": {} + }, + "invalidInput": "Geçersiz giriş!", + "@invalidInput": {}, + "wrongPinEntered": "Yanlış PIN girildi! {seconds} saniye sonra tekrar deneyin...", + "@wrongPinEntered": { + "type": "String", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "banUserDescription": "Kullanıcı sohbetten yasaklanacak ve yasağı kaldırılana kadar sohbete tekrar giremeyecek.", + "@banUserDescription": {}, + "removeDevicesDescription": "Bu aygıttan çıkış yapacaksınız ve artık mesaj alamayacaksınız.", + "@removeDevicesDescription": {}, + "unbanUserDescription": "Kullanıcı denerse sohbete tekrar girebilecektir.", + "@unbanUserDescription": {}, + "pushNotificationsNotAvailable": "Anlık bildirimler kullanılamıyor", + "@pushNotificationsNotAvailable": {}, + "makeAdminDescription": "Bu kullanıcıyı yönetici yaptıktan sonra, sizinle aynı izinlere sahip olacağı için bunu geri alamayabilirsiniz.", + "@makeAdminDescription": {}, + "archiveRoomDescription": "Sohbet arşive taşınacak. Diğer kullanıcıları sohbeti terk ettiğinizi görebilecek.", + "@archiveRoomDescription": {}, + "hasKnocked": "🚪 {user} tıklattı", + "@hasKnocked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "learnMore": "Daha fazla bilgi", + "@learnMore": {}, + "roomUpgradeDescription": "Sohbet daha sonra yeni oda sürümüyle yeniden oluşturulacaktır. Tüm katılımcılara yeni sohbete geçmeleri gerektiği bildirilecektir. Oda sürümleri hakkında daha fazla bilgiyi https://spec.matrix.org/latest/rooms/ adresinde bulabilirsiniz.", + "@roomUpgradeDescription": {}, + "pleaseEnterANumber": "Lütfen 0'dan büyük bir sayı girin", + "@pleaseEnterANumber": {}, + "kickUserDescription": "Kullanıcı sohbetten atılır ancak yasaklanmaz. Herkese açık sohbetlerde kullanıcı istediği zaman yeniden katılabilir.", + "@kickUserDescription": {}, + "createGroupAndInviteUsers": "Bir grup oluşturun ve kullanıcıları davet edin", + "@createGroupAndInviteUsers": {}, + "groupCanBeFoundViaSearch": "Grup, arama ile bulunabilir", + "@groupCanBeFoundViaSearch": {}, + "noUsersFoundWithQuery": "Ne yazık ki \"{query}\" ile kullanıcı bulunamadı. Lütfen bir yazım hatası yapıp yapmadığınızı kontrol edin.", + "@noUsersFoundWithQuery": { + "type": "String", + "placeholders": { + "query": { + "type": "String" + } + } + }, + "yourGlobalUserIdIs": "Genel kullanıcı kimliğiniz: ", + "@yourGlobalUserIdIs": {}, + "groupName": "Grup ismi", + "@groupName": {}, + "searchChatsRooms": "#sohbetler, @kullanıcılar... için arama yapın", + "@searchChatsRooms": {}, + "blockListDescription": "Sizi rahatsız eden kullanıcıları engelleyebilirsiniz. Kişisel engelleme listenizdeki kullanıcılardan herhangi bir mesaj veya oda daveti alamazsınız.", + "@blockListDescription": {}, + "startConversation": "Görüşme başlat", + "@startConversation": {}, + "blockedUsers": "Engellenen kullanıcılar", + "@blockedUsers": {}, + "block": "Engelle", + "@block": {}, + "commandHint_sendraw": "Ham JSON gönder", + "@commandHint_sendraw": {}, + "wrongRecoveryKey": "Üzgünüm... bu doğru kurtarma anahtarı gibi görünmüyor.", + "@wrongRecoveryKey": {}, + "blockUsername": "Kullanıcı adını görmezden gel", + "@blockUsername": {}, + "databaseMigrationTitle": "Veri tabanı iyileştirildi", + "@databaseMigrationTitle": {}, + "databaseMigrationBody": "Lütfen bekleyin. Bu biraz zaman alabilir.", + "@databaseMigrationBody": {}, + "youInvitedToBy": "📩 Bağlantı aracılığıyla davet edildiniz:\n{alias}", + "@youInvitedToBy": { + "placeholders": { + "alias": { + "type": "String" + } + } + }, + "pleaseEnterYourCurrentPassword": "Lütfen geçerli parolanızı girin", + "@pleaseEnterYourCurrentPassword": {}, + "pleaseChooseAStrongPassword": "Lütfen güçlü bir parola seçin", + "@pleaseChooseAStrongPassword": {}, + "addChatOrSubSpace": "Sohbet veya alt alan ekle", + "@addChatOrSubSpace": {}, + "canceledKeyVerification": "{sender} anahtar doğrulamayı iptal etti", + "@canceledKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "publicLink": "Herkese açık bağlantı", + "@publicLink": {}, + "joinSpace": "Alana katıl", + "@joinSpace": {}, + "newPassword": "Yeni parola", + "@newPassword": {}, + "databaseBuildErrorBody": "SQlite veri tabanı oluşturulamadı. Uygulama şimdilik eski veri tabanını kullanmaya çalışıyor. Lütfen bu hatayı {url} adresinde geliştiricilere bildirin. Hata mesajı: {error}", + "@databaseBuildErrorBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "sessionLostBody": "Oturumunuz kayboldu. Lütfen bu hatayı {url} adresinde geliştiricilere bildirin. Hata mesajı: {error}", + "@sessionLostBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "subspace": "Alt alan", + "@subspace": {}, + "thisDevice": "Bu aygıt:", + "@thisDevice": {}, + "formattedMessagesDescription": "Markdown kullanarak kalın metin gibi zengin mesaj içeriğini görüntüle.", + "@formattedMessagesDescription": {}, + "verifyOtherDevice": "🔐 Diğer aygıtı doğrula", + "@verifyOtherDevice": {}, + "presencesToggle": "Diğer kullanıcıların durum mesajlarını göster", + "@presencesToggle": { + "type": "String", + "placeholders": {} + }, + "presenceStyle": "Bulunma:", + "@presenceStyle": { + "type": "String", + "placeholders": {} + }, + "searchForUsers": "@kullanıcıları ara...", + "@searchForUsers": {}, + "commandHint_ignore": "Verilen matrix kimliğini görmezden gel", + "@commandHint_ignore": {}, + "commandHint_unignore": "Verilen matrix kimliğini görmezden gelmeyi iptal et", + "@commandHint_unignore": {}, + "appLockDescription": "Kullanılmadığında PIN kodu ile uygulamayı kilitle", + "@appLockDescription": {}, + "globalChatId": "Genel sohbet kimliği", + "@globalChatId": {}, + "accessAndVisibility": "Erişim ve görünürlük", + "@accessAndVisibility": {}, + "accessAndVisibilityDescription": "Bu sohbete kimlerin katılmasına izin verilir ve sohbet nasıl keşfedilebilir.", + "@accessAndVisibilityDescription": {}, + "calls": "Aramalar", + "@calls": {}, + "customEmojisAndStickers": "Özel emojiler ve çıkartmalar", + "@customEmojisAndStickers": {}, + "customEmojisAndStickersBody": "Herhangi bir sohbette kullanılabilecek özel emojiler veya çıkartmalar ekleyin veya paylaşın.", + "@customEmojisAndStickersBody": {}, + "hideRedactedMessages": "Düzenlenen mesajları gizle", + "@hideRedactedMessages": {}, + "hideRedactedMessagesBody": "Birisi bir mesajı düzenlerse, bu mesaj artık sohbette görünmeyecektir.", + "@hideRedactedMessagesBody": {}, + "hideMemberChangesInPublicChats": "Herkese açık sohbetlerde üye değişikliklerini gizle", + "@hideMemberChangesInPublicChats": {}, + "hideMemberChangesInPublicChatsBody": "Okunabilirliği artırmak için birisi herkese açık bir sohbete katıldığında veya sohbetten ayrıldığında sohbet zaman çizelgesinde gösterme.", + "@hideMemberChangesInPublicChatsBody": {}, + "passwordRecoverySettings": "Parola kurtarma ayarları", + "@passwordRecoverySettings": {}, + "userWouldLikeToChangeTheChat": "{user} sohbete katılmak istiyor.", + "@userWouldLikeToChangeTheChat": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "noPublicLinkHasBeenCreatedYet": "Henüz herkese açık bir bağlantı oluşturulmadı", + "@noPublicLinkHasBeenCreatedYet": {}, + "knock": "Tıklat", + "@knock": {}, + "knocking": "Tıklat", + "@knocking": {}, + "usersMustKnock": "Kullanıcılar tıklatmalı", + "@usersMustKnock": {}, + "noOneCanJoin": "Kimse katılamaz", + "@noOneCanJoin": {}, + "nothingFound": "Hiçbir şey bulunamadı...", + "@nothingFound": {}, + "sendReadReceiptsDescription": "Sohbetteki diğer katılımcılar bir mesajı okuduğunuzu görebilir.", + "@sendReadReceiptsDescription": {}, + "verifyOtherDeviceDescription": "Başka bir aygıtı doğruladığınızda, bu aygıtlar anahtarları değiş tokuş ederek genel güvenliğinizi artırır. 💪 Bir doğrulama başlattığınızda, her iki aygıttaki uygulamada bir açılır pencere görünecektir. Orada birbirleriyle karşılaştırmanız gereken bir dizi emoji veya sayı göreceksiniz. Doğrulamaya başlamadan önce her iki aygıtın da elinizin altında olması en iyisidir. 🤳", + "@verifyOtherDeviceDescription": {}, + "noDatabaseEncryption": "Veri tabanı şifrelemesi bu platformda desteklenmiyor", + "@noDatabaseEncryption": {}, + "thereAreCountUsersBlocked": "Şu anda {count} engellenen kullanıcı var.", + "@thereAreCountUsersBlocked": { + "type": "String", + "count": {} + }, + "publicSpaces": "Herkese açık alanlar", + "@publicSpaces": {}, + "initAppError": "Uygulama başlatılırken bir hata oluştu", + "@initAppError": {}, + "userRole": "Kullanıcı rolü", + "@userRole": {}, + "hideInvalidOrUnknownMessageFormats": "Geçersiz veya bilinmeyen mesaj biçimlerini gizle", + "@hideInvalidOrUnknownMessageFormats": {}, + "hidePresences": "Durum listesi gizlensin mi?", + "@hidePresences": {}, + "overview": "Genel görünüm", + "@overview": {}, + "decline": "Reddet", + "@decline": {}, + "notifyMeFor": "Beni bilgilendir", + "@notifyMeFor": {}, + "chatCanBeDiscoveredViaSearchOnServer": "Sohbet {server} üzerinde aranarak keşfedilebilir", + "@chatCanBeDiscoveredViaSearchOnServer": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "leaveEmptyToClearStatus": "Durumunuzu temizlemek için boş bırakın.", + "@leaveEmptyToClearStatus": {}, + "select": "Seç", + "@select": {}, + "minimumPowerLevel": "{level} en düşük güç seviyesidir.", + "@minimumPowerLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "String" + } + } + }, + "passwordsDoNotMatch": "Parolalar eşleşmiyor", + "@passwordsDoNotMatch": {}, + "passwordIsWrong": "Girdiğiniz parola yanlış", + "@passwordIsWrong": {}, + "publicChatAddresses": "Herkese açık sohbet adresleri", + "@publicChatAddresses": {}, + "createNewAddress": "Yeni adres oluştur", + "@createNewAddress": {}, + "forwardMessageTo": "Mesajlar {roomName} kişisine iletilsin mi?", + "@forwardMessageTo": { + "type": "String", + "placeholders": { + "roomName": { + "type": "String" + } + } + }, + "acceptedKeyVerification": "{sender} anahtar doğrulamayı kabul etti", + "@acceptedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "restoreSessionBody": "Uygulama şimdi oturumunuzu yedekten geri yüklemeye çalışıyor. Lütfen bu hatayı {url} adresinde geliştiricilere bildirin. Hata mesajı: {error}", + "@restoreSessionBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "sendReadReceipts": "Okundu bilgisi gönder", + "@sendReadReceipts": {}, + "completedKeyVerification": "{sender} anahtar doğrulamayı tamamladı", + "@completedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "sendTypingNotificationsDescription": "Sohbetteki diğer katılımcılar yeni bir mesaj yazdığınızı görebilir.", + "@sendTypingNotificationsDescription": {}, + "isReadyForKeyVerification": "{sender} anahtar doğrulama için hazır", + "@isReadyForKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "formattedMessages": "Biçimlendirilen mesajlar", + "@formattedMessages": {}, + "requestedKeyVerification": "{sender} anahtar doğrulama istedi", + "@requestedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "verifyOtherUser": "🔐 Diğer kullanıcıyı doğrula", + "@verifyOtherUser": {}, + "startedKeyVerification": "{sender} anahtar doğrulama başlattı", + "@startedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "transparent": "Şeffaf", + "@transparent": {}, + "discover": "Keşfet", + "@discover": {}, + "incomingMessages": "Gelen mesajlar", + "@incomingMessages": {}, + "verifyOtherUserDescription": "Başka bir kullanıcıyı doğrularsanız, gerçekten kime yazdığınızı bildiğinizden emin olabilirsiniz. 💪\n\nBir doğrulama başlattığınızda, siz ve diğer kullanıcı uygulamada bir açılır pencere görecektir. Orada birbirinizle karşılaştırmanız gereken bir dizi emoji veya sayı göreceksiniz.\n\nBunu yapmanın en iyi yolu buluşmak veya bir görüntülü arama başlatmaktır. 👭", + "@verifyOtherUserDescription": {}, + "stickers": "Çıkartmalar", + "@stickers": {}, + "unreadChatsInApp": "{appname}: {unread} okunmayan sohbet", + "@unreadChatsInApp": { + "type": "String", + "placeholders": { + "appname": { + "type": "String" + }, + "unread": { + "type": "String" + } + } + }, + "searchIn": "\"{chat}\" sohbeti içinde ara...", + "@searchIn": { + "type": "String", + "placeholders": { + "chat": { + "type": "String" + } + } + }, + "searchMore": "Daha fazla ara...", + "@searchMore": {}, + "gallery": "Galeri", + "@gallery": {}, + "files": "Dosyalar", + "@files": {}, + "knockRestricted": "Tıklatma kısıtlı", + "@knockRestricted": {}, + "restricted": "Kısıtlı", + "@restricted": {}, + "swipeRightToLeftToReply": "Yanıtlamak için sağdan sola kaydır", + "@swipeRightToLeftToReply": {}, + "alwaysUse24HourFormat": "false", + "@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": "String", + "placeholders": { + "chats": { + "type": "int" + }, + "participants": { + "type": "int" + } + } + }, + "noMoreChatsFound": "Başka sohbet bulunamadı...", + "@noMoreChatsFound": {}, + "goToSpace": "Alana git: {space}", + "@goToSpace": { + "type": "String", + "space": {} + }, + "joinedChats": "Katılınan sohbetler", + "@joinedChats": {}, + "unread": "Okunmadı", + "@unread": {}, + "markAsUnread": "Okunmadı olarak işaretle", + "@markAsUnread": {}, + "space": "Alan", + "@space": {}, + "spaces": "Alanlar", + "@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": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "moderatorLevel": "{level} - Moderatör", + "@moderatorLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "adminLevel": "{level} - Yönetici", + "@adminLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "changeGeneralChatSettings": "Genel sohbet ayarlarını değiştir", + "@changeGeneralChatSettings": {}, + "changeTheVisibilityOfChatHistory": "Sohbet geçmişinin görünürlüğünü değiştir", + "@changeTheVisibilityOfChatHistory": {}, + "invitedBy": "📩 {user} davet etti", + "@invitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "chatPermissionsDescription": "Bu sohbette belirli eylemler için hangi güç düzeyinin gerekli olduğunu tanımlayın. 0, 50 ve 100 güç düzeyleri genellikle kullanıcıları, moderatörleri ve yöneticileri temsil eder, ancak herhangi bir derecelendirme mümkündür.", + "@chatPermissionsDescription": {}, + "changelog": "Değişiklik günlüğü", + "@changelog": {}, + "updateInstalled": "🎉 Güncelleme {version} kuruldu!", + "@updateInstalled": { + "type": "String", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "sendCanceled": "Gönderme iptal edildi", + "@sendCanceled": {}, + "noChatsFoundHere": "Burada henüz sohbet bulunamadı. Aşağıdaki düğmeyi kullanarak biriyle yeni bir sohbet başlatın. ⤵️", + "@noChatsFoundHere": {}, + "loginWithMatrixId": "Matrix kimliği ile oturum aç", + "@loginWithMatrixId": {}, + "discoverHomeservers": "Ana sunucuları keşfet", + "@discoverHomeservers": {}, + "whatIsAHomeserver": "Ana sunucu nedir?", + "@whatIsAHomeserver": {}, + "homeserverDescription": "Tüm verileriniz tıpkı bir e-posta sağlayıcısı gibi ana sunucuda saklanır. Hangi ana sunucuyu kullanmak istediğinizi seçebilir ve herkesle iletişim kurmaya devam edebilirsiniz. https://matrix.org adresinden daha fazla bilgi edinin.", + "@homeserverDescription": {}, + "doesNotSeemToBeAValidHomeserver": "Uyumlu bir ana sunucu gibi görünmüyor. Yanlış URL mi?", + "@doesNotSeemToBeAValidHomeserver": {}, + "prepareSendingAttachment": "Ek gönderilmeye hazırlanıyor...", + "@prepareSendingAttachment": {}, + "serverLimitReached": "Sunucu sınırına ulaşıldı! {seconds} saniye bekleniyor...", + "@serverLimitReached": { + "type": "integer", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "calculatingFileSize": "Dosya boyutu hesaplanıyor...", + "@calculatingFileSize": {}, + "sendingAttachmentCountOfCount": "Ek {index} / {length} gönderiliyor...", + "@sendingAttachmentCountOfCount": { + "type": "integer", + "placeholders": { + "index": { + "type": "int" + }, + "length": { + "type": "int" + } + } + }, + "sendingAttachment": "Ek gönderiliyor...", + "@sendingAttachment": {}, + "generatingVideoThumbnail": "Video küçük resmi oluşturuluyor...", + "@generatingVideoThumbnail": {}, + "compressVideo": "Video sıkıştırılıyor...", + "@compressVideo": {}, + "oneOfYourDevicesIsNotVerified": "Aygıtlarınızdan biri doğrulanmadı", + "@oneOfYourDevicesIsNotVerified": {}, + "noticeChatBackupDeviceVerification": "Not: Tüm aygıtlarınızı sohbet yedeklemesine bağladığınızda, otomatik olarak doğrulanırlar.", + "@noticeChatBackupDeviceVerification": {}, + "blur": "Blur:", + "@blur": {}, + "opacity": "Şeffaflık:", + "@opacity": {}, + "setWallpaper": "Duvar kağıdı seç", + "@setWallpaper": {}, + "manageAccount": "Hesabı yönet", + "@manageAccount": {}, + "noContactInformationProvided": "Sunucu geçerli bir iletişim bilgisi sunmadı", + "@noContactInformationProvided": {}, + "contactServerAdmin": "Sunucu yöneticisiyle iletişime geçin", + "@contactServerAdmin": {}, + "contactServerSecurity": "Sunucu güvenliğiyle iletişime geçin", + "@contactServerSecurity": {}, + "supportPage": "Destek sayfası", + "@supportPage": {}, + "name": "İsim", + "@name": {}, + "version": "Versiyon", + "@version": {}, + "serverInformation": "Sunucu bilgisi:", + "@serverInformation": {}, + "website": "Web sitesi", + "@website": {}, + "compress": "Sıkıştırma", + "@compress": {}, + "boldText": "Kalın metin", + "@boldText": {}, + "italicText": "İtalik metin", + "@italicText": {}, + "strikeThrough": "Üstü çizili", + "@strikeThrough": {}, + "pleaseFillOut": "Lütfen doldurun", + "@pleaseFillOut": {}, + "aboutHomeserver": "{homeserver} Hakkında", + "@aboutHomeserver": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "invalidUrl": "Geçersiz url", + "@invalidUrl": {}, + "addLink": "Link ekle", + "@addLink": {}, + "unableToJoinChat": "Sohbete girilemiyor. Belki başka birileri konuşmayı kapatmış olabilir.", + "@unableToJoinChat": {}, + "continueText": "Devam et", + "@continueText": {}, + "sendImages": "{count} görsel gönder", + "@sendImages": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "welcomeText": "Hey Hey 👋 Karşınızda FluffyChat. https://matrix.org ile uyumlu herhangi bir homeserver'a giriş yapabilirsiniz. Ve herkesle konuşabilirsiniz. Bu koca bir merkeziyetsiz mesajlaşma ağı!", + "@welcomeText": {}, + "setCustomPermissionLevel": "Özel izin düzeyi ayarla", + "@setCustomPermissionLevel": {}, + "setPermissionsLevelDescription": "Lütfen aşağıdan önceden tanımlanmış bir rol seçin veya 0 ile 100 arasında bir özel izin seviyesi girin.", + "@setPermissionsLevelDescription": {}, + "ignoreUser": "Kullanıcıyı yok say", + "@ignoreUser": {}, + "normalUser": "Normal kullanıcı", + "@normalUser": {}, + "commandHint_roomupgrade": "Bu odayı belirtilen oda sürümüne yükseltin", + "@commandHint_roomupgrade": {}, + "checkList": "Kontrol listesi", + "@checkList": {}, + "countInvited": "{count} davet edildi", + "@countInvited": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "synchronizingPleaseWaitCounter": " Senkronize ediliyor… ({percentage}%)", + "@synchronizingPleaseWaitCounter": { + "type": "String", + "placeholders": { + "percentage": { + "type": "String" + } + } + } +} diff --git a/lib/l10n/intl_uk.arb b/lib/l10n/intl_uk.arb new file mode 100644 index 0000000..2927ea4 --- /dev/null +++ b/lib/l10n/intl_uk.arb @@ -0,0 +1,3389 @@ +{ + "@@locale": "uk", + "@@last_modified": "2021-08-14 12:41:09.790615", + "about": "Про застосунок", + "@about": { + "type": "String", + "placeholders": {} + }, + "accept": "Прийняти", + "@accept": { + "type": "String", + "placeholders": {} + }, + "acceptedTheInvitation": "👍 {username} приймає запрошення", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "account": "Обліковий запис", + "@account": { + "type": "String", + "placeholders": {} + }, + "activatedEndToEndEncryption": "🔐 {username} активує наскрізне шифрування", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "admin": "Адміністратор", + "@admin": { + "type": "String", + "placeholders": {} + }, + "alias": "псевдонім", + "@alias": { + "type": "String", + "placeholders": {} + }, + "answeredTheCall": "{senderName} відповідає на виклик", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "anyoneCanJoin": "Будь-хто може приєднатись", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "archive": "Архів", + "@archive": { + "type": "String", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "Чи дозволено гостям приєднуватись", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "Ви впевнені?", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "askSSSSSign": "Для підпису ключа іншого користувача введіть свою парольну фразу або ключ відновлення.", + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "askVerificationRequest": "Прийняти цей запит на підтвердження від {username}?", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "banFromChat": "Заблокувати в бесіді", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "banned": "Заблоковано", + "@banned": { + "type": "String", + "placeholders": {} + }, + "bannedUser": "{username} блокує {targetName}", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "blockDevice": "Заблокувати пристрій", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "cancel": "Скасувати", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "changedTheChatAvatar": "{username} змінює аватар бесіди", + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheChatDescriptionTo": "{username} змінює опис бесіди на: '{description}'", + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "changedTheChatNameTo": "{username} змінює назву бесіди на: '{chatname}'", + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "changedTheChatPermissions": "{username} змінює права доступу бесіди", + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheDisplaynameTo": "{username} змінює показуване ім'я на: '{displayname}'", + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "changedTheGuestAccessRules": "{username} змінює правила гостьового доступу", + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheGuestAccessRulesTo": "{username} змінює правила гостьового доступу на: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheHistoryVisibility": "{username} змінює видимість історії", + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheHistoryVisibilityTo": "{username} змінює видимість історії на: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheJoinRules": "{username} змінює правила приєднання", + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheJoinRulesTo": "{username} змінює правила приєднання на: {joinRules}", + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "changedTheProfileAvatar": "{username} змінює аватар", + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomAliases": "{username} змінює псевдоніми кімнати", + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomInvitationLink": "{username} змінює посилання для запрошення", + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changeTheHomeserver": "Змінити домашній сервер", + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "changeTheme": "Змінити стиль", + "@changeTheme": { + "type": "String", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "Змінити назву групи", + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "channelCorruptedDecryptError": "Шифрування було пошкоджено", + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "chat": "Бесіда", + "@chat": { + "type": "String", + "placeholders": {} + }, + "chatDetails": "Подробиці бесіди", + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "chooseAStrongPassword": "Виберіть надійний пароль", + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "close": "Закрити", + "@close": { + "type": "String", + "placeholders": {} + }, + "compareEmojiMatch": "Порівняйте емодзі", + "@compareEmojiMatch": { + "type": "String", + "placeholders": {} + }, + "compareNumbersMatch": "Порівняйте цифри", + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "confirm": "Підтвердити", + "@confirm": { + "type": "String", + "placeholders": {} + }, + "connect": "Під'єднатись", + "@connect": { + "type": "String", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "Контакт був запрошений в групу", + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "copiedToClipboard": "Скопійовано в буфер обміну", + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "copy": "Копіювати", + "@copy": { + "type": "String", + "placeholders": {} + }, + "couldNotDecryptMessage": "Помилка розшифрування повідомлення: {error}", + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "countParticipants": "Учасників: {count}", + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "create": "Створити", + "@create": { + "type": "String", + "placeholders": {} + }, + "createdTheChat": "💬 {username} створює бесіду", + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "currentlyActive": "Зараз у мережі", + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "darkTheme": "Темний", + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "dateAndTimeOfDay": "{timeOfDay}, {date}", + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "dateWithoutYear": "{day}-{month}", + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "dateWithYear": "{day}-{month}-{year}", + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "delete": "Видалити", + "@delete": { + "type": "String", + "placeholders": {} + }, + "deleteMessage": "Видалити повідомлення", + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "device": "Пристрій", + "@device": { + "type": "String", + "placeholders": {} + }, + "devices": "Пристрої", + "@devices": { + "type": "String", + "placeholders": {} + }, + "displaynameHasBeenChanged": "Показуване ім'я було змінено", + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "downloadFile": "Завантажити файл", + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "editDisplayname": "Змінити показуване ім'я", + "@editDisplayname": { + "type": "String", + "placeholders": {} + }, + "emoteExists": "Емодзі вже існує!", + "@emoteExists": { + "type": "String", + "placeholders": {} + }, + "emoteInvalid": "Неприпустимий короткий код емодзі!", + "@emoteInvalid": { + "type": "String", + "placeholders": {} + }, + "emoteSettings": "Налаштування емодзі", + "@emoteSettings": { + "type": "String", + "placeholders": {} + }, + "emoteShortcode": "Короткий код для емодзі", + "@emoteShortcode": { + "type": "String", + "placeholders": {} + }, + "emoteWarnNeedToPick": "Укажіть короткий код емодзі та зображення!", + "@emoteWarnNeedToPick": { + "type": "String", + "placeholders": {} + }, + "emptyChat": "Порожня бесіда", + "@emptyChat": { + "type": "String", + "placeholders": {} + }, + "enableEncryptionWarning": "Ви більше не зможете вимкнути шифрування. Ви впевнені?", + "@enableEncryptionWarning": { + "type": "String", + "placeholders": {} + }, + "encryption": "Шифрування", + "@encryption": { + "type": "String", + "placeholders": {} + }, + "encryptionNotEnabled": "Шифрування вимкнено", + "@encryptionNotEnabled": { + "type": "String", + "placeholders": {} + }, + "endedTheCall": "{senderName} завершує виклик", + "@endedTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "enterYourHomeserver": "Введіть адресу домашнього сервера", + "@enterYourHomeserver": { + "type": "String", + "placeholders": {} + }, + "fileName": "Назва файлу", + "@fileName": { + "type": "String", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "String", + "placeholders": {} + }, + "forward": "Переслати", + "@forward": { + "type": "String", + "placeholders": {} + }, + "fromJoining": "З моменту приєднання", + "@fromJoining": { + "type": "String", + "placeholders": {} + }, + "fromTheInvitation": "З моменту запрошення", + "@fromTheInvitation": { + "type": "String", + "placeholders": {} + }, + "group": "Група", + "@group": { + "type": "String", + "placeholders": {} + }, + "groupIsPublic": "Загальнодоступна група", + "@groupIsPublic": { + "type": "String", + "placeholders": {} + }, + "groupWith": "Група з {displayname}", + "@groupWith": { + "type": "String", + "placeholders": { + "displayname": { + "type": "String" + } + } + }, + "guestsAreForbidden": "Гості не можуть приєднуватись", + "@guestsAreForbidden": { + "type": "String", + "placeholders": {} + }, + "guestsCanJoin": "Гості можуть приєднуватись", + "@guestsCanJoin": { + "type": "String", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "{username} відкликає запрошення для {targetName}", + "@hasWithdrawnTheInvitationFor": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "help": "Довідка", + "@help": { + "type": "String", + "placeholders": {} + }, + "id": "ID", + "@id": { + "type": "String", + "placeholders": {} + }, + "identity": "Ідентифікація", + "@identity": { + "type": "String", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "Неправильна парольна фраза або ключ відновлення", + "@incorrectPassphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "inviteContact": "Запросити контакт", + "@inviteContact": { + "type": "String", + "placeholders": {} + }, + "inviteContactToGroup": "Запросити контакт до {groupName}", + "@inviteContactToGroup": { + "type": "String", + "placeholders": { + "groupName": { + "type": "String" + } + } + }, + "invited": "Запрошено", + "@invited": { + "type": "String", + "placeholders": {} + }, + "invitedUser": "📩 {username} запрошує {targetName}", + "@invitedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "invitedUsersOnly": "Лише запрошені користувачі", + "@invitedUsersOnly": { + "type": "String", + "placeholders": {} + }, + "inviteText": "{username} запрошує вас у FluffyChat. \n1. Перейдіть на fluffychat.im й установіть застосунок \n2. Зареєструйтесь або ввійдіть \n3. Відкрийте запрошувальне посилання:\n {link}", + "@inviteText": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "link": { + "type": "String" + } + } + }, + "isTyping": "пише…", + "@isTyping": { + "type": "String", + "placeholders": {} + }, + "joinedTheChat": "👋 {username} приєднується до бесіди", + "@joinedTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "kicked": "👞 {username} вилучає {targetName}", + "@kicked": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickedAndBanned": "🙅 {username} вилучає та блокує {targetName}", + "@kickedAndBanned": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickFromChat": "Вилучити з бесіди", + "@kickFromChat": { + "type": "String", + "placeholders": {} + }, + "lastActiveAgo": "Остання активність: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "String", + "placeholders": { + "localizedTimeShort": { + "type": "String" + } + } + }, + "leave": "Вийти", + "@leave": { + "type": "String", + "placeholders": {} + }, + "leftTheChat": "Виходить з бесіди", + "@leftTheChat": { + "type": "String", + "placeholders": {} + }, + "license": "Ліцензія", + "@license": { + "type": "String", + "placeholders": {} + }, + "lightTheme": "Світлий", + "@lightTheme": { + "type": "String", + "placeholders": {} + }, + "loadCountMoreParticipants": "Завантажити ще {count} учасників", + "@loadCountMoreParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "loadingPleaseWait": "Завантаження… Будь ласка, зачекайте.", + "@loadingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "loadMore": "Завантажити ще…", + "@loadMore": { + "type": "String", + "placeholders": {} + }, + "login": "Увійти", + "@login": { + "type": "String", + "placeholders": {} + }, + "logInTo": "Увійти до {homeserver}", + "@logInTo": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "logout": "Вийти", + "@logout": { + "type": "String", + "placeholders": {} + }, + "moderator": "Модератор", + "@moderator": { + "type": "String", + "placeholders": {} + }, + "muteChat": "Вимкнути сповіщення", + "@muteChat": { + "type": "String", + "placeholders": {} + }, + "needPantalaimonWarning": "Майте на увазі, що на цей час вам потрібен Pantalaimon, щоб використовувати наскрізне шифрування.", + "@needPantalaimonWarning": { + "type": "String", + "placeholders": {} + }, + "newMessageInFluffyChat": "💬 Нове повідомлення у FluffyChat", + "@newMessageInFluffyChat": { + "type": "String", + "placeholders": {} + }, + "newVerificationRequest": "Новий запит перевірки!", + "@newVerificationRequest": { + "type": "String", + "placeholders": {} + }, + "noEmotesFound": "Емоджі не знайдено. 😕", + "@noEmotesFound": { + "type": "String", + "placeholders": {} + }, + "noGoogleServicesWarning": "Схоже, Firebase Cloud Messaging недоступна на вашому пристрої. Щоб отримувати push-сповіщення, радимо встановити ntfy. За допомогою ntfy або іншого постачальника Unified Push ви можете отримувати push-сповіщення у безпечний спосіб. Ви можете завантажити ntfy з PlayStore або з F-Droid.", + "@noGoogleServicesWarning": { + "type": "String", + "placeholders": {} + }, + "none": "Нічого", + "@none": { + "type": "String", + "placeholders": {} + }, + "noPermission": "Немає прав доступу", + "@noPermission": { + "type": "String", + "placeholders": {} + }, + "noRoomsFound": "Кімнат не знайдено…", + "@noRoomsFound": { + "type": "String", + "placeholders": {} + }, + "ok": "Гаразд", + "@ok": { + "type": "String", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "Резервне онлайн-копіювання ключів увімкнено", + "@onlineKeyBackupEnabled": { + "type": "String", + "placeholders": {} + }, + "oopsSomethingWentWrong": "Халепа, щось пішло не так…", + "@oopsSomethingWentWrong": { + "type": "String", + "placeholders": {} + }, + "openAppToReadMessages": "Відкрийте застосунок читання повідомлень", + "@openAppToReadMessages": { + "type": "String", + "placeholders": {} + }, + "openCamera": "Відкрити камеру", + "@openCamera": { + "type": "String", + "placeholders": {} + }, + "passphraseOrKey": "парольна фраза або ключ відновлення", + "@passphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "password": "Пароль", + "@password": { + "type": "String", + "placeholders": {} + }, + "pickImage": "Вибрати зображення", + "@pickImage": { + "type": "String", + "placeholders": {} + }, + "play": "Відтворити {fileName}", + "@play": { + "type": "String", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "pleaseEnterYourPassword": "Введіть свій пароль", + "@pleaseEnterYourPassword": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourUsername": "Введіть своє ім'я користувача", + "@pleaseEnterYourUsername": { + "type": "String", + "placeholders": {} + }, + "publicRooms": "Загальнодоступні кімнати", + "@publicRooms": { + "type": "String", + "placeholders": {} + }, + "recording": "Запис", + "@recording": { + "type": "String", + "placeholders": {} + }, + "redactedAnEvent": "{username} змінює подію", + "@redactedAnEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "reject": "Відхилити", + "@reject": { + "type": "String", + "placeholders": {} + }, + "rejectedTheInvitation": "{username} відхиляє запрошення", + "@rejectedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "rejoin": "Приєднатися знову", + "@rejoin": { + "type": "String", + "placeholders": {} + }, + "remove": "Вилучити", + "@remove": { + "type": "String", + "placeholders": {} + }, + "removeAllOtherDevices": "Вилучити всі інші пристрої", + "@removeAllOtherDevices": { + "type": "String", + "placeholders": {} + }, + "removedBy": "Вилучено користувачем {username}", + "@removedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "removeDevice": "Вилучити пристрій", + "@removeDevice": { + "type": "String", + "placeholders": {} + }, + "unbanFromChat": "Розблокувати у бесіді", + "@unbanFromChat": { + "type": "String", + "placeholders": {} + }, + "reply": "Відповісти", + "@reply": { + "type": "String", + "placeholders": {} + }, + "requestPermission": "Запит дозволу", + "@requestPermission": { + "type": "String", + "placeholders": {} + }, + "roomHasBeenUpgraded": "Кімнату було оновлено", + "@roomHasBeenUpgraded": { + "type": "String", + "placeholders": {} + }, + "seenByUser": "Переглянуто {username}", + "@seenByUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "send": "Надіслати", + "@send": { + "type": "String", + "placeholders": {} + }, + "sendAMessage": "Надіслати повідомлення", + "@sendAMessage": { + "type": "String", + "placeholders": {} + }, + "sendFile": "Надіслати файл", + "@sendFile": { + "type": "String", + "placeholders": {} + }, + "sendImage": "Надіслати зображення", + "@sendImage": { + "type": "String", + "placeholders": {} + }, + "sentAFile": "📁 {username} надсилає файл", + "@sentAFile": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAnAudio": "🎤 {username} надсилає аудіо", + "@sentAnAudio": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAPicture": "🖼️ {username} надсилає зображення", + "@sentAPicture": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentASticker": "😊 {username} надсилає наліпку", + "@sentASticker": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAVideo": "🎥 {username} надсилає відео", + "@sentAVideo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "setInvitationLink": "Указати посилання для запрошення", + "@setInvitationLink": { + "type": "String", + "placeholders": {} + }, + "setStatus": "Указати статус", + "@setStatus": { + "type": "String", + "placeholders": {} + }, + "settings": "Налаштування", + "@settings": { + "type": "String", + "placeholders": {} + }, + "share": "Поділитися", + "@share": { + "type": "String", + "placeholders": {} + }, + "sharedTheLocation": "{username} ділиться своїм місцеперебуванням", + "@sharedTheLocation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "skip": "Пропустити", + "@skip": { + "type": "String", + "placeholders": {} + }, + "sourceCode": "Джерельний код", + "@sourceCode": { + "type": "String", + "placeholders": {} + }, + "statusExampleMessage": "Як справи сьогодні?", + "@statusExampleMessage": { + "type": "String", + "placeholders": {} + }, + "submit": "Надіслати", + "@submit": { + "type": "String", + "placeholders": {} + }, + "systemTheme": "Системна", + "@systemTheme": { + "type": "String", + "placeholders": {} + }, + "theyDontMatch": "Вони відрізняються", + "@theyDontMatch": { + "type": "String", + "placeholders": {} + }, + "theyMatch": "Вони збігаються", + "@theyMatch": { + "type": "String", + "placeholders": {} + }, + "title": "FluffyChat", + "@title": { + "description": "Title for the application", + "type": "String", + "placeholders": {} + }, + "tryToSendAgain": "Спробуйте надіслати ще раз", + "@tryToSendAgain": { + "type": "String", + "placeholders": {} + }, + "unbannedUser": "{username} розблоковує {targetName}", + "@unbannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "unblockDevice": "Розблокувати пристрій", + "@unblockDevice": { + "type": "String", + "placeholders": {} + }, + "unknownDevice": "Невідомий пристрій", + "@unknownDevice": { + "type": "String", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "Невідомий алгоритм шифрування", + "@unknownEncryptionAlgorithm": { + "type": "String", + "placeholders": {} + }, + "unknownEvent": "Невідома подія '{type}'", + "@unknownEvent": { + "type": "String", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "unmuteChat": "Увімкнути сповіщення", + "@unmuteChat": { + "type": "String", + "placeholders": {} + }, + "userAndOthersAreTyping": "{username} та {count} інших пишуть…", + "@userAndOthersAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "userAndUserAreTyping": "{username} і {username2} пишуть…", + "@userAndUserAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "username2": { + "type": "String" + } + } + }, + "userIsTyping": "{username} пише…", + "@userIsTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "userLeftTheChat": "🚪 {username} виходить з бесіди", + "@userLeftTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "username": "Ім'я користувача", + "@username": { + "type": "String", + "placeholders": {} + }, + "userSentUnknownEvent": "{username} надсилає подію {type}", + "@userSentUnknownEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "type": { + "type": "String" + } + } + }, + "verify": "Перевірити", + "@verify": { + "type": "String", + "placeholders": {} + }, + "verifyStart": "Почати перевірку", + "@verifyStart": { + "type": "String", + "placeholders": {} + }, + "verifySuccess": "Ви успішно перевірені!", + "@verifySuccess": { + "type": "String", + "placeholders": {} + }, + "verifyTitle": "Перевірка іншого облікового запису", + "@verifyTitle": { + "type": "String", + "placeholders": {} + }, + "videoCall": "Відеовиклик", + "@videoCall": { + "type": "String", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "Видимість історії бесіди", + "@visibilityOfTheChatHistory": { + "type": "String", + "placeholders": {} + }, + "visibleForAllParticipants": "Видима для всіх учасників", + "@visibleForAllParticipants": { + "type": "String", + "placeholders": {} + }, + "visibleForEveryone": "Видима для всіх", + "@visibleForEveryone": { + "type": "String", + "placeholders": {} + }, + "voiceMessage": "Голосове повідомлення", + "@voiceMessage": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "Очікування прийняття запиту партнером…", + "@waitingPartnerAcceptRequest": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerEmoji": "Очікування прийняття емоджі партнером…", + "@waitingPartnerEmoji": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerNumbers": "Очікування прийняття чисел партнером…", + "@waitingPartnerNumbers": { + "type": "String", + "placeholders": {} + }, + "wallpaper": "Шпалери:", + "@wallpaper": { + "type": "String", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "Кому дозволено приєднуватися до цієї групи", + "@whoIsAllowedToJoinThisGroup": { + "type": "String", + "placeholders": {} + }, + "writeAMessage": "Написати повідомлення…", + "@writeAMessage": { + "type": "String", + "placeholders": {} + }, + "yes": "Так", + "@yes": { + "type": "String", + "placeholders": {} + }, + "you": "Ви", + "@you": { + "type": "String", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "Ви більше не берете участь у цій бесіді", + "@youAreNoLongerParticipatingInThisChat": { + "type": "String", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "Ви були заблоковані у цій бесіді", + "@youHaveBeenBannedFromThisChat": { + "type": "String", + "placeholders": {} + }, + "pushRules": "Правила сповіщень", + "@pushRules": { + "type": "String", + "placeholders": {} + }, + "notificationsEnabledForThisAccount": "Сповіщення ввімкнені для цього облікового запису", + "@notificationsEnabledForThisAccount": { + "type": "String", + "placeholders": {} + }, + "notifications": "Сповіщення", + "@notifications": { + "type": "String", + "placeholders": {} + }, + "memberChanges": "Зміни учасників", + "@memberChanges": { + "type": "String", + "placeholders": {} + }, + "inviteForMe": "Запрошення для мене", + "@inviteForMe": { + "type": "String", + "placeholders": {} + }, + "enterAnEmailAddress": "Введіть адресу е-пошти", + "@enterAnEmailAddress": { + "type": "String", + "placeholders": {} + }, + "encrypted": "Зашифровано", + "@encrypted": { + "type": "String", + "placeholders": {} + }, + "enableEmotesGlobally": "Увімкнути пакунок емоджі глобально", + "@enableEmotesGlobally": { + "type": "String", + "placeholders": {} + }, + "emotePacks": "Набори емоджі для кімнати", + "@emotePacks": { + "type": "String", + "placeholders": {} + }, + "edit": "Редагувати", + "@edit": { + "type": "String", + "placeholders": {} + }, + "directChats": "Особисті бесіди", + "@directChats": { + "type": "String", + "placeholders": {} + }, + "deviceId": "ID пристрою", + "@deviceId": { + "type": "String", + "placeholders": {} + }, + "deleteAccount": "Видалити обліковий запис", + "@deleteAccount": { + "type": "String", + "placeholders": {} + }, + "deactivateAccountWarning": "Це деактивує ваш обліковий запис. Це неможливо скасувати! Ви впевнені?", + "@deactivateAccountWarning": { + "type": "String", + "placeholders": {} + }, + "containsUserName": "Містить ім’я користувача", + "@containsUserName": { + "type": "String", + "placeholders": {} + }, + "containsDisplayName": "Містить показуване ім’я", + "@containsDisplayName": { + "type": "String", + "placeholders": {} + }, + "changePassword": "Змінити пароль", + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "changeDeviceName": "Змінити назву пристрою", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "botMessages": "Повідомлення ботів", + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "or": "Або", + "@or": { + "type": "String", + "placeholders": {} + }, + "setAsCanonicalAlias": "Установити основним псевдонімом", + "@setAsCanonicalAlias": { + "type": "String", + "placeholders": {} + }, + "verified": "Перевірений", + "@verified": { + "type": "String", + "placeholders": {} + }, + "blocked": "Заблоковано", + "@blocked": { + "type": "String", + "placeholders": {} + }, + "no": "Ні", + "@no": { + "type": "String", + "placeholders": {} + }, + "sendOnEnter": "Надсилати натисканням Enter", + "@sendOnEnter": {}, + "commandHint_ban": "Заблокувати цього користувача кімнати", + "@commandHint_ban": { + "type": "String", + "description": "Usage hint for the command /ban" + }, + "commandHint_kick": "Вилучити цього користувача з цієї кімнати", + "@commandHint_kick": { + "type": "String", + "description": "Usage hint for the command /kick" + }, + "commandHint_myroomavatar": "Встановіть зображення для цієї кімнати (від mxc-uri)", + "@commandHint_myroomavatar": { + "type": "String", + "description": "Usage hint for the command /myroomavatar" + }, + "commandHint_myroomnick": "Укажіть показуване ім'я для цієї кімнати", + "@commandHint_myroomnick": { + "type": "String", + "description": "Usage hint for the command /myroomnick" + }, + "commandMissing": "{command} не є командою.", + "@commandMissing": { + "type": "String", + "placeholders": { + "command": { + "type": "String" + } + }, + "description": "State that {command} is not a valid /command." + }, + "copyToClipboard": "Копіювати до буфера обміну", + "@copyToClipboard": { + "type": "String", + "placeholders": {} + }, + "createNewSpace": "Новий простір", + "@createNewSpace": { + "type": "String", + "placeholders": {} + }, + "enableEncryption": "Увімкнути шифрування", + "@enableEncryption": { + "type": "String", + "placeholders": {} + }, + "joinRoom": "Приєднатися до кімнати", + "@joinRoom": { + "type": "String", + "placeholders": {} + }, + "mention": "Згадати", + "@mention": { + "type": "String", + "placeholders": {} + }, + "next": "Далі", + "@next": { + "type": "String", + "placeholders": {} + }, + "noConnectionToTheServer": "Немає з'єднання з сервером", + "@noConnectionToTheServer": { + "type": "String", + "placeholders": {} + }, + "scanQrCode": "Сканувати QR-код", + "@scanQrCode": {}, + "noPasswordRecoveryDescription": "Ви ще не додали спосіб відновлення пароля.", + "@noPasswordRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "numUsersTyping": "{count} користувачів пишуть…", + "@numUsersTyping": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "online": "Онлайн", + "@online": { + "type": "String", + "placeholders": {} + }, + "oopsPushError": "Дідько! На жаль, сталася помилка під час налаштування push-сповіщень.", + "@oopsPushError": { + "type": "String", + "placeholders": {} + }, + "passwordForgotten": "Забули пароль", + "@passwordForgotten": { + "type": "String", + "placeholders": {} + }, + "pleaseChoose": "Виберіть", + "@pleaseChoose": { + "type": "String", + "placeholders": {} + }, + "pleaseEnter4Digits": "Введіть 4 цифри або залиште порожнім, щоб вимкнути блокування застосунку.", + "@pleaseEnter4Digits": { + "type": "String", + "placeholders": {} + }, + "redactMessage": "Редагувати повідомлення", + "@redactMessage": { + "type": "String", + "placeholders": {} + }, + "register": "Зареєструватися", + "@register": { + "type": "String", + "placeholders": {} + }, + "reportMessage": "Поскаржитися на повідомлення", + "@reportMessage": { + "type": "String", + "placeholders": {} + }, + "replaceRoomWithNewerVersion": "Замінити кімнату новішою версією", + "@replaceRoomWithNewerVersion": { + "type": "String", + "placeholders": {} + }, + "sendAudio": "Надіслати аудіо", + "@sendAudio": { + "type": "String", + "placeholders": {} + }, + "setCustomEmotes": "Установити користувацькі емоджі", + "@setCustomEmotes": { + "type": "String", + "placeholders": {} + }, + "weSentYouAnEmail": "Ми надіслали вам електронний лист", + "@weSentYouAnEmail": { + "type": "String", + "placeholders": {} + }, + "wipeChatBackup": "Стерти резервну копію бесіди, щоб створити новий ключ відновлення?", + "@wipeChatBackup": { + "type": "String", + "placeholders": {} + }, + "addToSpace": "Додати простір", + "@addToSpace": {}, + "roomVersion": "Версія кімнати", + "@roomVersion": { + "type": "String", + "placeholders": {} + }, + "iHaveClickedOnLink": "Мною виконано перехід за посиланням", + "@iHaveClickedOnLink": { + "type": "String", + "placeholders": {} + }, + "startedACall": "{senderName} розпочинає виклик", + "@startedACall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "appLock": "Блокування застосунку", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "commandInvalid": "Неприпустима команда", + "@commandInvalid": { + "type": "String" + }, + "extremeOffensive": "Украй образливий", + "@extremeOffensive": { + "type": "String", + "placeholders": {} + }, + "howOffensiveIsThisContent": "Наскільки образливий цей вміст?", + "@howOffensiveIsThisContent": { + "type": "String", + "placeholders": {} + }, + "participant": "Учасник", + "@participant": { + "type": "String", + "placeholders": {} + }, + "addEmail": "Додати е-пошту", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "ignore": "Нехтувати", + "@ignore": { + "type": "String", + "placeholders": {} + }, + "fontSize": "Розмір шрифту", + "@fontSize": { + "type": "String", + "placeholders": {} + }, + "badServerVersionsException": "Домашній сервер підтримує такі версії специфікацій:\n{serverVersions}\nАле цей застосунок підтримує лише {supportedVersions}", + "@badServerVersionsException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "areYouSureYouWantToLogout": "Ви впевнені, що хочете вийти?", + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "badServerLoginTypesException": "Домашній сервер підтримує такі типи входу:\n{serverVersions}\nАле цей застосунок підтримує лише:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "all": "Усі", + "@all": { + "type": "String", + "placeholders": {} + }, + "allChats": "Усі бесіди", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "commandHint_join": "Приєднатися до цієї кімнати", + "@commandHint_join": { + "type": "String", + "description": "Usage hint for the command /join" + }, + "chats": "Бесіди", + "@chats": { + "type": "String", + "placeholders": {} + }, + "changeYourAvatar": "Змінити аватар", + "@changeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "link": "Посилання", + "@link": {}, + "security": "Безпека", + "@security": { + "type": "String", + "placeholders": {} + }, + "sendSticker": "Надіслати наліпку", + "@sendSticker": { + "type": "String", + "placeholders": {} + }, + "errorObtainingLocation": "Помилка під час отримання розташування: {error}", + "@errorObtainingLocation": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "hideRedactedEvents": "Сховати змінені події", + "@hideRedactedEvents": { + "type": "String", + "placeholders": {} + }, + "synchronizingPleaseWait": "Синхронізація… Будь ласка, зачекайте.", + "@synchronizingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "noMatrixServer": "{server1} не є сервером matrix, використовувати {server2} натомість?", + "@noMatrixServer": { + "type": "String", + "placeholders": { + "server1": { + "type": "String" + }, + "server2": { + "type": "String" + } + } + }, + "reason": "Причина", + "@reason": { + "type": "String", + "placeholders": {} + }, + "defaultPermissionLevel": "Типовий рівень дозволів для нових користувачів", + "@defaultPermissionLevel": { + "type": "String", + "placeholders": {} + }, + "sendAsText": "Надіслати як текст", + "@sendAsText": { + "type": "String" + }, + "saveFile": "Зберегти файл", + "@saveFile": { + "type": "String", + "placeholders": {} + }, + "autoplayImages": "Автоматично відтворювати анімовані наліпки та емоджі", + "@autoplayImages": { + "type": "String", + "placeholder": {} + }, + "pleaseChooseAPasscode": "Виберіть код доступу", + "@pleaseChooseAPasscode": { + "type": "String", + "placeholders": {} + }, + "pleaseClickOnLink": "Натисніть на посилання в електронному листі, а потім продовжуйте.", + "@pleaseClickOnLink": { + "type": "String", + "placeholders": {} + }, + "toggleUnread": "Позначити прочитаним/непрочитаним", + "@toggleUnread": { + "type": "String", + "placeholders": {} + }, + "transferFromAnotherDevice": "Перенесення з іншого пристрою", + "@transferFromAnotherDevice": { + "type": "String", + "placeholders": {} + }, + "sendMessages": "Надсилати повідомлення", + "@sendMessages": { + "type": "String", + "placeholders": {} + }, + "sendOriginal": "Надіслати оригінал", + "@sendOriginal": { + "type": "String", + "placeholders": {} + }, + "whoCanPerformWhichAction": "Хто і яку дію може виконувати", + "@whoCanPerformWhichAction": { + "type": "String", + "placeholders": {} + }, + "whyDoYouWantToReportThis": "Чому ви хочете поскаржитися?", + "@whyDoYouWantToReportThis": { + "type": "String", + "placeholders": {} + }, + "messages": "Повідомлення", + "@messages": { + "type": "String", + "placeholders": {} + }, + "newChat": "Нова бесіда", + "@newChat": { + "type": "String", + "placeholders": {} + }, + "everythingReady": "Усе готово!", + "@everythingReady": { + "type": "String", + "placeholders": {} + }, + "homeserver": "Домашній сервер", + "@homeserver": {}, + "goToTheNewRoom": "Перейти до нової кімнати", + "@goToTheNewRoom": { + "type": "String", + "placeholders": {} + }, + "groups": "Групи", + "@groups": { + "type": "String", + "placeholders": {} + }, + "inoffensive": "Необразливий", + "@inoffensive": { + "type": "String", + "placeholders": {} + }, + "noEncryptionForPublicRooms": "Активувати шифрування можна лише тоді, коли кімната більше не буде загальнодоступною.", + "@noEncryptionForPublicRooms": { + "type": "String", + "placeholders": {} + }, + "chatHasBeenAddedToThisSpace": "Бесіду додано до цього простору", + "@chatHasBeenAddedToThisSpace": {}, + "chatBackupDescription": "Ваші старі повідомлення захищені ключем відновлення. Переконайтеся, що ви не втратите його.", + "@chatBackupDescription": { + "type": "String", + "placeholders": {} + }, + "chatBackup": "Резервне копіювання бесіди", + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "yourChatBackupHasBeenSetUp": "Рез. копію чату налаштовано.", + "@yourChatBackupHasBeenSetUp": {}, + "clearArchive": "Очистити архів", + "@clearArchive": {}, + "commandHint_html": "Надіслати текст у форматі HTML", + "@commandHint_html": { + "type": "String", + "description": "Usage hint for the command /html" + }, + "commandHint_invite": "Запросіть цього користувача до цієї кімнати", + "@commandHint_invite": { + "type": "String", + "description": "Usage hint for the command /invite" + }, + "commandHint_leave": "Вийти з цієї кімнати", + "@commandHint_leave": { + "type": "String", + "description": "Usage hint for the command /leave" + }, + "commandHint_me": "Опишіть себе", + "@commandHint_me": { + "type": "String", + "description": "Usage hint for the command /me" + }, + "hideUnknownEvents": "Сховати невідомі події", + "@hideUnknownEvents": { + "type": "String", + "placeholders": {} + }, + "ignoredUsers": "Нехтувані користувачі", + "@ignoredUsers": { + "type": "String", + "placeholders": {} + }, + "obtainingLocation": "Отримання розташування…", + "@obtainingLocation": { + "type": "String", + "placeholders": {} + }, + "offensive": "Образливий", + "@offensive": { + "type": "String", + "placeholders": {} + }, + "offline": "Офлайн", + "@offline": { + "type": "String", + "placeholders": {} + }, + "addAccount": "Додати обліковий запис", + "@addAccount": {}, + "enableMultiAccounts": "(БЕТА) Увімкнути кілька облікових записів на цьому пристрої", + "@enableMultiAccounts": {}, + "openInMaps": "Відкрити в картах", + "@openInMaps": { + "type": "String", + "placeholders": {} + }, + "serverRequiresEmail": "Цей сервер потребує перевірки вашої адресу е-пошти для реєстрації.", + "@serverRequiresEmail": {}, + "pleaseFollowInstructionsOnWeb": "Виконайте вказівки вебсайту та торкніться далі.", + "@pleaseFollowInstructionsOnWeb": { + "type": "String", + "placeholders": {} + }, + "sendVideo": "Надіслати відео", + "@sendVideo": { + "type": "String", + "placeholders": {} + }, + "removeYourAvatar": "Вилучити свій аватар", + "@removeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "unpin": "Відкріпити", + "@unpin": { + "type": "String", + "placeholders": {} + }, + "setPermissionsLevel": "Указати рівні дозволів", + "@setPermissionsLevel": { + "type": "String", + "placeholders": {} + }, + "shareLocation": "Поділитися місцеперебуванням", + "@shareLocation": { + "type": "String", + "placeholders": {} + }, + "singlesignon": "Єдиний вхід", + "@singlesignon": { + "type": "String", + "placeholders": {} + }, + "tooManyRequestsWarning": "Забагато запитів. Спробуйте пізніше!", + "@tooManyRequestsWarning": { + "type": "String", + "placeholders": {} + }, + "unavailable": "Недоступний", + "@unavailable": { + "type": "String", + "placeholders": {} + }, + "unreadChats": "{unreadCount, plural, =1{1 непрочитана бесіда} few{{unreadCount} непрочитані бесіди} many{{unreadCount} непрочитаних бесід} other{{unreadCount} непрочитані бесіди}}", + "@unreadChats": { + "type": "String", + "placeholders": { + "unreadCount": { + "type": "int" + } + } + }, + "withTheseAddressesRecoveryDescription": "За допомогою цих адрес ви можете відновити свій пароль.", + "@withTheseAddressesRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "privacy": "Приватність", + "@privacy": { + "type": "String", + "placeholders": {} + }, + "search": "Пошук", + "@search": { + "type": "String", + "placeholders": {} + }, + "sentCallInformations": "{senderName} надсилає відомості про виклик", + "@sentCallInformations": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "cantOpenUri": "Не вдалося відкрити URI {uri}", + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "contentHasBeenReported": "Скаргу на вміст надіслано адміністраторам сервера", + "@contentHasBeenReported": { + "type": "String", + "placeholders": {} + }, + "commandHint_op": "Укажіть рівень повноважень цього користувача (типово: 50)", + "@commandHint_op": { + "type": "String", + "description": "Usage hint for the command /op" + }, + "commandHint_plain": "Надіслати неформатований текст", + "@commandHint_plain": { + "type": "String", + "description": "Usage hint for the command /plain" + }, + "commandHint_react": "Надіслати відповідь як реакцію", + "@commandHint_react": { + "type": "String", + "description": "Usage hint for the command /react" + }, + "commandHint_send": "Надіслати текст", + "@commandHint_send": { + "type": "String", + "description": "Usage hint for the command /send" + }, + "commandHint_unban": "Розблокувати цього користувача у цій кімнаті", + "@commandHint_unban": { + "type": "String", + "description": "Usage hint for the command /unban" + }, + "configureChat": "Налаштувати бесіду", + "@configureChat": { + "type": "String", + "placeholders": {} + }, + "editBlockedServers": "Редагувати заблоковані сервери", + "@editBlockedServers": { + "type": "String", + "placeholders": {} + }, + "showPassword": "Показати пароль", + "@showPassword": { + "type": "String", + "placeholders": {} + }, + "editRoomAliases": "Змінити псевдоніми кімнати", + "@editRoomAliases": { + "type": "String", + "placeholders": {} + }, + "editRoomAvatar": "Змінити аватар кімнати", + "@editRoomAvatar": { + "type": "String", + "placeholders": {} + }, + "passwordHasBeenChanged": "Пароль змінено", + "@passwordHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "passwordRecovery": "Відновлення пароля", + "@passwordRecovery": { + "type": "String", + "placeholders": {} + }, + "people": "Люди", + "@people": { + "type": "String", + "placeholders": {} + }, + "pin": "Закріпити", + "@pin": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPin": "Введіть свій PIN-код", + "@pleaseEnterYourPin": { + "type": "String", + "placeholders": {} + }, + "spaceName": "Назва простору", + "@spaceName": { + "type": "String", + "placeholders": {} + }, + "warning": "Попередження!", + "@warning": { + "type": "String", + "placeholders": {} + }, + "yourPublicKey": "Ваш відкритий ключ", + "@yourPublicKey": { + "type": "String", + "placeholders": {} + }, + "spaceIsPublic": "Простір загальнодоступний", + "@spaceIsPublic": { + "type": "String", + "placeholders": {} + }, + "status": "Статус", + "@status": { + "type": "String", + "placeholders": {} + }, + "unverified": "Неперевірений", + "@unverified": {}, + "locationDisabledNotice": "Служби визначення розташування вимкнені. Увімкніть їх, щоб мати змогу ділитися своїм розташуванням.", + "@locationDisabledNotice": { + "type": "String", + "placeholders": {} + }, + "locationPermissionDeniedNotice": "Дозвіл на розташування відхилено. Надайте можливість ділитися своїм розташуванням.", + "@locationPermissionDeniedNotice": { + "type": "String", + "placeholders": {} + }, + "oneClientLoggedOut": "На одному з ваших клієнтів виконано вихід із системи", + "@oneClientLoggedOut": {}, + "bundleName": "Назва вузла", + "@bundleName": {}, + "toggleFavorite": "Перемикнути вибране", + "@toggleFavorite": { + "type": "String", + "placeholders": {} + }, + "removeFromBundle": "Вилучити з цього вузла", + "@removeFromBundle": {}, + "toggleMuted": "Увімкнути/вимкнути звук", + "@toggleMuted": { + "type": "String", + "placeholders": {} + }, + "editBundlesForAccount": "Змінити вузол для цього облікового запису", + "@editBundlesForAccount": {}, + "addToBundle": "Додати до вузлів", + "@addToBundle": {}, + "repeatPassword": "Повторіть пароль", + "@repeatPassword": {}, + "messageInfo": "Відомості про повідомлення", + "@messageInfo": {}, + "time": "Час", + "@time": {}, + "messageType": "Тип повідомлення", + "@messageType": {}, + "openGallery": "Відкрити галерею", + "@openGallery": {}, + "sender": "Відправник", + "@sender": {}, + "addToSpaceDescription": "Виберіть простір, щоб додати до нього цю бесіду.", + "@addToSpaceDescription": {}, + "removeFromSpace": "Вилучити з простору", + "@removeFromSpace": {}, + "start": "Почати", + "@start": {}, + "commandHint_discardsession": "Відкинути сеанс", + "@commandHint_discardsession": { + "type": "String", + "description": "Usage hint for the command /discardsession" + }, + "commandHint_clearcache": "Очистити кеш", + "@commandHint_clearcache": { + "type": "String", + "description": "Usage hint for the command /clearcache" + }, + "commandHint_create": "Створіть порожню групову бесіду\nВикористовуйте --no-encryption, щоб вимкнути шифрування", + "@commandHint_create": { + "type": "String", + "description": "Usage hint for the command /create" + }, + "commandHint_dm": "Початок особистої бесіди\nВикористовуйте --no-encryption, що вимкнути шифрування", + "@commandHint_dm": { + "type": "String", + "description": "Usage hint for the command /dm" + }, + "openVideoCamera": "Відкрити камеру для відео", + "@openVideoCamera": { + "type": "String", + "placeholders": {} + }, + "publish": "Опублікувати", + "@publish": {}, + "videoWithSize": "Відео ({size})", + "@videoWithSize": { + "type": "String", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "dismiss": "Відхилити", + "@dismiss": {}, + "markAsRead": "Позначити прочитаним", + "@markAsRead": {}, + "reportUser": "Поскаржився на користувача", + "@reportUser": {}, + "openChat": "Відкрити бесіду", + "@openChat": {}, + "reactedWith": "{sender} реагує з {reaction}", + "@reactedWith": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "reaction": { + "type": "String" + } + } + }, + "emojis": "Емоджі", + "@emojis": {}, + "pinMessage": "Прикріпити в кімнаті", + "@pinMessage": {}, + "confirmEventUnpin": "Ви впевнені, що бажаєте назавжди відкріпите подію?", + "@confirmEventUnpin": {}, + "placeCall": "Здійснити виклик", + "@placeCall": {}, + "unsupportedAndroidVersion": "Непідтримувана версія Android", + "@unsupportedAndroidVersion": {}, + "voiceCall": "Голосовий виклик", + "@voiceCall": {}, + "unsupportedAndroidVersionLong": "Для цієї функції потрібна новіша версія Android. Перевірте наявність оновлень або підтримку Lineage OS.", + "@unsupportedAndroidVersionLong": {}, + "videoCallsBetaWarning": "Зауважте, що відеовиклики на ранньому етапі розробки. Вони можуть працювати не так, як очікувалося, або взагалі не працювати на всіх платформах.", + "@videoCallsBetaWarning": {}, + "emailOrUsername": "Електронна адреса або ім’я користувача", + "@emailOrUsername": {}, + "experimentalVideoCalls": "Експериментальні відеовиклики", + "@experimentalVideoCalls": {}, + "switchToAccount": "Перемкнутися на обліковий запис {number}", + "@switchToAccount": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "nextAccount": "Наступний обліковий запис", + "@nextAccount": {}, + "previousAccount": "Попередній обліковий запис", + "@previousAccount": {}, + "addWidget": "Додати віджет", + "@addWidget": {}, + "widgetVideo": "Відео", + "@widgetVideo": {}, + "widgetCustom": "Користувацький", + "@widgetCustom": {}, + "widgetName": "Назва", + "@widgetName": {}, + "widgetNameError": "Укажіть коротку назву.", + "@widgetNameError": {}, + "widgetEtherpad": "Текстова примітка", + "@widgetEtherpad": {}, + "widgetJitsi": "Jitsi Meet", + "@widgetJitsi": {}, + "widgetUrlError": "Це недійсна URL-адреса.", + "@widgetUrlError": {}, + "errorAddingWidget": "Помилка додавання віджета.", + "@errorAddingWidget": {}, + "separateChatTypes": "Розділіть особисті бесіди та групи", + "@separateChatTypes": { + "type": "String", + "placeholders": {} + }, + "youInvitedBy": "📩 Ви були запрошені {user}", + "@youInvitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youAcceptedTheInvitation": "👍 Ви погодилися на запрошення", + "@youAcceptedTheInvitation": {}, + "youRejectedTheInvitation": "Ви відхилили запрошення", + "@youRejectedTheInvitation": {}, + "youHaveWithdrawnTheInvitationFor": "Ви відкликали запрошення для {user}", + "@youHaveWithdrawnTheInvitationFor": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youBannedUser": "Ви заблокували {user}", + "@youBannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youKickedAndBanned": "🙅 Ви вилучили й заблокували {user}", + "@youKickedAndBanned": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youJoinedTheChat": "Ви приєдналися до бесіди", + "@youJoinedTheChat": {}, + "youKicked": "👞 Ви вилучили {user}", + "@youKicked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youUnbannedUser": "Ви розблокували {user}", + "@youUnbannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youInvitedUser": "📩 Ви запросили {user}", + "@youInvitedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "saveKeyManuallyDescription": "Збережіть цей ключ вручну, запустивши діалогове вікно спільного доступу до системи або буфер обміну.", + "@saveKeyManuallyDescription": {}, + "storeInAndroidKeystore": "Зберегти в Android KeyStore", + "@storeInAndroidKeystore": {}, + "storeInAppleKeyChain": "Зберегти в Apple KeyChain", + "@storeInAppleKeyChain": {}, + "storeSecurlyOnThisDevice": "Зберегти безпечно на цей пристрій", + "@storeSecurlyOnThisDevice": {}, + "pleaseEnterRecoveryKeyDescription": "Щоб розблокувати старі повідомлення, введіть ключ відновлення, згенерований у попередньому сеансі. Ваш ключ відновлення це НЕ ваш пароль.", + "@pleaseEnterRecoveryKeyDescription": {}, + "pleaseEnterRecoveryKey": "Введіть ключ відновлення:", + "@pleaseEnterRecoveryKey": {}, + "recoveryKey": "Ключ відновлення", + "@recoveryKey": {}, + "recoveryKeyLost": "Ключ відновлення втрачено?", + "@recoveryKeyLost": {}, + "users": "Користувачі", + "@users": {}, + "unlockOldMessages": "Розблокувати старі повідомлення", + "@unlockOldMessages": {}, + "storeInSecureStorageDescription": "Збережіть ключ відновлення в безпечному сховищі цього пристрою.", + "@storeInSecureStorageDescription": {}, + "countFiles": "{count} файлів", + "@countFiles": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "hydrate": "Відновлення з файлу резервної копії", + "@hydrate": {}, + "hydrateTorLong": "Минулого разу ви експортували свій сеанс із TOR? Швидко імпортуйте його та продовжуйте спілкування.", + "@hydrateTorLong": {}, + "indexedDbErrorTitle": "Проблеми приватного режиму", + "@indexedDbErrorTitle": {}, + "indexedDbErrorLong": "На жаль, сховище повідомлень не ввімкнуто у приватному режимі типово.\nВідкрийте\n - about:config\n - установіть для dom.indexedDB.privateBrowsing.enabled значення true\nІнакше запустити FluffyChat буде неможливо.", + "@indexedDbErrorLong": {}, + "dehydrate": "Експортувати сеанс та очистити пристрій", + "@dehydrate": {}, + "dehydrateWarning": "Цю дію не можна скасувати. Переконайтеся, що ви безпечно зберігаєте файл резервної копії.", + "@dehydrateWarning": {}, + "dehydrateTor": "Користувачі TOR: експорт сеансу", + "@dehydrateTor": {}, + "dehydrateTorLong": "Для користувачів TOR рекомендується експортувати сеанс перед закриттям вікна.", + "@dehydrateTorLong": {}, + "hydrateTor": "Користувачі TOR: імпорт експортованого сеансу", + "@hydrateTor": {}, + "user": "Користувач", + "@user": {}, + "custom": "Користувацький", + "@custom": {}, + "supposedMxid": "Це має бути {mxid}", + "@supposedMxid": { + "type": "String", + "placeholders": { + "mxid": { + "type": "String" + } + } + }, + "confirmMatrixId": "Підтвердьте свій Matrix ID, щоб видалити свій обліковий запис.", + "@confirmMatrixId": {}, + "commandHint_markasgroup": "Позначити групою", + "@commandHint_markasgroup": {}, + "commandHint_markasdm": "Позначити кімнатою особистого спілкування для надання Matrix ID", + "@commandHint_markasdm": {}, + "whyIsThisMessageEncrypted": "Чому це повідомлення нечитабельне?", + "@whyIsThisMessageEncrypted": {}, + "noKeyForThisMessage": "Це може статися, якщо повідомлення було надіслано до того, як ви ввійшли у свій обліковий запис на цьому пристрої.\n\nТакож можливо, що відправник заблокував ваш пристрій або щось пішло не так з під'єднанням до інтернету.\n\nЧи можете ви прочитати повідомлення на іншому сеансі? Тоді ви зможете перенести повідомлення з нього! Перейдіть до Налаштування > Пристрої та переконайтеся, що ваші пристрої перевірили один одного. Коли ви відкриєте кімнату наступного разу й обидва сеанси будуть на активні, ключі будуть передані автоматично.\n\nВи ж не хочете втрачати ключі після виходу або зміни пристроїв? Переконайтеся, що ви ввімкнули резервне копіювання бесід у налаштуваннях.", + "@noKeyForThisMessage": {}, + "foregroundServiceRunning": "Це сповіщення з'являється під час роботи основної служби.", + "@foregroundServiceRunning": {}, + "screenSharingTitle": "спільний доступ до екрана", + "@screenSharingTitle": {}, + "callingPermissions": "Дозволи на виклик", + "@callingPermissions": {}, + "callingAccount": "Обліковий запис для виклику", + "@callingAccount": {}, + "callingAccountDetails": "Дозволяє FluffyChat використовувати основний застосунок Android для набору номера.", + "@callingAccountDetails": {}, + "appearOnTop": "З'являтися зверху", + "@appearOnTop": {}, + "appearOnTopDetails": "Дозволяє застосунку показуватися зверху (не потрібно, якщо Fluffychat вже налаштований обліковим записом для викликів)", + "@appearOnTopDetails": {}, + "newGroup": "Нова група", + "@newGroup": {}, + "newSpace": "Новий простір", + "@newSpace": {}, + "enterSpace": "Увійти в простір", + "@enterSpace": {}, + "enterRoom": "Увійти в кімнату", + "@enterRoom": {}, + "otherCallingPermissions": "Мікрофон, камера та інші дозволи FluffyChat", + "@otherCallingPermissions": {}, + "allSpaces": "Усі простори", + "@allSpaces": {}, + "screenSharingDetail": "Ви ділитеся своїм екраном FuffyChat", + "@screenSharingDetail": {}, + "numChats": "{number} бесід", + "@numChats": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "hideUnimportantStateEvents": "Сховати неважливі державні свята", + "@hideUnimportantStateEvents": {}, + "doNotShowAgain": "Не показувати знову", + "@doNotShowAgain": {}, + "commandHint_cuddle": "Надіслати пригортайку", + "@commandHint_cuddle": {}, + "googlyEyesContent": "{senderName} надсилає вам гугл-очі", + "@googlyEyesContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "commandHint_googly": "Надіслати кілька гугл-очей", + "@commandHint_googly": {}, + "commandHint_hug": "Надіслати обійми", + "@commandHint_hug": {}, + "cuddleContent": "{senderName} пригортається до вас", + "@cuddleContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "hugContent": "{senderName} обіймає вас", + "@hugContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "wasDirectChatDisplayName": "Порожня бесіда (раніше {oldDisplayName})", + "@wasDirectChatDisplayName": { + "type": "String", + "placeholders": { + "oldDisplayName": { + "type": "String" + } + } + }, + "startFirstChat": "Розпочніть свою першу бесіду", + "@startFirstChat": {}, + "newSpaceDescription": "Простори дозволяють об'єднувати ваші бесіди та створювати приватні або загальнодоступні спільноти.", + "@newSpaceDescription": {}, + "encryptThisChat": "Зашифрувати цю бесіду", + "@encryptThisChat": {}, + "disableEncryptionWarning": "З міркувань безпеки ви не можете вимкнути шифрування в бесіді, ув якій воно було ввімкнене раніше.", + "@disableEncryptionWarning": {}, + "sorryThatsNotPossible": "Вибачте... це неможливо", + "@sorryThatsNotPossible": {}, + "deviceKeys": "Ключі пристрою:", + "@deviceKeys": {}, + "reopenChat": "Відновити бесіду", + "@reopenChat": {}, + "noOtherDevicesFound": "Інших пристроїв не знайдено", + "@noOtherDevicesFound": {}, + "noBackupWarning": "Увага! Якщо ви не ввімкнете резервне копіювання бесіди, ви втратите доступ до своїх зашифрованих повідомлень. Наполегливо радимо ввімкнути резервне копіювання бесіди перед виходом.", + "@noBackupWarning": {}, + "fileIsTooBigForServer": "Не вдалося надіслати! Сервер підтримує вкладення розміром до {max}.", + "@fileIsTooBigForServer": {}, + "fileHasBeenSavedAt": "Файл збережено в {path}", + "@fileHasBeenSavedAt": { + "type": "String", + "placeholders": { + "path": { + "type": "String" + } + } + }, + "jumpToLastReadMessage": "Перейти до останнього прочитаного повідомлення", + "@jumpToLastReadMessage": {}, + "readUpToHere": "Читати тут", + "@readUpToHere": {}, + "jump": "Перейти", + "@jump": {}, + "openLinkInBrowser": "Відкрити посилання у браузері", + "@openLinkInBrowser": {}, + "allRooms": "Усі групові бесіди", + "@allRooms": { + "type": "String", + "placeholders": {} + }, + "reportErrorDescription": "О, ні. Щось пішло не так. Якщо хочете, можете повідомити про помилку розробникам.", + "@reportErrorDescription": {}, + "report": "повідомити", + "@report": {}, + "pleaseTryAgainLaterOrChooseDifferentServer": "Спробуйте пізніше або виберіть інший сервер.", + "@pleaseTryAgainLaterOrChooseDifferentServer": {}, + "signInWithPassword": "Увійти за допомогою пароля", + "@signInWithPassword": {}, + "signInWith": "Увійти через {provider}", + "@signInWith": { + "type": "String", + "placeholders": { + "provider": { + "type": "String" + } + } + }, + "notAnImage": "Не файл зображення.", + "@notAnImage": {}, + "importNow": "Імпортувати зараз", + "@importNow": {}, + "importEmojis": "Імпорт емодзі", + "@importEmojis": {}, + "importFromZipFile": "Імпорт з файлу .zip", + "@importFromZipFile": {}, + "replace": "Замінити", + "@replace": {}, + "exportEmotePack": "Експортувати набір смайликів у форматі .zip", + "@exportEmotePack": {}, + "sendTypingNotifications": "Надсилати сповіщення про ввід тексту", + "@sendTypingNotifications": {}, + "createGroup": "Створити групу", + "@createGroup": {}, + "inviteContactToGroupQuestion": "Хочете запросити {contact} до бесіди \"{groupName}\"?", + "@inviteContactToGroupQuestion": {}, + "messagesStyle": "Повідомлення:", + "@messagesStyle": {}, + "shareInviteLink": "Надіслати запрошувальне посилання", + "@shareInviteLink": {}, + "tryAgain": "Повторіть спробу", + "@tryAgain": {}, + "setTheme": "Налаштувати тему:", + "@setTheme": {}, + "setColorTheme": "Налаштувати колірну тему:", + "@setColorTheme": {}, + "addChatDescription": "Додати опис бесіди...", + "@addChatDescription": {}, + "chatPermissions": "Дозволи бесіди", + "@chatPermissions": {}, + "chatDescription": "Опис бесіди", + "@chatDescription": {}, + "chatDescriptionHasBeenChanged": "Опис бесіди змінено", + "@chatDescriptionHasBeenChanged": {}, + "noChatDescriptionYet": "Опис бесіди ще не створено.", + "@noChatDescriptionYet": {}, + "invalidServerName": "Недійсна назва сервера", + "@invalidServerName": {}, + "optionalRedactReason": "(Необов'язково) Причина редагування цього повідомлення...", + "@optionalRedactReason": {}, + "redactedBy": "Відредаговано {username}", + "@redactedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "directChat": "Особисте повідомлення", + "@directChat": {}, + "redactedByBecause": "Відредаговано {username}, тому що: \"{reason}\"", + "@redactedByBecause": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "reason": { + "type": "String" + } + } + }, + "profileNotFound": "Не вдалося знайти користувача на сервері. Можливо, проблема зі з'єднанням або користувач не існує.", + "@profileNotFound": {}, + "invite": "Запросити", + "@invite": {}, + "redactMessageDescription": "Повідомлення буде відредаговано для всіх учасників цієї розмови. Це не можна скасувати.", + "@redactMessageDescription": {}, + "setChatDescription": "Налаштувати опис бесіди", + "@setChatDescription": {}, + "inviteGroupChat": "📨 Запрошення до групової бесіди", + "@inviteGroupChat": {}, + "invitePrivateChat": "📨 Запрошення до приватної бесіди", + "@invitePrivateChat": {}, + "emoteKeyboardNoRecents": "Тут з'являться нещодавно використані смайлики...", + "@emoteKeyboardNoRecents": { + "type": "String", + "placeholders": {} + }, + "invalidInput": "Недійсний ввід!", + "@invalidInput": {}, + "wrongPinEntered": "Введено неправильний PIN! Повторіть спробу за {seconds} секунд...", + "@wrongPinEntered": { + "type": "String", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "banUserDescription": "Користувача буде заблоковано в бесіді, і він не зможе знову увійти в неї, поки його не буде розблоковано.", + "@banUserDescription": {}, + "removeDevicesDescription": "Ви вийдете з цього пристрою і більше не зможете отримувати повідомлення.", + "@removeDevicesDescription": {}, + "unbanUserDescription": "Користувач зможе знову увійти в бесіду, якщо спробує.", + "@unbanUserDescription": {}, + "pushNotificationsNotAvailable": "Push-сповіщення недоступні", + "@pushNotificationsNotAvailable": {}, + "makeAdminDescription": "Після того, як ви зробите цього користувача адміністратором, ви, можливо, не зможете це скасувати, оскільки він матиме ті самі права, що й ви.", + "@makeAdminDescription": {}, + "archiveRoomDescription": "Бесіду буде переміщено до архіву. Інші користувачі зможуть побачити, що ви вийшли з неї.", + "@archiveRoomDescription": {}, + "hasKnocked": "🚪{user} стукає до вас", + "@hasKnocked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "learnMore": "Докладніше", + "@learnMore": {}, + "roomUpgradeDescription": "Після цього бесіду буде відтворено з новою версією кімнати. Усі учасники отримають сповіщення, що їм потрібно перейти до нової бесіди. Ви можете дізнатися більше про версії кімнат на https://spec.matrix.org/latest/rooms/", + "@roomUpgradeDescription": {}, + "pleaseEnterANumber": "Введіть число більше ніж 0", + "@pleaseEnterANumber": {}, + "kickUserDescription": "Користувача вигнали з бесіди, але не заблокували. До загальнодоступних бесід користувач може приєднатися будь-коли.", + "@kickUserDescription": {}, + "blockListDescription": "Ви можете заблокувати користувачів, які вас турбують. Ви не зможете отримувати жодних повідомлень або запрошень до кімнати від користувачів з вашого персонального списку блокування.", + "@blockListDescription": {}, + "createGroupAndInviteUsers": "Створити групу та запросити користувачів", + "@createGroupAndInviteUsers": {}, + "startConversation": "Розпочати розмову", + "@startConversation": {}, + "blockedUsers": "Заблоковані користувачі", + "@blockedUsers": {}, + "groupCanBeFoundViaSearch": "Групу можна знайти через пошук", + "@groupCanBeFoundViaSearch": {}, + "noUsersFoundWithQuery": "На жаль, не знайдено жодного користувача з запитом \"{query}\".Перевірте, чи не було допущено помилки.", + "@noUsersFoundWithQuery": { + "type": "String", + "placeholders": { + "query": { + "type": "String" + } + } + }, + "block": "Заблокувати", + "@block": {}, + "yourGlobalUserIdIs": "Ваш глобальний ID користувача: ", + "@yourGlobalUserIdIs": {}, + "commandHint_sendraw": "Надіслати необроблений json", + "@commandHint_sendraw": {}, + "wrongRecoveryKey": "Вибачте... схоже, це неправильний ключ відновлення.", + "@wrongRecoveryKey": {}, + "blockUsername": "Ігнорувати ім'я користувача", + "@blockUsername": {}, + "groupName": "Назва групи", + "@groupName": {}, + "databaseMigrationTitle": "Базу даних оптимізовано", + "@databaseMigrationTitle": {}, + "searchChatsRooms": "Пошук для #chats, @users...", + "@searchChatsRooms": {}, + "databaseMigrationBody": "Зачекайте, будь ласка. Це може тривати деякий час.", + "@databaseMigrationBody": {}, + "thisDevice": "Цей пристрій:", + "@thisDevice": {}, + "publicSpaces": "Загальнодоступний простір", + "@publicSpaces": {}, + "passwordIsWrong": "Введений пароль неправильний", + "@passwordIsWrong": {}, + "pleaseEnterYourCurrentPassword": "Введіть поточний пароль", + "@pleaseEnterYourCurrentPassword": {}, + "publicLink": "Загальнодоступне посилання", + "@publicLink": {}, + "nothingFound": "Нічого не знайдено...", + "@nothingFound": {}, + "decline": "Відхилити", + "@decline": {}, + "newPassword": "Новий пароль", + "@newPassword": {}, + "passwordsDoNotMatch": "Паролі відрізняються", + "@passwordsDoNotMatch": {}, + "subspace": "Підпростір", + "@subspace": {}, + "select": "Вибрати", + "@select": {}, + "pleaseChooseAStrongPassword": "Виберіть надійний пароль", + "@pleaseChooseAStrongPassword": {}, + "addChatOrSubSpace": "Додати бесіду або підпростір", + "@addChatOrSubSpace": {}, + "leaveEmptyToClearStatus": "Лишіть порожнім, щоб оновити статус.", + "@leaveEmptyToClearStatus": {}, + "joinSpace": "Приєднатися до простору", + "@joinSpace": {}, + "searchForUsers": "Пошук @користувачів...", + "@searchForUsers": {}, + "sessionLostBody": "Ваш сеанс втрачено. Будь ласка, повідомте про цю помилку розробникам за адресою {url}. Текст помилки: {error}", + "@sessionLostBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "databaseBuildErrorBody": "Не вдалося створити базу даних SQlite. Застосунок намагається використовувати стару базу даних. Будь ласка, повідомте про цю помилку розробникам за адресою {url}. Текст помилки: {error}", + "@databaseBuildErrorBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "initAppError": "Виникла помилка під час запуску застосунку", + "@initAppError": {}, + "restoreSessionBody": "Наразі застосунок намагається відновити ваш сеанс з резервної копії. Будь ласка, повідомте про цю помилку розробникам за адресою {url}. Текст помилки: {error}", + "@restoreSessionBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "youInvitedToBy": "📩 Вас запрошено за посиланням на:\n{alias}", + "@youInvitedToBy": { + "placeholders": { + "alias": { + "type": "String" + } + } + }, + "acceptedKeyVerification": "{sender} погоджується звірити ключі", + "@acceptedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "canceledKeyVerification": "{sender} скасовує звірення ключів", + "@canceledKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "requestedKeyVerification": "{sender} просить звірити ключі", + "@requestedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "transparent": "Прозорий", + "@transparent": {}, + "sendReadReceiptsDescription": "Інші учасники бесіди бачитимуть, що ви прочитали повідомлення.", + "@sendReadReceiptsDescription": {}, + "formattedMessages": "Форматовані повідомлення", + "@formattedMessages": {}, + "forwardMessageTo": "Переслати повідомлення до {roomName}?", + "@forwardMessageTo": { + "type": "String", + "placeholders": { + "roomName": { + "type": "String" + } + } + }, + "sendReadReceipts": "Надіслати підтвердження прочитання", + "@sendReadReceipts": {}, + "sendTypingNotificationsDescription": "Інші учасники бесіди бачитимуть, коли ви набираєте нове повідомлення.", + "@sendTypingNotificationsDescription": {}, + "formattedMessagesDescription": "Показувати розширений вміст повідомлень, наприклад, жирний текст, використовуючи markdown.", + "@formattedMessagesDescription": {}, + "verifyOtherUser": "🔐 Звірити іншого користувача", + "@verifyOtherUser": {}, + "verifyOtherUserDescription": "Якщо ви звіряєте іншого користувача, ви можете бути впевнені, що знаєте, кому ви насправді пишете. 💪\n\nКоли ви почнете звірення, ви та інший користувач побачите спливне вікно в застосунку. Там ви побачите набір смайликів або чисел, які вам потрібно буде порівняти між собою.\n\nНайкращий спосіб зробити це — зустрітися або розпочати відеовиклик. 👭", + "@verifyOtherUserDescription": {}, + "verifyOtherDeviceDescription": "Коли ви звіряєте інший пристрій, ці пристрої можуть обмінюватися ключами, підвищуючи вашу загальну безпеку. 💪 Коли ви розпочнете звірення, в застосунку на обох пристроях з'явиться спливне вікно. Там ви побачите набір смайликів або чисел, які вам потрібно буде порівняти між собою. Найкраще мати обидва пристрої під рукою перед початком звірення. 🤳", + "@verifyOtherDeviceDescription": {}, + "verifyOtherDevice": "🔐 Звірити інший пристрій", + "@verifyOtherDevice": {}, + "completedKeyVerification": "{sender} завершує звірення ключів", + "@completedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "isReadyForKeyVerification": "{sender} готовий до звірення ключів", + "@isReadyForKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "startedKeyVerification": "{sender} розпочинає звірення ключів", + "@startedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "presenceStyle": "Присутність:", + "@presenceStyle": { + "type": "String", + "placeholders": {} + }, + "presencesToggle": "Показувати повідомлення про стан від інших користувачів", + "@presencesToggle": { + "type": "String", + "placeholders": {} + }, + "hidePresences": "Сховати список станів?", + "@hidePresences": {}, + "incomingMessages": "Вхідні повідомлення", + "@incomingMessages": {}, + "discover": "Огляд", + "@discover": {}, + "stickers": "Наліпки", + "@stickers": {}, + "searchIn": "Пошук у бесіді \"{chat}\"...", + "@searchIn": { + "type": "String", + "placeholders": { + "chat": { + "type": "String" + } + } + }, + "commandHint_ignore": "Ігнорувати цей Matrix ID", + "@commandHint_ignore": {}, + "restricted": "Обмежено", + "@restricted": {}, + "swipeRightToLeftToReply": "Посунути праворуч або ліворуч, щоб відповісти", + "@swipeRightToLeftToReply": {}, + "globalChatId": "Глобальний ID бесіди", + "@globalChatId": {}, + "accessAndVisibility": "Доступ і видимість", + "@accessAndVisibility": {}, + "accessAndVisibilityDescription": "Хто може приєднатися до цієї бесіди і як її можна знайти.", + "@accessAndVisibilityDescription": {}, + "calls": "Виклики", + "@calls": {}, + "customEmojisAndStickers": "Власні емоджі та наліпки", + "@customEmojisAndStickers": {}, + "customEmojisAndStickersBody": "Додавайте або діліться власними емоджі або наліпками, які можна використовувати в будь-якій бесіді.", + "@customEmojisAndStickersBody": {}, + "createNewAddress": "Створити нову адресу", + "@createNewAddress": {}, + "userRole": "Роль користувача", + "@userRole": {}, + "minimumPowerLevel": "{level} — це найнижчий рівень повноважень.", + "@minimumPowerLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "String" + } + } + }, + "commandHint_unignore": "Не ігнорувати цей Matrix ID", + "@commandHint_unignore": {}, + "knockRestricted": "Стук обмежено", + "@knockRestricted": {}, + "appLockDescription": "Блокувати застосунок, коли не використовується ПІН-код", + "@appLockDescription": {}, + "hideRedactedMessages": "Сховати змінені повідомлення", + "@hideRedactedMessages": {}, + "hideRedactedMessagesBody": "Якщо хтось змінить повідомлення, його більше не буде видно в бесіді.", + "@hideRedactedMessagesBody": {}, + "hideInvalidOrUnknownMessageFormats": "Сховати недійсні або невідомі формати повідомлень", + "@hideInvalidOrUnknownMessageFormats": {}, + "hideMemberChangesInPublicChats": "Сховати зміни користувачів у загальнодоступних бесідах", + "@hideMemberChangesInPublicChats": {}, + "hideMemberChangesInPublicChatsBody": "Не показувати в хронології бесіди, якщо хтось приєднується до загальнодоступної бесіди або виходить з неї, щоб покращити її читабельність.", + "@hideMemberChangesInPublicChatsBody": {}, + "overview": "Огляд", + "@overview": {}, + "notifyMeFor": "Сповіщати мене про", + "@notifyMeFor": {}, + "passwordRecoverySettings": "Налаштування відновлення пароля", + "@passwordRecoverySettings": {}, + "userWouldLikeToChangeTheChat": "{user} хоче приєднатися до бесіди.", + "@userWouldLikeToChangeTheChat": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "noPublicLinkHasBeenCreatedYet": "Загальнодоступне посилання ще не створено", + "@noPublicLinkHasBeenCreatedYet": {}, + "knock": "Постукатись", + "@knock": {}, + "knocking": "Стукаються", + "@knocking": {}, + "noDatabaseEncryption": "Шифрування бази даних не підтримується на цій платформі", + "@noDatabaseEncryption": {}, + "usersMustKnock": "Користувачі повинні постукатись", + "@usersMustKnock": {}, + "noOneCanJoin": "Ніхто не може приєднатись", + "@noOneCanJoin": {}, + "chatCanBeDiscoveredViaSearchOnServer": "Бесіду можна знайти за допомогою пошуку на {server}", + "@chatCanBeDiscoveredViaSearchOnServer": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "publicChatAddresses": "Адреси загальнодоступної бесіди", + "@publicChatAddresses": {}, + "searchMore": "Шукати ще...", + "@searchMore": {}, + "gallery": "Галерея", + "@gallery": {}, + "files": "Файли", + "@files": {}, + "unreadChatsInApp": "{appname}: {unread} непрочитаних бесід", + "@unreadChatsInApp": { + "type": "String", + "placeholders": { + "appname": { + "type": "String" + }, + "unread": { + "type": "String" + } + } + }, + "thereAreCountUsersBlocked": "Наразі заблоковано {count} користувачів.", + "@thereAreCountUsersBlocked": { + "type": "String", + "count": {} + }, + "moderatorLevel": "{level} - Модератор", + "@moderatorLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "adminLevel": "{level} - Адміністратор", + "@adminLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "userLevel": "{level} - Користувач", + "@userLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "changeGeneralChatSettings": "Змінити загальні налаштування чату", + "@changeGeneralChatSettings": {}, + "inviteOtherUsers": "Запросити інших користувачів до цього чату", + "@inviteOtherUsers": {}, + "changeTheChatPermissions": "Змінити права доступу до чату", + "@changeTheChatPermissions": {}, + "changeTheVisibilityOfChatHistory": "Змінити видимість історії чату", + "@changeTheVisibilityOfChatHistory": {}, + "changeTheCanonicalRoomAlias": "Змінити основну адресу загальнодоступного чату", + "@changeTheCanonicalRoomAlias": {}, + "sendRoomNotifications": "Надсилати сповіщення @room", + "@sendRoomNotifications": {}, + "space": "Простір", + "@space": {}, + "spaces": "Простори", + "@spaces": {}, + "goToSpace": "Перейти до простору: {space}", + "@goToSpace": { + "type": "String", + "space": {} + }, + "markAsUnread": "Позначити непрочитаним", + "@markAsUnread": {}, + "alwaysUse24HourFormat": "false", + "@alwaysUse24HourFormat": { + "description": "Set to true to always display time of day in 24 hour format." + }, + "invitedBy": "📩 Запрошений {user}", + "@invitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "changeTheDescriptionOfTheGroup": "Змінити опис чату", + "@changeTheDescriptionOfTheGroup": {}, + "updateInstalled": "🎉 Оновлення {version} встановлено!", + "@updateInstalled": { + "type": "String", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "changelog": "Зміни", + "@changelog": {}, + "chatPermissionsDescription": "Визначте, який рівень повноважень необхідний для певних дій у цьому чаті. Рівні повноважень 0, 50 і 100 зазвичай представляють користувачів, модераторів та адміністраторів, але можливі будь-які градації.", + "@chatPermissionsDescription": {}, + "countChatsAndCountParticipants": "{chats} чати та {participants} учасників", + "@countChatsAndCountParticipants": { + "type": "String", + "placeholders": { + "chats": { + "type": "int" + }, + "participants": { + "type": "int" + } + } + }, + "noMoreChatsFound": "Більше чатів не знайдено...", + "@noMoreChatsFound": {}, + "joinedChats": "Приєднані чати", + "@joinedChats": {}, + "unread": "Непрочитані", + "@unread": {}, + "sendCanceled": "Надсилання скасовано", + "@sendCanceled": {}, + "noChatsFoundHere": "Бесід ще немає. Розпочніть спілкування натиснувши кнопку нижче. ⤵️", + "@noChatsFoundHere": {}, + "loginWithMatrixId": "Увійти за допомогою Matrix-ID", + "@loginWithMatrixId": {}, + "discoverHomeservers": "Знайти домашні сервери", + "@discoverHomeservers": {}, + "whatIsAHomeserver": "Що таке домашній сервер?", + "@whatIsAHomeserver": {}, + "homeserverDescription": "Усі ваші дані зберігаються на домашньому сервері, так само як у постачальника послуг електронної пошти. Ви можете вибрати, який домашній сервер ви хочете використовувати, водночас ви можете спілкуватися з усіма. Докладніше на https://matrix.org.", + "@homeserverDescription": {}, + "doesNotSeemToBeAValidHomeserver": "Здається, це несумісний домашній сервер. Неправильна URL-адреса?", + "@doesNotSeemToBeAValidHomeserver": {}, + "calculatingFileSize": "Обчислення розміру файлу...", + "@calculatingFileSize": {}, + "prepareSendingAttachment": "Підготовка до надсилання вкладення...", + "@prepareSendingAttachment": {}, + "sendingAttachment": "Надсилання вкладення...", + "@sendingAttachment": {}, + "generatingVideoThumbnail": "Генерування мініатюри відео...", + "@generatingVideoThumbnail": {}, + "compressVideo": "Стиснення відео...", + "@compressVideo": {}, + "sendingAttachmentCountOfCount": "Надсилання вкладення {index} з {length}...", + "@sendingAttachmentCountOfCount": { + "type": "integer", + "placeholders": { + "index": { + "type": "int" + }, + "length": { + "type": "int" + } + } + }, + "serverLimitReached": "Досягнуто ліміту сервера! Очікування {seconds} секунд...", + "@serverLimitReached": { + "type": "integer", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "oneOfYourDevicesIsNotVerified": "Один із ваших пристроїв не верифікований", + "@oneOfYourDevicesIsNotVerified": {}, + "noticeChatBackupDeviceVerification": "Примітка: Коли ви під'єднуєте всі свої пристрої до резервної копії бесіди, вони автоматично верифікуються.", + "@noticeChatBackupDeviceVerification": {}, + "continueText": "Продовжити", + "@continueText": {}, + "manageAccount": "Керувати обліковим записом", + "@manageAccount": {}, + "welcomeText": "Привіт-привіт 👋 Це FluffyChat. Ви можете увійти на будь-який сервер, сумісний із https://matrix.org. А потім спілкуватися з будь-ким. Це величезна децентралізована мережа для обміну повідомленнями!", + "@welcomeText": {}, + "blur": "Розмиття:", + "@blur": {}, + "opacity": "Прозорість:", + "@opacity": {}, + "setWallpaper": "Встановити шпалери", + "@setWallpaper": {}, + "aboutHomeserver": "Про {homeserver}", + "@aboutHomeserver": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "noContactInformationProvided": "Сервер не надає жодної дійсної контактної інформації", + "@noContactInformationProvided": {}, + "contactServerSecurity": "Зв’язатися з відділом безпеки сервера", + "@contactServerSecurity": {}, + "supportPage": "Сторінка підтримки", + "@supportPage": {}, + "serverInformation": "Інформація про сервер:", + "@serverInformation": {}, + "contactServerAdmin": "Зв’язатися з адміністратором сервера", + "@contactServerAdmin": {}, + "name": "Ім'я", + "@name": {}, + "version": "Версія", + "@version": {}, + "website": "Вебсайт", + "@website": {}, + "boldText": "Жирний текст", + "@boldText": {}, + "italicText": "Курсивний текст", + "@italicText": {}, + "strikeThrough": "Перекреслений текст", + "@strikeThrough": {}, + "pleaseFillOut": "Будь ласка, заповніть", + "@pleaseFillOut": {}, + "invalidUrl": "Недійсний URL", + "@invalidUrl": {}, + "addLink": "Додати посилання", + "@addLink": {}, + "unableToJoinChat": "Неможливо приєднатися до бесіди. Можливо, інша сторона вже закрила розмову.", + "@unableToJoinChat": {}, + "sendImages": "Надіслати {count} зображення", + "@sendImages": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "compress": "Стиснути", + "@compress": {}, + "otherPartyNotLoggedIn": "Інша сторона наразі не увійшла в систему, тому не може отримувати повідомлення!", + "@otherPartyNotLoggedIn": {}, + "previous": "Попередній", + "@previous": {}, + "synchronizingPleaseWaitCounter": " Синхронізація… ({percentage}%)", + "@synchronizingPleaseWaitCounter": { + "type": "String", + "placeholders": { + "percentage": { + "type": "String" + } + } + }, + "newChatRequest": "📩 Новий запит на спілкування", + "@newChatRequest": {}, + "allDevices": "Усім пристроям", + "@allDevices": {}, + "crossVerifiedDevicesIfEnabled": "З перехресною верифікацією пристроїв, якщо ввімкнено", + "@crossVerifiedDevicesIfEnabled": {}, + "crossVerifiedDevices": "З перехресною верифікацією пристроїв", + "@crossVerifiedDevices": {}, + "appWantsToUseForLogin": "Використати '{server}', щоб увійти", + "@appWantsToUseForLogin": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "appWantsToUseForLoginDescription": "Цим ви дозволяєте застосунку та вебсайту ділитися інформацією про вас.", + "@appWantsToUseForLoginDescription": {}, + "open": "Відкрити", + "@open": {}, + "waitingForServer": "Очікування сервера...", + "@waitingForServer": {}, + "appIntroduction": "FluffyChat дає змогу спілкуватися з друзями у різних месенджерах. Дізнайтеся більше на https://matrix.org або просто натисніть *Продовжити*.", + "@appIntroduction": {}, + "shareKeysWithDescription": "Яким пристроям довіряти, щоб вони могли читати ваші повідомлення в зашифрованих бесідах?", + "@shareKeysWithDescription": {}, + "verifiedDevicesOnly": "Лише верифіковані пристрої", + "@verifiedDevicesOnly": {}, + "contentNotificationSettings": "Налаштування сповіщень про вміст", + "@contentNotificationSettings": {}, + "generalNotificationSettings": "Загальні налаштування сповіщень", + "@generalNotificationSettings": {}, + "roomNotificationSettings": "Налаштування сповіщень кімнати", + "@roomNotificationSettings": {}, + "userSpecificNotificationSettings": "Налаштування сповіщень для користувача", + "@userSpecificNotificationSettings": {}, + "otherNotificationSettings": "Інші налаштування сповіщень", + "@otherNotificationSettings": {}, + "notificationRuleContainsUserName": "Містить ім'я користувача", + "@notificationRuleContainsUserName": {}, + "notificationRuleContainsUserNameDescription": "Сповіщає користувача, коли повідомлення містить його ім'я користувача.", + "@notificationRuleContainsUserNameDescription": {}, + "notificationRuleMaster": "Вимкнути всі сповіщення", + "@notificationRuleMaster": {}, + "notificationRuleMasterDescription": "Перевизначає всі інші правила і вимикає всі сповіщення.", + "@notificationRuleMasterDescription": {}, + "notificationRuleSuppressNotices": "Заборонити автоматичні повідомлення", + "@notificationRuleSuppressNotices": {}, + "notificationRuleInviteForMe": "Запрошення мене", + "@notificationRuleInviteForMe": {}, + "notificationRuleInviteForMeDescription": "Сповіщає користувача, коли його запрошують до кімнати.", + "@notificationRuleInviteForMeDescription": {}, + "notificationRuleMemberEvent": "Події участі", + "@notificationRuleMemberEvent": {}, + "notificationRuleMemberEventDescription": "Забороняє сповіщення про події учасників.", + "@notificationRuleMemberEventDescription": {}, + "notificationRuleSuppressNoticesDescription": "Забороняє сповіщення від автоматизованих клієнтів, таких як боти.", + "@notificationRuleSuppressNoticesDescription": {}, + "notificationRuleIsUserMention": "Згадки користувачів", + "@notificationRuleIsUserMention": {}, + "commandHint_roomupgrade": "Оновити цю кімнату до версії даної кімнати", + "@commandHint_roomupgrade": {}, + "notificationRuleIsUserMentionDescription": "Сповіщає користувачів, коли безпосередньо їх згадують у повідомленні.", + "@notificationRuleIsUserMentionDescription": {}, + "notificationRuleContainsDisplayName": "Містить показуване ім’я", + "@notificationRuleContainsDisplayName": {}, + "notificationRuleIsRoomMentionDescription": "Сповіщає користувача, коли є згадка всієї кімнати.", + "@notificationRuleIsRoomMentionDescription": {}, + "notificationRuleRoomnotif": "Сповіщення кімнати", + "@notificationRuleRoomnotif": {}, + "notificationRuleRoomnotifDescription": "Сповіщає користувача, коли повідомлення містить '@room'.", + "@notificationRuleRoomnotifDescription": {}, + "notificationRuleContainsDisplayNameDescription": "Сповіщає користувача, коли повідомлення містить показуване ім'я.", + "@notificationRuleContainsDisplayNameDescription": {}, + "notificationRuleIsRoomMention": "Згадки кімнати", + "@notificationRuleIsRoomMention": {}, + "notificationRuleTombstone": "Могильний камінь", + "@notificationRuleTombstone": {}, + "notificationRuleTombstoneDescription": "Повідомляє користувача про повідомлення деактивації кімнати.", + "@notificationRuleTombstoneDescription": {}, + "notificationRuleReactionDescription": "Приховує сповіщення про реакції.", + "@notificationRuleReactionDescription": {}, + "notificationRuleRoomOneToOneDescription": "Повідомляє користувача про повідомлення в кімнатах \"Один на один\".", + "@notificationRuleRoomOneToOneDescription": {}, + "notificationRuleSuppressEdits": "Приховує редагування", + "@notificationRuleSuppressEdits": {}, + "notificationRuleSuppressEditsDescription": "Приховує сповіщення про відредаговані повідомлення.", + "@notificationRuleSuppressEditsDescription": {}, + "notificationRuleCall": "Виклик", + "@notificationRuleCall": {}, + "notificationRuleRoomServerAcl": "ACL сервера кімнати", + "@notificationRuleRoomServerAcl": {}, + "notificationRuleMessageDescription": "Повідомляє користувача про загальні повідомлення.", + "@notificationRuleMessageDescription": {}, + "notificationRuleEncrypted": "Зашифровано", + "@notificationRuleEncrypted": {}, + "notificationRuleJitsi": "Jitsi", + "@notificationRuleJitsi": {}, + "notificationRuleJitsiDescription": "Повідомляє користувача про події віджетів Jitsi.", + "@notificationRuleJitsiDescription": {}, + "notificationRuleServerAcl": "Приховує події сервера ACL", + "@notificationRuleServerAcl": {}, + "notificationRuleServerAclDescription": "Приховує сповіщення про події Server ACL.", + "@notificationRuleServerAclDescription": {}, + "more": "Більше", + "@more": {}, + "takeAPhoto": "Зробити фото", + "@takeAPhoto": {}, + "recordAVideo": "Записати відео", + "@recordAVideo": {}, + "optionalMessage": "(Необов'язково) повідомлення...", + "@optionalMessage": {}, + "enterNewChat": "Створити новий чат", + "@enterNewChat": {}, + "shareKeysWith": "Поділитися ключами з...", + "@shareKeysWith": {}, + "notSupportedOnThisDevice": "Не підтримується на цьому пристрої", + "@notSupportedOnThisDevice": {}, + "notificationRuleMessage": "Повідомлення", + "@notificationRuleMessage": {}, + "unknownPushRule": "Невідоме правило сповіщення '{rule}'", + "@unknownPushRule": { + "type": "String", + "placeholders": { + "rule": { + "type": "String" + } + } + }, + "pleaseWaitUntilInvited": "Будь ласка, зачекайте, поки хтось з кімнати запросить вас.", + "@pleaseWaitUntilInvited": {}, + "notificationRuleEncryptedRoomOneToOne": "Зашифрована кімната \"Один на один\"", + "@notificationRuleEncryptedRoomOneToOne": {}, + "deletePushRuleCanNotBeUndone": "Якщо ви видалите це налаштування сповіщень, відновити його буде неможливо.", + "@deletePushRuleCanNotBeUndone": {}, + "ignoreUser": "Ігнорувати користувача", + "@ignoreUser": {}, + "setCustomPermissionLevel": "Встановити рівень користувацьких прав", + "@setCustomPermissionLevel": {}, + "normalUser": "Звичайний користувач", + "@normalUser": {}, + "notificationRuleEncryptedDescription": "Повідомляє користувача про повідомлення в зашифрованих кімнатах.", + "@notificationRuleEncryptedDescription": {}, + "setPermissionsLevelDescription": "Будь ласка, виберіть заздалегідь визначену роль нижче або введіть користувацький рівень прав від 0 до 100.", + "@setPermissionsLevelDescription": {}, + "notificationRuleRoomServerAclDescription": "Приховує сповіщення про списки контролю доступу (ACL) сервера кімнати.", + "@notificationRuleRoomServerAclDescription": {}, + "notificationRuleReaction": "Реакція", + "@notificationRuleReaction": {}, + "notificationRuleCallDescription": "Повідомляє користувача про виклики.", + "@notificationRuleCallDescription": {}, + "notificationRuleEncryptedRoomOneToOneDescription": "Повідомляє користувача про повідомлення в зашифрованих кімнатах \"Один на один\".", + "@notificationRuleEncryptedRoomOneToOneDescription": {}, + "notificationRuleRoomOneToOne": "Кімната \"Один на один\"", + "@notificationRuleRoomOneToOne": {}, + "approve": "Схвалити", + "@approve": {}, + "youHaveKnocked": "Ви постукали", + "@youHaveKnocked": {}, + "sentVoiceMessage": "🎙️ {duration} - {sender} - Голосове повідомлення від {sender}", + "@sentVoiceMessage": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "duration": { + "type": "String" + } + } + }, + "countInvited": "Запрошено {count}", + "@countInvited": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "checkList": "Контрольний список", + "@checkList": {}, + "commandHint_logout": "Вийти на цьому пристрої", + "@commandHint_logout": {}, + "commandHint_logoutall": "Вийти на всіх активних пристроях", + "@commandHint_logoutall": {}, + "displayNavigationRail": "Показати навігаційну карту на мобільному", + "@displayNavigationRail": {}, + "customReaction": "Власні реакції", + "@customReaction": {}, + "moreEvents": "Інші події", + "@moreEvents": {}, + "declineInvitation": "Відхилити запрошення", + "@declineInvitation": {} +} diff --git a/lib/l10n/intl_uz.arb b/lib/l10n/intl_uz.arb new file mode 100644 index 0000000..f1e77fa --- /dev/null +++ b/lib/l10n/intl_uz.arb @@ -0,0 +1,443 @@ +{ + "repeatPassword": "Parolni takrorlang", + "@repeatPassword": {}, + "normalUser": "Oddiy foydalanuvchi", + "@normalUser": {}, + "alwaysUse24HourFormat": "true", + "@alwaysUse24HourFormat": { + "description": "Set to true to always display time of day in 24 hour format." + }, + "notAnImage": "Rasm fayli emas.", + "@notAnImage": {}, + "setCustomPermissionLevel": "Maxsus ruxsatlar darajasini sozlash", + "@setCustomPermissionLevel": {}, + "setPermissionsLevelDescription": "Quyidagi oldindan belgilangan rolni tanlang yoki 0-100 orasidagi maxsus ruxsatlar darajasini kiriting.", + "@setPermissionsLevelDescription": {}, + "ignoreUser": "Foydalanuvchini e’tiborsiz qoldirish", + "@ignoreUser": {}, + "remove": "O‘chirish", + "@remove": { + "type": "String", + "placeholders": {} + }, + "importNow": "Hozir import qilish", + "@importNow": {}, + "importEmojis": "Emojilarni import qilish", + "@importEmojis": {}, + "importFromZipFile": ".zip faylidan import qilish", + "@importFromZipFile": {}, + "exportEmotePack": "Emotsiyalar to‘plamini .zip fayl ko‘rinishida eksport qilish", + "@exportEmotePack": {}, + "replace": "Almashtirmoq", + "@replace": {}, + "about": "Biz haqimizda", + "@about": {}, + "aboutHomeserver": "{homeserver} haqida", + "@aboutHomeserver": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "accept": "Qabul qilmoq", + "@accept": { + "type": "String", + "placeholders": {} + }, + "acceptedTheInvitation": "👍 {username} taklifni qabul qildi", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "account": "Hisob", + "@account": { + "type": "String", + "placeholders": {} + }, + "activatedEndToEndEncryption": "🔐 {username} shifrlashni yakunlash uchun faollashtirdi", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "addEmail": "Email qo‘shish", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "confirmMatrixId": "Hisobingizni o‘chirish uchun Matrix ID hisobingizni tasdiqlang.", + "@confirmMatrixId": {}, + "supposedMxid": "Bu {mxid} bo‘lishi kerak", + "@supposedMxid": { + "type": "String", + "placeholders": { + "mxid": { + "type": "String" + } + } + }, + "addChatDescription": "Chat tavsifini kiriting...", + "@addChatDescription": {}, + "addToSpace": "Maydonga qo‘shish", + "@addToSpace": {}, + "admin": "Admin", + "@admin": { + "type": "String", + "placeholders": {} + }, + "alias": "taxallus", + "@alias": { + "type": "String", + "placeholders": {} + }, + "all": "Hammasi", + "@all": { + "type": "String", + "placeholders": {} + }, + "allChats": "Hamma chatlar", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "commandHint_roomupgrade": "Bu guruhni berilgan guruh versiyasiga yangilang", + "@commandHint_roomupgrade": {}, + "commandHint_googly": "G‘ilay ko‘zlarini yuboring", + "@commandHint_googly": {}, + "commandHint_cuddle": "Erkalash yuborish", + "@commandHint_cuddle": {}, + "commandHint_hug": "Quchoqlash yuborish", + "@commandHint_hug": {}, + "googlyEyesContent": "{senderName} sizga gʻilay ko‘zlarini yubormoqda", + "@googlyEyesContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "cuddleContent": "{senderName} sizni erkalamoqda", + "@cuddleContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "hugContent": "{senderName} sizni quchoqlamoqda", + "@hugContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "answeredTheCall": "{senderName} chaqiruvga javob berdi", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "anyoneCanJoin": "Har kim qo‘shilishi mumkin", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "appLock": "Ilova qulfi", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "appLockDescription": "PIN kod ishlatilmayotganida ilovani qulflash", + "@appLockDescription": {}, + "archive": "Arxiv", + "@archive": { + "type": "String", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "Mehmon foydalanuvchilarga qo‘shilishga ruxsat berilganmi", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "Ishonchingiz komilmi?", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "areYouSureYouWantToLogout": "Haqiqatan ham hisobingizdan chiqamoqchimisiz?", + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "askSSSSSign": "Narigi foydalanuvchini imzolash uchun xavfsiz do‘kon parol iborasi yoki tiklash kalitini kiriting.", + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "askVerificationRequest": "{username}dan ushbu tasdiqlash so‘rovi qabul qilinsinmi?", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "autoplayImages": "Animatsiyali stikerlar va emojilarni avtomatik ijro etish", + "@autoplayImages": { + "type": "String", + "placeholder": {} + }, + "sendTypingNotifications": "Yozish bildirishnomalarini yuborish", + "@sendTypingNotifications": {}, + "swipeRightToLeftToReply": "Javob berish uchun o‘ngdan chapga suring", + "@swipeRightToLeftToReply": {}, + "badServerLoginTypesException": "Homeserver quyidagi kirish turlarini qo'llab-quvvatlaydi:\n{serverVersions}\nLekin bu ilova faqat quyidagi turlarni qo'llab-quvvatlaydi:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "sendOnEnter": "Enterda yuborish", + "@sendOnEnter": {}, + "badServerVersionsException": "Homeserver quyidagi Spec versiyalarini qo'llab-quvvatlaydi:\n{serverVersions}\nLekin bu ilova faqat {supportedVersions} versiyalarini qo'llab-quvvatlaydi", + "@badServerVersionsException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "countChatsAndCountParticipants": "{chats} chatlar va {participants} ishtirokchilar", + "@countChatsAndCountParticipants": { + "type": "String", + "placeholders": { + "chats": { + "type": "int" + }, + "participants": { + "type": "int" + } + } + }, + "noMoreChatsFound": "Boshqa chatlar topilmadi...", + "@noMoreChatsFound": {}, + "noChatsFoundHere": "Bu yerda hali chat topilmadi. Quyidagi tugmadan foydalanib, kimdir bilan yangi chat boshlang. ⤵️", + "@noChatsFoundHere": {}, + "joinedChats": "Qo'shilgan chatlar", + "@joinedChats": {}, + "unread": "Oʻqilmagan", + "@unread": {}, + "space": "Boʻshliq", + "@space": {}, + "spaces": "Boʻshliqlar", + "@spaces": {}, + "banFromChat": "Chatdan taqiqlash", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "banned": "Taqiqlangan", + "@banned": { + "type": "String", + "placeholders": {} + }, + "bannedUser": "{username} taqiqladi {targetName}(ni)", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "blockDevice": "Qurilmani bloklash", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "blocked": "Bloklandi", + "@blocked": { + "type": "String", + "placeholders": {} + }, + "botMessages": "Bot xabarlari", + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "cancel": "Bekor qilish", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "cantOpenUri": "{uri} URIni ochib boʻlmadi", + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "changeDeviceName": "Qurilma nomini oʻzgartirish", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "changedTheChatAvatar": "{username} chat avatarini oʻzgartirdi", + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheChatDescriptionTo": "{username} chat tavsifini '{description}'ga oʻzgartirdi", + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "changedTheChatNameTo": "{username} chat nomini: '{chatname}'ga oʻzgartirdi", + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "changedTheChatPermissions": "{username} chat ruxsatnomalarini oʻzgartirdi", + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheDisplaynameTo": "{username} oʻzining nomini '{displayname}'ga oʻzgartirdi", + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "changedTheGuestAccessRules": "{username} mehmon kirish qoidalarini oʻzgartirdi", + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheGuestAccessRulesTo": "{username} mehmon kirish qoidalarini: {rules}ga oʻzgartirdi", + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheHistoryVisibility": "{username} tarix koʻrinishini oʻzgartirdi", + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheHistoryVisibilityTo": "{username} tarix koʻrinishini: {rules}ga oʻzgartirdi", + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheJoinRules": "{username} qoʻshilish qoidalarini oʻzgartirdi", + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheJoinRulesTo": "{username} qoʻshilish qoidalarini: {joinRules}ga oʻzgartirdi", + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "changedTheProfileAvatar": "{username} avatarini oʻzgartirdi", + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + } +} diff --git a/lib/l10n/intl_vi.arb b/lib/l10n/intl_vi.arb new file mode 100644 index 0000000..584c299 --- /dev/null +++ b/lib/l10n/intl_vi.arb @@ -0,0 +1,814 @@ +{ + "@@last_modified": "2021-08-14 12:41:09.781172", + "about": "Giới thiệu", + "@about": { + "type": "String", + "placeholders": {} + }, + "accept": "Đồng ý", + "@accept": { + "type": "String", + "placeholders": {} + }, + "acceptedTheInvitation": "{username} đã đồng ý lời mời", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "account": "Tài khoản", + "@account": { + "type": "String", + "placeholders": {} + }, + "activatedEndToEndEncryption": "{username} đã kích hoạt mã hóa đầu cuối 2 chiều", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "admin": "Quản trị viên", + "@admin": { + "type": "String", + "placeholders": {} + }, + "alias": "bí danh", + "@alias": { + "type": "String", + "placeholders": {} + }, + "answeredTheCall": "{senderName} đã trả lời cuộc gọi", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "anyoneCanJoin": "Mọi người đều có thể gia nhập", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "archive": "Lưu trữ", + "@archive": { + "type": "String", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "Khách vãng lai có được tham gia không", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "Bạn chắc chứ?", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "blockDevice": "Thiết bị bị chặn", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "verified": "Đã xác thực", + "@verified": { + "type": "String", + "placeholders": {} + }, + "transferFromAnotherDevice": "Chuyển từ thiết bị khác", + "@transferFromAnotherDevice": { + "type": "String", + "placeholders": {} + }, + "showPassword": "Hiển thị mật khẩu", + "@showPassword": { + "type": "String", + "placeholders": {} + }, + "pleaseFollowInstructionsOnWeb": "Vui lòng làm theo hướng dẫn trên trang web và bấm tiếp", + "@pleaseFollowInstructionsOnWeb": { + "type": "String", + "placeholders": {} + }, + "noEncryptionForPublicRooms": "Bạn chỉ có thể kích hoạt mã hoá khi phòng này không mở", + "@noEncryptionForPublicRooms": { + "type": "String", + "placeholders": {} + }, + "next": "Tiếp", + "@next": { + "type": "String", + "placeholders": {} + }, + "everythingReady": "Mọi thứ đã sẵn sàng!", + "@everythingReady": { + "type": "String", + "placeholders": {} + }, + "emoteSettings": "Cài đặt biểu tượng cảm xúc", + "@emoteSettings": { + "type": "String", + "placeholders": {} + }, + "editDisplayname": "Sửa tên hiển thị", + "@editDisplayname": { + "type": "String", + "placeholders": {} + }, + "downloadFile": "Tải ảnh xuống", + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "displaynameHasBeenChanged": "Tên hiển thị đã được thay đổi", + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "devices": "Các thiết bị", + "@devices": { + "type": "String", + "placeholders": {} + }, + "deviceId": "Mã xác định thiết bị", + "@deviceId": { + "type": "String", + "placeholders": {} + }, + "device": "Thiết bị", + "@device": { + "type": "String", + "placeholders": {} + }, + "deleteMessage": "Xoá tin nhắn", + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "deleteAccount": "Xoá tài khoản", + "@deleteAccount": { + "type": "String", + "placeholders": {} + }, + "delete": "Xoá", + "@delete": { + "type": "String", + "placeholders": {} + }, + "deactivateAccountWarning": "Việc này sẽ vô hiệu hoá tài khoản của bạn. Điều này không thể đảo ngược được! Bạn chắc là vẫn muốn tiếp tục chứ?", + "@deactivateAccountWarning": { + "type": "String", + "placeholders": {} + }, + "dateWithYear": "{day}/{month}/{year}", + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "dateWithoutYear": "{day}/{month}", + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "currentlyActive": "Đang hoạt động", + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "createdTheChat": "{username} đã tạo cuộc trò chuyện", + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "create": "Tạo", + "@create": { + "type": "String", + "placeholders": {} + }, + "countParticipants": "{count} thành viên", + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "couldNotDecryptMessage": "Không thể giải mã tin nhắn: {error}", + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "copy": "Sao chép", + "@copy": { + "type": "String", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "Liên hệ đã được mời vào nhóm", + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "connect": "Kết nối", + "@connect": { + "type": "String", + "placeholders": {} + }, + "confirm": "Xác nhận", + "@confirm": { + "type": "String", + "placeholders": {} + }, + "compareNumbersMatch": "So sánh và đảm bảo các số sau đây giống trên máy còn lại", + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "compareEmojiMatch": "So sánh và đảm bảo các biểu tượng cảm xúc sau đây giống với các biểu tượng trên máy còn lại", + "@compareEmojiMatch": { + "type": "String", + "placeholders": {} + }, + "close": "Đóng", + "@close": { + "type": "String", + "placeholders": {} + }, + "chooseAStrongPassword": "Chọn một mật khẩu mạnh", + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "chatDetails": "Chi tiết cuộc trò chuyện", + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "chatBackupDescription": "Bản sao lưu cuộc trò chuyện của bạn được bảo mật bằng một khoá bảo mật. Bạn đừng làm mất nó.", + "@chatBackupDescription": { + "type": "String", + "placeholders": {} + }, + "chatBackup": "Sao lưu cuộc trò chuyện", + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "chat": "Chat", + "@chat": { + "type": "String", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "Thay đổi tên nhóm", + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "changeTheHomeserver": "Thay đổi máy chủ nhà", + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "changePassword": "Thay đổi mật khẩu", + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "changedTheRoomInvitationLink": "{username} đã thay đổi đường dẫn mời", + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomAliases": "{username} đã đổi địa chỉ phòng chat", + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheProfileAvatar": "{username} đã thay đổi ảnh đại diện của mình", + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheGuestAccessRulesTo": "{username} đã thay đổi quy tắc truy cập đối với khách thành: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheGuestAccessRules": "{username} đã thay đổi quy tắc truy cập đối với khách", + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheChatPermissions": "{username} đã thay đổi quyền trong phòng chat", + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheChatNameTo": "{username} đã thay đổi tên phòng chat thành: '{chatname}'", + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "changedTheChatDescriptionTo": "{username} đã thay đổi mô tả phòng chat thành: '{description}'", + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "changedTheChatAvatar": "{username} đã thay đổi ảnh phòng chat", + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changeDeviceName": "Thay đổi tên thiết bị", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "cancel": "Hủy", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "blocked": "Đã chặn", + "@blocked": { + "type": "String", + "placeholders": {} + }, + "bannedUser": "{username} đã cấm {targetName}", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "banned": "Đã bị cấm", + "@banned": { + "type": "String", + "placeholders": {} + }, + "banFromChat": "Cấm khỏi cuộc trò chuyện", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "badServerVersionsException": "Máy chủ hỗ trợ Spec phiên bản:\n{serverVerions}\nNhưng ứng dụng này chỉ hỗ trợ {supportedVersions}", + "@badServerVersionsException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "badServerLoginTypesException": "Máy chủ nhà hỗ trợ kiểu đăng nhập:\n{serverVersions}\nNhưng ứng dụng này chỉ hỗ trợ:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "askVerificationRequest": "Bạn có đồng ý yêu cầu chứng thực từ {username} không?", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "areYouSureYouWantToLogout": "Bạn có chắc bạn muốn đăng xuất không?", + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "addEmail": "Thêm email", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "notifications": "Thông báo", + "@notifications": { + "type": "String", + "placeholders": {} + }, + "newGroup": "Nhóm mới", + "@newGroup": {}, + "pleaseEnterANumber": "Hãy nhập số lớn hơn 0", + "@pleaseEnterANumber": {}, + "newSpaceDescription": "Không gian cho phép bạn hợp nhất các cuộc trò chuyện của mình và xây dựng cộng đồng riêng tư hoặc công khai.", + "@newSpaceDescription": {}, + "disableEncryptionWarning": "Vì lý do bảo mật, bạn không thể tắt tính năng mã hóa trong cuộc trò chuyện đã được bật tính năng này trước đó.", + "@disableEncryptionWarning": {}, + "makeAdminDescription": "Khi bạn đặt người dùng này làm quản trị viên, bạn không thể hoàn tác việc này vì khi đó họ sẽ có quyền ngang bạn.", + "@makeAdminDescription": {}, + "setColorTheme": "Chọn màu giao diện:", + "@setColorTheme": {}, + "callingAccount": "Gọi tài khoản", + "@callingAccount": {}, + "openLinkInBrowser": "Mở đường dẫn trong trình duyệt", + "@openLinkInBrowser": {}, + "setTheme": "Chọn giao diện:", + "@setTheme": {}, + "invitePrivateChat": "📨 Mời trò chuyện riêng tư", + "@invitePrivateChat": {}, + "inviteGroupChat": "📨 Mời nhóm trò chuyện", + "@inviteGroupChat": {}, + "addToSpace": "Thêm vào không gian", + "@addToSpace": {}, + "importEmojis": "Nhập Biểu cảm", + "@importEmojis": {}, + "importFromZipFile": "Nhập vào từ tệp .zip", + "@importFromZipFile": {}, + "exportEmotePack": "Xuất gói biểu cảm bằng tệp .zip", + "@exportEmotePack": {}, + "hideUnimportantStateEvents": "Ẩn các sự kiện không quan trọng", + "@hideUnimportantStateEvents": {}, + "replace": "Thay thế", + "@replace": {}, + "addChatDescription": "Thêm mô tả hội thoại...", + "@addChatDescription": {}, + "report": "báo cáo", + "@report": {}, + "remove": "Loại bỏ", + "@remove": { + "type": "String", + "placeholders": {} + }, + "restricted": "Bị hạn chế", + "@restricted": {}, + "newSpace": "Không gian mới", + "@newSpace": {}, + "enterRoom": "Nhập phòng", + "@enterRoom": {}, + "signInWithPassword": "Đăng nhập với mật khẩu", + "@signInWithPassword": {}, + "all": "Tất cả", + "@all": { + "type": "String", + "placeholders": {} + }, + "appLock": "Khoá ứng dụng", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "allChats": "Tất cả hội thoại", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "repeatPassword": "Nhập lại mật khẩu", + "@repeatPassword": {}, + "confirmMatrixId": "Hãy xác nhận Matrix ID để xoá tài khoản.", + "@confirmMatrixId": {}, + "supposedMxid": "Đây nên là {mxid}", + "@supposedMxid": { + "type": "String", + "placeholders": { + "mxid": { + "type": "String" + } + } + }, + "noBackupWarning": "Cẩn thận! Nếu không bật sao lưu trò chuyện, bạn sẽ mất quyền truy cập vào tin nhắn được mã hóa của mình. Chúng tôi khuyên bạn nên bật sao lưu trò chuyện trước khi đăng xuất.", + "@noBackupWarning": {}, + "doNotShowAgain": "Không hiện lại nữa", + "@doNotShowAgain": {}, + "wasDirectChatDisplayName": "Hội thoại trống (từng là {oldDisplayName})", + "@wasDirectChatDisplayName": { + "type": "String", + "placeholders": { + "oldDisplayName": { + "type": "String" + } + } + }, + "reportErrorDescription": "😭 Ôi. Có lỗi xảy ra. Bạn có thể báo cáo lỗi tới nhà phát triển nếu muốn.", + "@reportErrorDescription": {}, + "profileNotFound": "Không tìm thấy người dùng này tại máy chủ. Có thể do lỗi kết nối hoặc người dùng không tồn tại.", + "@profileNotFound": {}, + "banUserDescription": "Người dùng sẽ bị cấm khỏi cuộc trò chuyện và không thể tham gia lại cho tới khi được gỡ cấm.", + "@banUserDescription": {}, + "learnMore": "Tìm hiểu thêm", + "@learnMore": {}, + "incomingMessages": "Tin nhắn đến", + "@incomingMessages": {}, + "encryptThisChat": "Mã hóa cuộc trò chuyện này", + "@encryptThisChat": {}, + "noOtherDevicesFound": "Không tìm thấy thiết bị khác", + "@noOtherDevicesFound": {}, + "fileIsTooBigForServer": "Máy chủ báo cáo rằng tệp tin quá lớn để gửi.", + "@fileIsTooBigForServer": {}, + "signInWith": "Đăng nhập với {provider}", + "@signInWith": { + "type": "String", + "placeholders": { + "provider": { + "type": "String" + } + } + }, + "notAnImage": "Không phải tệp ảnh.", + "@notAnImage": {}, + "importNow": "Nhập vào", + "@importNow": {}, + "allSpaces": "Tất cả không gian", + "@allSpaces": {}, + "enterSpace": "Nhập không gian", + "@enterSpace": {}, + "pleaseTryAgainLaterOrChooseDifferentServer": "Hãy thử lại sau hoặc chọn 1 máy chủ khác.", + "@pleaseTryAgainLaterOrChooseDifferentServer": {}, + "jumpToLastReadMessage": "Đi tới tin nhắn đã đọc mới nhất", + "@jumpToLastReadMessage": {}, + "commandHint_ignore": "Phớt lờ matrix ID này", + "@commandHint_ignore": {}, + "appLockDescription": "Khoá ứng dụng khi không dùng bằng mã pin", + "@appLockDescription": {}, + "notifyMeFor": "Bật thông báo cho", + "@notifyMeFor": {}, + "settings": "Cài đặt", + "@settings": { + "type": "String", + "placeholders": {} + }, + "sendSticker": "Gửi nhãn dán", + "@sendSticker": { + "type": "String", + "placeholders": {} + }, + "fileHasBeenSavedAt": "Tệp đã được lưu tại {path}", + "@fileHasBeenSavedAt": { + "type": "String", + "placeholders": { + "path": { + "type": "String" + } + } + }, + "readUpToHere": "Đọc tới đây", + "@readUpToHere": {}, + "jump": "Đi tới", + "@jump": {}, + "callingPermissions": "Quyền gọi điện", + "@callingPermissions": {}, + "numChats": "{number} cuộc hội thoại", + "@numChats": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "hidePresences": "Ẩn danh sách trạng thái?", + "@hidePresences": {}, + "sorryThatsNotPossible": "Xin lỗi... không khả dụng", + "@sorryThatsNotPossible": {}, + "reopenChat": "Mở lại cuộc trò chuyện", + "@reopenChat": {}, + "wrongPinEntered": "Nhập sai mã pin! Thử lại sau {seconds} giây...", + "@wrongPinEntered": { + "type": "String", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "archiveRoomDescription": "Cuộc trò chuyện sẽ được chuyển tới mục lưu trữ. Người dùng khác sẽ thấy được bạn đã rời khỏi cuộc trò chuyện.", + "@archiveRoomDescription": {}, + "kickUserDescription": "Người dùng bị đuổi khỏi cuộc trò chuyện nhưng không bị cấm. Trong các cuộc trò chuyện công khai, người dùng có thể vào lại bất cứ lúc nào.", + "@kickUserDescription": {}, + "unbanUserDescription": "Người dùng sẽ có thể vào lại cuộc trò chuyện nếu họ thử.", + "@unbanUserDescription": {}, + "pushNotificationsNotAvailable": "Thông báo đẩy không khả dụng", + "@pushNotificationsNotAvailable": {}, + "invite": "Mời", + "@invite": {}, + "invalidInput": "Dữ liệu nhập không hợp lệ!", + "@invalidInput": {}, + "removeDevicesDescription": "Bạn sẽ đăng xuất khỏi thiết bị này và không nhận được tin nhắn nữa.", + "@removeDevicesDescription": {}, + "noUsersFoundWithQuery": "Không tìm thấy người dùng nào với \"{query}\". Hãy kiểm tra xem bạn có nhập nhầm không.", + "@noUsersFoundWithQuery": { + "type": "String", + "placeholders": { + "query": { + "type": "String" + } + } + }, + "commandHint_unignore": "Bỏ phớt lờ matrix ID này", + "@commandHint_unignore": {}, + "discover": "Khám phá", + "@discover": {}, + "stickers": "Nhãn dán", + "@stickers": {}, + "roomUpgradeDescription": "Cuộc trò chuyện sẽ được tạo lại với phiên bản phòng mới. Tất cả những người tham gia sẽ được thông báo rằng họ cần chuyển sang cuộc trò chuyện mới. Bạn có thể tìm hiểu thêm về các phiên bản phòng tại https://spec.matrix.org/latest/rooms/", + "@roomUpgradeDescription": {}, + "commandHint_hug": "Gửi một cái ôm", + "@commandHint_hug": {}, + "aboutHomeserver": "Về {homeserver}", + "@aboutHomeserver": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "alwaysUse24HourFormat": "không", + "@alwaysUse24HourFormat": { + "description": "Set to true to always display time of day in 24 hour format." + }, + "hugContent": "{senderName} ôm bạn", + "@hugContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "setCustomPermissionLevel": "Cài mức phân quyền", + "@setCustomPermissionLevel": {}, + "setPermissionsLevelDescription": "Vui lòng chọn vai trò được xác định trước bên dưới hoặc nhập mức quyền tùy chỉnh từ 0 đến 100.", + "@setPermissionsLevelDescription": {}, + "ignoreUser": "Chặn người dùng", + "@ignoreUser": {}, + "normalUser": "Người dùng thường", + "@normalUser": {}, + "commandHint_roomupgrade": "Nâng cấp phòng lên phiên bản mặc định", + "@commandHint_roomupgrade": {}, + "commandHint_cuddle": "Gửi cái ôm", + "@commandHint_cuddle": {}, + "googlyEyesContent": "{senderName} gửi nháy mắt", + "@googlyEyesContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "cuddleContent": "{senderName} ôm nào", + "@cuddleContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "askSSSSSign": "Để có thể ký tên cho người khác, vui lòng nhập mật khẩu lưu trữ an toàn hoặc khóa khôi phục của bạn.", + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "autoplayImages": "Tự động chạy nhãn dán hình động và biểu tượng cảm xúc", + "@autoplayImages": { + "type": "String", + "placeholder": {} + }, + "sendTypingNotifications": "Gửi thông báo đang nhập", + "@sendTypingNotifications": {}, + "swipeRightToLeftToReply": "Gạt từ phải sang trái để trả lời", + "@swipeRightToLeftToReply": {}, + "sendOnEnter": "Gửi bằng Enter", + "@sendOnEnter": {}, + "continueText": "Tiếp", + "@continueText": {}, + "videoWithSize": "Video ({size})", + "@videoWithSize": { + "type": "String", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "markAsRead": "Đánh dấu đã đọc", + "@markAsRead": {}, + "reportUser": "Báo cáo người dùng", + "@reportUser": {}, + "dismiss": "Bỏ", + "@dismiss": {}, + "reactedWith": "{sender} bày tỏ {reaction}", + "@reactedWith": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "reaction": { + "type": "String" + } + } + }, + "pinMessage": "Ghim phòng", + "@pinMessage": {}, + "confirmEventUnpin": "Bạn có muốn bỏ ghim sự kiện?", + "@confirmEventUnpin": {} +} diff --git a/lib/l10n/intl_yue_Hant.arb b/lib/l10n/intl_yue_Hant.arb new file mode 100644 index 0000000..cce50f3 --- /dev/null +++ b/lib/l10n/intl_yue_Hant.arb @@ -0,0 +1,337 @@ +{ + "@@locale": "yue", + "normalUser": "正常用家", + "@normalUser": {}, + "areYouSureYouWantToLogout": "係咪確定要 log out?", + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "畀唔畀陌生人 Join", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "askSSSSSign": "要向其他人簽名,請輸入你 Keep 好咗嘅密碼或者恢復密鑰。", + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "badServerLoginTypesException": "呢個 Homeserver 支持嘅登錄類型有:\n{serverVersions}\n但係呢個 App 淨係支援:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "cantOpenUri": "打唔開嘅 URI {uri}", + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "badServerVersionsException": "呢個 Homeserver 支持以下 Spec 版本:\n{serverVersions}\n但係個 App 淨係支持 {supoortedVersions} 版本", + "@badServerVersionsException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "banFromChat": "喺傾偈入面 Ban 咗佢", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "noChatsFoundHere": "暫時未有偈傾。撳下面粒掣同人開始傾偈 ⤵️", + "@noChatsFoundHere": {}, + "bannedUser": "{username} Ban 咗 {targetName}", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "changedTheChatDescriptionTo": "{username} 改咗呢個偈嘅介紹: 「'{description}'」", + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "addEmail": "加 Email", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "alwaysUse24HourFormat": "false", + "@alwaysUse24HourFormat": { + "description": "Set to true to always display time of day in 24 hour format." + }, + "importEmojis": "導入 Emoji", + "@importEmojis": {}, + "hugContent": "{senderName} 抱咗你", + "@hugContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "commandHint_hug": "Send 個 Hug", + "@commandHint_hug": {}, + "anyoneCanJoin": "任何人都可以 Join", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "repeatPassword": "輸入多一次密碼", + "@repeatPassword": {}, + "notAnImage": "唔係圖檔。", + "@notAnImage": {}, + "remove": "刪走", + "@remove": { + "type": "String", + "placeholders": {} + }, + "importNow": "即刻導入", + "@importNow": {}, + "exportEmotePack": "將表情符號導出成 .zip 檔案", + "@exportEmotePack": {}, + "replace": "換走", + "@replace": {}, + "about": "關於", + "@about": {}, + "aboutHomeserver": "關於{homeserver}", + "@aboutHomeserver": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "accept": "同意", + "@accept": { + "type": "String", + "placeholders": {} + }, + "acceptedTheInvitation": "👍 {username} 同意咗邀请", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "account": "Account", + "@account": { + "type": "String", + "placeholders": {} + }, + "activatedEndToEndEncryption": "🔐 {username} 開咗點對點加密", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "supposedMxid": "呢度應該係 {mxid}", + "@supposedMxid": { + "type": "String", + "placeholders": { + "mxid": { + "type": "String" + } + } + }, + "addChatDescription": "講下關於呢個偈係傾嘅乜嘢……", + "@addChatDescription": {}, + "addToSpace": "加落去空間嗰度", + "@addToSpace": {}, + "admin": "Admin", + "@admin": { + "type": "String", + "placeholders": {} + }, + "alias": "花名", + "@alias": { + "type": "String", + "placeholders": {} + }, + "all": "全部", + "@all": { + "type": "String", + "placeholders": {} + }, + "allChats": "所有傾嘅偈仔", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "commandHint_roomupgrade": "將呢間房升級到指定版本", + "@commandHint_roomupgrade": {}, + "commandHint_googly": "送啲古靈精怪表情過去", + "@commandHint_googly": {}, + "commandHint_cuddle": "Send 個攬攬", + "@commandHint_cuddle": {}, + "googlyEyesContent": "{senderName} Send 咗你一個咕嚕眼", + "@googlyEyesContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "cuddleContent": "{senderName} 攬咗你", + "@cuddleContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "answeredTheCall": "{senderName} 聽咗你嘅電話", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "appLock": "App 鎖", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "appLockDescription": "無人用嘅時候用密碼鎖住個App", + "@appLockDescription": {}, + "archive": "存檔", + "@archive": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "咪住先?", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "askVerificationRequest": "係咪要 Accept 來自 {username} 嘅驗證申請?", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "autoplayImages": "自動播放動畫貼紙同表情", + "@autoplayImages": { + "type": "String", + "placeholder": {} + }, + "sendTypingNotifications": "通知人地打緊字", + "@sendTypingNotifications": {}, + "swipeRightToLeftToReply": "向左滑嚟回覆", + "@swipeRightToLeftToReply": {}, + "sendOnEnter": "撳 Enter 即 Send", + "@sendOnEnter": {}, + "countChatsAndCountParticipants": "{chats} 間房同 {participants} 條友", + "@countChatsAndCountParticipants": { + "type": "String", + "placeholders": { + "chats": { + "type": "int" + }, + "participants": { + "type": "int" + } + } + }, + "noMoreChatsFound": "搵唔到更多偈傾啦…", + "@noMoreChatsFound": {}, + "joinedChats": "入咗嘅房間", + "@joinedChats": {}, + "unread": "未讀", + "@unread": {}, + "space": "空間", + "@space": {}, + "spaces": "空間", + "@spaces": {}, + "banned": "Block 咗", + "@banned": { + "type": "String", + "placeholders": {} + }, + "blockDevice": "Block 咗嘅裝置", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "blocked": "Block 咗", + "@blocked": { + "type": "String", + "placeholders": {} + }, + "botMessages": "機械人訊息", + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "cancel": "取消", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "changeDeviceName": "改裝置名", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "changedTheChatAvatar": "{username}轉咗個大頭貼", + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "confirmMatrixId": "Confirm 你嘅 Matrix ID ,我哋先至可以刪除你嘅 Account。", + "@confirmMatrixId": {}, + "setCustomPermissionLevel": "自訂權限級別", + "@setCustomPermissionLevel": {}, + "importFromZipFile": "喺 .zip 檔案導入", + "@importFromZipFile": {}, + "setPermissionsLevelDescription": "請喺下面選擇一個預定義嘅角色,或輸入介乎0同100之間嘅自定義權限級別。", + "@setPermissionsLevelDescription": {} +} diff --git a/lib/l10n/intl_zh.arb b/lib/l10n/intl_zh.arb new file mode 100644 index 0000000..7cb217a --- /dev/null +++ b/lib/l10n/intl_zh.arb @@ -0,0 +1,3491 @@ +{ + "@@locale": "zh", + "@@last_modified": "2021-08-14 12:41:09.767805", + "about": "关于", + "@about": { + "type": "String", + "placeholders": {} + }, + "accept": "接受", + "@accept": { + "type": "String", + "placeholders": {} + }, + "acceptedTheInvitation": "👍 {username} 接受了邀请", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "account": "账户", + "@account": { + "type": "String", + "placeholders": {} + }, + "activatedEndToEndEncryption": "🔐 {username} 激活了端到端加密", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "addEmail": "添加电子邮件", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "admin": "管理员", + "@admin": { + "type": "String", + "placeholders": {} + }, + "alias": "别名", + "@alias": { + "type": "String", + "placeholders": {} + }, + "all": "全部", + "@all": { + "type": "String", + "placeholders": {} + }, + "answeredTheCall": "{senderName} 接听了通话", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "anyoneCanJoin": "任何人都可以加入", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "appLock": "应用锁", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "archive": "存档", + "@archive": { + "type": "String", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "是否允许访客加入", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "你确定吗?", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "areYouSureYouWantToLogout": "你确定要注销吗?", + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "askSSSSSign": "请输入你的安全存储的密码短语或恢复密钥,以向对方签名。", + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "askVerificationRequest": "是否接受来自 {username} 的验证请求?", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "badServerLoginTypesException": "主服务器支持的登录方式:\n{serverVersions}\n但此应用仅支持:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "badServerVersionsException": "主服务器支持的 Spec 版本:\n{serverVersions}\n但此应用仅支持 {supportedVersions} 版本", + "@badServerVersionsException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "banFromChat": "从聊天中封禁", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "banned": "已封禁", + "@banned": { + "type": "String", + "placeholders": {} + }, + "bannedUser": "{username} 封禁了 {targetName}", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "blockDevice": "屏蔽设备", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "blocked": "已屏蔽", + "@blocked": { + "type": "String", + "placeholders": {} + }, + "botMessages": "机器人消息", + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "cancel": "取消", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "changeDeviceName": "更改设备名称", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "changedTheChatAvatar": "{username} 更改了聊天头像", + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheChatDescriptionTo": "{username} 将聊天描述更改为:'{description}'", + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "changedTheChatNameTo": "{username} 将聊天名称更改为:'{chatname}'", + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "changedTheChatPermissions": "{username} 更改了聊天权限", + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheDisplaynameTo": "{username} 将昵称更改为:'{displayname}'", + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "changedTheGuestAccessRules": "{username} 更改了访客访问规则", + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheGuestAccessRulesTo": "{username} 更改了访客访问规则为:{rules}", + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheHistoryVisibility": "{username} 更改了历史记录可见性", + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheHistoryVisibilityTo": "{username} 更改了历史记录可见性为:{rules}", + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheJoinRules": "{username} 更改了加入的规则", + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheJoinRulesTo": "{username} 更改了加入的规则为:{joinRules}", + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "changedTheProfileAvatar": "{username} 更改了头像", + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomAliases": "{username} 更改了聊天室别名", + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomInvitationLink": "{username} 更改了邀请链接", + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changePassword": "更改密码", + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "changeTheHomeserver": "更改主服务器", + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "changeTheme": "改变风格", + "@changeTheme": { + "type": "String", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "更改群组名称", + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "changeYourAvatar": "更改你的头像", + "@changeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "channelCorruptedDecryptError": "加密已被破坏", + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "chat": "聊天", + "@chat": { + "type": "String", + "placeholders": {} + }, + "chatBackup": "聊天记录备份", + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "chatBackupDescription": "你的旧消息受恢复密钥保护。请确保你不会丢失它。", + "@chatBackupDescription": { + "type": "String", + "placeholders": {} + }, + "chatDetails": "聊天详情", + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "chats": "聊天", + "@chats": { + "type": "String", + "placeholders": {} + }, + "chooseAStrongPassword": "输入一个强密码", + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "clearArchive": "清除存档", + "@clearArchive": {}, + "close": "关闭", + "@close": { + "type": "String", + "placeholders": {} + }, + "commandHint_ban": "在此聊天室封禁指定用户", + "@commandHint_ban": { + "type": "String", + "description": "Usage hint for the command /ban" + }, + "commandHint_html": "发送 HTML 格式化文本", + "@commandHint_html": { + "type": "String", + "description": "Usage hint for the command /html" + }, + "commandHint_invite": "邀请指定用户加入此聊天室", + "@commandHint_invite": { + "type": "String", + "description": "Usage hint for the command /invite" + }, + "commandHint_join": "加入指定聊天室", + "@commandHint_join": { + "type": "String", + "description": "Usage hint for the command /join" + }, + "commandHint_kick": "在此聊天室移除指定用户", + "@commandHint_kick": { + "type": "String", + "description": "Usage hint for the command /kick" + }, + "commandHint_leave": "退出此聊天室", + "@commandHint_leave": { + "type": "String", + "description": "Usage hint for the command /leave" + }, + "commandHint_me": "介绍自己", + "@commandHint_me": { + "type": "String", + "description": "Usage hint for the command /me" + }, + "commandHint_myroomavatar": "设置你在此聊天室的头像(通过 mxc-uri)", + "@commandHint_myroomavatar": { + "type": "String", + "description": "Usage hint for the command /myroomavatar" + }, + "commandHint_myroomnick": "设置你在此聊天室的昵称", + "@commandHint_myroomnick": { + "type": "String", + "description": "Usage hint for the command /myroomnick" + }, + "commandHint_op": "设置指定用户的权限等级(默认:50)", + "@commandHint_op": { + "type": "String", + "description": "Usage hint for the command /op" + }, + "commandHint_plain": "发送纯文本", + "@commandHint_plain": { + "type": "String", + "description": "Usage hint for the command /plain" + }, + "commandHint_react": "将回复作为回应发送", + "@commandHint_react": { + "type": "String", + "description": "Usage hint for the command /react" + }, + "commandHint_send": "发送文本", + "@commandHint_send": { + "type": "String", + "description": "Usage hint for the command /send" + }, + "commandHint_unban": "在此聊天室解封指定用户", + "@commandHint_unban": { + "type": "String", + "description": "Usage hint for the command /unban" + }, + "commandInvalid": "指令无效", + "@commandInvalid": { + "type": "String" + }, + "commandMissing": "{command} 不是指令。", + "@commandMissing": { + "type": "String", + "placeholders": { + "command": { + "type": "String" + } + }, + "description": "State that {command} is not a valid /command." + }, + "compareEmojiMatch": "请比较表情符号", + "@compareEmojiMatch": { + "type": "String", + "placeholders": {} + }, + "compareNumbersMatch": "请比较以下数字", + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "configureChat": "配置聊天", + "@configureChat": { + "type": "String", + "placeholders": {} + }, + "confirm": "确认", + "@confirm": { + "type": "String", + "placeholders": {} + }, + "connect": "连接", + "@connect": { + "type": "String", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "联系人已被邀请至群组", + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "containsDisplayName": "包含昵称", + "@containsDisplayName": { + "type": "String", + "placeholders": {} + }, + "containsUserName": "包含用户名", + "@containsUserName": { + "type": "String", + "placeholders": {} + }, + "contentHasBeenReported": "此内容已被报告至服务器管理员处", + "@contentHasBeenReported": { + "type": "String", + "placeholders": {} + }, + "copiedToClipboard": "已复制到剪贴板", + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "copy": "复制", + "@copy": { + "type": "String", + "placeholders": {} + }, + "copyToClipboard": "复制到剪贴板", + "@copyToClipboard": { + "type": "String", + "placeholders": {} + }, + "couldNotDecryptMessage": "不能解密消息: {error}", + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "countParticipants": "{count} 名参与者", + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "create": "创建", + "@create": { + "type": "String", + "placeholders": {} + }, + "createdTheChat": "💬 {username} 创建了聊天", + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "currentlyActive": "目前活跃", + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "darkTheme": "深色", + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "dateWithoutYear": "{month}-{day}", + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "dateWithYear": "{year}-{month}-{day}", + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "deactivateAccountWarning": "这将停用你的用户账户。这不能被撤销!你确定吗?", + "@deactivateAccountWarning": { + "type": "String", + "placeholders": {} + }, + "defaultPermissionLevel": "新用户默认权限级别", + "@defaultPermissionLevel": { + "type": "String", + "placeholders": {} + }, + "delete": "删除", + "@delete": { + "type": "String", + "placeholders": {} + }, + "deleteAccount": "删除账户", + "@deleteAccount": { + "type": "String", + "placeholders": {} + }, + "deleteMessage": "删除消息", + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "device": "设备", + "@device": { + "type": "String", + "placeholders": {} + }, + "deviceId": "设备 ID", + "@deviceId": { + "type": "String", + "placeholders": {} + }, + "devices": "设备", + "@devices": { + "type": "String", + "placeholders": {} + }, + "directChats": "私聊", + "@directChats": { + "type": "String", + "placeholders": {} + }, + "displaynameHasBeenChanged": "昵称已更改", + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "downloadFile": "下载文件", + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "edit": "编辑", + "@edit": { + "type": "String", + "placeholders": {} + }, + "editBlockedServers": "编辑被屏蔽的服务器", + "@editBlockedServers": { + "type": "String", + "placeholders": {} + }, + "editDisplayname": "编辑昵称", + "@editDisplayname": { + "type": "String", + "placeholders": {} + }, + "editRoomAliases": "编辑聊天室别名", + "@editRoomAliases": { + "type": "String", + "placeholders": {} + }, + "editRoomAvatar": "编辑聊天室头像", + "@editRoomAvatar": { + "type": "String", + "placeholders": {} + }, + "emoteExists": "表情已存在!", + "@emoteExists": { + "type": "String", + "placeholders": {} + }, + "emoteInvalid": "无效的表情快捷码!", + "@emoteInvalid": { + "type": "String", + "placeholders": {} + }, + "emotePacks": "聊天室的表情包", + "@emotePacks": { + "type": "String", + "placeholders": {} + }, + "emoteSettings": "表情设置", + "@emoteSettings": { + "type": "String", + "placeholders": {} + }, + "emoteShortcode": "表情快捷码", + "@emoteShortcode": { + "type": "String", + "placeholders": {} + }, + "emoteWarnNeedToPick": "你需要选择一个表情快捷码和一张图片!", + "@emoteWarnNeedToPick": { + "type": "String", + "placeholders": {} + }, + "emptyChat": "空聊天", + "@emptyChat": { + "type": "String", + "placeholders": {} + }, + "enableEmotesGlobally": "在全局启用表情包", + "@enableEmotesGlobally": { + "type": "String", + "placeholders": {} + }, + "enableEncryption": "启用加密", + "@enableEncryption": { + "type": "String", + "placeholders": {} + }, + "enableEncryptionWarning": "你之后将无法停用加密,确定吗?", + "@enableEncryptionWarning": { + "type": "String", + "placeholders": {} + }, + "encrypted": "已加密", + "@encrypted": { + "type": "String", + "placeholders": {} + }, + "encryption": "加密", + "@encryption": { + "type": "String", + "placeholders": {} + }, + "encryptionNotEnabled": "加密未启用", + "@encryptionNotEnabled": { + "type": "String", + "placeholders": {} + }, + "endedTheCall": "{senderName} 结束了通话", + "@endedTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "enterAnEmailAddress": "输入一个电子邮件地址", + "@enterAnEmailAddress": { + "type": "String", + "placeholders": {} + }, + "enterYourHomeserver": "输入你的主服务器地址", + "@enterYourHomeserver": { + "type": "String", + "placeholders": {} + }, + "everythingReady": "一切就绪!", + "@everythingReady": { + "type": "String", + "placeholders": {} + }, + "extremeOffensive": "令人极度反感", + "@extremeOffensive": { + "type": "String", + "placeholders": {} + }, + "fileName": "文件名", + "@fileName": { + "type": "String", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "String", + "placeholders": {} + }, + "fontSize": "字体大小", + "@fontSize": { + "type": "String", + "placeholders": {} + }, + "forward": "转发", + "@forward": { + "type": "String", + "placeholders": {} + }, + "fromJoining": "自加入起", + "@fromJoining": { + "type": "String", + "placeholders": {} + }, + "fromTheInvitation": "自邀请起", + "@fromTheInvitation": { + "type": "String", + "placeholders": {} + }, + "goToTheNewRoom": "前往新的聊天室", + "@goToTheNewRoom": { + "type": "String", + "placeholders": {} + }, + "group": "群组", + "@group": { + "type": "String", + "placeholders": {} + }, + "groupIsPublic": "群组是公开的", + "@groupIsPublic": { + "type": "String", + "placeholders": {} + }, + "groups": "群组", + "@groups": { + "type": "String", + "placeholders": {} + }, + "groupWith": "名称为 {displayname} 的群组", + "@groupWith": { + "type": "String", + "placeholders": { + "displayname": { + "type": "String" + } + } + }, + "guestsAreForbidden": "访客禁止加入", + "@guestsAreForbidden": { + "type": "String", + "placeholders": {} + }, + "guestsCanJoin": "访客可以加入", + "@guestsCanJoin": { + "type": "String", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "{username} 撤回了对 {targetName} 的邀请", + "@hasWithdrawnTheInvitationFor": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "help": "帮助", + "@help": { + "type": "String", + "placeholders": {} + }, + "hideRedactedEvents": "隐藏已删除的事件", + "@hideRedactedEvents": { + "type": "String", + "placeholders": {} + }, + "hideUnknownEvents": "隐藏未知的事件", + "@hideUnknownEvents": { + "type": "String", + "placeholders": {} + }, + "howOffensiveIsThisContent": "这些内容有多令人反感?", + "@howOffensiveIsThisContent": { + "type": "String", + "placeholders": {} + }, + "id": "ID", + "@id": { + "type": "String", + "placeholders": {} + }, + "identity": "身份", + "@identity": { + "type": "String", + "placeholders": {} + }, + "ignore": "忽略", + "@ignore": { + "type": "String", + "placeholders": {} + }, + "ignoredUsers": "已忽略的用户", + "@ignoredUsers": { + "type": "String", + "placeholders": {} + }, + "iHaveClickedOnLink": "我已经点击了链接", + "@iHaveClickedOnLink": { + "type": "String", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "不正确的密码短语或恢复密钥", + "@incorrectPassphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "inoffensive": "不令人反感", + "@inoffensive": { + "type": "String", + "placeholders": {} + }, + "inviteContact": "邀请联系人", + "@inviteContact": { + "type": "String", + "placeholders": {} + }, + "inviteContactToGroup": "邀请联系人到 {groupName}", + "@inviteContactToGroup": { + "type": "String", + "placeholders": { + "groupName": { + "type": "String" + } + } + }, + "invited": "已邀请", + "@invited": { + "type": "String", + "placeholders": {} + }, + "invitedUser": "📩 {username} 邀请了 {targetName}", + "@invitedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "invitedUsersOnly": "仅被邀请用户", + "@invitedUsersOnly": { + "type": "String", + "placeholders": {} + }, + "inviteForMe": "发给我的邀请", + "@inviteForMe": { + "type": "String", + "placeholders": {} + }, + "inviteText": "{username} 邀请你使用 FluffyChat。 \n1. 安装 FluffyChat:https://fluffychat.im \n2. 注册或登录 \n3. 打开邀请链接:\n {link}", + "@inviteText": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "link": { + "type": "String" + } + } + }, + "isTyping": "正在输入…", + "@isTyping": { + "type": "String", + "placeholders": {} + }, + "joinedTheChat": "👋 {username} 加入了聊天", + "@joinedTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "joinRoom": "加入聊天室", + "@joinRoom": { + "type": "String", + "placeholders": {} + }, + "kicked": "👞 {username} 踢出了 {targetName}", + "@kicked": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickedAndBanned": "🙅 {username} 踢出并封禁了 {targetName}", + "@kickedAndBanned": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickFromChat": "从聊天室踢出", + "@kickFromChat": { + "type": "String", + "placeholders": {} + }, + "lastActiveAgo": "上次活跃: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "String", + "placeholders": { + "localizedTimeShort": { + "type": "String" + } + } + }, + "leave": "离开", + "@leave": { + "type": "String", + "placeholders": {} + }, + "leftTheChat": "离开了聊天", + "@leftTheChat": { + "type": "String", + "placeholders": {} + }, + "license": "许可证", + "@license": { + "type": "String", + "placeholders": {} + }, + "lightTheme": "浅色", + "@lightTheme": { + "type": "String", + "placeholders": {} + }, + "loadCountMoreParticipants": "加载 {count} 个更多的参与者", + "@loadCountMoreParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "loadingPleaseWait": "加载中…请等待。", + "@loadingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "loadMore": "加载更多…", + "@loadMore": { + "type": "String", + "placeholders": {} + }, + "login": "登录", + "@login": { + "type": "String", + "placeholders": {} + }, + "logInTo": "登录 {homeserver}", + "@logInTo": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "logout": "注销", + "@logout": { + "type": "String", + "placeholders": {} + }, + "memberChanges": "成员变更", + "@memberChanges": { + "type": "String", + "placeholders": {} + }, + "mention": "提及", + "@mention": { + "type": "String", + "placeholders": {} + }, + "messages": "消息", + "@messages": { + "type": "String", + "placeholders": {} + }, + "moderator": "协管员", + "@moderator": { + "type": "String", + "placeholders": {} + }, + "muteChat": "静音聊天", + "@muteChat": { + "type": "String", + "placeholders": {} + }, + "needPantalaimonWarning": "请注意当前你需要 Pantalaimon 以使用端到端加密功能。", + "@needPantalaimonWarning": { + "type": "String", + "placeholders": {} + }, + "newChat": "新的聊天", + "@newChat": { + "type": "String", + "placeholders": {} + }, + "newMessageInFluffyChat": "💬 FluffyChat 新消息", + "@newMessageInFluffyChat": { + "type": "String", + "placeholders": {} + }, + "newVerificationRequest": "新的验证请求!", + "@newVerificationRequest": { + "type": "String", + "placeholders": {} + }, + "next": "下一步", + "@next": { + "type": "String", + "placeholders": {} + }, + "no": "否", + "@no": { + "type": "String", + "placeholders": {} + }, + "noConnectionToTheServer": "无法连接服务器", + "@noConnectionToTheServer": { + "type": "String", + "placeholders": {} + }, + "noEmotesFound": "未找到表情。😕", + "@noEmotesFound": { + "type": "String", + "placeholders": {} + }, + "noEncryptionForPublicRooms": "你只能在聊天室不可被公众访问时才能启用加密。", + "@noEncryptionForPublicRooms": { + "type": "String", + "placeholders": {} + }, + "noGoogleServicesWarning": "看起来你手机上没有 Firebase Cloud Messaging。如果仍希望接收 FluffyChat 的推送通知,推荐安装 ntfy。借助 ntfy 或另一个 Unified Push 程序,你可以以一种数据安全的方式接收推送通知。你可以从 PlayStore 或 F-Droid 商店下载 ntfy。", + "@noGoogleServicesWarning": { + "type": "String", + "placeholders": {} + }, + "none": "无", + "@none": { + "type": "String", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "你尚未添加恢复密码的方法。", + "@noPasswordRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "noPermission": "没有权限", + "@noPermission": { + "type": "String", + "placeholders": {} + }, + "noRoomsFound": "未找到聊天室…", + "@noRoomsFound": { + "type": "String", + "placeholders": {} + }, + "notifications": "通知", + "@notifications": { + "type": "String", + "placeholders": {} + }, + "notificationsEnabledForThisAccount": "已为此账户启用通知", + "@notificationsEnabledForThisAccount": { + "type": "String", + "placeholders": {} + }, + "numUsersTyping": "{count} 人正在输入…", + "@numUsersTyping": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "offensive": "令人反感", + "@offensive": { + "type": "String", + "placeholders": {} + }, + "offline": "离线", + "@offline": { + "type": "String", + "placeholders": {} + }, + "ok": "好", + "@ok": { + "type": "String", + "placeholders": {} + }, + "online": "在线", + "@online": { + "type": "String", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "在线密钥备份已启用", + "@onlineKeyBackupEnabled": { + "type": "String", + "placeholders": {} + }, + "oopsPushError": "哎呀!十分不幸,配置推送通知时发生了错误。", + "@oopsPushError": { + "type": "String", + "placeholders": {} + }, + "oopsSomethingWentWrong": "哎呀,出了点差错…", + "@oopsSomethingWentWrong": { + "type": "String", + "placeholders": {} + }, + "openAppToReadMessages": "打开应用以查看消息", + "@openAppToReadMessages": { + "type": "String", + "placeholders": {} + }, + "openCamera": "打开相机", + "@openCamera": { + "type": "String", + "placeholders": {} + }, + "or": "或", + "@or": { + "type": "String", + "placeholders": {} + }, + "participant": "参与者", + "@participant": { + "type": "String", + "placeholders": {} + }, + "passphraseOrKey": "密码短语或恢复密钥", + "@passphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "password": "密码", + "@password": { + "type": "String", + "placeholders": {} + }, + "passwordForgotten": "忘记密码", + "@passwordForgotten": { + "type": "String", + "placeholders": {} + }, + "passwordHasBeenChanged": "密码已被更改", + "@passwordHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "passwordRecovery": "密码恢复", + "@passwordRecovery": { + "type": "String", + "placeholders": {} + }, + "people": "联系人", + "@people": { + "type": "String", + "placeholders": {} + }, + "pickImage": "选择图像", + "@pickImage": { + "type": "String", + "placeholders": {} + }, + "pin": "置顶", + "@pin": { + "type": "String", + "placeholders": {} + }, + "play": "播放 {fileName}", + "@play": { + "type": "String", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "pleaseChoose": "请选择", + "@pleaseChoose": { + "type": "String", + "placeholders": {} + }, + "pleaseChooseAPasscode": "请选择一个密码", + "@pleaseChooseAPasscode": { + "type": "String", + "placeholders": {} + }, + "pleaseClickOnLink": "请点击电子邮件中的链接,然后继续。", + "@pleaseClickOnLink": { + "type": "String", + "placeholders": {} + }, + "pleaseEnter4Digits": "请输入 4 位数字或留空以停用应用锁。", + "@pleaseEnter4Digits": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPassword": "请输入你的密码", + "@pleaseEnterYourPassword": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPin": "请输入你的 PIN", + "@pleaseEnterYourPin": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourUsername": "请输入你的用户名", + "@pleaseEnterYourUsername": { + "type": "String", + "placeholders": {} + }, + "pleaseFollowInstructionsOnWeb": "请按照网站上的提示,点击下一步。", + "@pleaseFollowInstructionsOnWeb": { + "type": "String", + "placeholders": {} + }, + "privacy": "隐私", + "@privacy": { + "type": "String", + "placeholders": {} + }, + "publicRooms": "公开聊天室", + "@publicRooms": { + "type": "String", + "placeholders": {} + }, + "pushRules": "推送规则", + "@pushRules": { + "type": "String", + "placeholders": {} + }, + "reason": "原因", + "@reason": { + "type": "String", + "placeholders": {} + }, + "recording": "录制", + "@recording": { + "type": "String", + "placeholders": {} + }, + "redactedAnEvent": "{username} 删除了一个事件", + "@redactedAnEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "redactMessage": "删除消息", + "@redactMessage": { + "type": "String", + "placeholders": {} + }, + "register": "注册", + "@register": { + "type": "String", + "placeholders": {} + }, + "reject": "拒绝", + "@reject": { + "type": "String", + "placeholders": {} + }, + "rejectedTheInvitation": "{username} 拒绝了邀请", + "@rejectedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "rejoin": "重新加入", + "@rejoin": { + "type": "String", + "placeholders": {} + }, + "remove": "移除", + "@remove": { + "type": "String", + "placeholders": {} + }, + "removeAllOtherDevices": "移除所有其它设备", + "@removeAllOtherDevices": { + "type": "String", + "placeholders": {} + }, + "removedBy": "被 {username} 移除", + "@removedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "removeDevice": "移除设备", + "@removeDevice": { + "type": "String", + "placeholders": {} + }, + "unbanFromChat": "从聊天中解封", + "@unbanFromChat": { + "type": "String", + "placeholders": {} + }, + "removeYourAvatar": "移除你的头像", + "@removeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "replaceRoomWithNewerVersion": "更新聊天室至新版本", + "@replaceRoomWithNewerVersion": { + "type": "String", + "placeholders": {} + }, + "reply": "回复", + "@reply": { + "type": "String", + "placeholders": {} + }, + "reportMessage": "举报信息", + "@reportMessage": { + "type": "String", + "placeholders": {} + }, + "requestPermission": "请求权限", + "@requestPermission": { + "type": "String", + "placeholders": {} + }, + "roomHasBeenUpgraded": "聊天室已升级", + "@roomHasBeenUpgraded": { + "type": "String", + "placeholders": {} + }, + "roomVersion": "聊天室版本", + "@roomVersion": { + "type": "String", + "placeholders": {} + }, + "saveFile": "保存文件", + "@saveFile": { + "type": "String", + "placeholders": {} + }, + "search": "搜索", + "@search": { + "type": "String", + "placeholders": {} + }, + "security": "安全", + "@security": { + "type": "String", + "placeholders": {} + }, + "seenByUser": "被 {username} 看见", + "@seenByUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "send": "发送", + "@send": { + "type": "String", + "placeholders": {} + }, + "sendAMessage": "发送一条消息", + "@sendAMessage": { + "type": "String", + "placeholders": {} + }, + "sendAsText": "以文本发送", + "@sendAsText": { + "type": "String" + }, + "sendAudio": "发送音频", + "@sendAudio": { + "type": "String", + "placeholders": {} + }, + "sendFile": "发送文件", + "@sendFile": { + "type": "String", + "placeholders": {} + }, + "sendImage": "发送图像", + "@sendImage": { + "type": "String", + "placeholders": {} + }, + "sendMessages": "发送消息", + "@sendMessages": { + "type": "String", + "placeholders": {} + }, + "sendOriginal": "发送原图", + "@sendOriginal": { + "type": "String", + "placeholders": {} + }, + "sendSticker": "发送贴纸", + "@sendSticker": { + "type": "String", + "placeholders": {} + }, + "sendVideo": "发送视频", + "@sendVideo": { + "type": "String", + "placeholders": {} + }, + "sentAFile": "📁{username} 发送了文件", + "@sentAFile": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAnAudio": "🎤{username} 发送了音频", + "@sentAnAudio": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAPicture": "🖼️ {username} 发送了图片", + "@sentAPicture": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentASticker": "😊 {username} 发送了贴纸", + "@sentASticker": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAVideo": "🎥 {username} 发送了视频", + "@sentAVideo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentCallInformations": "{senderName} 发送了通话信息", + "@sentCallInformations": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "setAsCanonicalAlias": "设为主要别名", + "@setAsCanonicalAlias": { + "type": "String", + "placeholders": {} + }, + "setCustomEmotes": "设置自定义表情", + "@setCustomEmotes": { + "type": "String", + "placeholders": {} + }, + "setInvitationLink": "设置邀请链接", + "@setInvitationLink": { + "type": "String", + "placeholders": {} + }, + "setPermissionsLevel": "设置权限级别", + "@setPermissionsLevel": { + "type": "String", + "placeholders": {} + }, + "setStatus": "设置状态", + "@setStatus": { + "type": "String", + "placeholders": {} + }, + "settings": "设置", + "@settings": { + "type": "String", + "placeholders": {} + }, + "share": "分享", + "@share": { + "type": "String", + "placeholders": {} + }, + "sharedTheLocation": "{username} 分享了位置", + "@sharedTheLocation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "showPassword": "显示密码", + "@showPassword": { + "type": "String", + "placeholders": {} + }, + "singlesignon": "单点登录", + "@singlesignon": { + "type": "String", + "placeholders": {} + }, + "skip": "跳过", + "@skip": { + "type": "String", + "placeholders": {} + }, + "sourceCode": "源代码", + "@sourceCode": { + "type": "String", + "placeholders": {} + }, + "startedACall": "{senderName} 开始了通话", + "@startedACall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "status": "状态", + "@status": { + "type": "String", + "placeholders": {} + }, + "statusExampleMessage": "你今天怎么样?", + "@statusExampleMessage": { + "type": "String", + "placeholders": {} + }, + "submit": "提交", + "@submit": { + "type": "String", + "placeholders": {} + }, + "synchronizingPleaseWait": "同步中…请等待。", + "@synchronizingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "systemTheme": "系统", + "@systemTheme": { + "type": "String", + "placeholders": {} + }, + "theyDontMatch": "它们不匹配", + "@theyDontMatch": { + "type": "String", + "placeholders": {} + }, + "theyMatch": "它们匹配", + "@theyMatch": { + "type": "String", + "placeholders": {} + }, + "title": "FluffyChat", + "@title": { + "description": "Title for the application", + "type": "String", + "placeholders": {} + }, + "toggleFavorite": "切换收藏", + "@toggleFavorite": { + "type": "String", + "placeholders": {} + }, + "toggleMuted": "切换静音", + "@toggleMuted": { + "type": "String", + "placeholders": {} + }, + "toggleUnread": "标记已读/未读", + "@toggleUnread": { + "type": "String", + "placeholders": {} + }, + "tooManyRequestsWarning": "请求过多。请稍后再试!", + "@tooManyRequestsWarning": { + "type": "String", + "placeholders": {} + }, + "transferFromAnotherDevice": "从其它设备传输", + "@transferFromAnotherDevice": { + "type": "String", + "placeholders": {} + }, + "tryToSendAgain": "尝试重新发送", + "@tryToSendAgain": { + "type": "String", + "placeholders": {} + }, + "unavailable": "不可用", + "@unavailable": { + "type": "String", + "placeholders": {} + }, + "unbannedUser": "{username} 解封了 {targetName}", + "@unbannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "unblockDevice": "解除屏蔽设备", + "@unblockDevice": { + "type": "String", + "placeholders": {} + }, + "unknownDevice": "未知设备", + "@unknownDevice": { + "type": "String", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "未知加密算法", + "@unknownEncryptionAlgorithm": { + "type": "String", + "placeholders": {} + }, + "unknownEvent": "未知事件 '{type}'", + "@unknownEvent": { + "type": "String", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "unmuteChat": "取消静音聊天", + "@unmuteChat": { + "type": "String", + "placeholders": {} + }, + "unpin": "取消置顶", + "@unpin": { + "type": "String", + "placeholders": {} + }, + "unreadChats": "{unreadCount, plural, =1{1 个未读聊天} other{{unreadCount} 个未读聊天}}", + "@unreadChats": { + "type": "String", + "placeholders": { + "unreadCount": { + "type": "int" + } + } + }, + "userAndOthersAreTyping": "{username} 和其他 {count} 人正在输入…", + "@userAndOthersAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "userAndUserAreTyping": "{username} 和 {username2} 正在输入…", + "@userAndUserAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "username2": { + "type": "String" + } + } + }, + "userIsTyping": "{username} 正在输入…", + "@userIsTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "userLeftTheChat": "🚪{username} 离开了聊天", + "@userLeftTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "username": "用户名", + "@username": { + "type": "String", + "placeholders": {} + }, + "userSentUnknownEvent": "{username} 发送了一个 {type} 事件", + "@userSentUnknownEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "type": { + "type": "String" + } + } + }, + "verified": "已验证", + "@verified": { + "type": "String", + "placeholders": {} + }, + "verify": "验证", + "@verify": { + "type": "String", + "placeholders": {} + }, + "verifyStart": "开始验证", + "@verifyStart": { + "type": "String", + "placeholders": {} + }, + "verifySuccess": "你已成功验证!", + "@verifySuccess": { + "type": "String", + "placeholders": {} + }, + "verifyTitle": "验证其它账户", + "@verifyTitle": { + "type": "String", + "placeholders": {} + }, + "videoCall": "视频通话", + "@videoCall": { + "type": "String", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "聊天记录的可见性", + "@visibilityOfTheChatHistory": { + "type": "String", + "placeholders": {} + }, + "visibleForAllParticipants": "对所有参与者可见", + "@visibleForAllParticipants": { + "type": "String", + "placeholders": {} + }, + "visibleForEveryone": "对所有人可见", + "@visibleForEveryone": { + "type": "String", + "placeholders": {} + }, + "voiceMessage": "语音消息", + "@voiceMessage": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "等待对方接受请求…", + "@waitingPartnerAcceptRequest": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerEmoji": "等待对方接受 emoji…", + "@waitingPartnerEmoji": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerNumbers": "等待对方接受数字…", + "@waitingPartnerNumbers": { + "type": "String", + "placeholders": {} + }, + "wallpaper": "壁纸:", + "@wallpaper": { + "type": "String", + "placeholders": {} + }, + "warning": "警告!", + "@warning": { + "type": "String", + "placeholders": {} + }, + "weSentYouAnEmail": "我们向你发送了一封电子邮件", + "@weSentYouAnEmail": { + "type": "String", + "placeholders": {} + }, + "whoCanPerformWhichAction": "谁可以执行哪些操作", + "@whoCanPerformWhichAction": { + "type": "String", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "谁可以加入此群组", + "@whoIsAllowedToJoinThisGroup": { + "type": "String", + "placeholders": {} + }, + "whyDoYouWantToReportThis": "你举报的理由是什么?", + "@whyDoYouWantToReportThis": { + "type": "String", + "placeholders": {} + }, + "wipeChatBackup": "确定要清除你的聊天记录备份以创建新的恢复密钥吗?", + "@wipeChatBackup": { + "type": "String", + "placeholders": {} + }, + "withTheseAddressesRecoveryDescription": "通过这些地址,你可以恢复密码。", + "@withTheseAddressesRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "writeAMessage": "写一条消息…", + "@writeAMessage": { + "type": "String", + "placeholders": {} + }, + "yes": "是", + "@yes": { + "type": "String", + "placeholders": {} + }, + "you": "你", + "@you": { + "type": "String", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "你已不再参与此聊天", + "@youAreNoLongerParticipatingInThisChat": { + "type": "String", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "你已被此聊天封禁", + "@youHaveBeenBannedFromThisChat": { + "type": "String", + "placeholders": {} + }, + "yourPublicKey": "你的公钥", + "@yourPublicKey": { + "type": "String", + "placeholders": {} + }, + "allChats": "所有聊天", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "addToSpace": "添加到空间", + "@addToSpace": {}, + "obtainingLocation": "获取位置中…", + "@obtainingLocation": { + "type": "String", + "placeholders": {} + }, + "noMatrixServer": "{server1} 不是一个 Matrix 服务器,试试 {server2}?", + "@noMatrixServer": { + "type": "String", + "placeholders": { + "server1": { + "type": "String" + }, + "server2": { + "type": "String" + } + } + }, + "locationPermissionDeniedNotice": "位置权限被拒绝。请授予此权限以分享你的位置.", + "@locationPermissionDeniedNotice": { + "type": "String", + "placeholders": {} + }, + "locationDisabledNotice": "位置服务已禁用。请启用此服务以分享你的位置.", + "@locationDisabledNotice": { + "type": "String", + "placeholders": {} + }, + "errorObtainingLocation": "取得地址错误: {error}", + "@errorObtainingLocation": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "createNewSpace": "创建新空间", + "@createNewSpace": { + "type": "String", + "placeholders": {} + }, + "cantOpenUri": "无法打开 URI {uri}", + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "autoplayImages": "自动播放动态贴纸和表情", + "@autoplayImages": { + "type": "String", + "placeholder": {} + }, + "spaceName": "空间名称", + "@spaceName": { + "type": "String", + "placeholders": {} + }, + "spaceIsPublic": "空间是公开的", + "@spaceIsPublic": { + "type": "String", + "placeholders": {} + }, + "shareLocation": "分享位置", + "@shareLocation": { + "type": "String", + "placeholders": {} + }, + "openInMaps": "在地图中打开", + "@openInMaps": { + "type": "String", + "placeholders": {} + }, + "sendOnEnter": "按 Enter 键发送", + "@sendOnEnter": {}, + "yourChatBackupHasBeenSetUp": "你的聊天记录备份已设置。", + "@yourChatBackupHasBeenSetUp": {}, + "scanQrCode": "扫描二维码", + "@scanQrCode": {}, + "chatHasBeenAddedToThisSpace": "聊天已添加到此空间", + "@chatHasBeenAddedToThisSpace": {}, + "homeserver": "服务器", + "@homeserver": {}, + "oneClientLoggedOut": "你的一个客户端已登出", + "@oneClientLoggedOut": {}, + "removeFromBundle": "从此集合中移除", + "@removeFromBundle": {}, + "unverified": "未经验证", + "@unverified": {}, + "repeatPassword": "重复输入密码", + "@repeatPassword": {}, + "addAccount": "添加账户", + "@addAccount": {}, + "editBundlesForAccount": "编辑此账户的集合", + "@editBundlesForAccount": {}, + "enableMultiAccounts": "(测试功能)在此设备上添加多个账户", + "@enableMultiAccounts": {}, + "addToBundle": "添加到集合", + "@addToBundle": {}, + "bundleName": "集合名称", + "@bundleName": {}, + "link": "链接", + "@link": {}, + "serverRequiresEmail": "此服务器需要验证你的电子邮件地址以进行注册。", + "@serverRequiresEmail": {}, + "messageType": "消息类型", + "@messageType": {}, + "sender": "发送者", + "@sender": {}, + "openGallery": "打开图库", + "@openGallery": {}, + "messageInfo": "消息信息", + "@messageInfo": {}, + "time": "时间", + "@time": {}, + "addToSpaceDescription": "选择一个空间以添加此聊天。", + "@addToSpaceDescription": {}, + "removeFromSpace": "从此空间中移除", + "@removeFromSpace": {}, + "start": "开始", + "@start": {}, + "commandHint_discardsession": "丢弃会话", + "@commandHint_discardsession": { + "type": "String", + "description": "Usage hint for the command /discardsession" + }, + "commandHint_dm": "创建私聊\n使用 --no-encryption 选项来禁用加密", + "@commandHint_dm": { + "type": "String", + "description": "Usage hint for the command /dm" + }, + "commandHint_clearcache": "清除缓存", + "@commandHint_clearcache": { + "type": "String", + "description": "Usage hint for the command /clearcache" + }, + "commandHint_create": "创建空的群聊\n使用 --no-encryption 选项来禁用加密", + "@commandHint_create": { + "type": "String", + "description": "Usage hint for the command /create" + }, + "openVideoCamera": "打开相机拍摄视频", + "@openVideoCamera": { + "type": "String", + "placeholders": {} + }, + "publish": "发布", + "@publish": {}, + "videoWithSize": "视频 ({size})", + "@videoWithSize": { + "type": "String", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "dismiss": "忽略", + "@dismiss": {}, + "markAsRead": "标为已读", + "@markAsRead": {}, + "reportUser": "举报用户", + "@reportUser": {}, + "openChat": "打开聊天", + "@openChat": {}, + "reactedWith": "{sender} 回应了 {reaction}", + "@reactedWith": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "reaction": { + "type": "String" + } + } + }, + "confirmEventUnpin": "你确定要永久性取消置顶此事件吗?", + "@confirmEventUnpin": {}, + "pinMessage": "置顶到聊天室", + "@pinMessage": {}, + "emojis": "表情符号", + "@emojis": {}, + "unsupportedAndroidVersionLong": "这个功能需要较新版本的 Android 系统。请检查更新或 Lineage OS 支持。", + "@unsupportedAndroidVersionLong": {}, + "unsupportedAndroidVersion": "不受支持的 Android 版本", + "@unsupportedAndroidVersion": {}, + "voiceCall": "语音通话", + "@voiceCall": {}, + "placeCall": "发起通话", + "@placeCall": {}, + "videoCallsBetaWarning": "请注意,视频通话目前处于测试阶段。它们可能不能像预期的那样工作,或者在所有平台上都不能工作。", + "@videoCallsBetaWarning": {}, + "experimentalVideoCalls": "实验性的视频通话", + "@experimentalVideoCalls": {}, + "emailOrUsername": "电子邮箱或用户名", + "@emailOrUsername": {}, + "switchToAccount": "切换到账户 {number}", + "@switchToAccount": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "nextAccount": "下个账户", + "@nextAccount": {}, + "previousAccount": "上个账户", + "@previousAccount": {}, + "widgetVideo": "视频", + "@widgetVideo": {}, + "widgetJitsi": "Jitsi Meet", + "@widgetJitsi": {}, + "widgetCustom": "自定义", + "@widgetCustom": {}, + "widgetNameError": "请提供昵称。", + "@widgetNameError": {}, + "errorAddingWidget": "添加小部件出错。", + "@errorAddingWidget": {}, + "addWidget": "添加小部件", + "@addWidget": {}, + "widgetEtherpad": "文本笔记", + "@widgetEtherpad": {}, + "widgetName": "名称", + "@widgetName": {}, + "widgetUrlError": "这不是有效的 URL。", + "@widgetUrlError": {}, + "separateChatTypes": "分开私聊和群组", + "@separateChatTypes": { + "type": "String", + "placeholders": {} + }, + "youRejectedTheInvitation": "你拒绝了邀请", + "@youRejectedTheInvitation": {}, + "youJoinedTheChat": "你加入了聊天", + "@youJoinedTheChat": {}, + "youBannedUser": "你封禁了 {user}", + "@youBannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youInvitedBy": "📩 你受到了 {user} 的邀请", + "@youInvitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youInvitedUser": "📩 你邀请了 {user}", + "@youInvitedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youKicked": "👞 你踢出了 {user}", + "@youKicked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youUnbannedUser": "你解除了对 {user} 的封禁", + "@youUnbannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youAcceptedTheInvitation": "👍 你接受了邀请", + "@youAcceptedTheInvitation": {}, + "youHaveWithdrawnTheInvitationFor": "你撤回了对 {user} 的邀请", + "@youHaveWithdrawnTheInvitationFor": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youKickedAndBanned": "🙅 你踢出并封禁了 {user}", + "@youKickedAndBanned": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "storeInSecureStorageDescription": "将恢复密钥存储在此设备的安全存储中。", + "@storeInSecureStorageDescription": {}, + "storeInAppleKeyChain": "存储在 Apple KeyChain 中", + "@storeInAppleKeyChain": {}, + "unlockOldMessages": "解锁旧消息", + "@unlockOldMessages": {}, + "pleaseEnterRecoveryKey": "请输入你的恢复密钥:", + "@pleaseEnterRecoveryKey": {}, + "recoveryKey": "恢复密钥", + "@recoveryKey": {}, + "recoveryKeyLost": "丢失了恢复密钥?", + "@recoveryKeyLost": {}, + "pleaseEnterRecoveryKeyDescription": "要解锁你的旧邮件,请输入你在之前会话中生成的恢复密钥。 你的恢复密钥不是你的密码。", + "@pleaseEnterRecoveryKeyDescription": {}, + "saveKeyManuallyDescription": "通过触发系统共享对话框或剪贴板手动保存此密钥。", + "@saveKeyManuallyDescription": {}, + "storeInAndroidKeystore": "存储在 Android KeyStore 中", + "@storeInAndroidKeystore": {}, + "storeSecurlyOnThisDevice": "安全地存储在此设备上", + "@storeSecurlyOnThisDevice": {}, + "users": "用户", + "@users": {}, + "countFiles": "{count} 个文件", + "@countFiles": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "dehydrateTor": "TOR 用户:导出会话", + "@dehydrateTor": {}, + "dehydrateTorLong": "建议 TOR 用户在关闭窗口之前导出会话。", + "@dehydrateTorLong": {}, + "hydrateTor": "TOR 用户:导入会话导出", + "@hydrateTor": {}, + "hydrate": "从备份文件恢复", + "@hydrate": {}, + "dehydrate": "导出会话并擦除设备", + "@dehydrate": {}, + "dehydrateWarning": "此操作无法撤消。 确保你安全地存储备份文件。", + "@dehydrateWarning": {}, + "indexedDbErrorTitle": "私有模式问题", + "@indexedDbErrorTitle": {}, + "indexedDbErrorLong": "遗憾的是,默认情况下未在私有模式下启用消息存储。\n请访问\n - about:config\n - 将 dom.indexedDB.privateBrowsing.enabled 设置为 true\n否则,无法运行 FluffyChat。", + "@indexedDbErrorLong": {}, + "hydrateTorLong": "你上次是否导出 TOR 会话? 快速导入它并继续聊天。", + "@hydrateTorLong": {}, + "user": "用户", + "@user": {}, + "custom": "自定义", + "@custom": {}, + "confirmMatrixId": "请确认你的 Matrix ID 以删除账户。", + "@confirmMatrixId": {}, + "supposedMxid": "应为 {mxid}", + "@supposedMxid": { + "type": "String", + "placeholders": { + "mxid": { + "type": "String" + } + } + }, + "commandHint_markasgroup": "标记为群组", + "@commandHint_markasgroup": {}, + "commandHint_markasdm": "将给定的 Matrix ID 标为私信聊天室", + "@commandHint_markasdm": {}, + "whyIsThisMessageEncrypted": "为什么此消息不可读?", + "@whyIsThisMessageEncrypted": {}, + "noKeyForThisMessage": "如果消息是在你在此设备上登录账户前发送的,就可能发生这种情况。\n\n也有可能是发送者屏蔽了你的设备或网络连接出了问题。\n\n你能在另一个会话中读取消息吗?如果是的话,你可以从它那里传递信息!点击设置 > 设备,并确保你的设备已经相互验证。当你下次打开聊天室,且两个会话都在前台,密钥就会自动传输。\n\n你不想在注销或切换设备时丢失密钥?请确保在设置中启用了聊天备份。", + "@noKeyForThisMessage": {}, + "newGroup": "新群组", + "@newGroup": {}, + "newSpace": "新的空间", + "@newSpace": {}, + "enterSpace": "进入空间", + "@enterSpace": {}, + "enterRoom": "进入聊天室", + "@enterRoom": {}, + "allSpaces": "所有空间", + "@allSpaces": {}, + "appearOnTop": "显示在其它应用上方", + "@appearOnTop": {}, + "appearOnTopDetails": "允许应用显示在顶部(如果你已经将 Fluffychat 设置为呼叫账户,则不需要授予此权限)", + "@appearOnTopDetails": {}, + "otherCallingPermissions": "麦克风、摄像头和其它 FluffyChat 权限", + "@otherCallingPermissions": {}, + "callingPermissions": "呼叫权限", + "@callingPermissions": {}, + "callingAccountDetails": "允许 FluffyChat 使用本机 android 拨号器应用。", + "@callingAccountDetails": {}, + "foregroundServiceRunning": "此通知在前台服务运行时出现。", + "@foregroundServiceRunning": {}, + "screenSharingTitle": "屏幕共享", + "@screenSharingTitle": {}, + "callingAccount": "呼叫账户", + "@callingAccount": {}, + "screenSharingDetail": "你正在 FluffyChat 中共享屏幕", + "@screenSharingDetail": {}, + "numChats": "{number} 个聊天", + "@numChats": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "hideUnimportantStateEvents": "隐藏不重要的状态事件", + "@hideUnimportantStateEvents": {}, + "doNotShowAgain": "不再显示", + "@doNotShowAgain": {}, + "googlyEyesContent": "{senderName} 向你发送了“大眼”表情", + "@googlyEyesContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "commandHint_googly": "发送“大眼”表情", + "@commandHint_googly": {}, + "commandHint_cuddle": "发送“搂抱”", + "@commandHint_cuddle": {}, + "commandHint_hug": "发送“拥抱”", + "@commandHint_hug": {}, + "cuddleContent": "{senderName} 搂抱了你", + "@cuddleContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "hugContent": "{senderName} 拥抱了你", + "@hugContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "wasDirectChatDisplayName": "空聊天(曾是 {oldDisplayName})", + "@wasDirectChatDisplayName": { + "type": "String", + "placeholders": { + "oldDisplayName": { + "type": "String" + } + } + }, + "startFirstChat": "发起你的第一个聊天", + "@startFirstChat": {}, + "newSpaceDescription": "空间让你可以整合聊天并建立私人或公共社区。", + "@newSpaceDescription": {}, + "encryptThisChat": "加密此聊天", + "@encryptThisChat": {}, + "disableEncryptionWarning": "出于安全考虑 ,你不能在之前已启用加密的聊天中禁用加密。", + "@disableEncryptionWarning": {}, + "sorryThatsNotPossible": "非常抱歉……这是做不到的", + "@sorryThatsNotPossible": {}, + "deviceKeys": "设备密钥:", + "@deviceKeys": {}, + "report": "报错", + "@report": {}, + "fileIsTooBigForServer": "无法发送!服务器只支持最大 {max} 的文件。", + "@fileIsTooBigForServer": {}, + "noOtherDevicesFound": "未找到其它设备", + "@noOtherDevicesFound": {}, + "jumpToLastReadMessage": "跳转到上次已读的消息", + "@jumpToLastReadMessage": {}, + "readUpToHere": "读到此处", + "@readUpToHere": {}, + "jump": "跳转", + "@jump": {}, + "openLinkInBrowser": "在浏览器中打开链接", + "@openLinkInBrowser": {}, + "signInWith": "使用 {provider} 登录", + "@signInWith": { + "type": "String", + "placeholders": { + "provider": { + "type": "String" + } + } + }, + "allRooms": "所有群聊", + "@allRooms": { + "type": "String", + "placeholders": {} + }, + "fileHasBeenSavedAt": "文件已保存在 {path}", + "@fileHasBeenSavedAt": { + "type": "String", + "placeholders": { + "path": { + "type": "String" + } + } + }, + "reportErrorDescription": "😭 哦不。出了点差错。如果你愿意,可以向开发人员报告此错误。", + "@reportErrorDescription": {}, + "noBackupWarning": "警告!如果不启用聊天备份,你将无法访问加密消息。强烈建议在注销前先启用聊天备份。", + "@noBackupWarning": {}, + "signInWithPassword": "使用密码登录", + "@signInWithPassword": {}, + "pleaseTryAgainLaterOrChooseDifferentServer": "请稍后再试或选择其它服务器。", + "@pleaseTryAgainLaterOrChooseDifferentServer": {}, + "reopenChat": "重新打开聊天", + "@reopenChat": {}, + "importEmojis": "导入表情包", + "@importEmojis": {}, + "notAnImage": "不是图像文件。", + "@notAnImage": {}, + "importNow": "立即导入", + "@importNow": {}, + "importFromZipFile": "从 .zip 文件导入", + "@importFromZipFile": {}, + "replace": "替换", + "@replace": {}, + "exportEmotePack": "以 .zip 格式导出表情包", + "@exportEmotePack": {}, + "sendTypingNotifications": "发送正在输入通知", + "@sendTypingNotifications": {}, + "createGroup": "创建群组", + "@createGroup": {}, + "shareInviteLink": "分享邀请链接", + "@shareInviteLink": {}, + "profileNotFound": "服务器上找不到此用户。可能是连接有问题或者用户不存在。", + "@profileNotFound": {}, + "inviteContactToGroupQuestion": "你是否要邀请 {contact} 参与聊天 \"{groupName}\"?", + "@inviteContactToGroupQuestion": {}, + "tryAgain": "重试", + "@tryAgain": {}, + "addChatDescription": "添加聊天说明…", + "@addChatDescription": {}, + "chatPermissions": "聊天权限", + "@chatPermissions": {}, + "chatDescription": "聊天描述", + "@chatDescription": {}, + "chatDescriptionHasBeenChanged": "聊天描述已被更改", + "@chatDescriptionHasBeenChanged": {}, + "noChatDescriptionYet": "尚未创建聊天描述。", + "@noChatDescriptionYet": {}, + "invalidServerName": "服务器名称无效", + "@invalidServerName": {}, + "redactMessageDescription": "消息将为此对话中所有参与者删除。此操作无法撤销。", + "@redactMessageDescription": {}, + "optionalRedactReason": "(可选)删除此消息的原因...", + "@optionalRedactReason": {}, + "setChatDescription": "设置聊天描述", + "@setChatDescription": {}, + "setTheme": "设置主题:", + "@setTheme": {}, + "setColorTheme": "设置主题颜色:", + "@setColorTheme": {}, + "invite": "邀请", + "@invite": {}, + "messagesStyle": "消息:", + "@messagesStyle": {}, + "redactedBy": "已被 {username} 删除", + "@redactedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "directChat": "私聊", + "@directChat": {}, + "redactedByBecause": "已被 {username} 删除,原因:\"{reason}\"", + "@redactedByBecause": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "reason": { + "type": "String" + } + } + }, + "inviteGroupChat": "📨 群聊邀请", + "@inviteGroupChat": {}, + "invitePrivateChat": "📨 私聊邀请", + "@invitePrivateChat": {}, + "emoteKeyboardNoRecents": "最近使用过的表情会出现在这里...", + "@emoteKeyboardNoRecents": { + "type": "String", + "placeholders": {} + }, + "invalidInput": "无效的输入!", + "@invalidInput": {}, + "wrongPinEntered": "输入的 PIN 码不正确!请 {seconds} 秒后重试…", + "@wrongPinEntered": { + "type": "String", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "hasKnocked": "{user} 请求了加入聊天室的邀请", + "@hasKnocked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "pleaseEnterANumber": "请输入大于 0 的数", + "@pleaseEnterANumber": {}, + "banUserDescription": "该用户将被禁止进入聊天室,在解除封禁之前将不能再进入聊天室。", + "@banUserDescription": {}, + "removeDevicesDescription": "你将从此设备登出,无法再接收消息。", + "@removeDevicesDescription": {}, + "unbanUserDescription": "如果用户尝试加入则可以再次进入聊天。", + "@unbanUserDescription": {}, + "pushNotificationsNotAvailable": "通知推送不可用", + "@pushNotificationsNotAvailable": {}, + "makeAdminDescription": "一旦你将该用户设为管理员,你可能无法撤销,因为他们将拥有与你相同的权限。", + "@makeAdminDescription": {}, + "archiveRoomDescription": "聊天将被移至存档。其他用户将能看到你已离开聊天。", + "@archiveRoomDescription": {}, + "learnMore": "了解更多", + "@learnMore": {}, + "roomUpgradeDescription": "将使用新版聊天室来重新创建当前聊天室。所有参与者都会收到通知以切换到新的聊天室。有关聊天室版本的更多信息,请访问 https://spec.matrix.org/latest/rooms/", + "@roomUpgradeDescription": {}, + "kickUserDescription": "该用户会被踢出聊天但没被封禁。在公开聊天中,该用户可以随时重新加入。", + "@kickUserDescription": {}, + "blockListDescription": "你可以屏蔽打扰你的用户。你将不会收到来自屏蔽列表中用户的任何消息或聊天室邀请。", + "@blockListDescription": {}, + "createGroupAndInviteUsers": "创建群组并邀请用户", + "@createGroupAndInviteUsers": {}, + "startConversation": "开始对话", + "@startConversation": {}, + "blockedUsers": "已屏蔽的用户", + "@blockedUsers": {}, + "groupCanBeFoundViaSearch": "可通过搜索找到该群组", + "@groupCanBeFoundViaSearch": {}, + "noUsersFoundWithQuery": "很遗憾,没有找到有关\"{query}\"的用户。请检查是否输入错误。", + "@noUsersFoundWithQuery": { + "type": "String", + "placeholders": { + "query": { + "type": "String" + } + } + }, + "block": "屏蔽", + "@block": {}, + "yourGlobalUserIdIs": "你的全局用户 ID 是: ", + "@yourGlobalUserIdIs": {}, + "commandHint_sendraw": "发送原始 json", + "@commandHint_sendraw": {}, + "wrongRecoveryKey": "抱歉…这似乎不是正确的恢复密钥。", + "@wrongRecoveryKey": {}, + "blockUsername": "忽略用户名", + "@blockUsername": {}, + "groupName": "群组名称", + "@groupName": {}, + "databaseMigrationTitle": "数据库已优化", + "@databaseMigrationTitle": {}, + "searchChatsRooms": "搜索 #聊天,@用户…", + "@searchChatsRooms": {}, + "databaseMigrationBody": "请稍候。可能需要稍等片刻。", + "@databaseMigrationBody": {}, + "thisDevice": "此设备:", + "@thisDevice": {}, + "publicSpaces": "公开空间", + "@publicSpaces": {}, + "passwordIsWrong": "你输入的密码有误", + "@passwordIsWrong": {}, + "pleaseEnterYourCurrentPassword": "请输入你当前的密码", + "@pleaseEnterYourCurrentPassword": {}, + "publicLink": "公开链接", + "@publicLink": {}, + "nothingFound": "未找到任何内容…", + "@nothingFound": {}, + "decline": "拒绝", + "@decline": {}, + "newPassword": "新的密码", + "@newPassword": {}, + "passwordsDoNotMatch": "密码不匹配", + "@passwordsDoNotMatch": {}, + "subspace": "子空间", + "@subspace": {}, + "select": "选择", + "@select": {}, + "pleaseChooseAStrongPassword": "请选择一个强密码", + "@pleaseChooseAStrongPassword": {}, + "addChatOrSubSpace": "添加聊天或子空间", + "@addChatOrSubSpace": {}, + "leaveEmptyToClearStatus": "留空以清除你的状态。", + "@leaveEmptyToClearStatus": {}, + "joinSpace": "加入空间", + "@joinSpace": {}, + "searchForUsers": "搜索 @用户…", + "@searchForUsers": {}, + "databaseBuildErrorBody": "无法构建 SQLite 数据库。目前应用尝试使用旧数据库。请将此错误报告给开发者,网址为 {url}。错误消息为:{error}", + "@databaseBuildErrorBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "initAppError": "在初始化应用时发生错误", + "@initAppError": {}, + "sessionLostBody": "你的会话已丢失。请将此错误报告给开发者,网址为 {url}。错误消息为:{error}", + "@sessionLostBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "restoreSessionBody": "应用现在尝试从备份中恢复你的会话。请将此错误报告给开发者,网址为 {url}。错误消息为:{error}", + "@restoreSessionBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "sendTypingNotificationsDescription": "聊天中的其他参与者可以看到你正在输入新消息。", + "@sendTypingNotificationsDescription": {}, + "formattedMessagesDescription": "使用 Markdown 显示富文本内容,例如加粗文本。", + "@formattedMessagesDescription": {}, + "verifyOtherUserDescription": "如果你验证了其他用户,就可以确保你清楚自己正在与谁进行通信。💪\n\n当你开始验证时,你和其他用户将在应用中看到一个弹出窗口。然后你会看到一系列表情符号或数字,你和其他用户需要比较它们是否一致。\n\n最好的方式是线下会面或开始视频通话。👭", + "@verifyOtherUserDescription": {}, + "verifyOtherDeviceDescription": "当你验证另一个设备时,这些设备可以交换密钥,从而提高整体安全性。 💪 当你开始验证时,两个设备上的应用都将显示一个弹出窗口。然后你会看到一系列表情符号或数字,你需要比较两个设备上显示的内容。在开始验证之前,最好将两个设备都放在手边。🤳", + "@verifyOtherDeviceDescription": {}, + "canceledKeyVerification": "{sender} 取消了密钥验证", + "@canceledKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "sendReadReceipts": "发送已读回执", + "@sendReadReceipts": {}, + "formattedMessages": "格式化的消息", + "@formattedMessages": {}, + "verifyOtherDevice": "🔐 验证其它设备", + "@verifyOtherDevice": {}, + "verifyOtherUser": "🔐 验证其他用户", + "@verifyOtherUser": {}, + "forwardMessageTo": "转发消息至 {roomName} ?", + "@forwardMessageTo": { + "type": "String", + "placeholders": { + "roomName": { + "type": "String" + } + } + }, + "sendReadReceiptsDescription": "聊天中的其他参与者可以看到你是否读过消息。", + "@sendReadReceiptsDescription": {}, + "acceptedKeyVerification": "{sender} 接受了密钥验证", + "@acceptedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "isReadyForKeyVerification": "{sender} 已准备好进行密钥验证", + "@isReadyForKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "completedKeyVerification": "{sender} 完成了密钥验证", + "@completedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "requestedKeyVerification": "{sender} 请求了密钥验证", + "@requestedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "startedKeyVerification": "{sender} 开始了密钥验证", + "@startedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "transparent": "透明", + "@transparent": {}, + "youInvitedToBy": "📩 你已通过链接被邀请到:\n{alias}", + "@youInvitedToBy": { + "placeholders": { + "alias": { + "type": "String" + } + } + }, + "presencesToggle": "显示其他用户的状态消息", + "@presencesToggle": { + "type": "String", + "placeholders": {} + }, + "presenceStyle": "是否在线:", + "@presenceStyle": { + "type": "String", + "placeholders": {} + }, + "hidePresences": "隐藏状态列表?", + "@hidePresences": {}, + "incomingMessages": "传入消息", + "@incomingMessages": {}, + "stickers": "贴纸", + "@stickers": {}, + "discover": "发现", + "@discover": {}, + "commandHint_ignore": "忽略给定的 matrix ID", + "@commandHint_ignore": {}, + "commandHint_unignore": "取消忽略给定的 matrix ID", + "@commandHint_unignore": {}, + "unreadChatsInApp": "{appname}: {unread} 未读聊天", + "@unreadChatsInApp": { + "type": "String", + "placeholders": { + "appname": { + "type": "String" + }, + "unread": { + "type": "String" + } + } + }, + "appLockDescription": "用 pin 码在不用 FluffyChat 时锁定它", + "@appLockDescription": {}, + "globalChatId": "全局聊天 ID", + "@globalChatId": {}, + "accessAndVisibility": "访问和可见性", + "@accessAndVisibility": {}, + "accessAndVisibilityDescription": "谁可以加入此聊天以及怎样发现该聊天。", + "@accessAndVisibilityDescription": {}, + "calls": "通话", + "@calls": {}, + "customEmojisAndStickers": "自定义表情符号和贴纸", + "@customEmojisAndStickers": {}, + "hideRedactedMessages": "隐藏被涂黑的消息", + "@hideRedactedMessages": {}, + "overview": "概览", + "@overview": {}, + "notifyMeFor": "提示内容", + "@notifyMeFor": {}, + "passwordRecoverySettings": "密码发现设置", + "@passwordRecoverySettings": {}, + "noPublicLinkHasBeenCreatedYet": "尚未创建公开链接", + "@noPublicLinkHasBeenCreatedYet": {}, + "knock": "请求", + "@knock": {}, + "noOneCanJoin": "无人可以加入", + "@noOneCanJoin": {}, + "knocking": "正在请求", + "@knocking": {}, + "chatCanBeDiscoveredViaSearchOnServer": "可通过搜索 {server} 发现聊天", + "@chatCanBeDiscoveredViaSearchOnServer": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "thereAreCountUsersBlocked": "目前有 {count} 名用户被封禁。", + "@thereAreCountUsersBlocked": { + "type": "String", + "count": {} + }, + "hideRedactedMessagesBody": "如果某人涂黑了一条消息,那么在聊天中再也看不到这条消息。", + "@hideRedactedMessagesBody": {}, + "hideInvalidOrUnknownMessageFormats": "隐藏无效或未知的消息格式", + "@hideInvalidOrUnknownMessageFormats": {}, + "hideMemberChangesInPublicChats": "在公开聊天中隐藏成员变化", + "@hideMemberChangesInPublicChats": {}, + "hideMemberChangesInPublicChatsBody": "不在聊天时间线中显示某人是否加入或离开了公开聊天来改进可读性。", + "@hideMemberChangesInPublicChatsBody": {}, + "userWouldLikeToChangeTheChat": "{user} 想加入聊天。", + "@userWouldLikeToChangeTheChat": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "customEmojisAndStickersBody": "添加或分享可用于任何聊天的表情符号或贴纸。", + "@customEmojisAndStickersBody": {}, + "usersMustKnock": "用户必须请求加入", + "@usersMustKnock": {}, + "noDatabaseEncryption": "数据库加密在此平台上不受支持", + "@noDatabaseEncryption": {}, + "userRole": "用户角色", + "@userRole": {}, + "minimumPowerLevel": "{level} 是最低权限等级。", + "@minimumPowerLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "String" + } + } + }, + "publicChatAddresses": "公开聊天的地址", + "@publicChatAddresses": {}, + "createNewAddress": "新建地址", + "@createNewAddress": {}, + "searchMore": "搜索更多…", + "@searchMore": {}, + "gallery": "图库", + "@gallery": {}, + "files": "文件", + "@files": {}, + "searchIn": "在 “{chat}” 聊天中搜索…", + "@searchIn": { + "type": "String", + "placeholders": { + "chat": { + "type": "String" + } + } + }, + "knockRestricted": "“请求加入”请求受限", + "@knockRestricted": {}, + "restricted": "受限", + "@restricted": {}, + "swipeRightToLeftToReply": "从右向左滑动进行回复", + "@swipeRightToLeftToReply": {}, + "alwaysUse24HourFormat": "false", + "@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": "String", + "space": {} + }, + "markAsUnread": "标为未读", + "@markAsUnread": {}, + "countChatsAndCountParticipants": "{chats} 个聊天和 {participants} 名参与者", + "@countChatsAndCountParticipants": { + "type": "String", + "placeholders": { + "chats": { + "type": "int" + }, + "participants": { + "type": "int" + } + } + }, + "unread": "未读", + "@unread": {}, + "userLevel": "{level} - 用户", + "@userLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "moderatorLevel": "{level} - 主持人", + "@moderatorLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "adminLevel": "{level} - 管理员", + "@adminLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "inviteOtherUsers": "邀请其他用户到这个聊天", + "@inviteOtherUsers": {}, + "changeTheChatPermissions": "更改聊天权限", + "@changeTheChatPermissions": {}, + "changeTheVisibilityOfChatHistory": "更改聊天历史的可见性", + "@changeTheVisibilityOfChatHistory": {}, + "changeTheCanonicalRoomAlias": "更改主公共聊天地址", + "@changeTheCanonicalRoomAlias": {}, + "sendRoomNotifications": "发送通知聊天室所有人的通知", + "@sendRoomNotifications": {}, + "changeTheDescriptionOfTheGroup": "更改聊天描述", + "@changeTheDescriptionOfTheGroup": {}, + "changeGeneralChatSettings": "更改常规聊天设置", + "@changeGeneralChatSettings": {}, + "invitedBy": "📩 邀请人 {user}", + "@invitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "chatPermissionsDescription": "定义此聊天中哪个权限等级对特定操作是必需的。权限等级 0、50 和 100 通常代表用户、主持人和管理员,但你可以自定义任何等级。", + "@chatPermissionsDescription": {}, + "changelog": "更新记录", + "@changelog": {}, + "updateInstalled": "🎉 已安装更新 {version} !", + "@updateInstalled": { + "type": "String", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "sendCanceled": "发送被取消", + "@sendCanceled": {}, + "noChatsFoundHere": "此处尚未找到聊天。使用下方按钮 ⤵️ 开始和某人的新聊天", + "@noChatsFoundHere": {}, + "loginWithMatrixId": "使用 Matrix-ID 登录", + "@loginWithMatrixId": {}, + "discoverHomeservers": "发现主服务器", + "@discoverHomeservers": {}, + "whatIsAHomeserver": "什么是主服务器?", + "@whatIsAHomeserver": {}, + "homeserverDescription": "主服务器上就像电子邮件提供商,你的所有数据都存储在上面。你可以选择你想使用哪个主服务器。在 https://matrix.org 上了解更多信息。", + "@homeserverDescription": {}, + "doesNotSeemToBeAValidHomeserver": "似乎不是兼容的主服务器。URL 不正确?", + "@doesNotSeemToBeAValidHomeserver": {}, + "prepareSendingAttachment": "准备发送附件…", + "@prepareSendingAttachment": {}, + "sendingAttachment": "发送附件中…", + "@sendingAttachment": {}, + "calculatingFileSize": "计算文件尺寸中…", + "@calculatingFileSize": {}, + "generatingVideoThumbnail": "生成视频缩略图中…", + "@generatingVideoThumbnail": {}, + "compressVideo": "压缩视频中…", + "@compressVideo": {}, + "sendingAttachmentCountOfCount": "正在发送附件 {index},共 {length} 个附件…", + "@sendingAttachmentCountOfCount": { + "type": "integer", + "placeholders": { + "index": { + "type": "int" + }, + "length": { + "type": "int" + } + } + }, + "serverLimitReached": "达到了服务器限制!等待 {seconds} 秒…", + "@serverLimitReached": { + "type": "integer", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "oneOfYourDevicesIsNotVerified": "您设备中的一台未验证", + "@oneOfYourDevicesIsNotVerified": {}, + "noticeChatBackupDeviceVerification": "注意:当你连接所有设备到聊天备份时,这些设备将被自动验证。", + "@noticeChatBackupDeviceVerification": {}, + "welcomeText": "你好呀 👋 欢迎来到 FluffyChat。你可以登录任意兼容 https://matrix.org 的 homeserver,然后和任何人聊天。这是个巨大的去中心化消息网络!", + "@welcomeText": {}, + "continueText": "继续", + "@continueText": {}, + "blur": "模糊:", + "@blur": {}, + "opacity": "不透明:", + "@opacity": {}, + "setWallpaper": "设置壁纸", + "@setWallpaper": {}, + "manageAccount": "管理账户", + "@manageAccount": {}, + "aboutHomeserver": "关于 {homeserver}", + "@aboutHomeserver": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "version": "版本", + "@version": {}, + "noContactInformationProvided": "服务器未提供任何有效的联系信息", + "@noContactInformationProvided": {}, + "contactServerAdmin": "联系服务器管理员", + "@contactServerAdmin": {}, + "name": "名称", + "@name": {}, + "contactServerSecurity": "联系服务器安全管理", + "@contactServerSecurity": {}, + "supportPage": "支持页面", + "@supportPage": {}, + "serverInformation": "服务器信息:", + "@serverInformation": {}, + "website": "网站", + "@website": {}, + "italicText": "文件倾斜", + "@italicText": {}, + "strikeThrough": "删除线", + "@strikeThrough": {}, + "pleaseFillOut": "请填写", + "@pleaseFillOut": {}, + "addLink": "添加链接", + "@addLink": {}, + "boldText": "文本加粗", + "@boldText": {}, + "invalidUrl": "无效 url", + "@invalidUrl": {}, + "unableToJoinChat": "无法加入聊天。可能其他方面已经关闭了对话。", + "@unableToJoinChat": {}, + "sendImages": "发送 {count} 张图片", + "@sendImages": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "compress": "压缩", + "@compress": {}, + "previous": "前一个", + "@previous": {}, + "otherPartyNotLoggedIn": "另一方当前未登录,因而无法接收消息!", + "@otherPartyNotLoggedIn": {}, + "appWantsToUseForLoginDescription": "您特此允许本应用和网站分享关于您的信息。", + "@appWantsToUseForLoginDescription": {}, + "open": "打开", + "@open": {}, + "appWantsToUseForLogin": "使用 '{server}'服务器登录", + "@appWantsToUseForLogin": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "waitingForServer": "正在等待服务器…", + "@waitingForServer": {}, + "synchronizingPleaseWaitCounter": " 同步中… ({percentage}%)", + "@synchronizingPleaseWaitCounter": { + "type": "String", + "placeholders": { + "percentage": { + "type": "String" + } + } + }, + "appIntroduction": "FluffyChat 让使用不同即时通信工具的你和你的好友得以聊天。 访问 https://matrix.org 了解详情或轻按 *继续*。", + "@appIntroduction": {}, + "newChatRequest": "📩 新的聊天请求", + "@newChatRequest": {}, + "generalNotificationSettings": "常规通知设置", + "@generalNotificationSettings": {}, + "userSpecificNotificationSettings": "使用特定通知设置", + "@userSpecificNotificationSettings": {}, + "notificationRuleMaster": "静音所有通知", + "@notificationRuleMaster": {}, + "notificationRuleSuppressNotices": "隐藏自动消息", + "@notificationRuleSuppressNotices": {}, + "notificationRuleInviteForMe": "给我的邀请", + "@notificationRuleInviteForMe": {}, + "notificationRuleInviteForMeDescription": "当用户被邀请加入聊天室时提醒用户。", + "@notificationRuleInviteForMeDescription": {}, + "notificationRuleMemberEvent": "成员事件", + "@notificationRuleMemberEvent": {}, + "notificationRuleMemberEventDescription": "隐藏成员身份事件通知。", + "@notificationRuleMemberEventDescription": {}, + "notificationRuleIsUserMention": "用户提及", + "@notificationRuleIsUserMention": {}, + "notificationRuleIsUserMentionDescription": "当消息中直接提到用户名时通知使用该用户名的用户。", + "@notificationRuleIsUserMentionDescription": {}, + "notificationRuleContainsDisplayName": "包含展示名称", + "@notificationRuleContainsDisplayName": {}, + "notificationRuleIsRoomMention": "聊天室提及", + "@notificationRuleIsRoomMention": {}, + "notificationRuleRoomnotifDescription": "消息包含 「@room」 时提醒用户。", + "@notificationRuleRoomnotifDescription": {}, + "notificationRuleTombstone": "墓碑", + "@notificationRuleTombstone": {}, + "notificationRuleRoomServerAcl": "聊天室服务器 ACL", + "@notificationRuleRoomServerAcl": {}, + "notificationRuleSuppressEdits": "隐藏编辑", + "@notificationRuleSuppressEdits": {}, + "notificationRuleCall": "通话", + "@notificationRuleCall": {}, + "notificationRuleRoomOneToOne": "一对一聊天室", + "@notificationRuleRoomOneToOne": {}, + "notificationRuleRoomOneToOneDescription": "在一对一聊天室中提醒用户消息。", + "@notificationRuleRoomOneToOneDescription": {}, + "notificationRuleEncrypted": "已加密", + "@notificationRuleEncrypted": {}, + "notificationRuleEncryptedDescription": "在已加密聊天室中提醒用户消息。", + "@notificationRuleEncryptedDescription": {}, + "notificationRuleJitsi": "Jitsi", + "@notificationRuleJitsi": {}, + "notificationRuleJitsiDescription": "提醒用户 Jitsi 小部件的事件。", + "@notificationRuleJitsiDescription": {}, + "notificationRuleServerAcl": "隐藏服务器 ACL 事件", + "@notificationRuleServerAcl": {}, + "notificationRuleServerAclDescription": "隐藏服务器 ACL 事件的通知。", + "@notificationRuleServerAclDescription": {}, + "deletePushRuleCanNotBeUndone": "删除这个通知设置的操作无法撤销。", + "@deletePushRuleCanNotBeUndone": {}, + "more": "更多", + "@more": {}, + "notificationRuleReactionDescription": "隐藏回应通知。", + "@notificationRuleReactionDescription": {}, + "notificationRuleMessageDescription": "提醒用户常规消息。", + "@notificationRuleMessageDescription": {}, + "notificationRuleContainsUserName": "包含用户名", + "@notificationRuleContainsUserName": {}, + "otherNotificationSettings": "其他通知设置", + "@otherNotificationSettings": {}, + "notificationRuleContainsUserNameDescription": "当消息包含用户名时通知使用该用户名的用户。", + "@notificationRuleContainsUserNameDescription": {}, + "notificationRuleIsRoomMentionDescription": "有聊天室提及时通知用户。", + "@notificationRuleIsRoomMentionDescription": {}, + "contentNotificationSettings": "内容通知设置", + "@contentNotificationSettings": {}, + "notificationRuleMasterDescription": "覆盖所有其他规则并禁用所有通知。", + "@notificationRuleMasterDescription": {}, + "notificationRuleSuppressNoticesDescription": "隐藏来自 bot 等自动客户端的通知。", + "@notificationRuleSuppressNoticesDescription": {}, + "roomNotificationSettings": "聊天室通知设置", + "@roomNotificationSettings": {}, + "notificationRuleRoomServerAclDescription": "隐藏聊天室服务器访问控制列表(ACL)通知。", + "@notificationRuleRoomServerAclDescription": {}, + "notificationRuleContainsDisplayNameDescription": "当消息包含用户的展示名时提醒使用该展示名的用户。", + "@notificationRuleContainsDisplayNameDescription": {}, + "notificationRuleRoomnotif": "聊天室通知", + "@notificationRuleRoomnotif": {}, + "notificationRuleTombstoneDescription": "提醒用户聊天室解散的消息。", + "@notificationRuleTombstoneDescription": {}, + "notificationRuleReaction": "回应", + "@notificationRuleReaction": {}, + "notificationRuleSuppressEditsDescription": "隐藏消息编辑通知。", + "@notificationRuleSuppressEditsDescription": {}, + "notificationRuleCallDescription": "提醒用户通话的消息。", + "@notificationRuleCallDescription": {}, + "notificationRuleEncryptedRoomOneToOne": "已加密一对一聊天室", + "@notificationRuleEncryptedRoomOneToOne": {}, + "notificationRuleEncryptedRoomOneToOneDescription": "在已加密一对一聊天室中提醒用户消息。", + "@notificationRuleEncryptedRoomOneToOneDescription": {}, + "notificationRuleMessage": "消息", + "@notificationRuleMessage": {}, + "unknownPushRule": "未知推送规则 '{rule}'", + "@unknownPushRule": { + "type": "String", + "placeholders": { + "rule": { + "type": "String" + } + } + }, + "crossVerifiedDevices": "交叉验证设备", + "@crossVerifiedDevices": {}, + "shareKeysWithDescription": "选择应当信任哪些设备允许它们读取你在加密聊天中的消息?", + "@shareKeysWithDescription": {}, + "shareKeysWith": "与哪些设备分享密钥…", + "@shareKeysWith": {}, + "allDevices": "所有设备", + "@allDevices": {}, + "crossVerifiedDevicesIfEnabled": "交叉验证设备(如启用)", + "@crossVerifiedDevicesIfEnabled": {}, + "verifiedDevicesOnly": "仅已验证设备", + "@verifiedDevicesOnly": {}, + "optionalMessage": "(可选)消息…", + "@optionalMessage": {}, + "takeAPhoto": "拍照", + "@takeAPhoto": {}, + "recordAVideo": "录像", + "@recordAVideo": {}, + "notSupportedOnThisDevice": "此设备上不受支持", + "@notSupportedOnThisDevice": {}, + "enterNewChat": "进入新聊天", + "@enterNewChat": {}, + "commandHint_roomupgrade": "将此聊天室升级到给定的聊天室版本", + "@commandHint_roomupgrade": {}, + "setCustomPermissionLevel": "设置自定义权限等级", + "@setCustomPermissionLevel": {}, + "setPermissionsLevelDescription": "请在下方选择预定义的角色或输入 0 到 100 间的自定义权限等级。", + "@setPermissionsLevelDescription": {}, + "ignoreUser": "忽略用户", + "@ignoreUser": {}, + "normalUser": "正常用户", + "@normalUser": {}, + "approve": "批准", + "@approve": {}, + "youHaveKnocked": "你已请求加入", + "@youHaveKnocked": {}, + "pleaseWaitUntilInvited": "在来自该聊天室的某人邀请你之前请等待。", + "@pleaseWaitUntilInvited": {}, + "countInvited": "邀请了 {count}", + "@countInvited": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "checkList": "清单", + "@checkList": {}, + "sentVoiceMessage": "🎙️ {duration} - 来自 {sender} 的语音消息", + "@sentVoiceMessage": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "duration": { + "type": "String" + } + } + }, + "commandHint_logout": "注销当前设备", + "@commandHint_logout": {}, + "commandHint_logoutall": "注销所有活动设备", + "@commandHint_logoutall": {}, + "displayNavigationRail": "在移动设备上显示导航栏", + "@displayNavigationRail": {}, + "customReaction": "自定义回应", + "@customReaction": {}, + "moreEvents": "更多事件", + "@moreEvents": {}, + "declineInvitation": "拒绝邀请", + "@declineInvitation": {}, + "noMessagesYet": "尚无消息", + "@noMessagesYet": {}, + "longPressToRecordVoiceMessage": "长按录制语音消息。", + "@longPressToRecordVoiceMessage": {}, + "pause": "暂停", + "@pause": {}, + "resume": "继续", + "@resume": {}, + "newSubSpace": "新建子空间", + "@newSubSpace": {}, + "moveToDifferentSpace": "移动到别的空间", + "@moveToDifferentSpace": {}, + "moveUp": "上移", + "@moveUp": {}, + "moveDown": "下移", + "@moveDown": {}, + "removeFromSpaceDescription": "将从空间移除该聊天,但仍出现在聊天列表中。", + "@removeFromSpaceDescription": {}, + "countChats": "{chats} 个聊天", + "@countChats": { + "type": "String", + "placeholders": { + "chats": { + "type": "int" + } + } + }, + "spaceMemberOf": "{spaces} 的空间成员", + "@spaceMemberOf": { + "type": "String", + "placeholders": { + "spaces": { + "type": "String" + } + } + }, + "spaceMemberOfCanKnock": "{spaces} 的空间成员可以敲门", + "@spaceMemberOfCanKnock": { + "type": "String", + "placeholders": { + "spaces": { + "type": "String" + } + } + }, + "donate": "捐赠", + "@donate": {}, + "startedAPoll": "{username} 启动了投票。", + "@startedAPoll": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "poll": "投票", + "@poll": {}, + "startPoll": "启动投票", + "@startPoll": {}, + "endPoll": "结束投票", + "@endPoll": {}, + "answersVisible": "结果可见", + "@answersVisible": {}, + "answersHidden": "结果隐藏", + "@answersHidden": {}, + "pollQuestion": "投票问题", + "@pollQuestion": {}, + "answerOption": "结果选项", + "@answerOption": {}, + "addAnswerOption": "添加结果选项", + "@addAnswerOption": {}, + "allowMultipleAnswers": "允许多个结果", + "@allowMultipleAnswers": {}, + "pollHasBeenEnded": "投票已结束", + "@pollHasBeenEnded": {}, + "countVotes": "{count, plural, =1{票} other{{count} 票}}", + "@countVotes": { + "type": "int", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "answersWillBeVisibleWhenPollHasEnded": "投票结束后将显示结果", + "@answersWillBeVisibleWhenPollHasEnded": {}, + "thread": "嘟文串", + "@thread": {}, + "replyInThread": "在嘟文串中回复", + "@replyInThread": {}, + "countReplies": "{count, plural, =1{则回复} other{{count} 则回复}}", + "@countReplies": { + "type": "int", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backToMainChat": "返回主聊天", + "@backToMainChat": {} +} diff --git a/lib/l10n/intl_zh_Hant.arb b/lib/l10n/intl_zh_Hant.arb new file mode 100644 index 0000000..ea0cd6b --- /dev/null +++ b/lib/l10n/intl_zh_Hant.arb @@ -0,0 +1,3362 @@ +{ + "@@last_modified": "2021-08-14 12:41:09.708353", + "about": "關於", + "@about": { + "type": "String", + "placeholders": {} + }, + "accept": "同意", + "@accept": { + "type": "String", + "placeholders": {} + }, + "acceptedTheInvitation": "👍 {username} 已接受邀請", + "@acceptedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "account": "帳號", + "@account": { + "type": "String", + "placeholders": {} + }, + "activatedEndToEndEncryption": "🔐 {username} 已啟用點對點加密", + "@activatedEndToEndEncryption": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "addEmail": "新增電子郵件", + "@addEmail": { + "type": "String", + "placeholders": {} + }, + "admin": "管理員", + "@admin": { + "type": "String", + "placeholders": {} + }, + "alias": "別稱", + "@alias": { + "type": "String", + "placeholders": {} + }, + "all": "全部", + "@all": { + "type": "String", + "placeholders": {} + }, + "answeredTheCall": "已開始與 {senderName} 通話", + "@answeredTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "anyoneCanJoin": "任何人可以加入", + "@anyoneCanJoin": { + "type": "String", + "placeholders": {} + }, + "appLock": "密碼鎖定", + "@appLock": { + "type": "String", + "placeholders": {} + }, + "archive": "封存", + "@archive": { + "type": "String", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "是否允許訪客加入", + "@areGuestsAllowedToJoin": { + "type": "String", + "placeholders": {} + }, + "areYouSure": "您確定嗎?", + "@areYouSure": { + "type": "String", + "placeholders": {} + }, + "areYouSureYouWantToLogout": "您確定要登出嗎?", + "@areYouSureYouWantToLogout": { + "type": "String", + "placeholders": {} + }, + "askSSSSSign": "請輸入您安全儲存的密碼短語或恢復金鑰,以向對方簽名。", + "@askSSSSSign": { + "type": "String", + "placeholders": {} + }, + "askVerificationRequest": "是否接受來自 {username} 的驗證申請?", + "@askVerificationRequest": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "badServerLoginTypesException": "目前伺服器支援的登入類型:\n{serverVersions}\n但本應用程式僅支援:\n{supportedVersions}", + "@badServerLoginTypesException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "badServerVersionsException": "目前伺服器支援的協議版本:\n{serverVersions}\n但本應用程式僅支援 {supportedVersions}", + "@badServerVersionsException": { + "type": "String", + "placeholders": { + "serverVersions": { + "type": "String" + }, + "supportedVersions": { + "type": "String" + } + } + }, + "banFromChat": "已從聊天室中封鎖", + "@banFromChat": { + "type": "String", + "placeholders": {} + }, + "banned": "已被封鎖", + "@banned": { + "type": "String", + "placeholders": {} + }, + "bannedUser": "{username} 封鎖了 {targetName}", + "@bannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "blockDevice": "封鎖裝置", + "@blockDevice": { + "type": "String", + "placeholders": {} + }, + "blocked": "已封鎖", + "@blocked": { + "type": "String", + "placeholders": {} + }, + "botMessages": "機器人訊息", + "@botMessages": { + "type": "String", + "placeholders": {} + }, + "cancel": "取消", + "@cancel": { + "type": "String", + "placeholders": {} + }, + "changeDeviceName": "變更裝置名稱", + "@changeDeviceName": { + "type": "String", + "placeholders": {} + }, + "changedTheChatAvatar": "{username} 變更了對話頭貼", + "@changedTheChatAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheChatDescriptionTo": "{username} 變更了聊天室介紹為:「{description}」", + "@changedTheChatDescriptionTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "description": { + "type": "String" + } + } + }, + "changedTheChatNameTo": "{username} 把聊天室名稱變更為:「{chatname}」", + "@changedTheChatNameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "chatname": { + "type": "String" + } + } + }, + "changedTheChatPermissions": "{username} 變更了對話權限", + "@changedTheChatPermissions": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheDisplaynameTo": "{username} 變更了顯示名稱為:「{displayname}」", + "@changedTheDisplaynameTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "displayname": { + "type": "String" + } + } + }, + "changedTheGuestAccessRules": "{username} 變更了訪客訪問規則", + "@changedTheGuestAccessRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheGuestAccessRulesTo": "{username} 變更了訪客訪問規則為:{rules}", + "@changedTheGuestAccessRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheHistoryVisibility": "{username} 變更了歷史記錄觀察狀態", + "@changedTheHistoryVisibility": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheHistoryVisibilityTo": "{username} 變更了歷史紀錄觀察狀態到:{rules}", + "@changedTheHistoryVisibilityTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "rules": { + "type": "String" + } + } + }, + "changedTheJoinRules": "{username} 變更了加入的規則", + "@changedTheJoinRules": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheJoinRulesTo": "{username} 變更了加入的規則為:{joinRules}", + "@changedTheJoinRulesTo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "joinRules": { + "type": "String" + } + } + }, + "changedTheProfileAvatar": "{username} 變更了頭貼", + "@changedTheProfileAvatar": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomAliases": "{username} 變更了聊天室名", + "@changedTheRoomAliases": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changedTheRoomInvitationLink": "{username} 變更了邀請連結", + "@changedTheRoomInvitationLink": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "changePassword": "變更密碼", + "@changePassword": { + "type": "String", + "placeholders": {} + }, + "changeTheHomeserver": "變更主機位址", + "@changeTheHomeserver": { + "type": "String", + "placeholders": {} + }, + "changeTheme": "變更主題", + "@changeTheme": { + "type": "String", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "變更了群組名稱", + "@changeTheNameOfTheGroup": { + "type": "String", + "placeholders": {} + }, + "channelCorruptedDecryptError": "加密已被破壞", + "@channelCorruptedDecryptError": { + "type": "String", + "placeholders": {} + }, + "chat": "聊天室", + "@chat": { + "type": "String", + "placeholders": {} + }, + "chatBackup": "備份聊天室", + "@chatBackup": { + "type": "String", + "placeholders": {} + }, + "chatBackupDescription": "您的過往聊天室記錄已被恢復金鑰加密。請您確保不會弄丟它。", + "@chatBackupDescription": { + "type": "String", + "placeholders": {} + }, + "chatDetails": "對話詳細", + "@chatDetails": { + "type": "String", + "placeholders": {} + }, + "chooseAStrongPassword": "輸入一個較強的密碼", + "@chooseAStrongPassword": { + "type": "String", + "placeholders": {} + }, + "close": "關閉", + "@close": { + "type": "String", + "placeholders": {} + }, + "compareEmojiMatch": "請對比這些表情", + "@compareEmojiMatch": { + "type": "String", + "placeholders": {} + }, + "compareNumbersMatch": "請對比這些數字", + "@compareNumbersMatch": { + "type": "String", + "placeholders": {} + }, + "configureChat": "設定聊天室", + "@configureChat": { + "type": "String", + "placeholders": {} + }, + "confirm": "確認", + "@confirm": { + "type": "String", + "placeholders": {} + }, + "connect": "連接", + "@connect": { + "type": "String", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "聯絡人已被邀請至群組", + "@contactHasBeenInvitedToTheGroup": { + "type": "String", + "placeholders": {} + }, + "containsDisplayName": "包含顯示名稱", + "@containsDisplayName": { + "type": "String", + "placeholders": {} + }, + "containsUserName": "包含使用者名稱", + "@containsUserName": { + "type": "String", + "placeholders": {} + }, + "contentHasBeenReported": "此內容已被回報給伺服器管理員們", + "@contentHasBeenReported": { + "type": "String", + "placeholders": {} + }, + "copiedToClipboard": "已複製到剪貼簿", + "@copiedToClipboard": { + "type": "String", + "placeholders": {} + }, + "copy": "複製", + "@copy": { + "type": "String", + "placeholders": {} + }, + "copyToClipboard": "複製到剪貼簿", + "@copyToClipboard": { + "type": "String", + "placeholders": {} + }, + "couldNotDecryptMessage": "不能解密訊息:{error}", + "@couldNotDecryptMessage": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "countParticipants": "{count} 個參與者", + "@countParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "create": "建立", + "@create": { + "type": "String", + "placeholders": {} + }, + "createdTheChat": "💬 {username} 建立了聊天室", + "@createdTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "currentlyActive": "目前活躍", + "@currentlyActive": { + "type": "String", + "placeholders": {} + }, + "darkTheme": "夜間模式", + "@darkTheme": { + "type": "String", + "placeholders": {} + }, + "dateAndTimeOfDay": "{date} , {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "String", + "placeholders": { + "date": { + "type": "String" + }, + "timeOfDay": { + "type": "String" + } + } + }, + "dateWithoutYear": "{month} - {day}", + "@dateWithoutYear": { + "type": "String", + "placeholders": { + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "dateWithYear": "{year} - {month} - {day}", + "@dateWithYear": { + "type": "String", + "placeholders": { + "year": { + "type": "String" + }, + "month": { + "type": "String" + }, + "day": { + "type": "String" + } + } + }, + "deactivateAccountWarning": "這將停用您的帳號。這個決定是不能挽回的!您確定嗎?", + "@deactivateAccountWarning": { + "type": "String", + "placeholders": {} + }, + "defaultPermissionLevel": "預設權限等級", + "@defaultPermissionLevel": { + "type": "String", + "placeholders": {} + }, + "delete": "刪除", + "@delete": { + "type": "String", + "placeholders": {} + }, + "deleteAccount": "刪除帳號", + "@deleteAccount": { + "type": "String", + "placeholders": {} + }, + "deleteMessage": "刪除訊息", + "@deleteMessage": { + "type": "String", + "placeholders": {} + }, + "device": "裝置", + "@device": { + "type": "String", + "placeholders": {} + }, + "deviceId": "裝置ID", + "@deviceId": { + "type": "String", + "placeholders": {} + }, + "devices": "裝置", + "@devices": { + "type": "String", + "placeholders": {} + }, + "directChats": "直接傳訊", + "@directChats": { + "type": "String", + "placeholders": {} + }, + "displaynameHasBeenChanged": "顯示名稱已被變更", + "@displaynameHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "downloadFile": "下載文件", + "@downloadFile": { + "type": "String", + "placeholders": {} + }, + "edit": "編輯", + "@edit": { + "type": "String", + "placeholders": {} + }, + "editBlockedServers": "編輯被封鎖的伺服器", + "@editBlockedServers": { + "type": "String", + "placeholders": {} + }, + "editDisplayname": "編輯顯示名稱", + "@editDisplayname": { + "type": "String", + "placeholders": {} + }, + "editRoomAvatar": "編輯聊天室頭貼", + "@editRoomAvatar": { + "type": "String", + "placeholders": {} + }, + "emoteExists": "表情已存在!", + "@emoteExists": { + "type": "String", + "placeholders": {} + }, + "emoteInvalid": "無效的表情快捷鍵!", + "@emoteInvalid": { + "type": "String", + "placeholders": {} + }, + "emotePacks": "聊天室的表情符號", + "@emotePacks": { + "type": "String", + "placeholders": {} + }, + "emoteSettings": "表情設定", + "@emoteSettings": { + "type": "String", + "placeholders": {} + }, + "emoteShortcode": "表情快捷鍵", + "@emoteShortcode": { + "type": "String", + "placeholders": {} + }, + "emoteWarnNeedToPick": "您需要選取一個表情快捷鍵和一張圖片!", + "@emoteWarnNeedToPick": { + "type": "String", + "placeholders": {} + }, + "emptyChat": "空的聊天室", + "@emptyChat": { + "type": "String", + "placeholders": {} + }, + "enableEmotesGlobally": "在全域啟用表情符號", + "@enableEmotesGlobally": { + "type": "String", + "placeholders": {} + }, + "enableEncryption": "啟用加密", + "@enableEncryption": { + "type": "String", + "placeholders": {} + }, + "enableEncryptionWarning": "您將不能再停用加密,確定嗎?", + "@enableEncryptionWarning": { + "type": "String", + "placeholders": {} + }, + "encrypted": "已加密的", + "@encrypted": { + "type": "String", + "placeholders": {} + }, + "encryption": "加密", + "@encryption": { + "type": "String", + "placeholders": {} + }, + "encryptionNotEnabled": "加密未啟用", + "@encryptionNotEnabled": { + "type": "String", + "placeholders": {} + }, + "endedTheCall": "{senderName} 結束了通話", + "@endedTheCall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "enterAnEmailAddress": "輸入一個電子郵件位址", + "@enterAnEmailAddress": { + "type": "String", + "placeholders": {} + }, + "enterYourHomeserver": "輸入伺服器位址", + "@enterYourHomeserver": { + "type": "String", + "placeholders": {} + }, + "everythingReady": "一切就緒!", + "@everythingReady": { + "type": "String", + "placeholders": {} + }, + "extremeOffensive": "極端令人反感", + "@extremeOffensive": { + "type": "String", + "placeholders": {} + }, + "fileName": "檔案名稱", + "@fileName": { + "type": "String", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "String", + "placeholders": {} + }, + "fontSize": "字體大小", + "@fontSize": { + "type": "String", + "placeholders": {} + }, + "forward": "轉發", + "@forward": { + "type": "String", + "placeholders": {} + }, + "fromJoining": "自加入起", + "@fromJoining": { + "type": "String", + "placeholders": {} + }, + "fromTheInvitation": "自邀請起", + "@fromTheInvitation": { + "type": "String", + "placeholders": {} + }, + "group": "群組", + "@group": { + "type": "String", + "placeholders": {} + }, + "groupIsPublic": "群組是公開的", + "@groupIsPublic": { + "type": "String", + "placeholders": {} + }, + "groups": "群組", + "@groups": { + "type": "String", + "placeholders": {} + }, + "groupWith": "名稱為 {displayname} 的群組", + "@groupWith": { + "type": "String", + "placeholders": { + "displayname": { + "type": "String" + } + } + }, + "guestsAreForbidden": "訪客已被禁止", + "@guestsAreForbidden": { + "type": "String", + "placeholders": {} + }, + "guestsCanJoin": "訪客可以加入", + "@guestsCanJoin": { + "type": "String", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "{username} 收回了對 {targetName} 的邀請", + "@hasWithdrawnTheInvitationFor": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "help": "幫助", + "@help": { + "type": "String", + "placeholders": {} + }, + "hideRedactedEvents": "隱藏編輯過的事件", + "@hideRedactedEvents": { + "type": "String", + "placeholders": {} + }, + "hideUnknownEvents": "隱藏未知事件", + "@hideUnknownEvents": { + "type": "String", + "placeholders": {} + }, + "howOffensiveIsThisContent": "這個內容有多令人反感?", + "@howOffensiveIsThisContent": { + "type": "String", + "placeholders": {} + }, + "id": "ID", + "@id": { + "type": "String", + "placeholders": {} + }, + "identity": "身份", + "@identity": { + "type": "String", + "placeholders": {} + }, + "ignore": "無視", + "@ignore": { + "type": "String", + "placeholders": {} + }, + "ignoredUsers": "已無視的使用者", + "@ignoredUsers": { + "type": "String", + "placeholders": {} + }, + "iHaveClickedOnLink": "我已經點擊了網址", + "@iHaveClickedOnLink": { + "type": "String", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "錯誤的密碼短語或恢復金鑰", + "@incorrectPassphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "inoffensive": "不令人反感", + "@inoffensive": { + "type": "String", + "placeholders": {} + }, + "inviteContact": "邀請聯絡人", + "@inviteContact": { + "type": "String", + "placeholders": {} + }, + "inviteContactToGroup": "邀請聯絡人到 {groupName}", + "@inviteContactToGroup": { + "type": "String", + "placeholders": { + "groupName": { + "type": "String" + } + } + }, + "invited": "已邀請", + "@invited": { + "type": "String", + "placeholders": {} + }, + "invitedUser": "📩 {username} 邀請了 {targetName}", + "@invitedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "invitedUsersOnly": "只有被邀請的使用者", + "@invitedUsersOnly": { + "type": "String", + "placeholders": {} + }, + "inviteForMe": "來自我的邀請", + "@inviteForMe": { + "type": "String", + "placeholders": {} + }, + "inviteText": "{username} 邀請您使用 FluffyChat\n1. 安裝 FluffyChat:https://fluffychat.im\n2. 登入或註冊\n3. 打開該邀請網址:\n{link}", + "@inviteText": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "link": { + "type": "String" + } + } + }, + "isTyping": "正在輸入...…", + "@isTyping": { + "type": "String", + "placeholders": {} + }, + "joinedTheChat": "👋 {username} 加入了聊天室", + "@joinedTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "joinRoom": "加入聊天室", + "@joinRoom": { + "type": "String", + "placeholders": {} + }, + "kicked": "👞 {username} 踢了 {targetName}", + "@kicked": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickedAndBanned": "🙅 {username} 踢了 {targetName} 並將其封鎖", + "@kickedAndBanned": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "kickFromChat": "從聊天室踢出", + "@kickFromChat": { + "type": "String", + "placeholders": {} + }, + "lastActiveAgo": "最後活動時間:{localizedTimeShort}", + "@lastActiveAgo": { + "type": "String", + "placeholders": { + "localizedTimeShort": { + "type": "String" + } + } + }, + "leave": "離開", + "@leave": { + "type": "String", + "placeholders": {} + }, + "leftTheChat": "離開了聊天室", + "@leftTheChat": { + "type": "String", + "placeholders": {} + }, + "license": "授權", + "@license": { + "type": "String", + "placeholders": {} + }, + "lightTheme": "日間模式", + "@lightTheme": { + "type": "String", + "placeholders": {} + }, + "loadCountMoreParticipants": "載入 {count} 個更多的參與者", + "@loadCountMoreParticipants": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "loadingPleaseWait": "載入中...... 請稍候。", + "@loadingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "loadMore": "載入更多...…", + "@loadMore": { + "type": "String", + "placeholders": {} + }, + "login": "登入", + "@login": { + "type": "String", + "placeholders": {} + }, + "logInTo": "登入 {homeserver}", + "@logInTo": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "logout": "登出", + "@logout": { + "type": "String", + "placeholders": {} + }, + "memberChanges": "變更成員", + "@memberChanges": { + "type": "String", + "placeholders": {} + }, + "mention": "提及", + "@mention": { + "type": "String", + "placeholders": {} + }, + "messages": "訊息", + "@messages": { + "type": "String", + "placeholders": {} + }, + "moderator": "版主", + "@moderator": { + "type": "String", + "placeholders": {} + }, + "muteChat": "將該聊天室靜音", + "@muteChat": { + "type": "String", + "placeholders": {} + }, + "needPantalaimonWarning": "請注意您需要 Pantalaimon 才能使用點對點加密功能。", + "@needPantalaimonWarning": { + "type": "String", + "placeholders": {} + }, + "newChat": "新聊天", + "@newChat": { + "type": "String", + "placeholders": {} + }, + "newMessageInFluffyChat": "💬 來自 FluffyChat 的新訊息", + "@newMessageInFluffyChat": { + "type": "String", + "placeholders": {} + }, + "newVerificationRequest": "新的驗證請求!", + "@newVerificationRequest": { + "type": "String", + "placeholders": {} + }, + "next": "下一個", + "@next": { + "type": "String", + "placeholders": {} + }, + "no": "否", + "@no": { + "type": "String", + "placeholders": {} + }, + "noConnectionToTheServer": "無法連接到伺服器", + "@noConnectionToTheServer": { + "type": "String", + "placeholders": {} + }, + "noEmotesFound": "表情符號不存在。😕", + "@noEmotesFound": { + "type": "String", + "placeholders": {} + }, + "noEncryptionForPublicRooms": "您只能在這個聊天室不再被允許公開訪問後,才能啟用加密。", + "@noEncryptionForPublicRooms": { + "type": "String", + "placeholders": {} + }, + "noGoogleServicesWarning": "未能在你的裝置找到 Firebase Cloud Messaging(FCM). 如果想要收到通知消息的推送,我們建議安裝 ntfy。在有 ntfy 或其他 Unified Push 應用,便能在資料安全的情況下收到通知的推送。你可以在 Play store 或 F-Droid 下載並安裝 ntfy。", + "@noGoogleServicesWarning": { + "type": "String", + "placeholders": {} + }, + "none": "無", + "@none": { + "type": "String", + "placeholders": {} + }, + "noPasswordRecoveryDescription": "您尚未新增恢復密碼的方法。", + "@noPasswordRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "noPermission": "沒有權限", + "@noPermission": { + "type": "String", + "placeholders": {} + }, + "noRoomsFound": "找不到聊天室...…", + "@noRoomsFound": { + "type": "String", + "placeholders": {} + }, + "notifications": "通知", + "@notifications": { + "type": "String", + "placeholders": {} + }, + "notificationsEnabledForThisAccount": "已為此帳號啟用通知", + "@notificationsEnabledForThisAccount": { + "type": "String", + "placeholders": {} + }, + "numUsersTyping": "{count} 個人正在輸入...…", + "@numUsersTyping": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "offensive": "令人反感", + "@offensive": { + "type": "String", + "placeholders": {} + }, + "offline": "離線", + "@offline": { + "type": "String", + "placeholders": {} + }, + "ok": "OK", + "@ok": { + "type": "String", + "placeholders": {} + }, + "online": "線上", + "@online": { + "type": "String", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "線上金鑰備份已啟用", + "@onlineKeyBackupEnabled": { + "type": "String", + "placeholders": {} + }, + "oopsSomethingWentWrong": "哎呀!出了一點差錯...…", + "@oopsSomethingWentWrong": { + "type": "String", + "placeholders": {} + }, + "openAppToReadMessages": "打開應用程式以讀取訊息", + "@openAppToReadMessages": { + "type": "String", + "placeholders": {} + }, + "openCamera": "開啟相機", + "@openCamera": { + "type": "String", + "placeholders": {} + }, + "participant": "參與者", + "@participant": { + "type": "String", + "placeholders": {} + }, + "passphraseOrKey": "密碼短語或恢復金鑰", + "@passphraseOrKey": { + "type": "String", + "placeholders": {} + }, + "password": "密碼", + "@password": { + "type": "String", + "placeholders": {} + }, + "passwordForgotten": "忘記密碼", + "@passwordForgotten": { + "type": "String", + "placeholders": {} + }, + "passwordHasBeenChanged": "密碼已被變更", + "@passwordHasBeenChanged": { + "type": "String", + "placeholders": {} + }, + "passwordRecovery": "恢復密碼", + "@passwordRecovery": { + "type": "String", + "placeholders": {} + }, + "pickImage": "選擇圖片", + "@pickImage": { + "type": "String", + "placeholders": {} + }, + "pin": "釘選", + "@pin": { + "type": "String", + "placeholders": {} + }, + "play": "播放 {fileName}", + "@play": { + "type": "String", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "pleaseChooseAPasscode": "請選擇一個密碼", + "@pleaseChooseAPasscode": { + "type": "String", + "placeholders": {} + }, + "pleaseClickOnLink": "請點擊電子郵件中的網址,然後繼續。", + "@pleaseClickOnLink": { + "type": "String", + "placeholders": {} + }, + "pleaseEnter4Digits": "請輸入4位數字,或留空以停用密碼鎖定。", + "@pleaseEnter4Digits": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourPassword": "請輸入您的密碼", + "@pleaseEnterYourPassword": { + "type": "String", + "placeholders": {} + }, + "pleaseEnterYourUsername": "請輸入您的使用者名稱", + "@pleaseEnterYourUsername": { + "type": "String", + "placeholders": {} + }, + "pleaseFollowInstructionsOnWeb": "請按照網站上的說明進行操作,然後點擊下一步。", + "@pleaseFollowInstructionsOnWeb": { + "type": "String", + "placeholders": {} + }, + "privacy": "隱私", + "@privacy": { + "type": "String", + "placeholders": {} + }, + "publicRooms": "公開的聊天室", + "@publicRooms": { + "type": "String", + "placeholders": {} + }, + "pushRules": "推播規則", + "@pushRules": { + "type": "String", + "placeholders": {} + }, + "reason": "原因", + "@reason": { + "type": "String", + "placeholders": {} + }, + "recording": "錄音中", + "@recording": { + "type": "String", + "placeholders": {} + }, + "redactedAnEvent": "{username} 編輯了一個事件", + "@redactedAnEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "redactMessage": "重新編輯訊息", + "@redactMessage": { + "type": "String", + "placeholders": {} + }, + "reject": "拒絕", + "@reject": { + "type": "String", + "placeholders": {} + }, + "rejectedTheInvitation": "{username} 拒絕了邀請", + "@rejectedTheInvitation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "rejoin": "重新加入", + "@rejoin": { + "type": "String", + "placeholders": {} + }, + "remove": "移除", + "@remove": { + "type": "String", + "placeholders": {} + }, + "removeAllOtherDevices": "移除所有其他裝置", + "@removeAllOtherDevices": { + "type": "String", + "placeholders": {} + }, + "removedBy": "被 {username} 移除", + "@removedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "removeDevice": "移除裝置", + "@removeDevice": { + "type": "String", + "placeholders": {} + }, + "unbanFromChat": "解封聊天室", + "@unbanFromChat": { + "type": "String", + "placeholders": {} + }, + "replaceRoomWithNewerVersion": "用較新的版本取代聊天室", + "@replaceRoomWithNewerVersion": { + "type": "String", + "placeholders": {} + }, + "reply": "回覆", + "@reply": { + "type": "String", + "placeholders": {} + }, + "reportMessage": "檢舉訊息", + "@reportMessage": { + "type": "String", + "placeholders": {} + }, + "requestPermission": "請求權限", + "@requestPermission": { + "type": "String", + "placeholders": {} + }, + "roomHasBeenUpgraded": "聊天室已更新", + "@roomHasBeenUpgraded": { + "type": "String", + "placeholders": {} + }, + "search": "搜尋", + "@search": { + "type": "String", + "placeholders": {} + }, + "security": "安全", + "@security": { + "type": "String", + "placeholders": {} + }, + "seenByUser": "{username} 已讀", + "@seenByUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "send": "傳送", + "@send": { + "type": "String", + "placeholders": {} + }, + "sendAMessage": "傳送訊息", + "@sendAMessage": { + "type": "String", + "placeholders": {} + }, + "sendAudio": "傳送音訊", + "@sendAudio": { + "type": "String", + "placeholders": {} + }, + "sendFile": "傳送文件", + "@sendFile": { + "type": "String", + "placeholders": {} + }, + "sendImage": "傳送圖片", + "@sendImage": { + "type": "String", + "placeholders": {} + }, + "sendMessages": "傳送訊息", + "@sendMessages": { + "type": "String", + "placeholders": {} + }, + "sendOriginal": "傳送原始內容", + "@sendOriginal": { + "type": "String", + "placeholders": {} + }, + "sendVideo": "傳送影片", + "@sendVideo": { + "type": "String", + "placeholders": {} + }, + "sentAFile": "{username} 傳送了一個文件", + "@sentAFile": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAnAudio": "🎤{username} 傳送了一個音訊", + "@sentAnAudio": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAPicture": "🖼️{username} 傳送了一張圖片", + "@sentAPicture": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentASticker": "😊{username} 傳送了貼圖", + "@sentASticker": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentAVideo": "🎥{username} 傳送了影片", + "@sentAVideo": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "sentCallInformations": "{senderName} 傳送了通話資訊", + "@sentCallInformations": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "setCustomEmotes": "自訂表情符號", + "@setCustomEmotes": { + "type": "String", + "placeholders": {} + }, + "setInvitationLink": "設定邀請連結", + "@setInvitationLink": { + "type": "String", + "placeholders": {} + }, + "setPermissionsLevel": "設定權限等級", + "@setPermissionsLevel": { + "type": "String", + "placeholders": {} + }, + "setStatus": "設定狀態", + "@setStatus": { + "type": "String", + "placeholders": {} + }, + "settings": "設定", + "@settings": { + "type": "String", + "placeholders": {} + }, + "share": "分享", + "@share": { + "type": "String", + "placeholders": {} + }, + "sharedTheLocation": "{username} 分享了位置", + "@sharedTheLocation": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "showPassword": "顯示密碼", + "@showPassword": { + "type": "String", + "placeholders": {} + }, + "skip": "跳過", + "@skip": { + "type": "String", + "placeholders": {} + }, + "sourceCode": "原始碼", + "@sourceCode": { + "type": "String", + "placeholders": {} + }, + "startedACall": "{senderName} 開始了通話", + "@startedACall": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "status": "狀態", + "@status": { + "type": "String", + "placeholders": {} + }, + "statusExampleMessage": "今天過得如何?", + "@statusExampleMessage": { + "type": "String", + "placeholders": {} + }, + "submit": "送出", + "@submit": { + "type": "String", + "placeholders": {} + }, + "systemTheme": "自動", + "@systemTheme": { + "type": "String", + "placeholders": {} + }, + "theyDontMatch": "它們不相符", + "@theyDontMatch": { + "type": "String", + "placeholders": {} + }, + "theyMatch": "它們相符", + "@theyMatch": { + "type": "String", + "placeholders": {} + }, + "title": "FluffyChat", + "@title": { + "description": "Title for the application", + "type": "String", + "placeholders": {} + }, + "toggleFavorite": "切換收藏夾", + "@toggleFavorite": { + "type": "String", + "placeholders": {} + }, + "toggleMuted": "切換靜音", + "@toggleMuted": { + "type": "String", + "placeholders": {} + }, + "toggleUnread": "標示為已讀/未讀", + "@toggleUnread": { + "type": "String", + "placeholders": {} + }, + "tooManyRequestsWarning": "太多請求了。請稍候再試!", + "@tooManyRequestsWarning": { + "type": "String", + "placeholders": {} + }, + "transferFromAnotherDevice": "從其他裝置傳輸", + "@transferFromAnotherDevice": { + "type": "String", + "placeholders": {} + }, + "tryToSendAgain": "再次嘗試傳送", + "@tryToSendAgain": { + "type": "String", + "placeholders": {} + }, + "unavailable": "無法取得", + "@unavailable": { + "type": "String", + "placeholders": {} + }, + "unbannedUser": "{username} 解除封鎖了 {targetName}", + "@unbannedUser": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "targetName": { + "type": "String" + } + } + }, + "unblockDevice": "解除鎖定裝置", + "@unblockDevice": { + "type": "String", + "placeholders": {} + }, + "unknownDevice": "未知裝置", + "@unknownDevice": { + "type": "String", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "未知的加密演算法", + "@unknownEncryptionAlgorithm": { + "type": "String", + "placeholders": {} + }, + "unknownEvent": "未知事件「{type}」", + "@unknownEvent": { + "type": "String", + "placeholders": { + "type": { + "type": "String" + } + } + }, + "unmuteChat": "取消靜音聊天室", + "@unmuteChat": { + "type": "String", + "placeholders": {} + }, + "unpin": "取消釘選", + "@unpin": { + "type": "String", + "placeholders": {} + }, + "unreadChats": "{unreadCount, plural, =1 {1 unread chat} other { {unreadCount} 個未讀聊天室} }", + "@unreadChats": { + "type": "String", + "placeholders": { + "unreadCount": { + "type": "int" + } + } + }, + "userAndOthersAreTyping": "{username} 和其他 {count} 個人正在輸入...…", + "@userAndOthersAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "userAndUserAreTyping": "{username} 和 {username2} 正在輸入...…", + "@userAndUserAreTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "username2": { + "type": "String" + } + } + }, + "userIsTyping": "{username} 正在輸入...…", + "@userIsTyping": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "userLeftTheChat": "{username} 離開了聊天室", + "@userLeftTheChat": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "username": "使用者名稱", + "@username": { + "type": "String", + "placeholders": {} + }, + "userSentUnknownEvent": "{username} 傳送了一個 {type} 事件", + "@userSentUnknownEvent": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "type": { + "type": "String" + } + } + }, + "verified": "已驗證", + "@verified": { + "type": "String", + "placeholders": {} + }, + "verify": "驗證", + "@verify": { + "type": "String", + "placeholders": {} + }, + "verifyStart": "開始驗證", + "@verifyStart": { + "type": "String", + "placeholders": {} + }, + "verifySuccess": "您成功驗證了!", + "@verifySuccess": { + "type": "String", + "placeholders": {} + }, + "verifyTitle": "正在驗證其他帳號", + "@verifyTitle": { + "type": "String", + "placeholders": {} + }, + "videoCall": "視訊通話", + "@videoCall": { + "type": "String", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "聊天室記錄的可見性", + "@visibilityOfTheChatHistory": { + "type": "String", + "placeholders": {} + }, + "visibleForAllParticipants": "對所有參與者可見", + "@visibleForAllParticipants": { + "type": "String", + "placeholders": {} + }, + "visibleForEveryone": "對所有人可見", + "@visibleForEveryone": { + "type": "String", + "placeholders": {} + }, + "voiceMessage": "語音訊息", + "@voiceMessage": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "正在等待夥伴接受請求...…", + "@waitingPartnerAcceptRequest": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerEmoji": "正在等待夥伴接受表情符號...…", + "@waitingPartnerEmoji": { + "type": "String", + "placeholders": {} + }, + "waitingPartnerNumbers": "正在等待夥伴接受數字...…", + "@waitingPartnerNumbers": { + "type": "String", + "placeholders": {} + }, + "wallpaper": "桌布:", + "@wallpaper": { + "type": "String", + "placeholders": {} + }, + "warning": "警告!", + "@warning": { + "type": "String", + "placeholders": {} + }, + "weSentYouAnEmail": "我們向您傳送了一封電子郵件", + "@weSentYouAnEmail": { + "type": "String", + "placeholders": {} + }, + "whoCanPerformWhichAction": "誰可以執行這個動作", + "@whoCanPerformWhichAction": { + "type": "String", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "誰可以加入這個群組", + "@whoIsAllowedToJoinThisGroup": { + "type": "String", + "placeholders": {} + }, + "whyDoYouWantToReportThis": "您檢舉的原因是什麼?", + "@whyDoYouWantToReportThis": { + "type": "String", + "placeholders": {} + }, + "wipeChatBackup": "是否清除您的聊天室記錄備份以建立新的安全金鑰嗎?", + "@wipeChatBackup": { + "type": "String", + "placeholders": {} + }, + "withTheseAddressesRecoveryDescription": "有了這些位址,您就可以恢復密碼。", + "@withTheseAddressesRecoveryDescription": { + "type": "String", + "placeholders": {} + }, + "writeAMessage": "輸入訊息...…", + "@writeAMessage": { + "type": "String", + "placeholders": {} + }, + "yes": "是", + "@yes": { + "type": "String", + "placeholders": {} + }, + "you": "您", + "@you": { + "type": "String", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "您不再參與這個聊天室了", + "@youAreNoLongerParticipatingInThisChat": { + "type": "String", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "您已經被這個聊天室封鎖", + "@youHaveBeenBannedFromThisChat": { + "type": "String", + "placeholders": {} + }, + "yourPublicKey": "您的公鑰", + "@yourPublicKey": { + "type": "String", + "placeholders": {} + }, + "people": "人", + "@people": { + "type": "String", + "placeholders": {} + }, + "chats": "聊天室", + "@chats": { + "type": "String", + "placeholders": {} + }, + "allChats": "所有會話", + "@allChats": { + "type": "String", + "placeholders": {} + }, + "commandHint_ban": "在此聊天室封鎖該使用者", + "@commandHint_ban": { + "type": "String", + "description": "Usage hint for the command /ban" + }, + "commandHint_clearcache": "清除快取", + "@commandHint_clearcache": { + "type": "String", + "description": "Usage hint for the command /clearcache" + }, + "commandHint_create": "建立一個空的群聊\n使用 --no-encryption 選項來停用加密", + "@commandHint_create": { + "type": "String", + "description": "Usage hint for the command /create" + }, + "commandHint_discardsession": "丟棄工作階段", + "@commandHint_discardsession": { + "type": "String", + "description": "Usage hint for the command /discardsession" + }, + "commandHint_dm": "啟動一對一聊天室\n使用 --no-encryption 選項來停用加密", + "@commandHint_dm": { + "type": "String", + "description": "Usage hint for the command /dm" + }, + "commandHint_invite": "邀請該使用者加入此聊天室", + "@commandHint_invite": { + "type": "String", + "description": "Usage hint for the command /invite" + }, + "commandHint_join": "加入此聊天室", + "@commandHint_join": { + "type": "String", + "description": "Usage hint for the command /join" + }, + "commandHint_kick": "將這個使用者移出此聊天室", + "@commandHint_kick": { + "type": "String", + "description": "Usage hint for the command /kick" + }, + "commandHint_leave": "退出此聊天室", + "@commandHint_leave": { + "type": "String", + "description": "Usage hint for the command /leave" + }, + "commandHint_myroomnick": "設定您的聊天室暱稱", + "@commandHint_myroomnick": { + "type": "String", + "description": "Usage hint for the command /myroomnick" + }, + "editRoomAliases": "編輯聊天室名", + "@editRoomAliases": { + "type": "String", + "placeholders": {} + }, + "roomVersion": "聊天室的版本", + "@roomVersion": { + "type": "String", + "placeholders": {} + }, + "addToSpace": "加入空間", + "@addToSpace": {}, + "cantOpenUri": "無法打開 URI {uri}", + "@cantOpenUri": { + "type": "String", + "placeholders": { + "uri": { + "type": "String" + } + } + }, + "repeatPassword": "再次輸入密碼", + "@repeatPassword": {}, + "yourChatBackupHasBeenSetUp": "您的聊天室記錄備份已設定。", + "@yourChatBackupHasBeenSetUp": {}, + "goToTheNewRoom": "前往新聊天室", + "@goToTheNewRoom": { + "type": "String", + "placeholders": {} + }, + "commandHint_myroomavatar": "設定您的聊天室頭貼(通過 mxc-uri)", + "@commandHint_myroomavatar": { + "type": "String", + "description": "Usage hint for the command /myroomavatar" + }, + "commandHint_unban": "在此聊天室解除封鎖該使用者", + "@commandHint_unban": { + "type": "String", + "description": "Usage hint for the command /unban" + }, + "autoplayImages": "自動播放動態貼圖和表情", + "@autoplayImages": { + "type": "String", + "placeholder": {} + }, + "sendOnEnter": "按 Enter 鍵傳送", + "@sendOnEnter": {}, + "changeYourAvatar": "更改您的大頭貼", + "@changeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "chatHasBeenAddedToThisSpace": "聊天室已新增到此空間", + "@chatHasBeenAddedToThisSpace": {}, + "clearArchive": "清除存檔", + "@clearArchive": {}, + "hugContent": "{senderName} 擁抱您", + "@hugContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "commandHint_cuddle": "傳送一個摟抱表情", + "@commandHint_cuddle": {}, + "supposedMxid": "此處應爲 {mxid}", + "@supposedMxid": { + "type": "String", + "placeholders": { + "mxid": { + "type": "String" + } + } + }, + "invalidServerName": "伺服器名稱錯誤", + "@invalidServerName": {}, + "importFromZipFile": "從 .zip 檔案匯入", + "@importFromZipFile": {}, + "homeserver": "伺服器", + "@homeserver": {}, + "exportEmotePack": "將表情包匯出成 .zip 檔案", + "@exportEmotePack": {}, + "commandInvalid": "命令無效", + "@commandInvalid": { + "type": "String" + }, + "commandMissing": "{command} 不是正確的命令。", + "@commandMissing": { + "type": "String", + "placeholders": { + "command": { + "type": "String" + } + }, + "description": "State that {command} is not a valid /command." + }, + "googlyEyesContent": "{senderName} 向您傳送了瞪眼表情", + "@googlyEyesContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "addChatDescription": "新增聊天室描述......", + "@addChatDescription": {}, + "sendTypingNotifications": "傳送「輸入中」通知", + "@sendTypingNotifications": {}, + "importEmojis": "匯入表情包", + "@importEmojis": {}, + "confirmMatrixId": "如需刪除你的帳戶,請確認你的 Matrix ID。", + "@confirmMatrixId": {}, + "notAnImage": "不是圖片檔案。", + "@notAnImage": {}, + "cuddleContent": "{senderName} 摟抱您", + "@cuddleContent": { + "type": "String", + "placeholders": { + "senderName": { + "type": "String" + } + } + }, + "commandHint_hug": "傳送一個擁抱表情", + "@commandHint_hug": {}, + "replace": "取代", + "@replace": {}, + "commandHint_googly": "傳送一些瞪眼表情", + "@commandHint_googly": {}, + "importNow": "立即匯入", + "@importNow": {}, + "blockListDescription": "你可以封鎖打擾你的使用者。你不會再收到任何從已封鎖使用者發來的訊息或聊天室邀請。", + "@blockListDescription": {}, + "blockedUsers": "已封鎖的使用者", + "@blockedUsers": {}, + "block": "封鎖", + "@block": {}, + "discover": "發現", + "@discover": {}, + "alwaysUse24HourFormat": "false", + "@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": "String", + "placeholders": {} + }, + "commandHint_markasdm": "將給定的 Matrix ID 標示為直接訊息房間", + "@commandHint_markasdm": {}, + "commandHint_html": "傳送 HTML 格式的文字", + "@commandHint_html": { + "type": "String", + "description": "Usage hint for the command /html" + }, + "commandHint_send": "傳送文字", + "@commandHint_send": { + "type": "String", + "description": "Usage hint for the command /send" + }, + "emoteKeyboardNoRecents": "最近使用的表情將顯示在這裡...", + "@emoteKeyboardNoRecents": { + "type": "String", + "placeholders": {} + }, + "noChatDescriptionYet": "尚未建立聊天室描述。", + "@noChatDescriptionYet": {}, + "optionalRedactReason": "(非必填)收回此訊息的原因...", + "@optionalRedactReason": {}, + "dehydrateWarning": "此操作不能反悔。請確保安全地存儲備份文件。", + "@dehydrateWarning": {}, + "hydrateTorLong": "上次在 TOR 上匯出會話了嗎?快速匯入它已繼續使用聊天室。", + "@hydrateTorLong": {}, + "hydrate": "從備份文件恢復", + "@hydrate": {}, + "locationDisabledNotice": "位置服務被停用。請啟用它們以能夠分享您的位置。", + "@locationDisabledNotice": { + "type": "String", + "placeholders": {} + }, + "noMatrixServer": "{server1} 不是 Matrix 服務器,改用 {server2} 嗎?", + "@noMatrixServer": { + "type": "String", + "placeholders": { + "server1": { + "type": "String" + }, + "server2": { + "type": "String" + } + } + }, + "addToBundle": "新增到套組", + "@addToBundle": {}, + "bundleName": "套組名稱", + "@bundleName": {}, + "pleaseEnterYourPin": "請輸入您的密碼", + "@pleaseEnterYourPin": { + "type": "String", + "placeholders": {} + }, + "redactedByBecause": "由 {username} 編輯,原因:「{reason}」", + "@redactedByBecause": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + }, + "reason": { + "type": "String" + } + } + }, + "saveFile": "儲存檔案", + "@saveFile": { + "type": "String", + "placeholders": {} + }, + "publish": "發布", + "@publish": {}, + "hasKnocked": "🚪 {user} 敲門了", + "@hasKnocked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "unlockOldMessages": "解鎖舊消息", + "@unlockOldMessages": {}, + "callingAccountDetails": "允許 FluffyChat 使用原生 Android 撥號應用程式。", + "@callingAccountDetails": {}, + "noOtherDevicesFound": "未找到其他裝置", + "@noOtherDevicesFound": {}, + "noUsersFoundWithQuery": "很遺憾,找不到與「{query}」相符的使用者。請檢查是否有打錯字。", + "@noUsersFoundWithQuery": { + "type": "String", + "placeholders": { + "query": { + "type": "String" + } + } + }, + "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": { + "type": "int" + } + } + }, + "screenSharingDetail": "您正在 FuffyChat 中分享您的螢幕", + "@screenSharingDetail": {}, + "wrongPinEntered": "輸入的密碼錯誤! {seconds} 秒後再試一次......", + "@wrongPinEntered": { + "type": "String", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "archiveRoomDescription": "聊天室將被移動到存檔中。其他使用者將能看到您已離開聊天室。", + "@archiveRoomDescription": {}, + "banUserDescription": "該使用者將被禁止進入聊天室,直到他們被解封之前都無法再次進入聊天室。", + "@banUserDescription": {}, + "searchChatsRooms": "搜尋 #chats, @users...", + "@searchChatsRooms": {}, + "decline": "拒絕", + "@decline": {}, + "sendReadReceipts": "傳送已讀回條", + "@sendReadReceipts": {}, + "formattedMessagesDescription": "使用 markdown 顯示豐富的訊息內容,如粗體文字。", + "@formattedMessagesDescription": {}, + "verifyOtherDevice": "🔐 驗證其他裝置", + "@verifyOtherDevice": {}, + "youInvitedUser": "📩 您邀請了 {user}", + "@youInvitedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "pinMessage": "釘選到房間", + "@pinMessage": {}, + "youKicked": "👞 您踢出了 {user}", + "@youKicked": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "users": "使用者", + "@users": {}, + "pleaseChoose": "請選擇", + "@pleaseChoose": { + "type": "String", + "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": { + "type": "String" + } + } + }, + "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": "String", + "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": "String", + "description": "Usage hint for the command /me" + }, + "commandHint_plain": "傳送未格式化的文字", + "@commandHint_plain": { + "type": "String", + "description": "Usage hint for the command /plain" + }, + "commandHint_react": "以反應的形式傳送回覆", + "@commandHint_react": { + "type": "String", + "description": "Usage hint for the command /react" + }, + "createNewSpace": "新建空間", + "@createNewSpace": { + "type": "String", + "placeholders": {} + }, + "allRooms": "所有群組聊天室", + "@allRooms": { + "type": "String", + "placeholders": {} + }, + "chatPermissions": "聊天室權限", + "@chatPermissions": {}, + "customEmojisAndStickersBody": "新增或分享可在任何聊天室中使用的自訂表情符號或貼圖。", + "@customEmojisAndStickersBody": {}, + "errorObtainingLocation": "取得位置錯誤:{error}", + "@errorObtainingLocation": { + "type": "String", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "hideRedactedMessages": "隱藏被刪除的訊息", + "@hideRedactedMessages": {}, + "hideInvalidOrUnknownMessageFormats": "隱藏無效或未知的訊息格式", + "@hideInvalidOrUnknownMessageFormats": {}, + "dehydrateTorLong": "對 TOR 使用者,建議在關閉窗口前匯出會話。", + "@dehydrateTorLong": {}, + "hydrateTor": "TOR 使用者:匯入會話", + "@hydrateTor": {}, + "messagesStyle": "訊息樣式:", + "@messagesStyle": {}, + "shareInviteLink": "分享邀請網址", + "@shareInviteLink": {}, + "scanQrCode": "掃描 QR 碼", + "@scanQrCode": {}, + "openVideoCamera": "打開錄影", + "@openVideoCamera": { + "type": "String", + "placeholders": {} + }, + "oneClientLoggedOut": "您的一個客戶端已登出", + "@oneClientLoggedOut": {}, + "addAccount": "新增帳號", + "@addAccount": {}, + "editBundlesForAccount": "為此帳號編輯套組", + "@editBundlesForAccount": {}, + "openInMaps": "在地圖中打開", + "@openInMaps": { + "type": "String", + "placeholders": {} + }, + "serverRequiresEmail": "該伺服器需要驗證您的註冊電子郵件地址。", + "@serverRequiresEmail": {}, + "or": "或", + "@or": { + "type": "String", + "placeholders": {} + }, + "hideMemberChangesInPublicChatsBody": "若有人加入或離開公開聊天室,將不在聊天室時間軸顯示,以提升資訊可讀性。", + "@hideMemberChangesInPublicChatsBody": {}, + "overview": "概觀", + "@overview": {}, + "notifyMeFor": "通知我", + "@notifyMeFor": {}, + "passwordRecoverySettings": "恢復密碼設定", + "@passwordRecoverySettings": {}, + "redactedBy": "由 {username} 編輯", + "@redactedBy": { + "type": "String", + "placeholders": { + "username": { + "type": "String" + } + } + }, + "recoveryKey": "恢復金鑰", + "@recoveryKey": {}, + "spaceName": "空間名稱", + "@spaceName": { + "type": "String", + "placeholders": {} + }, + "synchronizingPleaseWait": "正在同步... 請稍候。", + "@synchronizingPleaseWait": { + "type": "String", + "placeholders": {} + }, + "messageInfo": "訊息資訊", + "@messageInfo": {}, + "removeFromSpace": "從空間中移除", + "@removeFromSpace": {}, + "addToSpaceDescription": "選擇一個空間將此聊天室加入。", + "@addToSpaceDescription": {}, + "pleaseEnterRecoveryKeyDescription": "要解鎖您的舊訊息,請輸入在之前的會話中生成的恢復密鑰。您的恢復密鑰不是您的密碼。", + "@pleaseEnterRecoveryKeyDescription": {}, + "videoWithSize": "影片({size})", + "@videoWithSize": { + "type": "String", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "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": { + "type": "String" + } + } + }, + "youHaveWithdrawnTheInvitationFor": "您已收回對 {user} 的邀請", + "@youHaveWithdrawnTheInvitationFor": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youInvitedBy": "📩 您被 {user} 邀請", + "@youInvitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youUnbannedUser": "您解除封鎖了 {user}", + "@youUnbannedUser": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "youInvitedToBy": "📩 您通過網址被邀請至:\n{alias}", + "@youInvitedToBy": { + "placeholders": { + "alias": { + "type": "String" + } + } + }, + "callingPermissions": "通話權限", + "@callingPermissions": {}, + "callingAccount": "通話帳戶", + "@callingAccount": {}, + "appearOnTop": "顯示在最上層", + "@appearOnTop": {}, + "newGroup": "新群組", + "@newGroup": {}, + "newSpace": "新空間", + "@newSpace": {}, + "numChats": "{number} 個聊天室", + "@numChats": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "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": "String", + "placeholders": { + "level": { + "type": "String" + } + } + }, + "leaveEmptyToClearStatus": "留空以清除您的狀態。", + "@leaveEmptyToClearStatus": {}, + "select": "選擇", + "@select": {}, + "files": "文件", + "@files": {}, + "forwardMessageTo": "將訊息轉發至 {roomName}?", + "@forwardMessageTo": { + "type": "String", + "placeholders": { + "roomName": { + "type": "String" + } + } + }, + "sendTypingNotificationsDescription": "聊天室中的其他參與者可以看到您正在輸入新訊息。", + "@sendTypingNotificationsDescription": {}, + "verifyOtherDeviceDescription": "當您驗證另一個裝置時,這些裝置可以交換密鑰,提升您的整體安全性。💪 當您開始驗證時,一個彈出視窗將在兩個裝置上的應用程式中出現。在那裡,您將看到一系列的表情符號或數字,您需要相互比較。在開始驗證之前最好有兩個裝置在手邊。🤳", + "@verifyOtherDeviceDescription": {}, + "acceptedKeyVerification": "{sender} 接受了密鑰驗證", + "@acceptedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "completedKeyVerification": "{sender} 完成了密鑰驗證", + "@completedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "isReadyForKeyVerification": "{sender} 已準備好進行密鑰驗證", + "@isReadyForKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "thereAreCountUsersBlocked": "目前有 {count} 名使用者被封鎖。", + "@thereAreCountUsersBlocked": { + "type": "String", + "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": "String", + "placeholders": {} + }, + "setAsCanonicalAlias": "設為主要別名", + "@setAsCanonicalAlias": { + "type": "String", + "placeholders": {} + }, + "setChatDescription": "設定聊天室描述", + "@setChatDescription": {}, + "groupName": "群組名稱", + "@groupName": {}, + "searchForUsers": "搜尋 @users...", + "@searchForUsers": {}, + "inviteGroupChat": "📨 邀請群組聊天室", + "@inviteGroupChat": {}, + "setTheme": "設定主題:", + "@setTheme": {}, + "knocking": "敲門", + "@knocking": {}, + "sessionLostBody": "您的會話已丟失。請將此錯誤報告給開發人員,網址為 {url}。錯誤訊息為:{error}", + "@sessionLostBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "swipeRightToLeftToReply": "向右滑至左以回覆", + "@swipeRightToLeftToReply": {}, + "hideRedactedMessagesBody": "如果有人收回一條訊息,該訊息將不再在聊天室中顯示。", + "@hideRedactedMessagesBody": {}, + "link": "網址", + "@link": {}, + "obtainingLocation": "正在取得位置…", + "@obtainingLocation": { + "type": "String", + "placeholders": {} + }, + "oopsPushError": "哎呀!設定推送通知時不幸發生錯誤。", + "@oopsPushError": { + "type": "String", + "placeholders": {} + }, + "removeYourAvatar": "移除您的頭像", + "@removeYourAvatar": { + "type": "String", + "placeholders": {} + }, + "singlesignon": "單一登入", + "@singlesignon": { + "type": "String", + "placeholders": {} + }, + "presenceStyle": "目前狀態:", + "@presenceStyle": { + "type": "String", + "placeholders": {} + }, + "presencesToggle": "顯示其他使用者的狀態訊息", + "@presencesToggle": { + "type": "String", + "placeholders": {} + }, + "spaceIsPublic": "空間是公開的", + "@spaceIsPublic": { + "type": "String", + "placeholders": {} + }, + "dismiss": "解散", + "@dismiss": {}, + "reactedWith": "{sender} 以 {reaction} 回應", + "@reactedWith": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + }, + "reaction": { + "type": "String" + } + } + }, + "confirmEventUnpin": "您確定要永久取消釘選該事件嗎?", + "@confirmEventUnpin": {}, + "switchToAccount": "切換到帳戶 {number}", + "@switchToAccount": { + "type": "number", + "placeholders": { + "number": { + "type": "String" + } + } + }, + "widgetEtherpad": "文字筆記", + "@widgetEtherpad": {}, + "noOneCanJoin": "沒有人可以加入", + "@noOneCanJoin": {}, + "userWouldLikeToChangeTheChat": "{user} 想要加入聊天室。", + "@userWouldLikeToChangeTheChat": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "noPublicLinkHasBeenCreatedYet": "尚未建立公開網址", + "@noPublicLinkHasBeenCreatedYet": {}, + "saveKeyManuallyDescription": "通過觸發系統分享對話框或剪貼板手動保存此密鑰。", + "@saveKeyManuallyDescription": {}, + "storeInAndroidKeystore": "存儲在 Android KeyStore", + "@storeInAndroidKeystore": {}, + "storeInAppleKeyChain": "存儲在 Apple KeyChain", + "@storeInAppleKeyChain": {}, + "foregroundServiceRunning": "當前景服務正在運行時會顯示此通知。", + "@foregroundServiceRunning": {}, + "screenSharingTitle": "螢幕分享", + "@screenSharingTitle": {}, + "wasDirectChatDisplayName": "空的聊天室(原名稱為 {oldDisplayName} )", + "@wasDirectChatDisplayName": { + "type": "String", + "placeholders": { + "oldDisplayName": { + "type": "String" + } + } + }, + "otherCallingPermissions": "麥克風、相機和其他 FluffyChat 權限", + "@otherCallingPermissions": {}, + "disableEncryptionWarning": "出於安全原因,您不能在之前已加密的聊天室中停用加密。", + "@disableEncryptionWarning": {}, + "deviceKeys": "裝置密鑰:", + "@deviceKeys": {}, + "fileIsTooBigForServer": "無法發送!該伺服器僅支援最大到 {max} 的附件。", + "@fileIsTooBigForServer": {}, + "fileHasBeenSavedAt": "文件已保存在 {path}", + "@fileHasBeenSavedAt": { + "type": "String", + "placeholders": { + "path": { + "type": "String" + } + } + }, + "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": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "startedKeyVerification": "{sender} 開始了密鑰驗證", + "@startedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "transparent": "透明", + "@transparent": {}, + "incomingMessages": "收到的訊息", + "@incomingMessages": {}, + "databaseMigrationTitle": "資料庫已最佳化", + "@databaseMigrationTitle": {}, + "restoreSessionBody": "應用程式現在嘗試從備份中恢復您的會話。請將此錯誤報告給開發人員,網址為 {url}。錯誤訊息為:{error}", + "@restoreSessionBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "stickers": "貼圖", + "@stickers": {}, + "joinSpace": "加入空間", + "@joinSpace": {}, + "noMoreChatsFound": "沒有更多聊天室了...", + "@noMoreChatsFound": {}, + "commandHint_op": "設定給定使用者的權限等級(預設:50)", + "@commandHint_op": { + "type": "String", + "description": "Usage hint for the command /op" + }, + "customEmojisAndStickers": "自訂表情符號和貼圖", + "@customEmojisAndStickers": {}, + "locationPermissionDeniedNotice": "位置權限被拒絕。請授予它們以能夠分享您的位置。", + "@locationPermissionDeniedNotice": { + "type": "String", + "placeholders": {} + }, + "inviteContactToGroupQuestion": "您想邀請 {contact} 加入 「{groupName}」 聊天室嗎?", + "@inviteContactToGroupQuestion": {}, + "enableMultiAccounts": "(實驗性功能)在此裝置上啟用多個帳號", + "@enableMultiAccounts": {}, + "hideMemberChangesInPublicChats": "在公開聊天室中隱藏成員變動", + "@hideMemberChangesInPublicChats": {}, + "recoveryKeyLost": "遺失恢復金鑰?", + "@recoveryKeyLost": {}, + "sendAsText": "以文字傳送", + "@sendAsText": { + "type": "String" + }, + "sendSticker": "傳送貼圖", + "@sendSticker": { + "type": "String", + "placeholders": {} + }, + "unverified": "尚未驗證", + "@unverified": {}, + "time": "時間", + "@time": {}, + "chatCanBeDiscoveredViaSearchOnServer": "可以透過在 {server} 上的搜尋發現聊天室", + "@chatCanBeDiscoveredViaSearchOnServer": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "commandHint_sendraw": "傳送原始 json", + "@commandHint_sendraw": {}, + "newPassword": "新密碼", + "@newPassword": {}, + "createNewAddress": "建立新地址", + "@createNewAddress": {}, + "searchIn": "在聊天室「{chat}」中搜尋......", + "@searchIn": { + "type": "String", + "placeholders": { + "chat": { + "type": "String" + } + } + }, + "searchMore": "搜尋更多......", + "@searchMore": {}, + "gallery": "畫廊", + "@gallery": {}, + "databaseBuildErrorBody": "無法建立 SQLite 資料庫。應用程式目前嘗試使用遺留資料庫。請將此錯誤報告給開發人員,網址為 {url}。錯誤訊息為:{error}", + "@databaseBuildErrorBody": { + "type": "String", + "placeholders": { + "url": { + "type": "String" + }, + "error": { + "type": "String" + } + } + }, + "sendReadReceiptsDescription": "聊天室中的其他參與者可以看到您已讀取一條訊息。", + "@sendReadReceiptsDescription": {}, + "formattedMessages": "格式化訊息", + "@formattedMessages": {}, + "restricted": "受限", + "@restricted": {}, + "goToSpace": "前往空間:{space}", + "@goToSpace": { + "type": "String", + "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": "String", + "placeholders": { + "provider": { + "type": "String" + } + } + }, + "invalidInput": "無效的輸入!", + "@invalidInput": {}, + "verifyOtherUser": "🔐 驗證其他使用者", + "@verifyOtherUser": {}, + "verifyOtherUserDescription": "如果您驗證了另一個使用者,您可以確定您真正與誰通信。💪\n\n當您開始驗證時,您和另一個使用者將在應用程式中看到一個彈出視窗。在那裡,您將看到一系列的表情符號或數字,您需要相互比較。\n\n最好的方式是見面或開始視訊通話。👭", + "@verifyOtherUserDescription": {}, + "requestedKeyVerification": "{sender} 請求了密鑰驗證", + "@requestedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "commandHint_ignore": "無視已提供的 Matrix ID", + "@commandHint_ignore": {}, + "countChatsAndCountParticipants": "{chats} 個聊天室和 {participants} 位參與者", + "@countChatsAndCountParticipants": { + "type": "String", + "placeholders": { + "chats": { + "type": "int" + }, + "participants": { + "type": "int" + } + } + }, + "joinedChats": "已加入的聊天室", + "@joinedChats": {}, + "unread": "未讀", + "@unread": {}, + "space": "空間", + "@space": {}, + "spaces": "空間", + "@spaces": {}, + "start": "開始", + "@start": {}, + "openChat": "開啟聊天室", + "@openChat": {}, + "unreadChatsInApp": "{appname}:{unread} 未讀聊天室", + "@unreadChatsInApp": { + "type": "String", + "placeholders": { + "appname": { + "type": "String" + }, + "unread": { + "type": "String" + } + } + }, + "adminLevel": "{level} - 管理員", + "@adminLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "userLevel": "{level} - 用戶", + "@userLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "moderatorLevel": "{level} - 管理員", + "@moderatorLevel": { + "type": "String", + "placeholders": { + "level": { + "type": "int" + } + } + }, + "invitedBy": "📩 由 {user} 邀請", + "@invitedBy": { + "placeholders": { + "user": { + "type": "String" + } + } + }, + "doesNotSeemToBeAValidHomeserver": "似乎不是能匹配的歸屬伺服器。伺服器域名打錯了嗎?", + "@doesNotSeemToBeAValidHomeserver": {}, + "noticeChatBackupDeviceVerification": "注意:當您將所有裝置連線到聊天備份時,它們會自動驗證。", + "@noticeChatBackupDeviceVerification": {}, + "sendCanceled": "傳送取消", + "@sendCanceled": {}, + "changelog": "變更日誌", + "@changelog": {}, + "changeTheCanonicalRoomAlias": "變更公開聊天室的主要地址", + "@changeTheCanonicalRoomAlias": {}, + "sendImages": "傳送{count}張圖片", + "@sendImages": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "loginWithMatrixId": "以Matrix-ID登入", + "@loginWithMatrixId": {}, + "inviteOtherUsers": "邀請其他用戶進入本聊天", + "@inviteOtherUsers": {}, + "sendRoomNotifications": "傳送一條 @room 群提醒", + "@sendRoomNotifications": {}, + "updateInstalled": "🎉已成功安裝{version}版本!", + "@updateInstalled": { + "type": "String", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "oneOfYourDevicesIsNotVerified": "你的其中一個裝置尚未驗證", + "@oneOfYourDevicesIsNotVerified": {}, + "chatPermissionsDescription": "定義此聊天中某些操作需要哪個權限等級。 權限等級0、50和100通常代表使用者、版主和管理員,但任何分級都是可能的。", + "@chatPermissionsDescription": {}, + "changeGeneralChatSettings": "變更一般聊天設定", + "@changeGeneralChatSettings": {}, + "manageAccount": "帳號管理", + "@manageAccount": {}, + "changeTheChatPermissions": "變更聊天室權限", + "@changeTheChatPermissions": {}, + "changeTheVisibilityOfChatHistory": "變更過往聊天記錄可見度", + "@changeTheVisibilityOfChatHistory": {}, + "homeserverDescription": "您的所有資料都儲存在歸屬伺服器上,就像電子郵件提供商一樣。 您可以選擇要使用的歸屬伺服器,同時您仍然可以與每個人溝通。 請訪問https://matrix.org瞭解更多資訊。", + "@homeserverDescription": {}, + "sendingAttachment": "附件傳送中…", + "@sendingAttachment": {}, + "compressVideo": "影片壓縮中…", + "@compressVideo": {}, + "opacity": "不透明度:", + "@opacity": {}, + "aboutHomeserver": "關於{homeserver}", + "@aboutHomeserver": { + "type": "String", + "placeholders": { + "homeserver": { + "type": "String" + } + } + }, + "noChatsFoundHere": "還沒開始聊天嗎?點擊下方按鈕找個人聊聊吧⤵", + "@noChatsFoundHere": {}, + "changeTheDescriptionOfTheGroup": "變更聊天室說明", + "@changeTheDescriptionOfTheGroup": {}, + "discoverHomeservers": "探索歸屬伺服器", + "@discoverHomeservers": {}, + "whatIsAHomeserver": "什麼是歸屬伺服器?", + "@whatIsAHomeserver": {}, + "calculatingFileSize": "正在計算檔案大小…", + "@calculatingFileSize": {}, + "prepareSendingAttachment": "準備傳送附件…", + "@prepareSendingAttachment": {}, + "generatingVideoThumbnail": "生成影片縮圖中…", + "@generatingVideoThumbnail": {}, + "sendingAttachmentCountOfCount": "附件傳送中 {index}/{length}…", + "@sendingAttachmentCountOfCount": { + "type": "integer", + "placeholders": { + "index": { + "type": "int" + }, + "length": { + "type": "int" + } + } + }, + "serverLimitReached": "已達伺服器上限! 請稍等{seconds}秒…", + "@serverLimitReached": { + "type": "integer", + "placeholders": { + "seconds": { + "type": "int" + } + } + }, + "welcomeText": "嘿,嘿👋這是FluffyChat。 您可以登入任何與https://matrix.org相容的歸屬伺服器後和任何人聊天。 這是一個巨大的去中心化訊息網路!", + "@welcomeText": {}, + "setWallpaper": "設定背景樣式", + "@setWallpaper": {}, + "noContactInformationProvided": "伺服器沒有提供任何有效的聯絡資訊", + "@noContactInformationProvided": {}, + "contactServerAdmin": "聯繫伺服器管理員", + "@contactServerAdmin": {}, + "contactServerSecurity": "聯繫伺服器安管", + "@contactServerSecurity": {}, + "continueText": "繼續", + "@continueText": {}, + "blur": "模糊:", + "@blur": {}, + "synchronizingPleaseWaitCounter": " 同步中… ({percentage}%)", + "@synchronizingPleaseWaitCounter": { + "type": "String", + "placeholders": { + "percentage": { + "type": "String" + } + } + }, + "contentNotificationSettings": "內容通知設定", + "@contentNotificationSettings": {}, + "generalNotificationSettings": "常規通知設定", + "@generalNotificationSettings": {}, + "roomNotificationSettings": "聊天室通知設定", + "@roomNotificationSettings": {}, + "userSpecificNotificationSettings": "用戶特定通知設定", + "@userSpecificNotificationSettings": {}, + "otherNotificationSettings": "其他通知設定", + "@otherNotificationSettings": {}, + "notificationRuleContainsUserName": "包含用户名稱", + "@notificationRuleContainsUserName": {}, + "notificationRuleContainsUserNameDescription": "當訊息帶有用户名稱時通知用戶。", + "@notificationRuleContainsUserNameDescription": {}, + "notificationRuleMaster": "靜音所有通知", + "@notificationRuleMaster": {}, + "notificationRuleMasterDescription": "覆蓋所有其他規則並禁止所有通知。", + "@notificationRuleMasterDescription": {}, + "notificationRuleInviteForMe": "邀請我", + "@notificationRuleInviteForMe": {}, + "notificationRuleSuppressNoticesDescription": "隱藏來自bot等的自動化消息。", + "@notificationRuleSuppressNoticesDescription": {}, + "notificationRuleSuppressNotices": "隱藏自動化消息", + "@notificationRuleSuppressNotices": {}, + "notificationRuleMemberEvent": "成員事件", + "@notificationRuleMemberEvent": {}, + "notificationRuleMemberEventDescription": "隱藏成員事件的通知。", + "@notificationRuleMemberEventDescription": {}, + "notificationRuleIsUserMention": "用户提及", + "@notificationRuleIsUserMention": {}, + "notificationRuleInviteForMeDescription": "當用户被邀請到聊天室時,通知他們。", + "@notificationRuleInviteForMeDescription": {}, + "commandHint_roomupgrade": "升級此聊天室至指定版本", + "@commandHint_roomupgrade": {}, + "serverInformation": "伺服器資訊 :", + "@serverInformation": {}, + "name": "名稱", + "@name": {}, + "website": "網站", + "@website": {}, + "compress": "壓縮", + "@compress": {}, + "newChatRequest": "📩 新的聊天邀請", + "@newChatRequest": {}, + "enterNewChat": "進入新聊天室", + "@enterNewChat": {}, + "version": "版本", + "@version": {}, + "unableToJoinChat": "無法加入聊天室。對話可能以被其他方結束。", + "@unableToJoinChat": {}, + "appWantsToUseForLogin": "使用「{server} 」伺服器登入", + "@appWantsToUseForLogin": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "italicText": "斜體", + "@italicText": {}, + "boldText": "粗體", + "@boldText": {}, + "strikeThrough": "刪除線", + "@strikeThrough": {}, + "pleaseFillOut": "請填充", + "@pleaseFillOut": {}, + "invalidUrl": "無效 url", + "@invalidUrl": {}, + "appWantsToUseForLoginDescription": "你特此允許該應用程式和網站分享關於你的信息。", + "@appWantsToUseForLoginDescription": {}, + "open": "打開", + "@open": {}, + "waitingForServer": "等待伺服器中...", + "@waitingForServer": {}, + "appIntroduction": "FluffyChat 讓你和你的朋友跨越工具聊天。在 https://matrix.org 了解更多或*繼續*。", + "@appIntroduction": {}, + "previous": "上一個", + "@previous": {}, + "otherPartyNotLoggedIn": "對方現未登入,未能接收訊息 !", + "@otherPartyNotLoggedIn": {}, + "supportPage": "幫助頁面", + "@supportPage": {}, + "addLink": "插入連結", + "@addLink": {}, + "notificationRuleContainsDisplayName": "包含顯示名稱", + "@notificationRuleContainsDisplayName": {}, + "notificationRuleRoomnotif": "聊天室通知", + "@notificationRuleRoomnotif": {}, + "notificationRuleIsRoomMentionDescription": "當有聊天室提及時通知用户。", + "@notificationRuleIsRoomMentionDescription": {}, + "notificationRuleRoomOneToOneDescription": "在一對一聊天室中通知用户收到訊息。", + "@notificationRuleRoomOneToOneDescription": {}, + "notificationRuleServerAcl": "隱藏伺服器 ACL 事件", + "@notificationRuleServerAcl": {}, + "notificationRuleContainsDisplayNameDescription": "當訊息包含用户的顯示名稱時通知用户。", + "@notificationRuleContainsDisplayNameDescription": {}, + "notificationRuleIsRoomMention": "聊天室提及", + "@notificationRuleIsRoomMention": {}, + "notificationRuleRoomnotifDescription": "當訊息包含 \"@room\" 時通知用户。", + "@notificationRuleRoomnotifDescription": {}, + "notificationRuleTombstone": "墓碑", + "@notificationRuleTombstone": {}, + "notificationRuleCallDescription": "通知用户有來電。", + "@notificationRuleCallDescription": {}, + "notificationRuleEncryptedRoomOneToOne": "一對一加密聊天室", + "@notificationRuleEncryptedRoomOneToOne": {}, + "notificationRuleEncryptedRoomOneToOneDescription": "通知用户一對一加密聊天室的訊息。", + "@notificationRuleEncryptedRoomOneToOneDescription": {}, + "notificationRuleRoomOneToOne": "一對一聊天室", + "@notificationRuleRoomOneToOne": {}, + "notificationRuleMessage": "訊息", + "@notificationRuleMessage": {}, + "notificationRuleServerAclDescription": "隱藏伺服器 ACL 事件的通知。", + "@notificationRuleServerAclDescription": {}, + "notificationRuleMessageDescription": "通知用户一般訊息。", + "@notificationRuleMessageDescription": {}, + "notificationRuleEncrypted": "已加密", + "@notificationRuleEncrypted": {}, + "notificationRuleEncryptedDescription": "在已加密房間內通知用户訊息。", + "@notificationRuleEncryptedDescription": {}, + "notificationRuleJitsi": "Jitsi", + "@notificationRuleJitsi": {}, + "notificationRuleJitsiDescription": "通知用户 Jitsi 小部件事件。", + "@notificationRuleJitsiDescription": {}, + "unknownPushRule": "未知推送規則 '{rule}'", + "@unknownPushRule": { + "type": "String", + "placeholders": { + "rule": { + "type": "String" + } + } + }, + "more": "更多", + "@more": {}, + "deletePushRuleCanNotBeUndone": "刪除此通知設定的操作無法復原。", + "@deletePushRuleCanNotBeUndone": {}, + "shareKeysWith": "與哪些設備共享金鑰…", + "@shareKeysWith": {}, + "shareKeysWithDescription": "選擇應該信任的裝置,並允許它們在加密聊天中讀取您的訊息?", + "@shareKeysWithDescription": {}, + "allDevices": "所有裝置", + "@allDevices": {}, + "crossVerifiedDevices": "經交叉驗證的裝置", + "@crossVerifiedDevices": {}, + "crossVerifiedDevicesIfEnabled": "交叉驗證裝置(如啟用)", + "@crossVerifiedDevicesIfEnabled": {}, + "setCustomPermissionLevel": "設置自定義權限等級", + "@setCustomPermissionLevel": {}, + "setPermissionsLevelDescription": "請在下方選擇預先定義的角色,或輸入在 0 到 100 之間的自訂權限等級。", + "@setPermissionsLevelDescription": {}, + "recordAVideo": "錄製影像", + "@recordAVideo": {}, + "takeAPhoto": "拍攝照片", + "@takeAPhoto": {}, + "optionalMessage": "(可選)訊息...", + "@optionalMessage": {}, + "notSupportedOnThisDevice": "此裝置不受支援", + "@notSupportedOnThisDevice": {}, + "ignoreUser": "忽略用户", + "@ignoreUser": {}, + "normalUser": "正常用户", + "@normalUser": {}, + "notificationRuleTombstoneDescription": "通知用户有關房間解散的訊息。", + "@notificationRuleTombstoneDescription": {}, + "notificationRuleReaction": "心情回應", + "@notificationRuleReaction": {}, + "notificationRuleReactionDescription": "關閉心情回應通知。", + "@notificationRuleReactionDescription": {}, + "notificationRuleRoomServerAcl": "聊天室伺服器 ACL", + "@notificationRuleRoomServerAcl": {}, + "notificationRuleRoomServerAclDescription": "關閉聊天室伺服器存取控制清單 (ACL) 的通知。", + "@notificationRuleRoomServerAclDescription": {}, + "notificationRuleSuppressEdits": "隱藏編輯", + "@notificationRuleSuppressEdits": {}, + "notificationRuleSuppressEditsDescription": "隱藏已編輯訊息通知。", + "@notificationRuleSuppressEditsDescription": {}, + "notificationRuleCall": "來電", + "@notificationRuleCall": {}, + "verifiedDevicesOnly": "僅限已驗證的裝置", + "@verifiedDevicesOnly": {}, + "approve": "核准", + "@approve": {}, + "youHaveKnocked": "您已請求加入", + "@youHaveKnocked": {}, + "pleaseWaitUntilInvited": "直到聊天室裡有人邀請您前,請等候。", + "@pleaseWaitUntilInvited": {}, + "notificationRuleIsUserMentionDescription": "被@時通知他們。", + "@notificationRuleIsUserMentionDescription": {}, + "countInvited": "已邀請{count}位", + "@countInvited": { + "type": "String", + "placeholders": { + "count": { + "type": "int" + } + } + } +} diff --git a/lib/main.dart b/lib/main.dart new file mode 100644 index 0000000..9f14bae --- /dev/null +++ b/lib/main.dart @@ -0,0 +1,122 @@ +import 'dart:isolate'; +import 'dart:ui'; + +import 'package:flutter/material.dart'; + +import 'package:collection/collection.dart'; +import 'package:flutter_secure_storage/flutter_secure_storage.dart'; +import 'package:flutter_vodozemac/flutter_vodozemac.dart' as vod; +import 'package:matrix/matrix.dart'; +import 'package:shared_preferences/shared_preferences.dart'; + +import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/utils/client_manager.dart'; +import 'package:fluffychat/utils/notification_background_handler.dart'; +import 'package:fluffychat/utils/platform_infos.dart'; +import 'config/setting_keys.dart'; +import 'utils/background_push.dart'; +import 'widgets/fluffy_chat_app.dart'; + +ReceivePort? mainIsolateReceivePort; + +void main() async { + if (PlatformInfos.isAndroid) { + final port = mainIsolateReceivePort = ReceivePort(); + IsolateNameServer.removePortNameMapping(AppConfig.mainIsolatePortName); + IsolateNameServer.registerPortWithName( + port.sendPort, + AppConfig.mainIsolatePortName, + ); + await waitForPushIsolateDone(); + } + + // Our background push shared isolate accesses flutter-internal things very early in the startup proccess + // To make sure that the parts of flutter needed are started up already, we need to ensure that the + // widget bindings are initialized already. + WidgetsFlutterBinding.ensureInitialized(); + + final store = await AppSettings.init(); + Logs().i('Welcome to ${AppSettings.applicationName.value} <3'); + + await vod.init(wasmPath: './assets/assets/vodozemac/'); + + Logs().nativeColors = !PlatformInfos.isIOS; + final clients = await ClientManager.getClients(store: store); + + // If the app starts in detached mode, we assume that it is in + // background fetch mode for processing push notifications. This is + // currently only supported on Android. + if (PlatformInfos.isAndroid && + AppLifecycleState.detached == WidgetsBinding.instance.lifecycleState) { + // Do not send online presences when app is in background fetch mode. + for (final client in clients) { + client.backgroundSync = false; + client.syncPresence = PresenceType.offline; + } + + // In the background fetch mode we do not want to waste ressources with + // starting the Flutter engine but process incoming push notifications. + BackgroundPush.clientOnly(clients.first); + // To start the flutter engine afterwards we add an custom observer. + WidgetsBinding.instance.addObserver(AppStarter(clients, store)); + Logs().i( + '${AppSettings.applicationName.value} started in background-fetch mode. No GUI will be created unless the app is no longer detached.', + ); + return; + } + + // Started in foreground mode. + Logs().i( + '${AppSettings.applicationName.value} started in foreground mode. Rendering GUI...', + ); + await startGui(clients, store); +} + +/// Fetch the pincode for the applock and start the flutter engine. +Future startGui(List clients, SharedPreferences store) async { + // Fetch the pin for the applock if existing for mobile applications. + String? pin; + if (PlatformInfos.isMobile) { + try { + pin = + await const FlutterSecureStorage().read(key: 'chat.fluffy.app_lock'); + } catch (e, s) { + Logs().d('Unable to read PIN from Secure storage', e, s); + } + } + + // Preload first client + final firstClient = clients.firstOrNull; + await firstClient?.roomsLoading; + await firstClient?.accountDataLoading; + + runApp(FluffyChatApp(clients: clients, pincode: pin, store: store)); +} + +/// Watches the lifecycle changes to start the application when it +/// is no longer detached. +class AppStarter with WidgetsBindingObserver { + final List clients; + final SharedPreferences store; + bool guiStarted = false; + + AppStarter(this.clients, this.store); + + @override + void didChangeAppLifecycleState(AppLifecycleState state) { + if (guiStarted) return; + if (state == AppLifecycleState.detached) return; + + Logs().i( + '${AppSettings.applicationName.value} switches from the detached background-fetch mode to ${state.name} mode. Rendering GUI...', + ); + // Switching to foreground mode needs to reenable send online sync presence. + for (final client in clients) { + client.backgroundSync = true; + client.syncPresence = PresenceType.online; + } + startGui(clients, store); + // We must make sure that the GUI is only started once. + guiStarted = true; + } +} diff --git a/lib/pages/archive/archive.dart b/lib/pages/archive/archive.dart new file mode 100644 index 0000000..a39840a --- /dev/null +++ b/lib/pages/archive/archive.dart @@ -0,0 +1,71 @@ +import 'package:flutter/material.dart'; + +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/archive/archive_view.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_ok_cancel_alert_dialog.dart'; +import 'package:fluffychat/widgets/future_loading_dialog.dart'; +import 'package:fluffychat/widgets/matrix.dart'; + +class Archive extends StatefulWidget { + const Archive({super.key}); + + @override + ArchiveController createState() => ArchiveController(); +} + +class ArchiveController extends State { + List archive = []; + + Future> getArchive(BuildContext context) async { + if (archive.isNotEmpty) return archive; + return archive = await Matrix.of(context).client.loadArchive(); + } + + void forgetRoomAction(int i) async { + await showFutureLoadingDialog( + context: context, + future: () async { + Logs().v('Forget room ${archive.last.getLocalizedDisplayname()}'); + await archive[i].forget(); + archive.removeAt(i); + }, + ); + setState(() {}); + } + + void forgetAllAction() async { + final archive = this.archive; + final client = Matrix.of(context).client; + if (archive.isEmpty) return; + if (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).clearArchive, + ) != + OkCancelResult.ok) { + return; + } + await showFutureLoadingDialog( + context: context, + futureWithProgress: (onProgress) async { + final count = archive.length; + while (archive.isNotEmpty) { + onProgress(1 - (archive.length / count)); + Logs().v('Forget room ${archive.last.getLocalizedDisplayname()}'); + await archive.last.forget(); + archive.removeLast(); + } + }, + ); + client.clearArchivesFromCache(); + setState(() {}); + } + + @override + Widget build(BuildContext context) => ArchiveView(this); +} diff --git a/lib/pages/archive/archive_view.dart b/lib/pages/archive/archive_view.dart new file mode 100644 index 0000000..f9446c2 --- /dev/null +++ b/lib/pages/archive/archive_view.dart @@ -0,0 +1,74 @@ +import 'package:flutter/material.dart'; + +import 'package:go_router/go_router.dart'; +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/archive/archive.dart'; +import 'package:fluffychat/pages/chat_list/chat_list_item.dart'; +import 'package:fluffychat/widgets/layouts/max_width_body.dart'; + +class ArchiveView extends StatelessWidget { + final ArchiveController controller; + + const ArchiveView(this.controller, {super.key}); + + @override + Widget build(BuildContext context) { + return FutureBuilder>( + future: controller.getArchive(context), + builder: (BuildContext context, snapshot) => Scaffold( + appBar: AppBar( + leading: const Center(child: BackButton()), + title: Text(L10n.of(context).archive), + actions: [ + if (snapshot.data?.isNotEmpty ?? false) + Padding( + padding: const EdgeInsets.all(8.0), + child: TextButton.icon( + onPressed: controller.forgetAllAction, + label: Text(L10n.of(context).clearArchive), + icon: const Icon(Icons.cleaning_services_outlined), + ), + ), + ], + ), + body: MaxWidthBody( + withScrolling: false, + child: Builder( + builder: (BuildContext context) { + if (snapshot.hasError) { + return Center( + child: Text( + L10n.of(context).oopsSomethingWentWrong, + textAlign: TextAlign.center, + ), + ); + } + if (!snapshot.hasData) { + return const Center( + child: CircularProgressIndicator.adaptive(strokeWidth: 2), + ); + } else { + if (controller.archive.isEmpty) { + return const Center( + child: Icon(Icons.archive_outlined, size: 80), + ); + } + return ListView.builder( + itemCount: controller.archive.length, + itemBuilder: (BuildContext context, int i) => ChatListItem( + controller.archive[i], + onForget: () => controller.forgetRoomAction(i), + onTap: () => context + .go('/rooms/archive/${controller.archive[i].id}'), + ), + ); + } + }, + ), + ), + ), + ); + } +} diff --git a/lib/pages/bootstrap/bootstrap_dialog.dart b/lib/pages/bootstrap/bootstrap_dialog.dart new file mode 100644 index 0000000..a303c35 --- /dev/null +++ b/lib/pages/bootstrap/bootstrap_dialog.dart @@ -0,0 +1,510 @@ +import 'package:flutter/material.dart'; + +import 'package:flutter_secure_storage/flutter_secure_storage.dart'; +import 'package:matrix/encryption.dart'; +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/config/themes.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/error_reporter.dart'; +import 'package:fluffychat/utils/fluffy_share.dart'; +import 'package:fluffychat/utils/localized_exception_extension.dart'; +import 'package:fluffychat/utils/platform_infos.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_ok_cancel_alert_dialog.dart'; +import 'package:fluffychat/widgets/future_loading_dialog.dart'; +import '../../utils/adaptive_bottom_sheet.dart'; +import '../key_verification/key_verification_dialog.dart'; + +class BootstrapDialog extends StatefulWidget { + final bool wipe; + final Client client; + + const BootstrapDialog({ + super.key, + this.wipe = false, + required this.client, + }); + + Future show(BuildContext context) => showAdaptiveBottomSheet( + context: context, + builder: (context) => this, + ); + + @override + BootstrapDialogState createState() => BootstrapDialogState(); +} + +class BootstrapDialogState extends State { + final TextEditingController _recoveryKeyTextEditingController = + TextEditingController(); + + late Bootstrap bootstrap; + + String? _recoveryKeyInputError; + + bool _recoveryKeyInputLoading = false; + + String? titleText; + + bool _recoveryKeyStored = false; + bool _recoveryKeyCopied = false; + + bool? _storeInSecureStorage = false; + + bool? _wipe; + + String get _secureStorageKey => + 'ssss_recovery_key_${bootstrap.client.userID}'; + + bool get _supportsSecureStorage => + PlatformInfos.isMobile || PlatformInfos.isDesktop; + + String _getSecureStorageLocalizedName() { + if (PlatformInfos.isAndroid) { + return L10n.of(context).storeInAndroidKeystore; + } + if (PlatformInfos.isIOS || PlatformInfos.isMacOS) { + return L10n.of(context).storeInAppleKeyChain; + } + return L10n.of(context).storeSecurlyOnThisDevice; + } + + @override + void initState() { + _createBootstrap(widget.wipe); + super.initState(); + } + + void _createBootstrap(bool wipe) async { + _wipe = wipe; + titleText = null; + _recoveryKeyStored = false; + bootstrap = + widget.client.encryption!.bootstrap(onUpdate: (_) => setState(() {})); + final key = await const FlutterSecureStorage().read(key: _secureStorageKey); + if (key == null) return; + _recoveryKeyTextEditingController.text = key; + } + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + _wipe ??= widget.wipe; + final buttons = []; + Widget body = const CircularProgressIndicator.adaptive(); + titleText = L10n.of(context).loadingPleaseWait; + + if (bootstrap.newSsssKey?.recoveryKey != null && + _recoveryKeyStored == false) { + final key = bootstrap.newSsssKey!.recoveryKey; + titleText = L10n.of(context).recoveryKey; + return Scaffold( + appBar: AppBar( + centerTitle: true, + leading: IconButton( + icon: const Icon(Icons.close), + onPressed: Navigator.of(context).pop, + ), + title: Text(L10n.of(context).recoveryKey), + ), + body: Center( + child: ConstrainedBox( + constraints: + const BoxConstraints(maxWidth: FluffyThemes.columnWidth * 1.5), + child: ListView( + padding: const EdgeInsets.all(16.0), + children: [ + ListTile( + contentPadding: const EdgeInsets.symmetric(horizontal: 8.0), + trailing: CircleAvatar( + backgroundColor: Colors.transparent, + child: Icon( + Icons.info_outlined, + color: theme.colorScheme.primary, + ), + ), + subtitle: Text(L10n.of(context).chatBackupDescription), + ), + const Divider( + height: 32, + thickness: 1, + ), + TextField( + minLines: 2, + maxLines: 4, + readOnly: true, + style: const TextStyle(fontFamily: 'RobotoMono'), + controller: TextEditingController(text: key), + decoration: const InputDecoration( + contentPadding: EdgeInsets.all(16), + suffixIcon: Icon(Icons.key_outlined), + ), + ), + const SizedBox(height: 16), + if (_supportsSecureStorage) + CheckboxListTile.adaptive( + contentPadding: const EdgeInsets.symmetric(horizontal: 8.0), + value: _storeInSecureStorage, + activeColor: theme.colorScheme.primary, + onChanged: (b) { + setState(() { + _storeInSecureStorage = b; + }); + }, + title: Text(_getSecureStorageLocalizedName()), + subtitle: + Text(L10n.of(context).storeInSecureStorageDescription), + ), + const SizedBox(height: 16), + CheckboxListTile.adaptive( + contentPadding: const EdgeInsets.symmetric(horizontal: 8.0), + value: _recoveryKeyCopied, + activeColor: theme.colorScheme.primary, + onChanged: (b) { + FluffyShare.share(key!, context); + setState(() => _recoveryKeyCopied = true); + }, + title: Text(L10n.of(context).copyToClipboard), + subtitle: Text(L10n.of(context).saveKeyManuallyDescription), + ), + const SizedBox(height: 16), + ElevatedButton.icon( + icon: const Icon(Icons.check_outlined), + label: Text(L10n.of(context).next), + onPressed: + (_recoveryKeyCopied || _storeInSecureStorage == true) + ? () { + if (_storeInSecureStorage == true) { + const FlutterSecureStorage().write( + key: _secureStorageKey, + value: key, + ); + } + setState(() => _recoveryKeyStored = true); + } + : null, + ), + ], + ), + ), + ), + ); + } else { + switch (bootstrap.state) { + case BootstrapState.loading: + break; + case BootstrapState.askWipeSsss: + WidgetsBinding.instance.addPostFrameCallback( + (_) => bootstrap.wipeSsss(_wipe!), + ); + break; + case BootstrapState.askBadSsss: + WidgetsBinding.instance.addPostFrameCallback( + (_) => bootstrap.ignoreBadSecrets(true), + ); + break; + case BootstrapState.askUseExistingSsss: + WidgetsBinding.instance.addPostFrameCallback( + (_) => bootstrap.useExistingSsss(!_wipe!), + ); + break; + case BootstrapState.askUnlockSsss: + WidgetsBinding.instance.addPostFrameCallback( + (_) => bootstrap.unlockedSsss(), + ); + break; + case BootstrapState.askNewSsss: + WidgetsBinding.instance.addPostFrameCallback( + (_) => bootstrap.newSsss(), + ); + break; + case BootstrapState.openExistingSsss: + _recoveryKeyStored = true; + return Scaffold( + appBar: AppBar( + centerTitle: true, + leading: IconButton( + icon: const Icon(Icons.close), + onPressed: Navigator.of(context).pop, + ), + title: Text(L10n.of(context).chatBackup), + ), + body: Center( + child: ConstrainedBox( + constraints: const BoxConstraints( + maxWidth: FluffyThemes.columnWidth * 1.5, + ), + child: ListView( + padding: const EdgeInsets.all(16.0), + children: [ + ListTile( + contentPadding: + const EdgeInsets.symmetric(horizontal: 8.0), + trailing: Icon( + Icons.info_outlined, + color: theme.colorScheme.primary, + ), + subtitle: Text( + L10n.of(context).pleaseEnterRecoveryKeyDescription, + ), + ), + const Divider(height: 32), + TextField( + minLines: 1, + maxLines: 2, + autocorrect: false, + readOnly: _recoveryKeyInputLoading, + autofillHints: _recoveryKeyInputLoading + ? null + : [AutofillHints.password], + controller: _recoveryKeyTextEditingController, + style: const TextStyle(fontFamily: 'RobotoMono'), + decoration: InputDecoration( + contentPadding: const EdgeInsets.all(16), + hintStyle: TextStyle( + fontFamily: theme.textTheme.bodyLarge?.fontFamily, + ), + prefixIcon: const Icon(Icons.key_outlined), + labelText: L10n.of(context).recoveryKey, + hintText: 'Es** **** **** ****', + errorText: _recoveryKeyInputError, + errorMaxLines: 2, + ), + ), + const SizedBox(height: 16), + ElevatedButton.icon( + style: ElevatedButton.styleFrom( + foregroundColor: theme.colorScheme.onPrimary, + iconColor: theme.colorScheme.onPrimary, + backgroundColor: theme.colorScheme.primary, + ), + icon: _recoveryKeyInputLoading + ? const CircularProgressIndicator.adaptive() + : const Icon(Icons.lock_open_outlined), + label: Text(L10n.of(context).unlockOldMessages), + onPressed: _recoveryKeyInputLoading + ? null + : () async { + setState(() { + _recoveryKeyInputError = null; + _recoveryKeyInputLoading = true; + }); + try { + final key = _recoveryKeyTextEditingController + .text + .trim(); + if (key.isEmpty) return; + await bootstrap.newSsssKey!.unlock( + keyOrPassphrase: key, + ); + await bootstrap.openExistingSsss(); + Logs().d('SSSS unlocked'); + if (bootstrap.encryption.crossSigning.enabled) { + Logs().v( + 'Cross signing is already enabled. Try to self-sign', + ); + try { + await bootstrap + .client.encryption!.crossSigning + .selfSign(recoveryKey: key); + Logs().d('Successful selfsigned'); + } catch (e, s) { + Logs().e( + 'Unable to self sign with recovery key after successfully open existing SSSS', + e, + s, + ); + } + } + } on InvalidPassphraseException catch (e) { + setState( + () => _recoveryKeyInputError = + e.toLocalizedString(context), + ); + } on FormatException catch (_) { + setState( + () => _recoveryKeyInputError = + L10n.of(context).wrongRecoveryKey, + ); + } catch (e, s) { + ErrorReporter( + context, + 'Unable to open SSSS with recovery key', + ).onErrorCallback(e, s); + setState( + () => _recoveryKeyInputError = + e.toLocalizedString(context), + ); + } finally { + setState( + () => _recoveryKeyInputLoading = false, + ); + } + }, + ), + const SizedBox(height: 16), + Row( + children: [ + const Expanded(child: Divider()), + Padding( + padding: const EdgeInsets.all(12.0), + child: Text(L10n.of(context).or), + ), + const Expanded(child: Divider()), + ], + ), + const SizedBox(height: 16), + ElevatedButton.icon( + icon: const Icon(Icons.cast_connected_outlined), + label: Text(L10n.of(context).transferFromAnotherDevice), + onPressed: _recoveryKeyInputLoading + ? null + : () async { + final consent = await showOkCancelAlertDialog( + context: context, + title: L10n.of(context).verifyOtherDevice, + message: L10n.of(context) + .verifyOtherDeviceDescription, + okLabel: L10n.of(context).ok, + cancelLabel: L10n.of(context).cancel, + ); + if (consent != OkCancelResult.ok) return; + final req = await showFutureLoadingDialog( + context: context, + delay: false, + future: () async { + await widget.client.updateUserDeviceKeys(); + return widget.client + .userDeviceKeys[widget.client.userID!]! + .startVerification(); + }, + ); + if (req.error != null) return; + await KeyVerificationDialog(request: req.result!) + .show(context); + Navigator.of(context, rootNavigator: false).pop(); + }, + ), + const SizedBox(height: 16), + ElevatedButton.icon( + style: ElevatedButton.styleFrom( + backgroundColor: theme.colorScheme.errorContainer, + foregroundColor: theme.colorScheme.onErrorContainer, + iconColor: theme.colorScheme.onErrorContainer, + ), + icon: const Icon(Icons.delete_outlined), + label: Text(L10n.of(context).recoveryKeyLost), + onPressed: _recoveryKeyInputLoading + ? null + : () async { + if (OkCancelResult.ok == + await showOkCancelAlertDialog( + useRootNavigator: false, + context: context, + title: L10n.of(context).recoveryKeyLost, + message: L10n.of(context).wipeChatBackup, + okLabel: L10n.of(context).ok, + cancelLabel: L10n.of(context).cancel, + isDestructive: true, + )) { + setState(() => _createBootstrap(true)); + } + }, + ), + ], + ), + ), + ), + ); + case BootstrapState.askWipeCrossSigning: + WidgetsBinding.instance.addPostFrameCallback( + (_) => bootstrap.wipeCrossSigning(_wipe!), + ); + break; + case BootstrapState.askSetupCrossSigning: + WidgetsBinding.instance.addPostFrameCallback( + (_) => bootstrap.askSetupCrossSigning( + setupMasterKey: true, + setupSelfSigningKey: true, + setupUserSigningKey: true, + ), + ); + break; + case BootstrapState.askWipeOnlineKeyBackup: + WidgetsBinding.instance.addPostFrameCallback( + (_) => bootstrap.wipeOnlineKeyBackup(_wipe!), + ); + + break; + case BootstrapState.askSetupOnlineKeyBackup: + WidgetsBinding.instance.addPostFrameCallback( + (_) => bootstrap.askSetupOnlineKeyBackup(true), + ); + break; + case BootstrapState.error: + titleText = L10n.of(context).oopsSomethingWentWrong; + body = const Icon(Icons.error_outline, color: Colors.red, size: 80); + buttons.add( + ElevatedButton( + onPressed: () => + Navigator.of(context, rootNavigator: false).pop(false), + child: Text(L10n.of(context).close), + ), + ); + break; + case BootstrapState.done: + titleText = L10n.of(context).everythingReady; + body = Column( + mainAxisSize: MainAxisSize.min, + children: [ + const Icon( + Icons.check_circle_rounded, + size: 120, + color: Colors.green, + ), + const SizedBox(height: 16), + Text( + L10n.of(context).yourChatBackupHasBeenSetUp, + style: const TextStyle(fontSize: 20), + ), + const SizedBox(height: 16), + ], + ); + buttons.add( + ElevatedButton( + onPressed: () => + Navigator.of(context, rootNavigator: false).pop(false), + child: Text(L10n.of(context).close), + ), + ); + break; + } + } + + return Scaffold( + appBar: AppBar( + leading: Center( + child: CloseButton( + onPressed: () => + Navigator.of(context, rootNavigator: false).pop(true), + ), + ), + title: Text(titleText ?? L10n.of(context).loadingPleaseWait), + ), + body: Center( + child: Padding( + padding: const EdgeInsets.all(20.0), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + body, + const SizedBox(height: 8), + ...buttons, + ], + ), + ), + ), + ); + } +} diff --git a/lib/pages/chat/add_widget_tile.dart b/lib/pages/chat/add_widget_tile.dart new file mode 100644 index 0000000..88a4022 --- /dev/null +++ b/lib/pages/chat/add_widget_tile.dart @@ -0,0 +1,85 @@ +import 'package:flutter/material.dart'; + +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/chat/add_widget_tile_view.dart'; + +class AddWidgetTile extends StatefulWidget { + final Room room; + + const AddWidgetTile({super.key, required this.room}); + + @override + State createState() => AddWidgetTileState(); +} + +class AddWidgetTileState extends State { + final TextEditingController urlController = TextEditingController(); + final TextEditingController nameController = TextEditingController(); + String widgetType = 'm.etherpad'; + + late final bool initiallyExpanded; + + String? nameError; + String? urlError; + + @override + void initState() { + initiallyExpanded = widget.room.widgets.isEmpty; + super.initState(); + } + + void setWidgetType(String value) => setState(() => widgetType = value); + + void addWidget() { + try { + nameError = null; + urlError = null; + + final room = widget.room; + final name = nameController.text; + final uri = Uri.tryParse(urlController.text); + + if (name.length < 3) { + setState(() { + nameError = L10n.of(context).widgetNameError; + }); + return; + } + + if (uri == null || uri.scheme != 'https') { + setState(() { + urlError = L10n.of(context).widgetUrlError; + }); + return; + } + setState(() {}); + + late MatrixWidget matrixWidget; + switch (widgetType) { + case 'm.etherpad': + matrixWidget = MatrixWidget.etherpad(room, name, uri); + break; + case 'm.jitsi': + matrixWidget = MatrixWidget.jitsi(room, name, uri); + break; + case 'm.video': + matrixWidget = MatrixWidget.video(room, name, uri); + break; + default: + matrixWidget = MatrixWidget.custom(room, name, uri); + break; + } + widget.room.addWidget(matrixWidget); + Navigator.of(context).pop(); + } catch (e) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text(L10n.of(context).errorAddingWidget)), + ); + } + } + + @override + Widget build(BuildContext context) => AddWidgetTileView(controller: this); +} diff --git a/lib/pages/chat/add_widget_tile_view.dart b/lib/pages/chat/add_widget_tile_view.dart new file mode 100644 index 0000000..9877ac5 --- /dev/null +++ b/lib/pages/chat/add_widget_tile_view.dart @@ -0,0 +1,72 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/chat/add_widget_tile.dart'; + +class AddWidgetTileView extends StatelessWidget { + final AddWidgetTileState controller; + + const AddWidgetTileView({super.key, required this.controller}); + + @override + Widget build(BuildContext context) { + return ExpansionTile( + title: Text(L10n.of(context).addWidget), + leading: const Icon(Icons.add), + initiallyExpanded: controller.initiallyExpanded, + children: [ + CupertinoSegmentedControl( + groupValue: controller.widgetType, + padding: const EdgeInsets.all(8), + children: { + 'm.etherpad': Text(L10n.of(context).widgetEtherpad), + 'm.jitsi': Text(L10n.of(context).widgetJitsi), + 'm.video': Text(L10n.of(context).widgetVideo), + 'm.custom': Text(L10n.of(context).widgetCustom), + }.map( + (key, value) => MapEntry( + key, + Padding( + padding: const EdgeInsets.symmetric(horizontal: 4.0), + child: value, + ), + ), + ), + onValueChanged: controller.setWidgetType, + ), + Padding( + padding: const EdgeInsets.all(8.0), + child: TextField( + controller: controller.nameController, + autofocus: true, + decoration: InputDecoration( + prefixIcon: const Icon(Icons.label), + label: Text(L10n.of(context).widgetName), + errorText: controller.nameError, + ), + ), + ), + Padding( + padding: const EdgeInsets.all(8.0), + child: TextField( + controller: controller.urlController, + decoration: InputDecoration( + prefixIcon: const Icon(Icons.add_link), + label: Text(L10n.of(context).link), + errorText: controller.urlError, + ), + ), + ), + OverflowBar( + children: [ + TextButton( + onPressed: controller.addWidget, + child: Text(L10n.of(context).addWidget), + ), + ], + ), + ], + ); + } +} diff --git a/lib/pages/chat/chat.dart b/lib/pages/chat/chat.dart new file mode 100644 index 0000000..54f6010 --- /dev/null +++ b/lib/pages/chat/chat.dart @@ -0,0 +1,1430 @@ +import 'dart:async'; +import 'dart:io'; + +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +import 'package:collection/collection.dart'; +import 'package:desktop_drop/desktop_drop.dart'; +import 'package:device_info_plus/device_info_plus.dart'; +import 'package:emoji_picker_flutter/emoji_picker_flutter.dart'; +import 'package:go_router/go_router.dart'; +import 'package:image_picker/image_picker.dart'; +import 'package:matrix/matrix.dart'; +import 'package:scroll_to_index/scroll_to_index.dart'; +import 'package:universal_html/html.dart' as html; + +import 'package:fluffychat/config/setting_keys.dart'; +import 'package:fluffychat/config/themes.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/chat/chat_view.dart'; +import 'package:fluffychat/pages/chat/event_info_dialog.dart'; +import 'package:fluffychat/pages/chat/start_poll_bottom_sheet.dart'; +import 'package:fluffychat/pages/chat_details/chat_details.dart'; +import 'package:fluffychat/utils/adaptive_bottom_sheet.dart'; +import 'package:fluffychat/utils/error_reporter.dart'; +import 'package:fluffychat/utils/file_selector.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/other_party_can_receive.dart'; +import 'package:fluffychat/utils/platform_infos.dart'; +import 'package:fluffychat/utils/show_scaffold_dialog.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_modal_action_popup.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_ok_cancel_alert_dialog.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_text_input_dialog.dart'; +import 'package:fluffychat/widgets/future_loading_dialog.dart'; +import 'package:fluffychat/widgets/matrix.dart'; +import 'package:fluffychat/widgets/share_scaffold_dialog.dart'; +import '../../utils/account_bundles.dart'; +import '../../utils/localized_exception_extension.dart'; +import 'send_file_dialog.dart'; +import 'send_location_dialog.dart'; + +class ChatPage extends StatelessWidget { + final String roomId; + final List? shareItems; + final String? eventId; + + const ChatPage({ + super.key, + required this.roomId, + this.eventId, + this.shareItems, + }); + + @override + Widget build(BuildContext context) { + final room = Matrix.of(context).client.getRoomById(roomId); + if (room == null) { + return Scaffold( + appBar: AppBar(title: Text(L10n.of(context).oopsSomethingWentWrong)), + body: Center( + child: Padding( + padding: const EdgeInsets.all(16), + child: Text(L10n.of(context).youAreNoLongerParticipatingInThisChat), + ), + ), + ); + } + + return ChatPageWithRoom( + key: Key('chat_page_${roomId}_$eventId'), + room: room, + shareItems: shareItems, + eventId: eventId, + ); + } +} + +class ChatPageWithRoom extends StatefulWidget { + final Room room; + final List? shareItems; + final String? eventId; + + const ChatPageWithRoom({ + super.key, + required this.room, + this.shareItems, + this.eventId, + }); + + @override + ChatController createState() => ChatController(); +} + +class ChatController extends State + with WidgetsBindingObserver { + Room get room => sendingClient.getRoomById(roomId) ?? widget.room; + + late Client sendingClient; + + Timeline? timeline; + + String? activeThreadId; + + late final String readMarkerEventId; + + String get roomId => widget.room.id; + + final AutoScrollController scrollController = AutoScrollController(); + + late final FocusNode inputFocus; + StreamSubscription? onFocusSub; + + Timer? typingCoolDown; + Timer? typingTimeout; + bool currentlyTyping = false; + bool dragging = false; + + void onDragEntered(_) => setState(() => dragging = true); + + void onDragExited(_) => setState(() => dragging = false); + + void onDragDone(DropDoneDetails details) async { + setState(() => dragging = false); + if (details.files.isEmpty) return; + + await showAdaptiveDialog( + context: context, + builder: (c) => SendFileDialog( + files: details.files, + room: room, + outerContext: context, + threadRootEventId: activeThreadId, + threadLastEventId: threadLastEventId, + ), + ); + } + + bool get canSaveSelectedEvent => + selectedEvents.length == 1 && + { + MessageTypes.Video, + MessageTypes.Image, + MessageTypes.Sticker, + MessageTypes.Audio, + MessageTypes.File, + }.contains(selectedEvents.single.messageType); + + void saveSelectedEvent(context) => selectedEvents.single.saveFile(context); + + List selectedEvents = []; + + final Set unfolded = {}; + + Event? replyEvent; + + Event? editEvent; + + bool _scrolledUp = false; + + bool get showScrollDownButton => + _scrolledUp || timeline?.allowNewEvent == false; + + bool get selectMode => selectedEvents.isNotEmpty; + + final int _loadHistoryCount = 100; + + String pendingText = ''; + + bool showEmojiPicker = false; + + String? get threadLastEventId { + final threadId = activeThreadId; + if (threadId == null) return null; + return timeline?.events + .filterByVisibleInGui(threadId: threadId) + .firstOrNull + ?.eventId; + } + + void enterThread(String eventId) => setState(() { + activeThreadId = eventId; + selectedEvents.clear(); + }); + + void closeThread() => setState(() { + activeThreadId = null; + selectedEvents.clear(); + }); + + void recreateChat() async { + final room = this.room; + final userId = room.directChatMatrixID; + if (userId == null) { + throw Exception( + 'Try to recreate a room with is not a DM room. This should not be possible from the UI!', + ); + } + await showFutureLoadingDialog( + context: context, + future: () => room.invite(userId), + ); + } + + void leaveChat() async { + final success = await showFutureLoadingDialog( + context: context, + future: room.leave, + ); + if (success.error != null) return; + context.go('/rooms'); + } + + void requestHistory([_]) async { + Logs().v('Requesting history...'); + await timeline?.requestHistory(historyCount: _loadHistoryCount); + } + + void requestFuture() async { + final timeline = this.timeline; + if (timeline == null) return; + Logs().v('Requesting future...'); + final mostRecentEventId = timeline.events.first.eventId; + await timeline.requestFuture(historyCount: _loadHistoryCount); + setReadMarker(eventId: mostRecentEventId); + } + + void _updateScrollController() { + if (!mounted) { + return; + } + if (!scrollController.hasClients) return; + if (timeline?.allowNewEvent == false || + scrollController.position.pixels > 0 && _scrolledUp == false) { + setState(() => _scrolledUp = true); + } else if (scrollController.position.pixels <= 0 && _scrolledUp == true) { + setState(() => _scrolledUp = false); + setReadMarker(); + } + + if (scrollController.position.pixels == 0 || + scrollController.position.pixels == 64) { + requestFuture(); + } + } + + void _loadDraft() async { + final prefs = Matrix.of(context).store; + final draft = prefs.getString('draft_$roomId'); + if (draft != null && draft.isNotEmpty) { + sendController.text = draft; + } + } + + void _shareItems([_]) { + final shareItems = widget.shareItems; + if (shareItems == null || shareItems.isEmpty) return; + if (!room.otherPartyCanReceiveMessages) { + final theme = Theme.of(context); + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + backgroundColor: theme.colorScheme.errorContainer, + closeIconColor: theme.colorScheme.onErrorContainer, + content: Text( + L10n.of(context).otherPartyNotLoggedIn, + style: TextStyle( + color: theme.colorScheme.onErrorContainer, + ), + ), + showCloseIcon: true, + ), + ); + return; + } + for (final item in shareItems) { + if (item is FileShareItem) continue; + if (item is TextShareItem) room.sendTextEvent(item.value); + if (item is ContentShareItem) room.sendEvent(item.value); + } + final files = shareItems + .whereType() + .map((item) => item.value) + .toList(); + if (files.isEmpty) return; + showAdaptiveDialog( + context: context, + builder: (c) => SendFileDialog( + files: files, + room: room, + outerContext: context, + threadRootEventId: activeThreadId, + threadLastEventId: threadLastEventId, + ), + ); + } + + KeyEventResult _customEnterKeyHandling(FocusNode node, KeyEvent evt) { + if (!HardwareKeyboard.instance.isShiftPressed && + evt.logicalKey.keyLabel == 'Enter' && + AppSettings.sendOnEnter.value) { + if (evt is KeyDownEvent) { + send(); + } + return KeyEventResult.handled; + } else if (evt.logicalKey.keyLabel == 'Enter' && evt is KeyDownEvent) { + final currentLineNum = sendController.text + .substring( + 0, + sendController.selection.baseOffset, + ) + .split('\n') + .length - + 1; + final currentLine = sendController.text.split('\n')[currentLineNum]; + + for (final pattern in [ + '- [ ] ', + '- [x] ', + '* [ ] ', + '* [x] ', + '- ', + '* ', + '+ ', + ]) { + if (currentLine.startsWith(pattern)) { + if (currentLine == pattern) { + return KeyEventResult.ignored; + } + sendController.text += '\n$pattern'; + return KeyEventResult.handled; + } + } + + return KeyEventResult.ignored; + } else { + return KeyEventResult.ignored; + } + } + + @override + void initState() { + inputFocus = FocusNode(onKeyEvent: _customEnterKeyHandling); + + scrollController.addListener(_updateScrollController); + inputFocus.addListener(_inputFocusListener); + + _loadDraft(); + WidgetsBinding.instance.addPostFrameCallback(_shareItems); + super.initState(); + _displayChatDetailsColumn = ValueNotifier( + AppSettings.displayChatDetailsColumn.value, + ); + + sendingClient = Matrix.of(context).client; + final lastEventThreadId = + room.lastEvent?.relationshipType == RelationshipTypes.thread + ? room.lastEvent?.relationshipEventId + : null; + readMarkerEventId = + room.hasNewMessages ? lastEventThreadId ?? room.fullyRead : ''; + WidgetsBinding.instance.addObserver(this); + _tryLoadTimeline(); + if (kIsWeb) { + onFocusSub = html.window.onFocus.listen((_) => setReadMarker()); + } + } + + final Set expandedEventIds = {}; + + void expandEventsFrom(Event event, bool expand) { + final events = timeline!.events.filterByVisibleInGui( + threadId: activeThreadId, + ); + final start = events.indexOf(event); + setState(() { + for (var i = start; i < events.length; i++) { + final event = events[i]; + if (!event.isCollapsedState) return; + if (expand) { + expandedEventIds.add(event.eventId); + } else { + expandedEventIds.remove(event.eventId); + } + } + }); + } + + void _tryLoadTimeline() async { + final initialEventId = widget.eventId; + loadTimelineFuture = _getTimeline(); + try { + await loadTimelineFuture; + // We launched the chat with a given initial event ID: + if (initialEventId != null) { + scrollToEventId(initialEventId); + return; + } + + var readMarkerEventIndex = readMarkerEventId.isEmpty + ? -1 + : timeline!.events + .filterByVisibleInGui( + exceptionEventId: readMarkerEventId, + threadId: activeThreadId, + ) + .indexWhere((e) => e.eventId == readMarkerEventId); + + // Read marker is existing but not found in first events. Try a single + // requestHistory call before opening timeline on event context: + if (readMarkerEventId.isNotEmpty && readMarkerEventIndex == -1) { + await timeline?.requestHistory(historyCount: _loadHistoryCount); + readMarkerEventIndex = timeline!.events + .filterByVisibleInGui( + exceptionEventId: readMarkerEventId, + threadId: activeThreadId, + ) + .indexWhere((e) => e.eventId == readMarkerEventId); + } + + if (readMarkerEventIndex > 1) { + Logs().v('Scroll up to visible event', readMarkerEventId); + scrollToEventId(readMarkerEventId, highlightEvent: false); + return; + } else if (readMarkerEventId.isNotEmpty && readMarkerEventIndex == -1) { + _showScrollUpMaterialBanner(readMarkerEventId); + } + + // Mark room as read on first visit if requirements are fulfilled + setReadMarker(); + + if (!mounted) return; + } catch (e, s) { + ErrorReporter(context, 'Unable to load timeline').onErrorCallback(e, s); + rethrow; + } + } + + String? scrollUpBannerEventId; + + void discardScrollUpBannerEventId() => setState(() { + scrollUpBannerEventId = null; + }); + + void _showScrollUpMaterialBanner(String eventId) => setState(() { + scrollUpBannerEventId = eventId; + }); + + void updateView() { + if (!mounted) return; + setReadMarker(); + setState(() {}); + } + + Future? loadTimelineFuture; + + int? animateInEventIndex; + + void onInsert(int i) { + // setState will be called by updateView() anyway + animateInEventIndex = i; + } + + Future _getTimeline({ + String? eventContextId, + }) async { + await Matrix.of(context).client.roomsLoading; + await Matrix.of(context).client.accountDataLoading; + if (eventContextId != null && + (!eventContextId.isValidMatrixId || eventContextId.sigil != '\$')) { + eventContextId = null; + } + try { + timeline?.cancelSubscriptions(); + timeline = await room.getTimeline( + onUpdate: updateView, + eventContextId: eventContextId, + onInsert: onInsert, + ); + } catch (e, s) { + Logs().w('Unable to load timeline on event ID $eventContextId', e, s); + if (!mounted) return; + timeline = await room.getTimeline( + onUpdate: updateView, + onInsert: onInsert, + ); + if (!mounted) return; + if (e is TimeoutException || e is IOException) { + _showScrollUpMaterialBanner(eventContextId!); + } + } + timeline!.requestKeys(onlineKeyBackupOnly: false); + if (room.markedUnread) room.markUnread(false); + + return; + } + + String? scrollToEventIdMarker; + + @override + void didChangeAppLifecycleState(AppLifecycleState state) { + if (state != AppLifecycleState.resumed) return; + if (!mounted) return; + setReadMarker(); + } + + Future? _setReadMarkerFuture; + + void setReadMarker({String? eventId}) { + if (eventId?.isValidMatrixId == false) return; + if (_setReadMarkerFuture != null) return; + if (_scrolledUp) return; + if (scrollUpBannerEventId != null) return; + + if (eventId == null && + !room.hasNewMessages && + room.notificationCount == 0) { + return; + } + + // Do not send read markers when app is not in foreground + if (kIsWeb && !Matrix.of(context).webHasFocus) return; + if (!kIsWeb && + WidgetsBinding.instance.lifecycleState != AppLifecycleState.resumed) { + return; + } + + final timeline = this.timeline; + if (timeline == null || timeline.events.isEmpty) return; + + Logs().d('Set read marker...', eventId); + // ignore: unawaited_futures + _setReadMarkerFuture = timeline + .setReadMarker( + eventId: eventId, + public: AppSettings.sendPublicReadReceipts.value, + ) + .then((_) { + _setReadMarkerFuture = null; + }); + if (eventId == null || eventId == timeline.room.lastEvent?.eventId) { + Matrix.of(context).backgroundPush?.cancelNotification(roomId); + } + } + + @override + void dispose() { + timeline?.cancelSubscriptions(); + timeline = null; + inputFocus.removeListener(_inputFocusListener); + onFocusSub?.cancel(); + super.dispose(); + } + + TextEditingController sendController = TextEditingController(); + + void setSendingClient(Client c) { + // first cancel typing with the old sending client + if (currentlyTyping) { + // no need to have the setting typing to false be blocking + typingCoolDown?.cancel(); + typingCoolDown = null; + room.setTyping(false); + currentlyTyping = false; + } + // then cancel the old timeline + // fixes bug with read reciepts and quick switching + loadTimelineFuture = _getTimeline(eventContextId: room.fullyRead).onError( + ErrorReporter( + context, + 'Unable to load timeline after changing sending Client', + ).onErrorCallback, + ); + + // then set the new sending client + setState(() => sendingClient = c); + } + + void setActiveClient(Client c) => setState(() { + Matrix.of(context).setActiveClient(c); + }); + + Future send() async { + if (sendController.text.trim().isEmpty) return; + _storeInputTimeoutTimer?.cancel(); + final prefs = Matrix.of(context).store; + prefs.remove('draft_$roomId'); + var parseCommands = true; + + final commandMatch = RegExp(r'^\/(\w+)').firstMatch(sendController.text); + if (commandMatch != null && + !sendingClient.commands.keys.contains(commandMatch[1]!.toLowerCase())) { + final l10n = L10n.of(context); + final dialogResult = await showOkCancelAlertDialog( + context: context, + title: l10n.commandInvalid, + message: l10n.commandMissing(commandMatch[0]!), + okLabel: l10n.sendAsText, + cancelLabel: l10n.cancel, + ); + if (dialogResult == OkCancelResult.cancel) return; + parseCommands = false; + } + + // ignore: unawaited_futures + room.sendTextEvent( + sendController.text, + inReplyTo: replyEvent, + editEventId: editEvent?.eventId, + parseCommands: parseCommands, + threadRootEventId: activeThreadId, + ); + sendController.value = TextEditingValue( + text: pendingText, + selection: const TextSelection.collapsed(offset: 0), + ); + + setState(() { + sendController.text = pendingText; + _inputTextIsEmpty = pendingText.isEmpty; + replyEvent = null; + editEvent = null; + pendingText = ''; + }); + } + + void sendFileAction({FileSelectorType type = FileSelectorType.any}) async { + final files = await selectFiles( + context, + allowMultiple: true, + type: type, + ); + if (files.isEmpty) return; + await showAdaptiveDialog( + context: context, + builder: (c) => SendFileDialog( + files: files, + room: room, + outerContext: context, + threadRootEventId: activeThreadId, + threadLastEventId: threadLastEventId, + ), + ); + } + + void sendImageFromClipBoard(Uint8List? image) async { + if (image == null) return; + await showAdaptiveDialog( + context: context, + builder: (c) => SendFileDialog( + files: [XFile.fromData(image)], + room: room, + outerContext: context, + threadRootEventId: activeThreadId, + threadLastEventId: threadLastEventId, + ), + ); + } + + void openCameraAction() async { + // Make sure the textfield is unfocused before opening the camera + FocusScope.of(context).requestFocus(FocusNode()); + final file = await ImagePicker().pickImage(source: ImageSource.camera); + if (file == null) return; + + await showAdaptiveDialog( + context: context, + builder: (c) => SendFileDialog( + files: [file], + room: room, + outerContext: context, + threadRootEventId: activeThreadId, + threadLastEventId: threadLastEventId, + ), + ); + } + + void openVideoCameraAction() async { + // Make sure the textfield is unfocused before opening the camera + FocusScope.of(context).requestFocus(FocusNode()); + final file = await ImagePicker().pickVideo( + source: ImageSource.camera, + maxDuration: const Duration(minutes: 1), + ); + if (file == null) return; + + await showAdaptiveDialog( + context: context, + builder: (c) => SendFileDialog( + files: [file], + room: room, + outerContext: context, + threadRootEventId: activeThreadId, + threadLastEventId: threadLastEventId, + ), + ); + } + + Future onVoiceMessageSend( + String path, + int duration, + List waveform, + String? fileName, + ) async { + final scaffoldMessenger = ScaffoldMessenger.of(context); + final audioFile = XFile(path); + + final bytesResult = await showFutureLoadingDialog( + context: context, + future: audioFile.readAsBytes, + ); + final bytes = bytesResult.result; + if (bytes == null) return; + + final file = MatrixAudioFile( + bytes: bytes, + name: fileName ?? audioFile.path, + ); + + setState(() { + replyEvent = null; + }); + room.sendFileEvent( + file, + inReplyTo: replyEvent, + threadRootEventId: activeThreadId, + extraContent: { + 'info': { + ...file.info, + 'duration': duration, + }, + 'org.matrix.msc3245.voice': {}, + 'org.matrix.msc1767.audio': { + 'duration': duration, + 'waveform': waveform, + }, + }, + ).catchError((e) { + scaffoldMessenger.showSnackBar( + SnackBar( + content: Text( + (e as Object).toLocalizedString(context), + ), + ), + ); + return null; + }); + return; + } + + void hideEmojiPicker() { + setState(() => showEmojiPicker = false); + } + + void emojiPickerAction() { + if (showEmojiPicker) { + inputFocus.requestFocus(); + } else { + inputFocus.unfocus(); + } + setState(() => showEmojiPicker = !showEmojiPicker); + } + + void _inputFocusListener() { + if (showEmojiPicker && inputFocus.hasFocus) { + setState(() => showEmojiPicker = false); + } + } + + void sendLocationAction() async { + await showAdaptiveDialog( + context: context, + builder: (c) => SendLocationDialog(room: room), + ); + } + + String _getSelectedEventString() { + var copyString = ''; + if (selectedEvents.length == 1) { + return selectedEvents.first + .getDisplayEvent(timeline!) + .calcLocalizedBodyFallback(MatrixLocals(L10n.of(context))); + } + for (final event in selectedEvents) { + if (copyString.isNotEmpty) copyString += '\n\n'; + copyString += event.getDisplayEvent(timeline!).calcLocalizedBodyFallback( + MatrixLocals(L10n.of(context)), + withSenderNamePrefix: true, + ); + } + return copyString; + } + + void copyEventsAction() { + Clipboard.setData(ClipboardData(text: _getSelectedEventString())); + setState(() { + showEmojiPicker = false; + selectedEvents.clear(); + }); + } + + void reportEventAction() async { + final event = selectedEvents.single; + final score = await showModalActionPopup( + context: context, + title: L10n.of(context).reportMessage, + message: L10n.of(context).howOffensiveIsThisContent, + cancelLabel: L10n.of(context).cancel, + actions: [ + AdaptiveModalAction( + value: -100, + label: L10n.of(context).extremeOffensive, + ), + AdaptiveModalAction( + value: -50, + label: L10n.of(context).offensive, + ), + AdaptiveModalAction( + value: 0, + label: L10n.of(context).inoffensive, + ), + ], + ); + if (score == null) return; + final reason = await showTextInputDialog( + context: context, + title: L10n.of(context).whyDoYouWantToReportThis, + okLabel: L10n.of(context).ok, + cancelLabel: L10n.of(context).cancel, + hintText: L10n.of(context).reason, + ); + if (reason == null || reason.isEmpty) return; + final result = await showFutureLoadingDialog( + context: context, + future: () => Matrix.of(context).client.reportEvent( + event.roomId!, + event.eventId, + reason: reason, + score: score, + ), + ); + if (result.error != null) return; + setState(() { + showEmojiPicker = false; + selectedEvents.clear(); + }); + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text(L10n.of(context).contentHasBeenReported)), + ); + } + + void deleteErrorEventsAction() async { + try { + if (selectedEvents.any((event) => event.status != EventStatus.error)) { + throw Exception( + 'Tried to delete failed to send events but one event is not failed to sent', + ); + } + for (final event in selectedEvents) { + await event.cancelSend(); + } + setState(selectedEvents.clear); + } catch (e, s) { + ErrorReporter( + context, + 'Error while delete error events action', + ).onErrorCallback(e, s); + } + } + + void redactEventsAction() async { + final reasonInput = selectedEvents.any((event) => event.status.isSent) + ? await showTextInputDialog( + context: context, + title: L10n.of(context).redactMessage, + message: L10n.of(context).redactMessageDescription, + isDestructive: true, + hintText: L10n.of(context).optionalRedactReason, + maxLength: 255, + maxLines: 3, + minLines: 1, + okLabel: L10n.of(context).remove, + cancelLabel: L10n.of(context).cancel, + ) + : null; + if (reasonInput == null) return; + final reason = reasonInput.isEmpty ? null : reasonInput; + await showFutureLoadingDialog( + context: context, + futureWithProgress: (onProgress) async { + final count = selectedEvents.length; + for (final (i, event) in selectedEvents.indexed) { + onProgress(i / count); + if (event.status.isSent) { + if (event.canRedact) { + await event.redactEvent(reason: reason); + } else { + final client = currentRoomBundle.firstWhere( + (cl) => selectedEvents.first.senderId == cl!.userID, + orElse: () => null, + ); + if (client == null) { + return; + } + final room = client.getRoomById(roomId)!; + await Event.fromJson(event.toJson(), room).redactEvent( + reason: reason, + ); + } + } else { + await event.cancelSend(); + } + } + }, + ); + setState(() { + showEmojiPicker = false; + selectedEvents.clear(); + }); + } + + List get currentRoomBundle { + final clients = Matrix.of(context).currentBundle!; + clients.removeWhere((c) => c!.getRoomById(roomId) == null); + return clients; + } + + bool get canRedactSelectedEvents { + if (isArchived) return false; + final clients = Matrix.of(context).currentBundle; + for (final event in selectedEvents) { + if (!event.status.isSent) return false; + if (event.canRedact == false && + !(clients!.any((cl) => event.senderId == cl!.userID))) { + return false; + } + } + return true; + } + + bool get canPinSelectedEvents { + if (isArchived || + !room.canChangeStateEvent(EventTypes.RoomPinnedEvents) || + selectedEvents.length != 1 || + !selectedEvents.single.status.isSent || + activeThreadId != null) { + return false; + } + return true; + } + + bool get canEditSelectedEvents { + if (isArchived || + selectedEvents.length != 1 || + !selectedEvents.first.status.isSent) { + return false; + } + return currentRoomBundle + .any((cl) => selectedEvents.first.senderId == cl!.userID); + } + + void forwardEventsAction() async { + if (selectedEvents.isEmpty) return; + final timeline = this.timeline; + if (timeline == null) return; + + final forwardEvents = List.from(selectedEvents) + .map((event) => event.getDisplayEvent(timeline)) + .toList(); + + await showScaffoldDialog( + context: context, + builder: (context) => ShareScaffoldDialog( + items: forwardEvents + .map((event) => ContentShareItem(event.content)) + .toList(), + ), + ); + if (!mounted) return; + setState(() => selectedEvents.clear()); + } + + void sendAgainAction() { + final event = selectedEvents.first; + if (event.status.isError) { + event.sendAgain(); + } + final allEditEvents = event + .aggregatedEvents(timeline!, RelationshipTypes.edit) + .where((e) => e.status.isError); + for (final e in allEditEvents) { + e.sendAgain(); + } + setState(() => selectedEvents.clear()); + } + + void replyAction({Event? replyTo}) { + setState(() { + replyEvent = replyTo ?? selectedEvents.first; + selectedEvents.clear(); + }); + inputFocus.requestFocus(); + } + + void scrollToEventId( + String eventId, { + bool highlightEvent = true, + }) async { + final foundEvent = + timeline!.events.firstWhereOrNull((event) => event.eventId == eventId); + + final eventIndex = foundEvent == null + ? -1 + : timeline!.events + .filterByVisibleInGui( + exceptionEventId: eventId, + threadId: activeThreadId, + ) + .indexOf(foundEvent); + + if (eventIndex == -1) { + setState(() { + timeline = null; + _scrolledUp = false; + loadTimelineFuture = _getTimeline(eventContextId: eventId).onError( + ErrorReporter(context, 'Unable to load timeline after scroll to ID') + .onErrorCallback, + ); + }); + await loadTimelineFuture; + WidgetsBinding.instance.addPostFrameCallback((timeStamp) { + scrollToEventId(eventId); + }); + return; + } + if (highlightEvent) { + setState(() { + scrollToEventIdMarker = eventId; + }); + } + await scrollController.scrollToIndex( + eventIndex + 1, + duration: FluffyThemes.animationDuration, + preferPosition: AutoScrollPosition.middle, + ); + _updateScrollController(); + } + + void scrollDown() async { + if (!timeline!.allowNewEvent) { + setState(() { + timeline = null; + _scrolledUp = false; + loadTimelineFuture = _getTimeline().onError( + ErrorReporter(context, 'Unable to load timeline after scroll down') + .onErrorCallback, + ); + }); + await loadTimelineFuture; + } + scrollController.jumpTo(0); + } + + void onEmojiSelected(_, Emoji? emoji) { + typeEmoji(emoji); + onInputBarChanged(sendController.text); + } + + void typeEmoji(Emoji? emoji) { + if (emoji == null) return; + final text = sendController.text; + final selection = sendController.selection; + final newText = sendController.text.isEmpty + ? emoji.emoji + : text.replaceRange(selection.start, selection.end, emoji.emoji); + sendController.value = TextEditingValue( + text: newText, + selection: TextSelection.collapsed( + // don't forget an UTF-8 combined emoji might have a length > 1 + offset: selection.baseOffset + emoji.emoji.length, + ), + ); + } + + void emojiPickerBackspace() { + sendController + ..text = sendController.text.characters.skipLast(1).toString() + ..selection = TextSelection.fromPosition( + TextPosition(offset: sendController.text.length), + ); + } + + void clearSelectedEvents() => setState(() { + selectedEvents.clear(); + showEmojiPicker = false; + }); + + void clearSingleSelectedEvent() { + if (selectedEvents.length <= 1) { + clearSelectedEvents(); + } + } + + void editSelectedEventAction() { + final client = currentRoomBundle.firstWhere( + (cl) => selectedEvents.first.senderId == cl!.userID, + orElse: () => null, + ); + if (client == null) { + return; + } + setSendingClient(client); + setState(() { + pendingText = sendController.text; + editEvent = selectedEvents.first; + sendController.text = + editEvent!.getDisplayEvent(timeline!).calcLocalizedBodyFallback( + MatrixLocals(L10n.of(context)), + withSenderNamePrefix: false, + hideReply: true, + ); + selectedEvents.clear(); + }); + inputFocus.requestFocus(); + } + + void goToNewRoomAction() async { + final newRoomId = room + .getState(EventTypes.RoomTombstone)! + .parsedTombstoneContent + .replacementRoom; + final result = await showFutureLoadingDialog( + context: context, + future: () => room.client.joinRoom( + room + .getState(EventTypes.RoomTombstone)! + .parsedTombstoneContent + .replacementRoom, + via: [newRoomId.domain!], + ), + ); + if (result.error != null) return; + if (!mounted) return; + context.go('/rooms/${result.result!}'); + + await showFutureLoadingDialog( + context: context, + future: room.leave, + ); + } + + void onSelectMessage(Event event) { + if (!event.redacted) { + if (selectedEvents.contains(event)) { + setState( + () => selectedEvents.remove(event), + ); + } else { + setState( + () => selectedEvents.add(event), + ); + } + selectedEvents.sort( + (a, b) => a.originServerTs.compareTo(b.originServerTs), + ); + } + } + + int? findChildIndexCallback(Key key, Map thisEventsKeyMap) { + // this method is called very often. As such, it has to be optimized for speed. + if (key is! ValueKey) { + return null; + } + final eventId = key.value; + if (eventId is! String) { + return null; + } + // first fetch the last index the event was at + final index = thisEventsKeyMap[eventId]; + if (index == null) { + return null; + } + // we need to +1 as 0 is the typing thing at the bottom + return index + 1; + } + + void onInputBarSubmitted(_) { + send(); + FocusScope.of(context).requestFocus(inputFocus); + } + + void onAddPopupMenuButtonSelected(AddPopupMenuActions choice) { + room.client.getConfig(); + + switch (choice) { + case AddPopupMenuActions.image: + sendFileAction(type: FileSelectorType.images); + return; + case AddPopupMenuActions.video: + sendFileAction(type: FileSelectorType.videos); + return; + case AddPopupMenuActions.file: + sendFileAction(); + return; + case AddPopupMenuActions.poll: + showAdaptiveBottomSheet( + context: context, + builder: (context) => StartPollBottomSheet(room: room), + ); + return; + case AddPopupMenuActions.photoCamera: + openCameraAction(); + return; + case AddPopupMenuActions.videoCamera: + openVideoCameraAction(); + return; + case AddPopupMenuActions.location: + sendLocationAction(); + return; + } + } + + unpinEvent(String eventId) async { + final response = await showOkCancelAlertDialog( + context: context, + title: L10n.of(context).unpin, + message: L10n.of(context).confirmEventUnpin, + okLabel: L10n.of(context).unpin, + cancelLabel: L10n.of(context).cancel, + ); + if (response == OkCancelResult.ok) { + final events = room.pinnedEventIds + ..removeWhere((oldEvent) => oldEvent == eventId); + showFutureLoadingDialog( + context: context, + future: () => room.setPinnedEvents(events), + ); + } + } + + void pinEvent() { + final pinnedEventIds = room.pinnedEventIds; + final selectedEventIds = selectedEvents.map((e) => e.eventId).toSet(); + final unpin = selectedEventIds.length == 1 && + pinnedEventIds.contains(selectedEventIds.single); + if (unpin) { + pinnedEventIds.removeWhere(selectedEventIds.contains); + } else { + pinnedEventIds.addAll(selectedEventIds); + } + showFutureLoadingDialog( + context: context, + future: () => room.setPinnedEvents(pinnedEventIds), + ); + } + + Timer? _storeInputTimeoutTimer; + static const Duration _storeInputTimeout = Duration(milliseconds: 500); + + void onInputBarChanged(String text) { + if (_inputTextIsEmpty != text.isEmpty) { + setState(() { + _inputTextIsEmpty = text.isEmpty; + }); + } + + _storeInputTimeoutTimer?.cancel(); + _storeInputTimeoutTimer = Timer(_storeInputTimeout, () async { + final prefs = Matrix.of(context).store; + await prefs.setString('draft_$roomId', text); + }); + if (text.endsWith(' ') && Matrix.of(context).hasComplexBundles) { + final clients = currentRoomBundle; + for (final client in clients) { + final prefix = client!.sendPrefix; + if ((prefix.isNotEmpty) && + text.toLowerCase() == '${prefix.toLowerCase()} ') { + setSendingClient(client); + setState(() { + sendController.clear(); + }); + return; + } + } + } + if (AppSettings.sendTypingNotifications.value) { + typingCoolDown?.cancel(); + typingCoolDown = Timer(const Duration(seconds: 2), () { + typingCoolDown = null; + currentlyTyping = false; + room.setTyping(false); + }); + typingTimeout ??= Timer(const Duration(seconds: 30), () { + typingTimeout = null; + currentlyTyping = false; + }); + if (!currentlyTyping) { + currentlyTyping = true; + room.setTyping( + true, + timeout: const Duration(seconds: 30).inMilliseconds, + ); + } + } + } + + bool _inputTextIsEmpty = true; + + bool get isArchived => + {Membership.leave, Membership.ban}.contains(room.membership); + + void showEventInfo([Event? event]) => + (event ?? selectedEvents.single).showInfoDialog(context); + + void onPhoneButtonTap() async { + // VoIP required Android SDK 21 + if (PlatformInfos.isAndroid) { + DeviceInfoPlugin().androidInfo.then((value) { + if (value.version.sdkInt < 21) { + Navigator.pop(context); + showOkAlertDialog( + context: context, + title: L10n.of(context).unsupportedAndroidVersion, + message: L10n.of(context).unsupportedAndroidVersionLong, + okLabel: L10n.of(context).close, + ); + } + }); + } + final callType = await showModalActionPopup( + context: context, + title: L10n.of(context).warning, + message: L10n.of(context).videoCallsBetaWarning, + cancelLabel: L10n.of(context).cancel, + actions: [ + AdaptiveModalAction( + label: L10n.of(context).voiceCall, + icon: const Icon(Icons.phone_outlined), + value: CallType.kVoice, + ), + AdaptiveModalAction( + label: L10n.of(context).videoCall, + icon: const Icon(Icons.video_call_outlined), + value: CallType.kVideo, + ), + ], + ); + if (callType == null) return; + + final voipPlugin = Matrix.of(context).voipPlugin; + try { + await voipPlugin!.voip.inviteToCall(room, callType); + } catch (e) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text(e.toLocalizedString(context))), + ); + } + } + + void cancelReplyEventAction() => setState(() { + if (editEvent != null) { + sendController.text = pendingText; + pendingText = ''; + } + replyEvent = null; + editEvent = null; + }); + + late final ValueNotifier _displayChatDetailsColumn; + + void toggleDisplayChatDetailsColumn() async { + await AppSettings.displayChatDetailsColumn.setItem( + !_displayChatDetailsColumn.value, + ); + _displayChatDetailsColumn.value = !_displayChatDetailsColumn.value; + } + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + return Row( + children: [ + Expanded( + child: ChatView(this), + ), + ValueListenableBuilder( + valueListenable: _displayChatDetailsColumn, + builder: (context, displayChatDetailsColumn, _) => + !FluffyThemes.isThreeColumnMode(context) || + room.membership != Membership.join || + !displayChatDetailsColumn + ? const SizedBox( + height: double.infinity, + width: 0, + ) + : Container( + width: FluffyThemes.columnWidth, + clipBehavior: Clip.hardEdge, + decoration: BoxDecoration( + border: Border( + left: BorderSide( + width: 1, + color: theme.dividerColor, + ), + ), + ), + child: ChatDetails( + roomId: roomId, + embeddedCloseButton: IconButton( + icon: const Icon(Icons.close), + onPressed: toggleDisplayChatDetailsColumn, + ), + ), + ), + ), + ], + ); + } +} + +enum AddPopupMenuActions { + image, + video, + file, + poll, + photoCamera, + videoCamera, + location, +} diff --git a/lib/pages/chat/chat_app_bar_list_tile.dart b/lib/pages/chat/chat_app_bar_list_tile.dart new file mode 100644 index 0000000..a1fc21b --- /dev/null +++ b/lib/pages/chat/chat_app_bar_list_tile.dart @@ -0,0 +1,65 @@ +import 'package:flutter/material.dart'; + +import 'package:flutter_linkify/flutter_linkify.dart'; + +import 'package:fluffychat/utils/url_launcher.dart'; + +class ChatAppBarListTile extends StatelessWidget { + final Widget? leading; + final String title; + final Widget? trailing; + final void Function()? onTap; + + static const double fixedHeight = 40.0; + + const ChatAppBarListTile({ + super.key, + this.leading, + required this.title, + this.trailing, + this.onTap, + }); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + final leading = this.leading; + final trailing = this.trailing; + 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, + textScaleFactor: MediaQuery.textScalerOf(context).scale(1), + options: const LinkifyOptions(humanize: false), + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + color: theme.colorScheme.onSurfaceVariant, + overflow: TextOverflow.ellipsis, + fontSize: 14, + ), + linkStyle: TextStyle( + color: theme.colorScheme.onSurfaceVariant, + fontSize: 14, + decoration: TextDecoration.underline, + decorationColor: theme.colorScheme.onSurfaceVariant, + ), + onOpen: (url) => UrlLauncher(context, url.url).launchUrl(), + ), + ), + ), + if (trailing != null) trailing, + ], + ), + ), + ); + } +} diff --git a/lib/pages/chat/chat_app_bar_title.dart b/lib/pages/chat/chat_app_bar_title.dart new file mode 100644 index 0000000..f560913 --- /dev/null +++ b/lib/pages/chat/chat_app_bar_title.dart @@ -0,0 +1,141 @@ +import 'package:flutter/material.dart'; + +import 'package:go_router/go_router.dart'; +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/config/themes.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/chat/chat.dart'; +import 'package:fluffychat/utils/date_time_extension.dart'; +import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; +import 'package:fluffychat/utils/sync_status_localization.dart'; +import 'package:fluffychat/widgets/avatar.dart'; +import 'package:fluffychat/widgets/presence_builder.dart'; + +class ChatAppBarTitle extends StatelessWidget { + final ChatController controller; + const ChatAppBarTitle(this.controller, {super.key}); + + @override + Widget build(BuildContext context) { + final room = controller.room; + if (controller.selectedEvents.isNotEmpty) { + return Text( + controller.selectedEvents.length.toString(), + style: TextStyle( + color: Theme.of(context).colorScheme.onTertiaryContainer, + ), + ); + } + return InkWell( + hoverColor: Colors.transparent, + splashColor: Colors.transparent, + highlightColor: Colors.transparent, + onTap: controller.isArchived + ? null + : () => FluffyThemes.isThreeColumnMode(context) + ? controller.toggleDisplayChatDetailsColumn() + : context.go('/rooms/${room.id}/details'), + child: Row( + children: [ + Hero( + tag: 'content_banner', + child: Avatar( + mxContent: room.avatar, + name: room.getLocalizedDisplayname( + MatrixLocals(L10n.of(context)), + ), + size: 32, + ), + ), + const SizedBox(width: 12), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + room.getLocalizedDisplayname(MatrixLocals(L10n.of(context))), + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: const TextStyle( + fontSize: 16, + ), + ), + StreamBuilder( + stream: room.client.onSyncStatus.stream, + builder: (context, snapshot) { + final status = room.client.onSyncStatus.value ?? + const SyncStatusUpdate(SyncStatus.waitingForResponse); + final hide = FluffyThemes.isColumnMode(context) || + (room.client.onSync.value != null && + status.status != SyncStatus.error && + room.client.prevBatch != null); + return AnimatedSize( + duration: FluffyThemes.animationDuration, + child: hide + ? PresenceBuilder( + userId: room.directChatMatrixID, + builder: (context, presence) { + final lastActiveTimestamp = + presence?.lastActiveTimestamp; + final style = TextStyle( + fontSize: 12, + color: Theme.of(context).colorScheme.outline, + ); + if (presence?.currentlyActive == true) { + return Text( + L10n.of(context).currentlyActive, + style: style, + ); + } + if (lastActiveTimestamp != null) { + return Text( + L10n.of(context).lastActiveAgo( + lastActiveTimestamp + .localizedTimeShort(context), + ), + style: style, + ); + } + return const SizedBox.shrink(); + }, + ) + : Row( + children: [ + SizedBox.square( + dimension: 10, + child: CircularProgressIndicator.adaptive( + strokeWidth: 1, + value: status.progress, + valueColor: status.error != null + ? AlwaysStoppedAnimation( + Theme.of(context).colorScheme.error, + ) + : null, + ), + ), + const SizedBox(width: 4), + Expanded( + child: Text( + status.calcLocalizedString(context), + style: TextStyle( + fontSize: 12, + color: status.error != null + ? Theme.of(context).colorScheme.error + : null, + ), + ), + ), + ], + ), + ); + }, + ), + ], + ), + ), + ], + ), + ); + } +} diff --git a/lib/pages/chat/chat_emoji_picker.dart b/lib/pages/chat/chat_emoji_picker.dart new file mode 100644 index 0000000..b661367 --- /dev/null +++ b/lib/pages/chat/chat_emoji_picker.dart @@ -0,0 +1,113 @@ +import 'package:flutter/material.dart'; + +import 'package:emoji_picker_flutter/emoji_picker_flutter.dart'; +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/config/themes.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/chat/sticker_picker_dialog.dart'; +import 'chat.dart'; + +class ChatEmojiPicker extends StatelessWidget { + final ChatController controller; + const ChatEmojiPicker(this.controller, {super.key}); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + return AnimatedContainer( + duration: FluffyThemes.animationDuration, + curve: FluffyThemes.animationCurve, + clipBehavior: Clip.hardEdge, + decoration: const BoxDecoration(), + height: controller.showEmojiPicker + ? MediaQuery.sizeOf(context).height / 2 + : 0, + child: controller.showEmojiPicker + ? DefaultTabController( + length: 2, + child: Column( + children: [ + TabBar( + tabs: [ + Tab(text: L10n.of(context).emojis), + Tab(text: L10n.of(context).stickers), + ], + ), + Expanded( + child: TabBarView( + children: [ + EmojiPicker( + onEmojiSelected: controller.onEmojiSelected, + onBackspacePressed: controller.emojiPickerBackspace, + config: Config( + emojiViewConfig: EmojiViewConfig( + noRecents: const NoRecent(), + backgroundColor: + theme.colorScheme.onInverseSurface, + ), + bottomActionBarConfig: const BottomActionBarConfig( + enabled: false, + ), + categoryViewConfig: CategoryViewConfig( + backspaceColor: theme.colorScheme.primary, + iconColor: + theme.colorScheme.primary.withAlpha(128), + iconColorSelected: theme.colorScheme.primary, + indicatorColor: theme.colorScheme.primary, + backgroundColor: theme.colorScheme.surface, + ), + skinToneConfig: SkinToneConfig( + dialogBackgroundColor: Color.lerp( + theme.colorScheme.surface, + theme.colorScheme.primaryContainer, + 0.75, + )!, + indicatorColor: theme.colorScheme.onSurface, + ), + ), + ), + StickerPickerDialog( + room: controller.room, + onSelected: (sticker) { + controller.room.sendEvent( + { + 'body': sticker.body, + 'info': sticker.info ?? {}, + 'url': sticker.url.toString(), + }, + type: EventTypes.Sticker, + threadRootEventId: controller.activeThreadId, + threadLastEventId: controller.threadLastEventId, + ); + controller.hideEmojiPicker(); + }, + ), + ], + ), + ), + ], + ), + ) + : null, + ); + } +} + +class NoRecent extends StatelessWidget { + const NoRecent({super.key}); + + @override + Widget build(BuildContext context) { + return Center( + child: Padding( + padding: const EdgeInsets.all(16.0), + child: Text( + L10n.of(context).emoteKeyboardNoRecents, + style: Theme.of(context).textTheme.bodyLarge, + textAlign: TextAlign.center, + ), + ), + ); + } +} diff --git a/lib/pages/chat/chat_event_list.dart b/lib/pages/chat/chat_event_list.dart new file mode 100644 index 0000000..0059026 --- /dev/null +++ b/lib/pages/chat/chat_event_list.dart @@ -0,0 +1,190 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; + +import 'package:scroll_to_index/scroll_to_index.dart'; + +import 'package:fluffychat/config/themes.dart'; +import 'package:fluffychat/pages/chat/chat.dart'; +import 'package:fluffychat/pages/chat/events/message.dart'; +import 'package:fluffychat/pages/chat/seen_by_row.dart'; +import 'package:fluffychat/pages/chat/typing_indicators.dart'; +import 'package:fluffychat/utils/account_config.dart'; +import 'package:fluffychat/utils/matrix_sdk_extensions/filtered_timeline_extension.dart'; +import 'package:fluffychat/utils/platform_infos.dart'; + +class ChatEventList extends StatelessWidget { + final ChatController controller; + + const ChatEventList({ + super.key, + required this.controller, + }); + + @override + Widget build(BuildContext context) { + final timeline = controller.timeline; + + if (timeline == null) { + return const Center(child: CupertinoActivityIndicator()); + } + final theme = Theme.of(context); + + final colors = [ + theme.secondaryBubbleColor, + theme.bubbleColor, + ]; + + final horizontalPadding = FluffyThemes.isColumnMode(context) ? 8.0 : 0.0; + + final events = timeline.events.filterByVisibleInGui( + threadId: controller.activeThreadId, + ); + final animateInEventIndex = controller.animateInEventIndex; + + // create a map of eventId --> index to greatly improve performance of + // ListView's findChildIndexCallback + final thisEventsKeyMap = {}; + for (var i = 0; i < events.length; i++) { + thisEventsKeyMap[events[i].eventId] = i; + } + + final hasWallpaper = + controller.room.client.applicationAccountConfig.wallpaperUrl != null; + + return SelectionArea( + child: ListView.custom( + padding: EdgeInsets.only( + top: 16, + bottom: 8, + left: horizontalPadding, + right: horizontalPadding, + ), + reverse: true, + controller: controller.scrollController, + keyboardDismissBehavior: PlatformInfos.isIOS + ? ScrollViewKeyboardDismissBehavior.onDrag + : ScrollViewKeyboardDismissBehavior.manual, + childrenDelegate: SliverChildBuilderDelegate( + (BuildContext context, int i) { + // Footer to display typing indicator and read receipts: + if (i == 0) { + if (timeline.isRequestingFuture) { + return const Center( + child: CircularProgressIndicator.adaptive(strokeWidth: 2), + ); + } + if (timeline.canRequestFuture) { + return Center( + child: IconButton( + onPressed: controller.requestFuture, + icon: const Icon(Icons.refresh_outlined), + ), + ); + } + return Column( + mainAxisSize: MainAxisSize.min, + children: [ + SeenByRow(controller), + TypingIndicators(controller), + ], + ); + } + + // Request history button or progress indicator: + if (i == events.length + 1) { + if (timeline.isRequestingHistory) { + return const Center( + child: CircularProgressIndicator.adaptive(strokeWidth: 2), + ); + } + if (timeline.canRequestHistory && + controller.activeThreadId == null) { + return Builder( + builder: (context) { + WidgetsBinding.instance + .addPostFrameCallback(controller.requestHistory); + return Center( + child: IconButton( + onPressed: controller.requestHistory, + icon: const Icon(Icons.refresh_outlined), + ), + ); + }, + ); + } + return const SizedBox.shrink(); + } + i--; + + // The message at this index: + final event = events[i]; + final animateIn = animateInEventIndex != null && + timeline.events.length > animateInEventIndex && + event == timeline.events[animateInEventIndex]; + + final nextEvent = i + 1 < events.length ? events[i + 1] : null; + final previousEvent = i > 0 ? events[i - 1] : null; + + // Collapsed state event + final canExpand = event.isCollapsedState && + nextEvent?.isCollapsedState == true && + previousEvent?.isCollapsedState != true; + final isCollapsed = event.isCollapsedState && + previousEvent?.isCollapsedState == true && + !controller.expandedEventIds.contains(event.eventId); + + return AutoScrollTag( + key: ValueKey(event.eventId), + index: i, + controller: controller.scrollController, + child: Message( + event, + animateIn: animateIn, + resetAnimateIn: () { + controller.animateInEventIndex = null; + }, + onSwipe: () => controller.replyAction(replyTo: event), + onInfoTab: controller.showEventInfo, + onMention: () => controller.sendController.text += + '${event.senderFromMemoryOrFallback.mention} ', + highlightMarker: + controller.scrollToEventIdMarker == event.eventId, + onSelect: controller.onSelectMessage, + scrollToEventId: (String eventId) => + controller.scrollToEventId(eventId), + longPressSelect: controller.selectedEvents.isNotEmpty, + selected: controller.selectedEvents + .any((e) => e.eventId == event.eventId), + singleSelected: + controller.selectedEvents.singleOrNull?.eventId == + event.eventId, + onEdit: () => controller.editSelectedEventAction(), + timeline: timeline, + displayReadMarker: + i > 0 && controller.readMarkerEventId == event.eventId, + nextEvent: nextEvent, + previousEvent: previousEvent, + wallpaperMode: hasWallpaper, + scrollController: controller.scrollController, + colors: colors, + isCollapsed: isCollapsed, + enterThread: controller.activeThreadId == null + ? controller.enterThread + : null, + onExpand: canExpand + ? () => controller.expandEventsFrom( + event, + !controller.expandedEventIds.contains(event.eventId), + ) + : null, + ), + ); + }, + childCount: events.length + 2, + findChildIndexCallback: (key) => + controller.findChildIndexCallback(key, thisEventsKeyMap), + ), + ), + ); + } +} diff --git a/lib/pages/chat/chat_input_row.dart b/lib/pages/chat/chat_input_row.dart new file mode 100644 index 0000000..1da3fab --- /dev/null +++ b/lib/pages/chat/chat_input_row.dart @@ -0,0 +1,438 @@ +import 'package:flutter/material.dart'; + +import 'package:animations/animations.dart'; +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/config/setting_keys.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/chat/recording_input_row.dart'; +import 'package:fluffychat/pages/chat/recording_view_model.dart'; +import 'package:fluffychat/utils/other_party_can_receive.dart'; +import 'package:fluffychat/utils/platform_infos.dart'; +import 'package:fluffychat/widgets/avatar.dart'; +import 'package:fluffychat/widgets/matrix.dart'; +import '../../config/themes.dart'; +import 'chat.dart'; +import 'input_bar.dart'; + +class ChatInputRow extends StatelessWidget { + final ChatController controller; + + const ChatInputRow(this.controller, {super.key}); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + const height = 48.0; + + if (!controller.room.otherPartyCanReceiveMessages) { + return Center( + child: Padding( + padding: const EdgeInsets.all(12.0), + child: Text( + L10n.of(context).otherPartyNotLoggedIn, + style: theme.textTheme.bodySmall, + textAlign: TextAlign.center, + ), + ), + ); + } + + final selectedTextButtonStyle = TextButton.styleFrom( + foregroundColor: theme.colorScheme.onTertiaryContainer, + ); + + return RecordingViewModel( + builder: (context, recordingViewModel) { + if (recordingViewModel.isRecording) { + return RecordingInputRow( + state: recordingViewModel, + onSend: controller.onVoiceMessageSend, + ); + } + return Row( + crossAxisAlignment: CrossAxisAlignment.end, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: controller.selectMode + ? [ + if (controller.selectedEvents + .every((event) => event.status == EventStatus.error)) + SizedBox( + height: height, + child: TextButton( + style: TextButton.styleFrom( + foregroundColor: theme.colorScheme.error, + ), + onPressed: controller.deleteErrorEventsAction, + child: Row( + children: [ + const Icon(Icons.delete_forever_outlined), + Text(L10n.of(context).delete), + ], + ), + ), + ) + else + SizedBox( + height: height, + child: TextButton( + style: selectedTextButtonStyle, + onPressed: controller.forwardEventsAction, + child: Row( + children: [ + const Icon(Icons.keyboard_arrow_left_outlined), + Text(L10n.of(context).forward), + ], + ), + ), + ), + controller.selectedEvents.length == 1 + ? controller.selectedEvents.first + .getDisplayEvent(controller.timeline!) + .status + .isSent + ? SizedBox( + height: height, + child: TextButton( + style: selectedTextButtonStyle, + onPressed: controller.replyAction, + child: Row( + children: [ + Text(L10n.of(context).reply), + const Icon(Icons.keyboard_arrow_right), + ], + ), + ), + ) + : SizedBox( + height: height, + child: TextButton( + style: selectedTextButtonStyle, + onPressed: controller.sendAgainAction, + child: Row( + children: [ + Text(L10n.of(context).tryToSendAgain), + const SizedBox(width: 4), + const Icon(Icons.send_outlined, size: 16), + ], + ), + ), + ) + : const SizedBox.shrink(), + ] + : [ + const SizedBox(width: 4), + AnimatedContainer( + duration: FluffyThemes.animationDuration, + curve: FluffyThemes.animationCurve, + width: + controller.sendController.text.isNotEmpty ? 0 : height, + height: height, + alignment: Alignment.center, + decoration: const BoxDecoration(), + clipBehavior: Clip.hardEdge, + child: PopupMenuButton( + useRootNavigator: true, + icon: const Icon(Icons.add_circle_outline), + iconColor: theme.colorScheme.onPrimaryContainer, + onSelected: controller.onAddPopupMenuButtonSelected, + itemBuilder: (BuildContext context) => [ + if (PlatformInfos.isMobile) + PopupMenuItem( + value: AddPopupMenuActions.location, + child: ListTile( + leading: CircleAvatar( + backgroundColor: + theme.colorScheme.onPrimaryContainer, + foregroundColor: + theme.colorScheme.primaryContainer, + child: const Icon(Icons.gps_fixed_outlined), + ), + title: Text(L10n.of(context).shareLocation), + contentPadding: const EdgeInsets.all(0), + ), + ), + PopupMenuItem( + value: AddPopupMenuActions.poll, + child: ListTile( + leading: CircleAvatar( + backgroundColor: + theme.colorScheme.onPrimaryContainer, + foregroundColor: + theme.colorScheme.primaryContainer, + child: const Icon(Icons.poll_outlined), + ), + title: Text(L10n.of(context).startPoll), + contentPadding: const EdgeInsets.all(0), + ), + ), + PopupMenuItem( + value: AddPopupMenuActions.image, + child: ListTile( + leading: CircleAvatar( + backgroundColor: + theme.colorScheme.onPrimaryContainer, + foregroundColor: + theme.colorScheme.primaryContainer, + child: const Icon(Icons.photo_outlined), + ), + title: Text(L10n.of(context).sendImage), + contentPadding: const EdgeInsets.all(0), + ), + ), + PopupMenuItem( + value: AddPopupMenuActions.video, + child: ListTile( + leading: CircleAvatar( + backgroundColor: + theme.colorScheme.onPrimaryContainer, + foregroundColor: + theme.colorScheme.primaryContainer, + child: + const Icon(Icons.video_camera_back_outlined), + ), + title: Text(L10n.of(context).sendVideo), + contentPadding: const EdgeInsets.all(0), + ), + ), + PopupMenuItem( + value: AddPopupMenuActions.file, + child: ListTile( + leading: CircleAvatar( + backgroundColor: + theme.colorScheme.onPrimaryContainer, + foregroundColor: + theme.colorScheme.primaryContainer, + child: const Icon(Icons.attachment_outlined), + ), + title: Text(L10n.of(context).sendFile), + contentPadding: const EdgeInsets.all(0), + ), + ), + ], + ), + ), + if (PlatformInfos.isMobile) + AnimatedContainer( + duration: FluffyThemes.animationDuration, + curve: FluffyThemes.animationCurve, + width: controller.sendController.text.isNotEmpty + ? 0 + : height, + height: height, + alignment: Alignment.center, + decoration: const BoxDecoration(), + clipBehavior: Clip.hardEdge, + child: PopupMenuButton( + useRootNavigator: true, + icon: const Icon(Icons.camera_alt_outlined), + onSelected: controller.onAddPopupMenuButtonSelected, + iconColor: theme.colorScheme.onPrimaryContainer, + itemBuilder: (context) => [ + PopupMenuItem( + value: AddPopupMenuActions.videoCamera, + child: ListTile( + leading: CircleAvatar( + backgroundColor: + theme.colorScheme.onPrimaryContainer, + foregroundColor: + theme.colorScheme.primaryContainer, + child: const Icon(Icons.videocam_outlined), + ), + title: Text(L10n.of(context).recordAVideo), + contentPadding: const EdgeInsets.all(0), + ), + ), + PopupMenuItem( + value: AddPopupMenuActions.photoCamera, + child: ListTile( + leading: CircleAvatar( + backgroundColor: + theme.colorScheme.onPrimaryContainer, + foregroundColor: + theme.colorScheme.primaryContainer, + child: const Icon(Icons.camera_alt_outlined), + ), + title: Text(L10n.of(context).takeAPhoto), + contentPadding: const EdgeInsets.all(0), + ), + ), + ], + ), + ), + Container( + height: height, + width: height, + alignment: Alignment.center, + child: IconButton( + tooltip: L10n.of(context).emojis, + color: theme.colorScheme.onPrimaryContainer, + icon: PageTransitionSwitcher( + transitionBuilder: ( + Widget child, + Animation primaryAnimation, + Animation secondaryAnimation, + ) { + return SharedAxisTransition( + animation: primaryAnimation, + secondaryAnimation: secondaryAnimation, + transitionType: SharedAxisTransitionType.scaled, + fillColor: Colors.transparent, + child: child, + ); + }, + child: Icon( + controller.showEmojiPicker + ? Icons.keyboard + : Icons.add_reaction_outlined, + key: ValueKey(controller.showEmojiPicker), + ), + ), + onPressed: controller.emojiPickerAction, + ), + ), + if (Matrix.of(context).isMultiAccount && + Matrix.of(context).hasComplexBundles && + Matrix.of(context).currentBundle!.length > 1) + Container( + height: height, + width: height, + alignment: Alignment.center, + child: _ChatAccountPicker(controller), + ), + Expanded( + child: Padding( + padding: const EdgeInsets.symmetric(vertical: 0.0), + child: InputBar( + room: controller.room, + minLines: 1, + maxLines: 8, + autofocus: !PlatformInfos.isMobile, + keyboardType: TextInputType.multiline, + textInputAction: + AppSettings.sendOnEnter.value == true && + PlatformInfos.isMobile + ? TextInputAction.send + : null, + onSubmitted: controller.onInputBarSubmitted, + onSubmitImage: controller.sendImageFromClipBoard, + focusNode: controller.inputFocus, + controller: controller.sendController, + decoration: InputDecoration( + contentPadding: const EdgeInsets.only( + left: 6.0, + right: 6.0, + bottom: 6.0, + top: 3.0, + ), + counter: const SizedBox.shrink(), + hintText: L10n.of(context).writeAMessage, + hintMaxLines: 1, + border: InputBorder.none, + enabledBorder: InputBorder.none, + filled: false, + ), + onChanged: controller.onInputBarChanged, + ), + ), + ), + Container( + height: height, + width: height, + alignment: Alignment.center, + child: PlatformInfos.platformCanRecord && + controller.sendController.text.isEmpty + ? IconButton( + tooltip: L10n.of(context).voiceMessage, + onPressed: () => + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text( + L10n.of(context) + .longPressToRecordVoiceMessage, + ), + ), + ), + onLongPress: () => recordingViewModel + .startRecording(controller.room), + style: IconButton.styleFrom( + backgroundColor: theme.bubbleColor, + foregroundColor: theme.onBubbleColor, + ), + icon: const Icon(Icons.mic_none_outlined), + ) + : IconButton( + tooltip: L10n.of(context).send, + onPressed: controller.send, + style: IconButton.styleFrom( + backgroundColor: theme.bubbleColor, + foregroundColor: theme.onBubbleColor, + ), + icon: const Icon(Icons.send_outlined), + ), + ), + ], + ); + }, + ); + } +} + +class _ChatAccountPicker extends StatelessWidget { + final ChatController controller; + + const _ChatAccountPicker(this.controller); + + void _popupMenuButtonSelected(String mxid, BuildContext context) { + final client = Matrix.of(context) + .currentBundle! + .firstWhere((cl) => cl!.userID == mxid, orElse: () => null); + if (client == null) { + Logs().w('Attempted to switch to a non-existing client $mxid'); + return; + } + controller.setSendingClient(client); + } + + @override + Widget build(BuildContext context) { + final clients = controller.currentRoomBundle; + return Padding( + padding: const EdgeInsets.all(8.0), + child: FutureBuilder( + future: controller.sendingClient.fetchOwnProfile(), + builder: (context, snapshot) => PopupMenuButton( + useRootNavigator: true, + onSelected: (mxid) => _popupMenuButtonSelected(mxid, context), + itemBuilder: (BuildContext context) => clients + .map( + (client) => PopupMenuItem( + value: client!.userID, + child: FutureBuilder( + future: client.fetchOwnProfile(), + builder: (context, snapshot) => ListTile( + leading: Avatar( + mxContent: snapshot.data?.avatarUrl, + name: snapshot.data?.displayName ?? + client.userID!.localpart, + size: 20, + ), + title: Text(snapshot.data?.displayName ?? client.userID!), + contentPadding: const EdgeInsets.all(0), + ), + ), + ), + ) + .toList(), + child: Avatar( + mxContent: snapshot.data?.avatarUrl, + name: snapshot.data?.displayName ?? + Matrix.of(context).client.userID!.localpart, + size: 20, + ), + ), + ), + ); + } +} diff --git a/lib/pages/chat/chat_view.dart b/lib/pages/chat/chat_view.dart new file mode 100644 index 0000000..e61cb29 --- /dev/null +++ b/lib/pages/chat/chat_view.dart @@ -0,0 +1,449 @@ +import 'dart:ui' as ui; + +import 'package:flutter/material.dart'; + +import 'package:badges/badges.dart'; +import 'package:desktop_drop/desktop_drop.dart'; +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/config/setting_keys.dart'; +import 'package:fluffychat/config/themes.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/chat/chat.dart'; +import 'package:fluffychat/pages/chat/chat_app_bar_list_tile.dart'; +import 'package:fluffychat/pages/chat/chat_app_bar_title.dart'; +import 'package:fluffychat/pages/chat/chat_event_list.dart'; +import 'package:fluffychat/pages/chat/encryption_button.dart'; +import 'package:fluffychat/pages/chat/pinned_events.dart'; +import 'package:fluffychat/pages/chat/reply_display.dart'; +import 'package:fluffychat/utils/account_config.dart'; +import 'package:fluffychat/utils/localized_exception_extension.dart'; +import 'package:fluffychat/widgets/chat_settings_popup_menu.dart'; +import 'package:fluffychat/widgets/future_loading_dialog.dart'; +import 'package:fluffychat/widgets/matrix.dart'; +import 'package:fluffychat/widgets/mxc_image.dart'; +import 'package:fluffychat/widgets/unread_rooms_badge.dart'; +import '../../utils/stream_extension.dart'; +import 'chat_emoji_picker.dart'; +import 'chat_input_row.dart'; + +enum _EventContextAction { info, report } + +class ChatView extends StatelessWidget { + final ChatController controller; + + const ChatView(this.controller, {super.key}); + + List _appBarActions(BuildContext context) { + if (controller.selectMode) { + return [ + if (controller.canEditSelectedEvents) + IconButton( + icon: const Icon(Icons.edit_outlined), + tooltip: L10n.of(context).edit, + onPressed: controller.editSelectedEventAction, + ), + if (controller.selectedEvents.length == 1 && + controller.activeThreadId == null && + controller.room.canSendDefaultMessages) + IconButton( + icon: const Icon(Icons.message_outlined), + tooltip: L10n.of(context).replyInThread, + onPressed: () => controller + .enterThread(controller.selectedEvents.single.eventId), + ), + if (controller.canPinSelectedEvents) + IconButton( + icon: const Icon(Icons.push_pin_outlined), + onPressed: controller.pinEvent, + tooltip: L10n.of(context).pinMessage, + ), + if (controller.canRedactSelectedEvents) + IconButton( + icon: const Icon(Icons.delete_outlined), + tooltip: L10n.of(context).redactMessage, + onPressed: controller.redactEventsAction, + ), + if (controller.selectedEvents.length == 1) + PopupMenuButton<_EventContextAction>( + useRootNavigator: true, + onSelected: (action) { + switch (action) { + case _EventContextAction.info: + controller.showEventInfo(); + controller.clearSelectedEvents(); + break; + case _EventContextAction.report: + controller.reportEventAction(); + break; + } + }, + itemBuilder: (context) => [ + PopupMenuItem( + onTap: controller.copyEventsAction, + value: null, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + const Icon(Icons.copy_outlined), + const SizedBox(width: 12), + Text(L10n.of(context).copy), + ], + ), + ), + if (controller.canSaveSelectedEvent) + PopupMenuItem( + onTap: () => controller.saveSelectedEvent(context), + value: null, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + const Icon(Icons.download_outlined), + const SizedBox(width: 12), + Text(L10n.of(context).downloadFile), + ], + ), + ), + PopupMenuItem( + value: _EventContextAction.info, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + const Icon(Icons.info_outlined), + const SizedBox(width: 12), + Text(L10n.of(context).messageInfo), + ], + ), + ), + if (controller.selectedEvents.single.status.isSent) + PopupMenuItem( + value: _EventContextAction.report, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + const Icon( + Icons.shield_outlined, + color: Colors.red, + ), + const SizedBox(width: 12), + Text(L10n.of(context).reportMessage), + ], + ), + ), + ], + ), + ]; + } else if (!controller.room.isArchived) { + return [ + if (AppSettings.experimentalVoip.value && + Matrix.of(context).voipPlugin != null && + controller.room.isDirectChat) + IconButton( + onPressed: controller.onPhoneButtonTap, + icon: const Icon(Icons.call_outlined), + tooltip: L10n.of(context).placeCall, + ), + EncryptionButton(controller.room), + ChatSettingsPopupMenu(controller.room, true), + ]; + } + return []; + } + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + if (controller.room.membership == Membership.invite) { + showFutureLoadingDialog( + context: context, + future: () => controller.room.join(), + exceptionContext: ExceptionContext.joinRoom, + ); + } + final bottomSheetPadding = FluffyThemes.isColumnMode(context) ? 16.0 : 8.0; + final scrollUpBannerEventId = controller.scrollUpBannerEventId; + + final accountConfig = Matrix.of(context).client.applicationAccountConfig; + + return PopScope( + canPop: controller.selectedEvents.isEmpty && + !controller.showEmojiPicker && + controller.activeThreadId == null, + onPopInvokedWithResult: (pop, _) async { + if (pop) return; + if (controller.selectedEvents.isNotEmpty) { + controller.clearSelectedEvents(); + } else if (controller.showEmojiPicker) { + controller.emojiPickerAction(); + } else if (controller.activeThreadId != null) { + controller.closeThread(); + } + }, + child: StreamBuilder( + stream: controller.room.client.onRoomState.stream + .where((update) => update.roomId == controller.room.id) + .rateLimit(const Duration(seconds: 1)), + builder: (context, snapshot) => FutureBuilder( + future: controller.loadTimelineFuture, + builder: (BuildContext context, snapshot) { + var appbarBottomHeight = 0.0; + final activeThreadId = controller.activeThreadId; + if (activeThreadId != null) { + appbarBottomHeight += ChatAppBarListTile.fixedHeight; + } + if (controller.room.pinnedEventIds.isNotEmpty && + activeThreadId == null) { + appbarBottomHeight += ChatAppBarListTile.fixedHeight; + } + if (scrollUpBannerEventId != null && activeThreadId == null) { + appbarBottomHeight += ChatAppBarListTile.fixedHeight; + } + return Scaffold( + appBar: AppBar( + actionsIconTheme: IconThemeData( + color: controller.selectedEvents.isEmpty + ? null + : theme.colorScheme.onTertiaryContainer, + ), + backgroundColor: controller.selectedEvents.isEmpty + ? controller.activeThreadId != null + ? theme.colorScheme.secondaryContainer + : null + : theme.colorScheme.tertiaryContainer, + automaticallyImplyLeading: false, + leading: controller.selectMode + ? IconButton( + icon: const Icon(Icons.close), + onPressed: controller.clearSelectedEvents, + tooltip: L10n.of(context).close, + color: theme.colorScheme.onTertiaryContainer, + ) + : activeThreadId != null + ? IconButton( + icon: const Icon(Icons.close), + onPressed: controller.closeThread, + tooltip: L10n.of(context).backToMainChat, + color: theme.colorScheme.onSecondaryContainer, + ) + : FluffyThemes.isColumnMode(context) + ? null + : 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: FluffyThemes.isColumnMode(context) ? 24 : 0, + title: ChatAppBarTitle(controller), + actions: _appBarActions(context), + bottom: PreferredSize( + preferredSize: Size.fromHeight(appbarBottomHeight), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + PinnedEvents(controller), + if (activeThreadId != null) + SizedBox( + height: ChatAppBarListTile.fixedHeight, + child: Center( + child: TextButton.icon( + onPressed: () => + controller.scrollToEventId(activeThreadId), + icon: const Icon(Icons.message), + label: Text(L10n.of(context).replyInThread), + style: TextButton.styleFrom( + foregroundColor: + theme.colorScheme.onSecondaryContainer, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(4), + ), + ), + ), + ), + ), + if (scrollUpBannerEventId != null && + activeThreadId == null) + ChatAppBarListTile( + leading: IconButton( + color: theme.colorScheme.onSurfaceVariant, + icon: const Icon(Icons.close), + tooltip: L10n.of(context).close, + onPressed: () { + controller.discardScrollUpBannerEventId(); + controller.setReadMarker(); + }, + ), + title: L10n.of(context).jumpToLastReadMessage, + trailing: TextButton( + onPressed: () { + controller.scrollToEventId( + scrollUpBannerEventId, + ); + controller.discardScrollUpBannerEventId(); + }, + child: Text(L10n.of(context).jump), + ), + ), + ], + ), + ), + ), + floatingActionButtonLocation: + FloatingActionButtonLocation.miniCenterFloat, + floatingActionButton: controller.showScrollDownButton && + controller.selectedEvents.isEmpty + ? Padding( + padding: const EdgeInsets.only(bottom: 56.0), + child: FloatingActionButton( + onPressed: controller.scrollDown, + heroTag: null, + mini: true, + backgroundColor: theme.colorScheme.surface, + foregroundColor: theme.colorScheme.onSurface, + child: const Icon(Icons.arrow_downward_outlined), + ), + ) + : null, + body: DropTarget( + onDragDone: controller.onDragDone, + onDragEntered: controller.onDragEntered, + onDragExited: controller.onDragExited, + child: Stack( + children: [ + if (accountConfig.wallpaperUrl != null) + Opacity( + opacity: accountConfig.wallpaperOpacity ?? 0.5, + child: ImageFiltered( + imageFilter: ui.ImageFilter.blur( + sigmaX: accountConfig.wallpaperBlur ?? 0.0, + sigmaY: accountConfig.wallpaperBlur ?? 0.0, + ), + child: MxcImage( + cacheKey: accountConfig.wallpaperUrl.toString(), + uri: accountConfig.wallpaperUrl, + fit: BoxFit.cover, + height: MediaQuery.sizeOf(context).height, + width: MediaQuery.sizeOf(context).width, + isThumbnail: false, + placeholder: (_) => Container(), + ), + ), + ), + SafeArea( + child: Column( + children: [ + Expanded( + child: GestureDetector( + onTap: controller.clearSingleSelectedEvent, + child: ChatEventList(controller: controller), + ), + ), + if (controller.showScrollDownButton) + Divider( + height: 1, + color: theme.dividerColor, + ), + if (controller.room.isExtinct) + Container( + margin: EdgeInsets.all(bottomSheetPadding), + width: double.infinity, + child: ElevatedButton.icon( + icon: const Icon(Icons.chevron_right), + label: Text(L10n.of(context).enterNewChat), + onPressed: controller.goToNewRoomAction, + ), + ) + else if (controller.room.canSendDefaultMessages && + controller.room.membership == Membership.join) + Container( + margin: EdgeInsets.all(bottomSheetPadding), + constraints: const BoxConstraints( + maxWidth: FluffyThemes.maxTimelineWidth, + ), + alignment: Alignment.center, + child: Material( + clipBehavior: Clip.hardEdge, + color: controller.selectedEvents.isNotEmpty + ? theme.colorScheme.tertiaryContainer + : theme.colorScheme.surfaceContainerHigh, + borderRadius: const BorderRadius.all( + Radius.circular(24), + ), + child: controller.room.isAbandonedDMRoom == true + ? Row( + mainAxisAlignment: + MainAxisAlignment.spaceEvenly, + children: [ + TextButton.icon( + style: TextButton.styleFrom( + padding: const EdgeInsets.all( + 16, + ), + foregroundColor: + theme.colorScheme.error, + ), + icon: const Icon( + Icons.archive_outlined, + ), + onPressed: controller.leaveChat, + label: Text( + L10n.of(context).leave, + ), + ), + TextButton.icon( + style: TextButton.styleFrom( + padding: const EdgeInsets.all( + 16, + ), + ), + icon: const Icon( + Icons.forum_outlined, + ), + onPressed: controller.recreateChat, + label: Text( + L10n.of(context).reopenChat, + ), + ), + ], + ) + : Column( + mainAxisSize: MainAxisSize.min, + children: [ + ReplyDisplay(controller), + ChatInputRow(controller), + ChatEmojiPicker(controller), + ], + ), + ), + ), + ], + ), + ), + if (controller.dragging) + Container( + color: theme.scaffoldBackgroundColor.withAlpha(230), + alignment: Alignment.center, + child: const Icon( + Icons.upload_outlined, + size: 100, + ), + ), + ], + ), + ), + ); + }, + ), + ), + ); + } +} diff --git a/lib/pages/chat/command_hints.dart b/lib/pages/chat/command_hints.dart new file mode 100644 index 0000000..212bdf4 --- /dev/null +++ b/lib/pages/chat/command_hints.dart @@ -0,0 +1,90 @@ +// This file is auto-generated using scripts/generate_command_hints_glue.sh. + +import 'package:fluffychat/l10n/l10n.dart'; + +String commandExample(String command) { + switch (command) { + case 'markasdm': + case 'kick': + case 'dm': + case 'ban': + case 'unban': + case 'ignore': + case 'unignore': + case 'invite': + return '/$command '; + case 'html': + case 'sendraw': + case 'plain': + return '/$command '; + case 'op': + return '/$command '; + default: + return '/$command'; + } +} + +String commandHint(L10n l10n, String command) { + switch (command) { + case "ban": + return l10n.commandHint_ban; + case "clearcache": + return l10n.commandHint_clearcache; + case "create": + return l10n.commandHint_create; + case "discardsession": + return l10n.commandHint_discardsession; + case "dm": + return l10n.commandHint_dm; + case "html": + return l10n.commandHint_html; + case "invite": + return l10n.commandHint_invite; + case "join": + return l10n.commandHint_join; + case "kick": + return l10n.commandHint_kick; + case "leave": + return l10n.commandHint_leave; + case "me": + return l10n.commandHint_me; + case "myroomavatar": + return l10n.commandHint_myroomavatar; + case "myroomnick": + return l10n.commandHint_myroomnick; + case "op": + return l10n.commandHint_op; + case "plain": + return l10n.commandHint_plain; + case "react": + return l10n.commandHint_react; + case "send": + return l10n.commandHint_send; + case "unban": + return l10n.commandHint_unban; + case 'markasdm': + return l10n.commandHint_markasdm; + case 'markasgroup': + return l10n.commandHint_markasgroup; + case 'googly': + return l10n.commandHint_googly; + case 'hug': + return l10n.commandHint_hug; + case 'cuddle': + return l10n.commandHint_cuddle; + case 'sendraw': + return l10n.commandHint_sendraw; + case 'ignore': + return l10n.commandHint_ignore; + case 'unignore': + return l10n.commandHint_unignore; + case 'roomupgrade': + return l10n.commandHint_roomupgrade; + case 'logout': + return l10n.commandHint_logout; + case 'logoutall': + return l10n.commandHint_logoutall; + default: + return ""; + } +} diff --git a/lib/pages/chat/encryption_button.dart b/lib/pages/chat/encryption_button.dart new file mode 100644 index 0000000..a18e106 --- /dev/null +++ b/lib/pages/chat/encryption_button.dart @@ -0,0 +1,65 @@ +import 'package:flutter/material.dart'; + +import 'package:badges/badges.dart' as b; +import 'package:go_router/go_router.dart'; +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import '../../widgets/matrix.dart'; + +class EncryptionButton extends StatelessWidget { + final Room room; + const EncryptionButton(this.room, {super.key}); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + return StreamBuilder( + stream: Matrix.of(context) + .client + .onSync + .stream + .where((s) => s.deviceLists != null), + builder: (context, snapshot) { + final shouldBeEncrypted = room.joinRules != JoinRules.public; + return FutureBuilder( + future: room.encrypted + ? room.calcEncryptionHealthState() + : Future.value(EncryptionHealthState.allVerified), + builder: (BuildContext context, snapshot) => IconButton( + tooltip: room.encrypted + ? L10n.of(context).encrypted + : L10n.of(context).encryptionNotEnabled, + icon: b.Badge( + badgeAnimation: const b.BadgeAnimation.fade(), + showBadge: + snapshot.data == EncryptionHealthState.unverifiedDevices, + badgeStyle: b.BadgeStyle( + badgeColor: theme.colorScheme.error, + elevation: 4, + ), + badgeContent: Text( + '!', + style: TextStyle( + fontSize: 9, + color: theme.colorScheme.onError, + fontWeight: FontWeight.bold, + ), + ), + child: Icon( + room.encrypted + ? Icons.lock_outlined + : Icons.no_encryption_outlined, + size: 20, + color: (shouldBeEncrypted && !room.encrypted) + ? theme.colorScheme.error + : theme.colorScheme.onSurface, + ), + ), + onPressed: () => context.go('/rooms/${room.id}/encryption'), + ), + ); + }, + ); + } +} diff --git a/lib/pages/chat/event_info_dialog.dart b/lib/pages/chat/event_info_dialog.dart new file mode 100644 index 0000000..c027e1f --- /dev/null +++ b/lib/pages/chat/event_info_dialog.dart @@ -0,0 +1,113 @@ +import 'dart:convert'; + +import 'package:flutter/material.dart'; + +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/adaptive_bottom_sheet.dart'; +import 'package:fluffychat/utils/date_time_extension.dart'; +import 'package:fluffychat/widgets/avatar.dart'; + +extension EventInfoDialogExtension on Event { + void showInfoDialog(BuildContext context) => showAdaptiveBottomSheet( + context: context, + builder: (context) => + EventInfoDialog(l10n: L10n.of(context), event: this), + ); +} + +class EventInfoDialog extends StatelessWidget { + final Event event; + final L10n l10n; + + const EventInfoDialog({ + required this.event, + required this.l10n, + super.key, + }); + + String prettyJson(MatrixEvent event) { + const decoder = JsonDecoder(); + const encoder = JsonEncoder.withIndent(' '); + final object = decoder.convert(jsonEncode(event.toJson())); + return encoder.convert(object); + } + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + final originalSource = event.originalSource; + return Scaffold( + appBar: AppBar( + title: Text(L10n.of(context).messageInfo), + leading: CloseButton( + onPressed: Navigator.of(context, rootNavigator: false).pop, + ), + ), + body: ListView( + children: [ + ListTile( + leading: Avatar( + mxContent: event.senderFromMemoryOrFallback.avatarUrl, + name: event.senderFromMemoryOrFallback.calcDisplayname(), + client: event.room.client, + presenceUserId: event.senderId, + ), + title: Text(L10n.of(context).sender), + subtitle: Text( + '${event.senderFromMemoryOrFallback.calcDisplayname()} [${event.senderId}]', + ), + ), + ListTile( + title: Text('${L10n.of(context).time}:'), + subtitle: Text(event.originServerTs.localizedTime(context)), + ), + ListTile( + title: Text('${L10n.of(context).status}:'), + subtitle: Text(event.status.name), + ), + ListTile(title: Text('${L10n.of(context).sourceCode}:')), + Padding( + padding: const EdgeInsets.all(12.0), + child: Material( + borderRadius: BorderRadius.circular(AppConfig.borderRadius), + color: theme.colorScheme.surfaceContainer, + child: SingleChildScrollView( + padding: const EdgeInsets.all(16), + scrollDirection: Axis.horizontal, + child: SelectableText( + prettyJson(MatrixEvent.fromJson(event.toJson())), + style: TextStyle( + color: theme.colorScheme.onSurface, + ), + ), + ), + ), + ), + if (originalSource != null) ...[ + ListTile(title: Text('${L10n.of(context).encrypted}:')), + Padding( + padding: const EdgeInsets.all(12.0), + child: Material( + borderRadius: BorderRadius.circular(AppConfig.borderRadius), + color: theme.colorScheme.surfaceContainer, + child: SingleChildScrollView( + padding: const EdgeInsets.all(16), + scrollDirection: Axis.horizontal, + child: SelectableText( + prettyJson(originalSource), + style: TextStyle( + color: theme.colorScheme.onSurface, + ), + ), + ), + ), + ), + ], + ], + ), + ); + } +} diff --git a/lib/pages/chat/events/audio_player.dart b/lib/pages/chat/events/audio_player.dart new file mode 100644 index 0000000..b473064 --- /dev/null +++ b/lib/pages/chat/events/audio_player.dart @@ -0,0 +1,543 @@ +import 'dart:async'; +import 'dart:io'; + +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; + +import 'package:async/async.dart'; +import 'package:flutter_linkify/flutter_linkify.dart'; +import 'package:just_audio/just_audio.dart'; +import 'package:matrix/matrix.dart'; +import 'package:opus_caf_converter_dart/opus_caf_converter_dart.dart'; +import 'package:path_provider/path_provider.dart'; + +import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/config/themes.dart'; +import 'package:fluffychat/utils/error_reporter.dart'; +import 'package:fluffychat/utils/file_description.dart'; +import 'package:fluffychat/utils/localized_exception_extension.dart'; +import 'package:fluffychat/utils/url_launcher.dart'; +import '../../../utils/matrix_sdk_extensions/event_extension.dart'; +import '../../../widgets/fluffy_chat_app.dart'; +import '../../../widgets/matrix.dart'; + +class AudioPlayerWidget extends StatefulWidget { + final Color color; + final Color linkColor; + final double fontSize; + final Event event; + + static const int wavesCount = 40; + + const AudioPlayerWidget( + this.event, { + required this.color, + required this.linkColor, + required this.fontSize, + super.key, + }); + + @override + AudioPlayerState createState() => AudioPlayerState(); +} + +enum AudioPlayerStatus { notDownloaded, downloading, downloaded } + +class AudioPlayerState extends State { + static const double buttonSize = 36; + + AudioPlayerStatus status = AudioPlayerStatus.notDownloaded; + double? _downloadProgress; + + late final MatrixState matrix; + List? _waveform; + String? _durationString; + + @override + void dispose() { + super.dispose(); + final audioPlayer = matrix.voiceMessageEventId.value != widget.event.eventId + ? null + : matrix.audioPlayer; + if (audioPlayer != null) { + if (audioPlayer.playing && !audioPlayer.isAtEndPosition) { + WidgetsBinding.instance.addPostFrameCallback((_) { + ScaffoldMessenger.of(matrix.context).showMaterialBanner( + MaterialBanner( + padding: EdgeInsets.zero, + leading: StreamBuilder( + stream: audioPlayer.playerStateStream.asBroadcastStream(), + builder: (context, _) => IconButton( + onPressed: () { + if (audioPlayer.isAtEndPosition) { + audioPlayer.seek(Duration.zero); + } else if (audioPlayer.playing) { + audioPlayer.pause(); + } else { + audioPlayer.play(); + } + }, + icon: audioPlayer.playing && !audioPlayer.isAtEndPosition + ? const Icon(Icons.pause_outlined) + : const Icon(Icons.play_arrow_outlined), + ), + ), + content: StreamBuilder( + stream: audioPlayer.positionStream.asBroadcastStream(), + builder: (context, _) => GestureDetector( + onTap: () => FluffyChatApp.router.go( + '/rooms/${widget.event.room.id}?event=${widget.event.eventId}', + ), + child: Text( + '🎙️ ${audioPlayer.position.minuteSecondString} / ${audioPlayer.duration?.minuteSecondString} - ${widget.event.senderFromMemoryOrFallback.calcDisplayname()}', + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + ), + ), + actions: [ + IconButton( + onPressed: () { + audioPlayer.pause(); + audioPlayer.dispose(); + matrix.voiceMessageEventId.value = + matrix.audioPlayer = null; + + WidgetsBinding.instance.addPostFrameCallback((_) { + ScaffoldMessenger.of(matrix.context) + .clearMaterialBanners(); + }); + }, + icon: const Icon(Icons.close_outlined), + ), + ], + ), + ); + }); + return; + } + audioPlayer.pause(); + audioPlayer.dispose(); + matrix.voiceMessageEventId.value = matrix.audioPlayer = null; + } + } + + void _onButtonTap() async { + WidgetsBinding.instance.addPostFrameCallback((_) { + ScaffoldMessenger.of(matrix.context).clearMaterialBanners(); + }); + final currentPlayer = + matrix.voiceMessageEventId.value != widget.event.eventId + ? null + : matrix.audioPlayer; + if (currentPlayer != null) { + if (currentPlayer.isAtEndPosition) { + currentPlayer.seek(Duration.zero); + } else if (currentPlayer.playing) { + currentPlayer.pause(); + } else { + currentPlayer.play(); + } + return; + } + + matrix.voiceMessageEventId.value = widget.event.eventId; + matrix.audioPlayer + ?..stop() + ..dispose(); + File? file; + MatrixFile? matrixFile; + + setState(() => status = AudioPlayerStatus.downloading); + try { + final fileSize = widget.event.content + .tryGetMap('info') + ?.tryGet('size'); + matrixFile = await widget.event.downloadAndDecryptAttachment( + onDownloadProgress: fileSize != null && fileSize > 0 + ? (progress) { + final progressPercentage = progress / fileSize; + setState(() { + _downloadProgress = + progressPercentage < 1 ? progressPercentage : null; + }); + } + : null, + ); + + if (!kIsWeb) { + final tempDir = await getTemporaryDirectory(); + final fileName = Uri.encodeComponent( + 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}.caf'); + if (await convertedFile.exists() == false) { + OpusCaf().convertOpusToCaf(file.path, convertedFile.path); + } + file = convertedFile; + } + } + + setState(() { + status = AudioPlayerStatus.downloaded; + }); + } catch (e, s) { + Logs().v('Could not download audio file', e, s); + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text(e.toLocalizedString(context)), + ), + ); + rethrow; + } + if (!context.mounted) return; + if (matrix.voiceMessageEventId.value != widget.event.eventId) return; + + final audioPlayer = matrix.audioPlayer = AudioPlayer(); + + if (file != null) { + audioPlayer.setFilePath(file.path); + } else { + await audioPlayer.setAudioSource(MatrixFileAudioSource(matrixFile)); + } + + audioPlayer.play().onError( + ErrorReporter(context, 'Unable to play audio message') + .onErrorCallback, + ); + } + + void _toggleSpeed() async { + final audioPlayer = matrix.audioPlayer; + if (audioPlayer == null) return; + switch (audioPlayer.speed) { + case 1.0: + await audioPlayer.setSpeed(1.25); + break; + case 1.25: + await audioPlayer.setSpeed(1.5); + break; + case 1.5: + await audioPlayer.setSpeed(2.0); + break; + case 2.0: + await audioPlayer.setSpeed(0.5); + break; + case 0.5: + default: + await audioPlayer.setSpeed(1.0); + break; + } + setState(() {}); + } + + List? _getWaveform() { + final eventWaveForm = widget.event.content + .tryGetMap('org.matrix.msc1767.audio') + ?.tryGetList('waveform'); + if (eventWaveForm == null || eventWaveForm.isEmpty) { + return null; + } + while (eventWaveForm.length < AudioPlayerWidget.wavesCount) { + for (var i = 0; i < eventWaveForm.length; i = i + 2) { + eventWaveForm.insert(i, eventWaveForm[i]); + } + } + var i = 0; + final step = (eventWaveForm.length / AudioPlayerWidget.wavesCount).round(); + while (eventWaveForm.length > AudioPlayerWidget.wavesCount) { + eventWaveForm.removeAt(i); + i = (i + step) % AudioPlayerWidget.wavesCount; + } + return eventWaveForm.map((i) => i > 1024 ? 1024 : i).toList(); + } + + @override + void initState() { + super.initState(); + matrix = Matrix.of(context); + _waveform = _getWaveform(); + + if (matrix.voiceMessageEventId.value == widget.event.eventId && + matrix.audioPlayer != null) { + WidgetsBinding.instance.addPostFrameCallback((_) { + ScaffoldMessenger.of(matrix.context).clearMaterialBanners(); + }); + } + + final durationInt = widget.event.content + .tryGetMap('info') + ?.tryGet('duration'); + if (durationInt != null) { + final duration = Duration(milliseconds: durationInt); + _durationString = duration.minuteSecondString; + } + } + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + final waveform = _waveform; + + return ValueListenableBuilder( + valueListenable: matrix.voiceMessageEventId, + builder: (context, eventId, _) { + final audioPlayer = + eventId != widget.event.eventId ? null : matrix.audioPlayer; + + final fileDescription = widget.event.fileDescription; + + return StreamBuilder( + stream: audioPlayer == null + ? null + : StreamGroup.merge([ + audioPlayer.positionStream.asBroadcastStream(), + audioPlayer.playerStateStream.asBroadcastStream(), + ]), + builder: (context, _) { + final maxPosition = + audioPlayer?.duration?.inMilliseconds.toDouble() ?? 1.0; + var currentPosition = + audioPlayer?.position.inMilliseconds.toDouble() ?? 0.0; + if (currentPosition > maxPosition) currentPosition = maxPosition; + + final wavePosition = + (currentPosition / maxPosition) * AudioPlayerWidget.wavesCount; + + final statusText = audioPlayer == null + ? _durationString ?? '00:00' + : audioPlayer.position.minuteSecondString; + return Padding( + padding: const EdgeInsets.all(12.0), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + ConstrainedBox( + constraints: const BoxConstraints( + maxWidth: FluffyThemes.columnWidth, + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + SizedBox( + width: buttonSize, + height: buttonSize, + child: status == AudioPlayerStatus.downloading + ? CircularProgressIndicator( + strokeWidth: 2, + color: widget.color, + value: _downloadProgress, + ) + : InkWell( + borderRadius: BorderRadius.circular(64), + onLongPress: () => + widget.event.saveFile(context), + onTap: _onButtonTap, + child: Material( + color: widget.color.withAlpha(64), + borderRadius: BorderRadius.circular(64), + child: Icon( + audioPlayer?.playing == true && + audioPlayer?.isAtEndPosition == + false + ? Icons.pause_outlined + : Icons.play_arrow_outlined, + color: widget.color, + ), + ), + ), + ), + const SizedBox(width: 8), + Expanded( + child: Stack( + children: [ + if (waveform != null) + Padding( + padding: const EdgeInsets.symmetric( + horizontal: 16.0, + ), + child: Row( + children: [ + for (var i = 0; + i < AudioPlayerWidget.wavesCount; + i++) + Expanded( + child: Container( + height: 32, + alignment: Alignment.center, + child: Container( + margin: + const EdgeInsets.symmetric( + horizontal: 1, + ), + decoration: BoxDecoration( + color: i < wavePosition + ? widget.color + : widget.color + .withAlpha(128), + borderRadius: + BorderRadius.circular(64), + ), + height: 32 * (waveform[i] / 1024), + ), + ), + ), + ], + ), + ), + SizedBox( + height: 32, + child: Slider( + thumbColor: widget.event.senderId == + widget.event.room.client.userID + ? theme.colorScheme.onPrimary + : theme.colorScheme.primary, + activeColor: waveform == null + ? widget.color + : Colors.transparent, + inactiveColor: waveform == null + ? widget.color.withAlpha(128) + : Colors.transparent, + max: maxPosition, + value: currentPosition, + onChanged: (position) => audioPlayer == null + ? _onButtonTap() + : audioPlayer.seek( + Duration( + milliseconds: position.round(), + ), + ), + ), + ), + ], + ), + ), + const SizedBox(width: 8), + SizedBox( + width: 36, + child: Text( + statusText, + style: TextStyle( + color: widget.color, + fontSize: 12, + ), + ), + ), + const SizedBox(width: 8), + AnimatedCrossFade( + firstChild: Padding( + padding: const EdgeInsets.only(right: 8.0), + child: Icon( + Icons.mic_none_outlined, + color: widget.color, + ), + ), + secondChild: Material( + color: widget.color.withAlpha(64), + borderRadius: + BorderRadius.circular(AppConfig.borderRadius), + child: InkWell( + borderRadius: + BorderRadius.circular(AppConfig.borderRadius), + onTap: _toggleSpeed, + child: SizedBox( + width: 32, + height: 20, + child: Center( + child: Text( + '${audioPlayer?.speed.toString()}x', + style: TextStyle( + color: widget.color, + fontSize: 9, + ), + ), + ), + ), + ), + ), + alignment: Alignment.center, + crossFadeState: audioPlayer == null + ? CrossFadeState.showFirst + : CrossFadeState.showSecond, + duration: FluffyThemes.animationDuration, + ), + ], + ), + ), + if (fileDescription != null) ...[ + const SizedBox(height: 8), + Padding( + padding: const EdgeInsets.symmetric( + horizontal: 16, + vertical: 8, + ), + child: Linkify( + text: fileDescription, + textScaleFactor: + MediaQuery.textScalerOf(context).scale(1), + style: TextStyle( + color: widget.color, + fontSize: widget.fontSize, + ), + options: const LinkifyOptions(humanize: false), + linkStyle: TextStyle( + color: widget.linkColor, + fontSize: widget.fontSize, + decoration: TextDecoration.underline, + decorationColor: widget.linkColor, + ), + onOpen: (url) => + UrlLauncher(context, url.url).launchUrl(), + ), + ), + ], + ], + ), + ); + }, + ); + }, + ); + } +} + +/// To use a MatrixFile as an AudioSource for the just_audio package +class MatrixFileAudioSource extends StreamAudioSource { + final MatrixFile file; + + MatrixFileAudioSource(this.file); + + @override + Future request([int? start, int? end]) async { + start ??= 0; + end ??= file.bytes.length; + return StreamAudioResponse( + sourceLength: file.bytes.length, + contentLength: end - start, + offset: start, + stream: Stream.value(file.bytes.sublist(start, end)), + contentType: file.mimeType, + ); + } +} + +extension on AudioPlayer { + bool get isAtEndPosition { + final duration = this.duration; + if (duration == null) return true; + return position >= duration; + } +} + +extension on Duration { + String get minuteSecondString => + '${inMinutes.toString().padLeft(2, '0')}:${(inSeconds % 60).toString().padLeft(2, '0')}'; +} diff --git a/lib/pages/chat/events/cute_events.dart b/lib/pages/chat/events/cute_events.dart new file mode 100644 index 0000000..9d43021 --- /dev/null +++ b/lib/pages/chat/events/cute_events.dart @@ -0,0 +1,194 @@ +import 'dart:math'; + +import 'package:flutter/material.dart'; + +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/config/setting_keys.dart'; +import 'package:fluffychat/l10n/l10n.dart'; + +class CuteContent extends StatefulWidget { + final Event event; + + const CuteContent(this.event, {super.key}); + + @override + State createState() => _CuteContentState(); +} + +class _CuteContentState extends State { + static bool _isOverlayShown = false; + + @override + void initState() { + if (AppSettings.autoplayImages.value && !_isOverlayShown) { + addOverlay(); + } + super.initState(); + } + + @override + Widget build(BuildContext context) { + return FutureBuilder( + future: widget.event.fetchSenderUser(), + builder: (context, snapshot) { + final label = generateLabel(snapshot.data); + + return GestureDetector( + onTap: addOverlay, + child: Column( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + widget.event.text, + style: const TextStyle(fontSize: 150), + ), + if (label != null) Text(label), + ], + ), + ); + }, + ); + } + + Future addOverlay() async { + _isOverlayShown = true; + await Future.delayed(const Duration(milliseconds: 50)); + + OverlayEntry? overlay; + overlay = OverlayEntry( + builder: (context) => CuteEventOverlay( + emoji: widget.event.text, + onAnimationEnd: () { + _isOverlayShown = false; + overlay?.remove(); + }, + ), + ); + Overlay.of(context).insert(overlay); + } + + generateLabel(User? user) { + switch (widget.event.content['cute_type']) { + case 'googly_eyes': + return L10n.of(context).googlyEyesContent( + user?.displayName ?? + widget.event.senderFromMemoryOrFallback.displayName ?? + '', + ); + case 'cuddle': + return L10n.of(context).cuddleContent( + user?.displayName ?? + widget.event.senderFromMemoryOrFallback.displayName ?? + '', + ); + case 'hug': + return L10n.of(context).hugContent( + user?.displayName ?? + widget.event.senderFromMemoryOrFallback.displayName ?? + '', + ); + } + } +} + +class CuteEventOverlay extends StatefulWidget { + final String emoji; + final VoidCallback onAnimationEnd; + + const CuteEventOverlay({ + super.key, + required this.emoji, + required this.onAnimationEnd, + }); + + @override + State createState() => _CuteEventOverlayState(); +} + +class _CuteEventOverlayState extends State + with TickerProviderStateMixin { + final List items = List.generate( + 50, + (index) => Size( + Random().nextDouble(), + 4 + (Random().nextDouble() * 4), + ), + ); + + AnimationController? controller; + + @override + void initState() { + controller = AnimationController( + duration: const Duration(milliseconds: 2500), + vsync: this, + ); + controller?.forward(); + controller?.addStatusListener(_hideOverlay); + super.initState(); + } + + @override + Widget build(BuildContext context) { + return AnimatedBuilder( + animation: controller!, + builder: (context, _) => LayoutBuilder( + builder: (context, constraints) { + final width = constraints.maxWidth - _CuteOverlayContent.size; + final height = constraints.maxHeight + _CuteOverlayContent.size; + return SizedBox( + height: constraints.maxHeight, + width: constraints.maxWidth, + child: OverflowBox( + child: Stack( + alignment: Alignment.bottomLeft, + fit: StackFit.expand, + children: items + .map( + (position) => Positioned( + left: position.width * width, + bottom: (height * + .25 * + position.height * + (controller?.value ?? 0)) - + _CuteOverlayContent.size, + child: _CuteOverlayContent( + emoji: widget.emoji, + ), + ), + ) + .toList(), + ), + ), + ); + }, + ), + ); + } + + void _hideOverlay(AnimationStatus status) { + if (status == AnimationStatus.completed) { + widget.onAnimationEnd.call(); + } + } +} + +class _CuteOverlayContent extends StatelessWidget { + static const double size = 64.0; + final String emoji; + + const _CuteOverlayContent({required this.emoji}); + + @override + Widget build(BuildContext context) { + return SizedBox.square( + dimension: size, + child: Text( + emoji, + style: const TextStyle(fontSize: 48), + ), + ); + } +} diff --git a/lib/pages/chat/events/html_message.dart b/lib/pages/chat/events/html_message.dart new file mode 100644 index 0000000..4b82f6b --- /dev/null +++ b/lib/pages/chat/events/html_message.dart @@ -0,0 +1,584 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; + +import 'package:collection/collection.dart'; +import 'package:flutter_highlighter/flutter_highlighter.dart'; +import 'package:flutter_highlighter/themes/shades-of-purple.dart'; +import 'package:flutter_linkify/flutter_linkify.dart'; +import 'package:html/dom.dart' as dom; +import 'package:html/parser.dart' as parser; +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/utils/event_checkbox_extension.dart'; +import 'package:fluffychat/widgets/avatar.dart'; +import 'package:fluffychat/widgets/future_loading_dialog.dart'; +import 'package:fluffychat/widgets/mxc_image.dart'; +import '../../../utils/url_launcher.dart'; + +class HtmlMessage extends StatelessWidget { + final String html; + final Room room; + final Color textColor; + final double fontSize; + final TextStyle linkStyle; + final void Function(LinkableElement) onOpen; + final String? eventId; + final Set? checkboxCheckedEvents; + final bool limitHeight; + + const HtmlMessage({ + super.key, + required this.html, + required this.room, + required this.fontSize, + required this.linkStyle, + this.textColor = Colors.black, + required this.onOpen, + this.eventId, + this.checkboxCheckedEvents, + this.limitHeight = true, + }); + + /// Keep in sync with: https://spec.matrix.org/latest/client-server-api/#mroommessage-msgtypes + static const Set allowedHtmlTags = { + 'font', + 'del', + 's', + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'h6', + 'blockquote', + 'p', + 'a', + 'ul', + 'ol', + 'sup', + 'sub', + 'li', + 'b', + 'i', + 'u', + 'strong', + 'em', + 'strike', + 'code', + 'hr', + 'br', + 'div', + 'table', + 'thead', + 'tbody', + 'tr', + 'th', + 'td', + 'caption', + 'pre', + 'span', + 'img', + 'details', + 'summary', + // Not in the allowlist of the matrix spec yet but should be harmless: + 'ruby', + 'rp', + 'rt', + 'html', + 'body', + // Workaround for https://github.com/krille-chan/fluffychat/issues/507 + 'tg-forward', + }; + + /// We add line breaks before these tags: + static const Set blockHtmlTags = { + 'p', + 'ul', + 'ol', + 'pre', + 'div', + 'table', + 'details', + 'blockquote', + }; + + /// We add line breaks before these tags: + static const Set fullLineHtmlTag = { + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'h6', + 'li', + }; + + /// Adding line breaks before block elements. + List _renderWithLineBreaks( + dom.NodeList nodes, + BuildContext context, { + int depth = 1, + }) { + final onlyElements = nodes.whereType().toList(); + return [ + for (var i = 0; i < nodes.length; i++) ...[ + // Actually render the node child: + _renderHtml(nodes[i], context, depth: depth + 1), + // Add linebreaks between blocks: + if (nodes[i] is dom.Element && + onlyElements.indexOf(nodes[i] as dom.Element) < + onlyElements.length - 1) ...[ + if (blockHtmlTags.contains((nodes[i] as dom.Element).localName)) + const TextSpan(text: '\n\n'), + if (fullLineHtmlTag.contains((nodes[i] as dom.Element).localName)) + const TextSpan(text: '\n'), + ], + ], + ]; + } + + /// Transforms a Node to an InlineSpan. + InlineSpan _renderHtml( + dom.Node node, + BuildContext context, { + int depth = 1, + }) { + // We must not render elements nested more than 100 elements deep: + if (depth >= 100) return const TextSpan(); + + // This is a text node, so we render it as text: + if (node is! dom.Element) { + var text = node.text ?? ''; + // Single linebreak nodes between Elements are ignored: + if (text == '\n') text = ''; + + return LinkifySpan( + text: text, + options: const LinkifyOptions(humanize: false), + linkStyle: linkStyle, + onOpen: onOpen, + ); + } + + // We must not render tags which are not in the allow list: + if (!allowedHtmlTags.contains(node.localName)) return const TextSpan(); + + switch (node.localName) { + case 'br': + return const TextSpan(text: '\n'); + case 'a': + final href = node.attributes['href']; + if (href == null) continue block; + final matrixId = node.attributes['href'] + ?.parseIdentifierIntoParts() + ?.primaryIdentifier; + if (matrixId != null) { + if (matrixId.sigil == '@') { + final user = room.unsafeGetUserFromMemoryOrFallback(matrixId); + return WidgetSpan( + child: MatrixPill( + key: Key('user_pill_$matrixId'), + name: user.calcDisplayname(), + avatar: user.avatarUrl, + uri: href, + outerContext: context, + fontSize: fontSize, + color: linkStyle.color, + ), + ); + } + if (matrixId.sigil == '#' || matrixId.sigil == '!') { + final room = matrixId.sigil == '!' + ? this.room.client.getRoomById(matrixId) + : this.room.client.getRoomByAlias(matrixId); + return WidgetSpan( + child: MatrixPill( + name: room?.getLocalizedDisplayname() ?? matrixId, + avatar: room?.avatar, + uri: href, + outerContext: context, + fontSize: fontSize, + color: linkStyle.color, + ), + ); + } + } + return WidgetSpan( + child: Tooltip( + message: href, + child: InkWell( + splashColor: Colors.transparent, + onTap: () => UrlLauncher(context, href, node.text).launchUrl(), + child: Text.rich( + TextSpan( + children: _renderWithLineBreaks( + node.nodes, + context, + depth: depth, + ), + style: linkStyle, + ), + style: const TextStyle(height: 1.25), + ), + ), + ), + ); + case 'li': + if (!{'ol', 'ul'}.contains(node.parent?.localName)) { + continue block; + } + final eventId = this.eventId; + + final isCheckbox = node.className == 'task-list-item'; + final checkboxIndex = isCheckbox + ? node.rootElement + .getElementsByClassName('task-list-item') + .indexOf(node) + + 1 + : null; + final checkedByReaction = !isCheckbox + ? null + : checkboxCheckedEvents?.firstWhereOrNull( + (event) => event.checkedCheckboxId == checkboxIndex, + ); + final staticallyChecked = !isCheckbox + ? false + : node.children.first.attributes['checked'] == 'true'; + + return WidgetSpan( + child: Padding( + padding: EdgeInsets.only(left: fontSize), + child: Text.rich( + TextSpan( + children: [ + if (node.parent?.localName == 'ul') + const TextSpan(text: '• '), + if (node.parent?.localName == 'ol') + TextSpan( + text: + '${(node.parent?.nodes.whereType().toList().indexOf(node) ?? 0) + (int.tryParse(node.parent?.attributes['start'] ?? '1') ?? 1)}. ', + ), + if (node.className == 'task-list-item') + WidgetSpan( + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 8.0), + child: SizedBox.square( + dimension: fontSize + 2, + child: CupertinoCheckbox( + checkColor: textColor, + side: BorderSide(color: textColor), + activeColor: textColor.withAlpha(64), + value: + staticallyChecked || checkedByReaction != null, + onChanged: eventId == null || + checkboxIndex == null || + staticallyChecked || + !room.canSendDefaultMessages || + (checkedByReaction != null && + checkedByReaction.senderId != + room.client.userID) + ? null + : (_) => showFutureLoadingDialog( + context: context, + future: () => checkedByReaction != null + ? room.redactEvent( + checkedByReaction.eventId, + ) + : room.checkCheckbox( + eventId, + checkboxIndex, + ), + ), + ), + ), + ), + ), + ..._renderWithLineBreaks( + node.nodes, + context, + depth: depth, + ), + ], + style: TextStyle(fontSize: fontSize, color: textColor), + ), + ), + ), + ); + case 'blockquote': + return WidgetSpan( + child: Container( + padding: const EdgeInsets.only(left: 8.0), + decoration: BoxDecoration( + border: Border( + left: BorderSide( + color: textColor, + width: 5, + ), + ), + ), + child: Text.rich( + TextSpan( + children: _renderWithLineBreaks( + node.nodes, + context, + depth: depth, + ), + ), + style: TextStyle( + fontStyle: FontStyle.italic, + fontSize: fontSize, + color: textColor, + ), + ), + ), + ); + case 'code': + final isInline = node.parent?.localName != 'pre'; + return WidgetSpan( + child: Material( + clipBehavior: Clip.hardEdge, + borderRadius: BorderRadius.circular(4), + child: SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: HighlightView( + node.text, + language: node.className + .split(' ') + .singleWhereOrNull( + (className) => className.startsWith('language-'), + ) + ?.split('language-') + .last ?? + 'md', + theme: shadesOfPurpleTheme, + padding: EdgeInsets.symmetric( + horizontal: 8, + vertical: isInline ? 0 : 8, + ), + textStyle: TextStyle( + fontSize: fontSize, + fontFamily: 'RobotoMono', + ), + ), + ), + ), + ); + case 'img': + final mxcUrl = Uri.tryParse(node.attributes['src'] ?? ''); + if (mxcUrl == null || mxcUrl.scheme != 'mxc') { + return TextSpan(text: node.attributes['alt']); + } + + final width = double.tryParse(node.attributes['width'] ?? ''); + final height = double.tryParse(node.attributes['height'] ?? ''); + const defaultDimension = 64.0; + final actualWidth = width ?? height ?? defaultDimension; + final actualHeight = height ?? width ?? defaultDimension; + + return WidgetSpan( + child: SizedBox( + width: actualWidth, + height: actualHeight, + child: MxcImage( + uri: mxcUrl, + width: actualWidth, + height: actualHeight, + isThumbnail: (actualWidth * actualHeight) > (256 * 256), + ), + ), + ); + case 'hr': + return const WidgetSpan(child: Divider()); + case 'details': + var obscure = true; + return WidgetSpan( + child: StatefulBuilder( + builder: (context, setState) => InkWell( + splashColor: Colors.transparent, + onTap: () => setState(() { + obscure = !obscure; + }), + child: Text.rich( + TextSpan( + children: [ + WidgetSpan( + child: Icon( + obscure ? Icons.arrow_right : Icons.arrow_drop_down, + size: fontSize * 1.2, + color: textColor, + ), + ), + if (obscure) + ...node.nodes + .where( + (node) => + node is dom.Element && + node.localName == 'summary', + ) + .map( + (node) => _renderHtml(node, context, depth: depth), + ) + else + ..._renderWithLineBreaks( + node.nodes, + context, + depth: depth, + ), + ], + ), + style: TextStyle( + fontSize: fontSize, + color: textColor, + ), + ), + ), + ), + ); + case 'span': + if (!node.attributes.containsKey('data-mx-spoiler')) { + continue block; + } + var obscure = true; + return WidgetSpan( + child: StatefulBuilder( + builder: (context, setState) => InkWell( + splashColor: Colors.transparent, + onTap: () => setState(() { + obscure = !obscure; + }), + child: Text.rich( + TextSpan( + children: _renderWithLineBreaks( + node.nodes, + context, + depth: depth, + ), + ), + style: TextStyle( + fontSize: fontSize, + color: textColor, + backgroundColor: obscure ? textColor : null, + ), + ), + ), + ), + ); + block: + default: + return TextSpan( + style: switch (node.localName) { + 'body' => TextStyle( + fontSize: fontSize, + color: textColor, + ), + 'a' => linkStyle, + 'strong' => const TextStyle(fontWeight: FontWeight.bold), + 'em' || 'i' => const TextStyle(fontStyle: FontStyle.italic), + 'del' || + 's' || + 'strikethrough' => + const TextStyle(decoration: TextDecoration.lineThrough), + 'u' => const TextStyle(decoration: TextDecoration.underline), + 'h1' => TextStyle(fontSize: fontSize * 1.6, height: 2), + 'h2' => TextStyle(fontSize: fontSize * 1.5, height: 2), + 'h3' => TextStyle(fontSize: fontSize * 1.4, height: 2), + 'h4' => TextStyle(fontSize: fontSize * 1.3, height: 1.75), + 'h5' => TextStyle(fontSize: fontSize * 1.2, height: 1.75), + 'h6' => TextStyle(fontSize: fontSize * 1.1, height: 1.5), + 'span' => TextStyle( + color: node.attributes['color']?.hexToColor ?? + node.attributes['data-mx-color']?.hexToColor ?? + textColor, + backgroundColor: + node.attributes['data-mx-bg-color']?.hexToColor, + ), + 'sup' => + const TextStyle(fontFeatures: [FontFeature.superscripts()]), + 'sub' => const TextStyle(fontFeatures: [FontFeature.subscripts()]), + _ => null, + }, + children: _renderWithLineBreaks( + node.nodes, + context, + depth: depth, + ), + ); + } + } + + @override + Widget build(BuildContext context) { + final element = parser.parse(html).body ?? dom.Element.html(''); + return Text.rich( + _renderHtml(element, context), + style: TextStyle( + fontSize: fontSize, + color: textColor, + ), + maxLines: limitHeight ? 64 : null, + overflow: TextOverflow.fade, + ); + } +} + +class MatrixPill extends StatelessWidget { + final String name; + final BuildContext outerContext; + final Uri? avatar; + final String uri; + final double? fontSize; + final Color? color; + + const MatrixPill({ + super.key, + required this.name, + required this.outerContext, + this.avatar, + required this.uri, + required this.fontSize, + required this.color, + }); + + @override + Widget build(BuildContext context) { + return InkWell( + splashColor: Colors.transparent, + onTap: UrlLauncher(outerContext, uri).launchUrl, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Avatar( + mxContent: avatar, + name: name, + size: 16, + ), + const SizedBox(width: 6), + Text( + name, + style: TextStyle( + color: color, + decorationColor: color, + decoration: TextDecoration.underline, + fontSize: fontSize, + height: 1.25, + ), + ), + ], + ), + ); + } +} + +extension on String { + Color? get hexToColor { + var hexCode = this; + if (hexCode.startsWith('#')) hexCode = hexCode.substring(1); + if (hexCode.length == 6) hexCode = 'FF$hexCode'; + final colorValue = int.tryParse(hexCode, radix: 16); + return colorValue == null ? null : Color(colorValue); + } +} + +extension on dom.Element { + dom.Element get rootElement => parent?.rootElement ?? this; +} diff --git a/lib/pages/chat/events/image_bubble.dart b/lib/pages/chat/events/image_bubble.dart new file mode 100644 index 0000000..305b83b --- /dev/null +++ b/lib/pages/chat/events/image_bubble.dart @@ -0,0 +1,161 @@ +import 'package:flutter/material.dart'; + +import 'package:flutter_linkify/flutter_linkify.dart'; +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/config/setting_keys.dart'; +import 'package:fluffychat/pages/image_viewer/image_viewer.dart'; +import 'package:fluffychat/utils/file_description.dart'; +import 'package:fluffychat/utils/url_launcher.dart'; +import 'package:fluffychat/widgets/mxc_image.dart'; +import '../../../widgets/blur_hash.dart'; + +class ImageBubble extends StatelessWidget { + final Event event; + final bool tapToView; + final BoxFit fit; + final Color? backgroundColor; + final Color? textColor; + final Color? linkColor; + final bool thumbnailOnly; + final bool animated; + final double width; + final double height; + final void Function()? onTap; + final BorderRadius? borderRadius; + final Timeline? timeline; + + const ImageBubble( + this.event, { + this.tapToView = true, + this.backgroundColor, + this.fit = BoxFit.contain, + this.thumbnailOnly = true, + this.width = 400, + this.height = 300, + this.animated = false, + this.onTap, + this.borderRadius, + this.timeline, + this.textColor, + this.linkColor, + super.key, + }); + + Widget _buildPlaceholder(BuildContext context) { + final String blurHashString = + event.infoMap['xyz.amorgan.blurhash'] is String + ? event.infoMap['xyz.amorgan.blurhash'] + : 'LEHV6nWB2yk8pyo0adR*.7kCMdnj'; + return SizedBox( + width: width, + height: height, + child: BlurHash( + blurhash: blurHashString, + width: width, + height: height, + fit: fit, + ), + ); + } + + void _onTap(BuildContext context) { + if (onTap != null) { + onTap!(); + return; + } + if (!tapToView) return; + showDialog( + context: context, + builder: (_) => ImageViewer( + event, + timeline: timeline, + outerContext: context, + ), + ); + } + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + var borderRadius = + this.borderRadius ?? BorderRadius.circular(AppConfig.borderRadius); + + final fileDescription = event.fileDescription; + final textColor = this.textColor; + + if (fileDescription != null) { + borderRadius = borderRadius.copyWith( + bottomLeft: Radius.zero, + bottomRight: Radius.zero, + ); + } + + return Column( + mainAxisSize: MainAxisSize.min, + spacing: 8, + children: [ + Material( + color: Colors.transparent, + clipBehavior: Clip.hardEdge, + shape: RoundedRectangleBorder( + borderRadius: borderRadius, + side: BorderSide( + color: event.messageType == MessageTypes.Sticker + ? Colors.transparent + : theme.dividerColor, + ), + ), + child: InkWell( + onTap: () => _onTap(context), + borderRadius: borderRadius, + child: Hero( + tag: event.eventId, + child: MxcImage( + event: event, + width: width, + height: height, + fit: fit, + animated: animated, + isThumbnail: thumbnailOnly, + placeholder: event.messageType == MessageTypes.Sticker + ? null + : _buildPlaceholder, + ), + ), + ), + ), + if (fileDescription != null && textColor != null) + SizedBox( + width: width, + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 16, + vertical: 8, + ), + child: Linkify( + text: fileDescription, + textScaleFactor: MediaQuery.textScalerOf(context).scale(1), + style: TextStyle( + color: textColor, + fontSize: AppSettings.fontSizeFactor.value * + AppConfig.messageFontSize, + ), + options: const LinkifyOptions(humanize: false), + linkStyle: TextStyle( + color: linkColor, + fontSize: AppSettings.fontSizeFactor.value * + AppConfig.messageFontSize, + decoration: TextDecoration.underline, + decorationColor: linkColor, + ), + onOpen: (url) => UrlLauncher(context, url.url).launchUrl(), + ), + ), + ), + ], + ); + } +} diff --git a/lib/pages/chat/events/map_bubble.dart b/lib/pages/chat/events/map_bubble.dart new file mode 100644 index 0000000..4a2befa --- /dev/null +++ b/lib/pages/chat/events/map_bubble.dart @@ -0,0 +1,90 @@ +import 'package:flutter/material.dart'; + +import 'package:flutter_map/flutter_map.dart'; +import 'package:latlong2/latlong.dart'; + +class MapBubble extends StatelessWidget { + final double latitude; + final double longitude; + final double zoom; + final double width; + final double height; + final double radius; + const MapBubble({ + required this.latitude, + required this.longitude, + this.zoom = 14.0, + this.width = 400, + this.height = 400, + this.radius = 10.0, + super.key, + }); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + return ClipRRect( + borderRadius: BorderRadius.circular(radius), + child: Container( + constraints: BoxConstraints.loose(Size(width, height)), + child: AspectRatio( + aspectRatio: width / height, + child: Stack( + children: [ + FlutterMap( + options: MapOptions( + initialCenter: LatLng(latitude, longitude), + initialZoom: zoom, + ), + children: [ + TileLayer( + maxZoom: 20, + minZoom: 0, + urlTemplate: + 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', + subdomains: const ['a', 'b', 'c'], + ), + MarkerLayer( + rotate: true, + markers: [ + Marker( + point: LatLng(latitude, longitude), + width: 30, + height: 30, + child: Transform.translate( + // No idea why the offset has to be like this, instead of -15 + // It has been determined by trying out, though, that this yields + // the tip of the location pin to be static when zooming. + // Might have to do with psychological perception of where the tip exactly is + offset: const Offset(0, -12.5), + child: const Icon( + Icons.location_pin, + color: Colors.red, + size: 30, + ), + ), + ), + ], + ), + ], + ), + Container( + alignment: Alignment.bottomRight, + child: Text( + ' © OpenStreetMap contributors ', + style: TextStyle( + color: theme.brightness == Brightness.dark + ? Colors.white + : Colors.black, + backgroundColor: theme.appBarTheme.backgroundColor, + ), + ), + ), + ], + ), + ), + ), + ); + } +} diff --git a/lib/pages/chat/events/message.dart b/lib/pages/chat/events/message.dart new file mode 100644 index 0000000..fe9b19b --- /dev/null +++ b/lib/pages/chat/events/message.dart @@ -0,0 +1,1027 @@ +import 'dart:ui' as ui; + +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +import 'package:emoji_picker_flutter/emoji_picker_flutter.dart'; +import 'package:matrix/matrix.dart'; +import 'package:swipe_to_action/swipe_to_action.dart'; + +import 'package:fluffychat/config/setting_keys.dart'; +import 'package:fluffychat/config/themes.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/chat/events/room_creation_state_event.dart'; +import 'package:fluffychat/utils/adaptive_bottom_sheet.dart'; +import 'package:fluffychat/utils/date_time_extension.dart'; +import 'package:fluffychat/utils/file_description.dart'; +import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; +import 'package:fluffychat/utils/string_color.dart'; +import 'package:fluffychat/widgets/avatar.dart'; +import 'package:fluffychat/widgets/matrix.dart'; +import 'package:fluffychat/widgets/member_actions_popup_menu_button.dart'; +import '../../../config/app_config.dart'; +import 'message_content.dart'; +import 'message_reactions.dart'; +import 'reply_content.dart'; +import 'state_message.dart'; + +class Message extends StatelessWidget { + final Event event; + final Event? nextEvent; + final Event? previousEvent; + final bool displayReadMarker; + final void Function(Event) onSelect; + final void Function(Event) onInfoTab; + final void Function(String) scrollToEventId; + final void Function() onSwipe; + final void Function() onMention; + final void Function() onEdit; + final void Function(String eventId)? enterThread; + final bool longPressSelect; + final bool selected; + final bool singleSelected; + final Timeline timeline; + final bool highlightMarker; + final bool animateIn; + final void Function()? resetAnimateIn; + final bool wallpaperMode; + final ScrollController scrollController; + final List colors; + final void Function()? onExpand; + final bool isCollapsed; + + const Message( + this.event, { + this.nextEvent, + this.previousEvent, + this.displayReadMarker = false, + this.longPressSelect = false, + required this.onSelect, + required this.onInfoTab, + required this.scrollToEventId, + required this.onSwipe, + this.selected = false, + required this.onEdit, + required this.singleSelected, + required this.timeline, + this.highlightMarker = false, + this.animateIn = false, + this.resetAnimateIn, + this.wallpaperMode = false, + required this.onMention, + required this.scrollController, + required this.colors, + this.onExpand, + required this.enterThread, + this.isCollapsed = false, + super.key, + }); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + if (!{ + EventTypes.Message, + EventTypes.Sticker, + EventTypes.Encrypted, + EventTypes.CallInvite, + PollEventContent.startType, + }.contains(event.type)) { + if (event.type.startsWith('m.call.')) { + return const SizedBox.shrink(); + } + if (event.type == EventTypes.RoomCreate) { + return RoomCreationStateEvent(event: event); + } + return StateMessage(event, onExpand: onExpand, isCollapsed: isCollapsed); + } + + if (event.type == EventTypes.Message && + event.messageType == EventTypes.KeyVerificationRequest) { + return StateMessage(event); + } + + final client = Matrix.of(context).client; + final ownMessage = event.senderId == client.userID; + final alignment = ownMessage ? Alignment.topRight : Alignment.topLeft; + + var color = theme.colorScheme.surfaceContainerHigh; + final displayTime = event.type == EventTypes.RoomCreate || + nextEvent == null || + !event.originServerTs.sameEnvironment(nextEvent!.originServerTs); + final nextEventSameSender = nextEvent != null && + { + EventTypes.Message, + EventTypes.Sticker, + EventTypes.Encrypted, + }.contains(nextEvent!.type) && + nextEvent!.senderId == event.senderId && + !displayTime; + + final previousEventSameSender = previousEvent != null && + { + EventTypes.Message, + EventTypes.Sticker, + EventTypes.Encrypted, + }.contains(previousEvent!.type) && + previousEvent!.senderId == event.senderId && + previousEvent!.originServerTs.sameEnvironment(event.originServerTs); + + final textColor = + ownMessage ? theme.onBubbleColor : theme.colorScheme.onSurface; + + final linkColor = ownMessage + ? theme.brightness == Brightness.light + ? theme.colorScheme.primaryFixed + : theme.colorScheme.onTertiaryContainer + : theme.colorScheme.primary; + + final rowMainAxisAlignment = + ownMessage ? MainAxisAlignment.end : MainAxisAlignment.start; + + final displayEvent = event.getDisplayEvent(timeline); + const hardCorner = Radius.circular(4); + const roundedCorner = Radius.circular(AppConfig.borderRadius); + final borderRadius = BorderRadius.only( + topLeft: !ownMessage && nextEventSameSender ? hardCorner : roundedCorner, + topRight: ownMessage && nextEventSameSender ? hardCorner : roundedCorner, + bottomLeft: + !ownMessage && previousEventSameSender ? hardCorner : roundedCorner, + bottomRight: + ownMessage && previousEventSameSender ? hardCorner : roundedCorner, + ); + final noBubble = ({ + MessageTypes.Video, + MessageTypes.Image, + MessageTypes.Sticker, + }.contains(event.messageType) && + event.fileDescription == null && + !event.redacted) || + (event.messageType == MessageTypes.Text && + event.relationshipType == null && + event.onlyEmotes && + event.numberEmotes > 0 && + event.numberEmotes <= 3); + + if (ownMessage) { + color = + displayEvent.status.isError ? Colors.redAccent : theme.bubbleColor; + } + + final resetAnimateIn = this.resetAnimateIn; + var animateIn = this.animateIn; + + final sentReactions = {}; + if (singleSelected) { + sentReactions.addAll( + event + .aggregatedEvents( + timeline, + RelationshipTypes.reaction, + ) + .where( + (event) => + event.senderId == event.room.client.userID && + event.type == 'm.reaction', + ) + .map( + (event) => event.content + .tryGetMap('m.relates_to') + ?.tryGet('key'), + ) + .whereType(), + ); + } + + final showReceiptsRow = + event.hasAggregatedEvents(timeline, RelationshipTypes.reaction); + + final threadChildren = + event.aggregatedEvents(timeline, RelationshipTypes.thread); + + final showReactionPicker = + singleSelected && event.room.canSendDefaultMessages; + + final enterThread = this.enterThread; + + return Center( + child: Swipeable( + key: ValueKey(event.eventId), + background: const Padding( + padding: EdgeInsets.symmetric(horizontal: 12.0), + child: Center( + child: Icon(Icons.check_outlined), + ), + ), + direction: AppSettings.swipeRightToLeftToReply.value + ? SwipeDirection.endToStart + : SwipeDirection.startToEnd, + onSwipe: (_) => onSwipe(), + child: Container( + constraints: const BoxConstraints( + maxWidth: FluffyThemes.maxTimelineWidth, + ), + padding: EdgeInsets.only( + left: 8.0, + right: 8.0, + top: nextEventSameSender ? 1.0 : 4.0, + bottom: previousEventSameSender ? 1.0 : 4.0, + ), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: + ownMessage ? CrossAxisAlignment.end : CrossAxisAlignment.start, + children: [ + if (displayTime || selected) + Padding( + padding: displayTime + ? const EdgeInsets.symmetric(vertical: 8.0) + : EdgeInsets.zero, + child: Center( + child: Padding( + padding: const EdgeInsets.only(top: 4.0), + child: Material( + borderRadius: + BorderRadius.circular(AppConfig.borderRadius * 2), + color: theme.colorScheme.surface.withAlpha(128), + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 8.0, + vertical: 2.0, + ), + child: Text( + event.originServerTs.localizedTime(context), + style: TextStyle( + fontSize: 12 * AppSettings.fontSizeFactor.value, + fontWeight: FontWeight.bold, + color: theme.colorScheme.secondary, + ), + ), + ), + ), + ), + ), + ), + StatefulBuilder( + builder: (context, setState) { + if (animateIn && resetAnimateIn != null) { + WidgetsBinding.instance.addPostFrameCallback((timeStamp) { + animateIn = false; + setState(resetAnimateIn); + }); + } + return AnimatedSize( + duration: FluffyThemes.animationDuration, + curve: FluffyThemes.animationCurve, + clipBehavior: Clip.none, + alignment: ownMessage + ? Alignment.bottomRight + : Alignment.bottomLeft, + child: animateIn + ? const SizedBox(height: 0, width: double.infinity) + : Stack( + clipBehavior: Clip.none, + children: [ + Positioned( + top: 0, + bottom: 0, + left: 0, + right: 0, + child: InkWell( + hoverColor: longPressSelect + ? Colors.transparent + : null, + enableFeedback: !selected, + onTap: longPressSelect + ? null + : () => onSelect(event), + borderRadius: BorderRadius.circular( + AppConfig.borderRadius / 2, + ), + child: Material( + borderRadius: BorderRadius.circular( + AppConfig.borderRadius / 2, + ), + color: selected || highlightMarker + ? theme.colorScheme.secondaryContainer + .withAlpha(128) + : Colors.transparent, + ), + ), + ), + Row( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: rowMainAxisAlignment, + children: [ + if (longPressSelect && !event.redacted) + SizedBox( + height: 32, + width: Avatar.defaultSize, + child: IconButton( + padding: EdgeInsets.zero, + tooltip: L10n.of(context).select, + icon: Icon( + selected + ? Icons.check_circle + : Icons.circle_outlined, + ), + onPressed: () => onSelect(event), + ), + ) + else if (nextEventSameSender || ownMessage) + SizedBox( + width: Avatar.defaultSize, + child: Center( + child: SizedBox( + width: 16, + height: 16, + child: event.status == + EventStatus.error + ? const Icon( + Icons.error, + color: Colors.red, + ) + : event.fileSendingStatus != null + ? const CircularProgressIndicator + .adaptive( + strokeWidth: 1, + ) + : null, + ), + ), + ) + else + FutureBuilder( + future: event.fetchSenderUser(), + builder: (context, snapshot) { + final user = snapshot.data ?? + event.senderFromMemoryOrFallback; + return Avatar( + mxContent: user.avatarUrl, + name: user.calcDisplayname(), + onTap: () => + showMemberActionsPopupMenu( + context: context, + user: user, + onMention: onMention, + ), + presenceUserId: user.stateKey, + presenceBackgroundColor: wallpaperMode + ? Colors.transparent + : null, + ); + }, + ), + Expanded( + child: Column( + crossAxisAlignment: + CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + if (!nextEventSameSender) + Padding( + padding: const EdgeInsets.only( + left: 8.0, + bottom: 4, + ), + child: ownMessage || + event.room.isDirectChat + ? const SizedBox(height: 12) + : FutureBuilder( + future: + event.fetchSenderUser(), + builder: + (context, snapshot) { + final displayname = snapshot + .data + ?.calcDisplayname() ?? + event + .senderFromMemoryOrFallback + .calcDisplayname(); + return Text( + displayname, + style: TextStyle( + fontSize: 11, + fontWeight: + FontWeight.bold, + color: (theme.brightness == + Brightness + .light + ? displayname + .color + : displayname + .lightColorText), + shadows: + !wallpaperMode + ? null + : [ + const Shadow( + offset: + Offset( + 0.0, + 0.0, + ), + blurRadius: + 3, + color: Colors + .black, + ), + ], + ), + maxLines: 1, + overflow: TextOverflow + .ellipsis, + ); + }, + ), + ), + Container( + alignment: alignment, + padding: + const EdgeInsets.only(left: 8), + child: GestureDetector( + onLongPress: longPressSelect + ? null + : () { + HapticFeedback + .heavyImpact(); + onSelect(event); + }, + child: AnimatedOpacity( + opacity: animateIn + ? 0 + : event.messageType == + MessageTypes + .BadEncrypted || + event.status.isSending + ? 0.5 + : 1, + duration: FluffyThemes + .animationDuration, + curve: + FluffyThemes.animationCurve, + child: Container( + decoration: BoxDecoration( + color: noBubble + ? Colors.transparent + : color, + borderRadius: borderRadius, + ), + clipBehavior: Clip.antiAlias, + child: BubbleBackground( + colors: colors, + ignore: noBubble || + !ownMessage || + MediaQuery.highContrastOf( + context, + ), + scrollController: + scrollController, + child: Container( + decoration: BoxDecoration( + borderRadius: + BorderRadius.circular( + AppConfig.borderRadius, + ), + ), + constraints: + const BoxConstraints( + maxWidth: FluffyThemes + .columnWidth * + 1.5, + ), + child: Column( + mainAxisSize: + MainAxisSize.min, + crossAxisAlignment: + CrossAxisAlignment + .start, + children: [ + if (event + .inReplyToEventId( + includingFallback: + false, + ) != + null) + FutureBuilder( + future: event + .getReplyEvent( + timeline, + ), + builder: ( + BuildContext + context, + snapshot, + ) { + final replyEvent = + snapshot + .hasData + ? snapshot + .data! + : Event( + eventId: + event.inReplyToEventId() ?? '\$fake_event_id', + content: { + 'msgtype': + 'm.text', + 'body': + '...', + }, + senderId: + event.senderId, + type: + 'm.room.message', + room: + event.room, + status: + EventStatus.sent, + originServerTs: + DateTime.now(), + ); + return Padding( + padding: + const EdgeInsets + .only( + left: 16, + right: 16, + top: 8, + ), + child: Material( + color: Colors + .transparent, + borderRadius: + ReplyContent + .borderRadius, + child: + InkWell( + borderRadius: + ReplyContent + .borderRadius, + onTap: () => + scrollToEventId( + replyEvent + .eventId, + ), + child: + AbsorbPointer( + child: + ReplyContent( + replyEvent, + ownMessage: + ownMessage, + timeline: + timeline, + ), + ), + ), + ), + ); + }, + ), + MessageContent( + displayEvent, + textColor: textColor, + linkColor: linkColor, + onInfoTab: onInfoTab, + borderRadius: + borderRadius, + timeline: timeline, + selected: selected, + ), + if (event + .hasAggregatedEvents( + timeline, + RelationshipTypes + .edit, + )) + Padding( + padding: + const EdgeInsets + .only( + bottom: 8.0, + left: 16.0, + right: 16.0, + ), + child: Row( + mainAxisSize: + MainAxisSize + .min, + spacing: 4.0, + children: [ + Icon( + Icons + .edit_outlined, + color: textColor + .withAlpha( + 164, + ), + size: 14, + ), + Text( + displayEvent + .originServerTs + .localizedTimeShort( + context, + ), + style: + TextStyle( + color: textColor + .withAlpha( + 164, + ), + fontSize: + 11, + ), + ), + ], + ), + ), + ], + ), + ), + ), + ), + ), + ), + ), + Align( + alignment: ownMessage + ? Alignment.bottomRight + : Alignment.bottomLeft, + child: AnimatedSize( + duration: + FluffyThemes.animationDuration, + curve: FluffyThemes.animationCurve, + child: showReactionPicker + ? Padding( + padding: + const EdgeInsets.all( + 4.0, + ), + child: Material( + elevation: 4, + borderRadius: + BorderRadius.circular( + AppConfig.borderRadius, + ), + shadowColor: theme + .colorScheme.surface + .withAlpha(128), + child: + SingleChildScrollView( + scrollDirection: + Axis.horizontal, + child: Row( + mainAxisSize: + MainAxisSize.min, + children: [ + ...AppConfig + .defaultReactions + .map( + (emoji) => + IconButton( + padding: + EdgeInsets + .zero, + icon: Center( + child: + Opacity( + opacity: sentReactions + .contains( + emoji, + ) + ? 0.33 + : 1, + child: Text( + emoji, + style: + const TextStyle( + fontSize: + 20, + ), + textAlign: + TextAlign + .center, + ), + ), + ), + onPressed: + sentReactions + .contains( + emoji, + ) + ? null + : () { + onSelect( + event, + ); + event.room.sendReaction( + event.eventId, + emoji, + ); + }, + ), + ), + IconButton( + icon: const Icon( + Icons + .add_reaction_outlined, + ), + tooltip: L10n.of( + context, + ).customReaction, + onPressed: + () async { + final emoji = + await showAdaptiveBottomSheet< + String>( + context: + context, + builder: + (context) => + Scaffold( + appBar: + AppBar( + title: + Text( + L10n.of(context) + .customReaction, + ), + leading: + CloseButton( + onPressed: + () => + Navigator.of( + context, + ).pop( + null, + ), + ), + ), + body: + SizedBox( + height: double + .infinity, + child: + EmojiPicker( + onEmojiSelected: ( + _, + emoji, + ) => + Navigator.of( + context, + ).pop( + emoji + .emoji, + ), + config: + Config( + emojiViewConfig: + const EmojiViewConfig( + backgroundColor: + Colors.transparent, + ), + bottomActionBarConfig: + const BottomActionBarConfig( + enabled: + false, + ), + categoryViewConfig: + CategoryViewConfig( + initCategory: + Category.SMILEYS, + backspaceColor: + theme.colorScheme.primary, + iconColor: + theme.colorScheme.primary.withAlpha( + 128, + ), + iconColorSelected: + theme.colorScheme.primary, + indicatorColor: + theme.colorScheme.primary, + backgroundColor: + theme.colorScheme.surface, + ), + skinToneConfig: + SkinToneConfig( + dialogBackgroundColor: + Color.lerp( + theme.colorScheme.surface, + theme.colorScheme.primaryContainer, + 0.75, + )!, + indicatorColor: + theme.colorScheme.onSurface, + ), + ), + ), + ), + ), + ); + if (emoji == + null) { + return; + } + if (sentReactions + .contains( + emoji, + )) { + return; + } + onSelect(event); + + await event.room + .sendReaction( + event.eventId, + emoji, + ); + }, + ), + ], + ), + ), + ), + ) + : const SizedBox.shrink(), + ), + ), + ], + ), + ), + ], + ), + ], + ), + ); + }, + ), + AnimatedSize( + duration: FluffyThemes.animationDuration, + curve: FluffyThemes.animationCurve, + alignment: Alignment.bottomCenter, + child: !showReceiptsRow + ? const SizedBox.shrink() + : Padding( + padding: EdgeInsets.only( + top: 4.0, + left: (ownMessage ? 0 : Avatar.defaultSize) + 12.0, + right: ownMessage ? 0 : 12.0, + ), + child: MessageReactions(event, timeline), + ), + ), + if (enterThread != null) + AnimatedSize( + duration: FluffyThemes.animationDuration, + curve: FluffyThemes.animationCurve, + alignment: Alignment.bottomCenter, + child: threadChildren.isEmpty + ? const SizedBox.shrink() + : Padding( + padding: const EdgeInsets.only( + top: 2.0, + bottom: 8.0, + left: Avatar.defaultSize + 8, + ), + child: ConstrainedBox( + constraints: const BoxConstraints( + maxWidth: FluffyThemes.columnWidth * 1.5, + ), + child: TextButton.icon( + style: TextButton.styleFrom( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(4), + ), + foregroundColor: + theme.colorScheme.onSecondaryContainer, + backgroundColor: + theme.colorScheme.secondaryContainer, + ), + onPressed: () => enterThread(event.eventId), + icon: const Icon(Icons.message), + label: Text( + '${L10n.of(context).countReplies(threadChildren.length)} | ${threadChildren.first.calcLocalizedBodyFallback( + MatrixLocals(L10n.of(context)), + withSenderNamePrefix: true, + )}', + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + ), + ), + ), + ), + if (displayReadMarker) + Row( + children: [ + Expanded( + child: Divider( + color: theme.colorScheme.surfaceContainerHighest, + ), + ), + Container( + margin: const EdgeInsets.symmetric( + horizontal: 4, + vertical: 16.0, + ), + padding: const EdgeInsets.symmetric( + horizontal: 8, + vertical: 2, + ), + decoration: BoxDecoration( + borderRadius: + BorderRadius.circular(AppConfig.borderRadius / 3), + color: theme.colorScheme.surface.withAlpha(128), + ), + child: Text( + L10n.of(context).readUpToHere, + style: TextStyle( + fontSize: 12 * AppSettings.fontSizeFactor.value, + ), + ), + ), + Expanded( + child: Divider( + color: theme.colorScheme.surfaceContainerHighest, + ), + ), + ], + ), + ], + ), + ), + ), + ); + } +} + +class BubbleBackground extends StatelessWidget { + const BubbleBackground({ + super.key, + required this.scrollController, + required this.colors, + required this.ignore, + required this.child, + }); + + final ScrollController scrollController; + final List colors; + final bool ignore; + final Widget child; + + @override + Widget build(BuildContext context) { + if (ignore) return child; + return CustomPaint( + painter: BubblePainter( + repaint: scrollController, + colors: colors, + context: context, + ), + child: child, + ); + } +} + +class BubblePainter extends CustomPainter { + BubblePainter({ + required this.context, + required this.colors, + required super.repaint, + }); + + final BuildContext context; + final List colors; + ScrollableState? _scrollable; + + @override + void paint(Canvas canvas, Size size) { + final scrollable = _scrollable ??= Scrollable.of(context); + final scrollableBox = scrollable.context.findRenderObject() as RenderBox; + final scrollableRect = Offset.zero & scrollableBox.size; + final bubbleBox = context.findRenderObject() as RenderBox; + + final origin = + bubbleBox.localToGlobal(Offset.zero, ancestor: scrollableBox); + final paint = Paint() + ..shader = ui.Gradient.linear( + scrollableRect.topCenter, + scrollableRect.bottomCenter, + colors, + [0.0, 1.0], + TileMode.clamp, + Matrix4.translationValues(-origin.dx, -origin.dy, 0.0).storage, + ); + canvas.drawRect(Offset.zero & size, paint); + } + + @override + bool shouldRepaint(BubblePainter oldDelegate) { + final scrollable = Scrollable.of(context); + final oldScrollable = _scrollable; + _scrollable = scrollable; + return scrollable.position != oldScrollable?.position; + } +} diff --git a/lib/pages/chat/events/message_content.dart b/lib/pages/chat/events/message_content.dart new file mode 100644 index 0000000..46beaa4 --- /dev/null +++ b/lib/pages/chat/events/message_content.dart @@ -0,0 +1,410 @@ +import 'dart:math'; + +import 'package:flutter/material.dart'; + +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/config/setting_keys.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/chat/events/poll.dart'; +import 'package:fluffychat/pages/chat/events/video_player.dart'; +import 'package:fluffychat/utils/adaptive_bottom_sheet.dart'; +import 'package:fluffychat/utils/date_time_extension.dart'; +import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; +import 'package:fluffychat/widgets/avatar.dart'; +import 'package:fluffychat/widgets/matrix.dart'; +import '../../../config/app_config.dart'; +import '../../../utils/event_checkbox_extension.dart'; +import '../../../utils/platform_infos.dart'; +import '../../../utils/url_launcher.dart'; +import '../../bootstrap/bootstrap_dialog.dart'; +import 'audio_player.dart'; +import 'cute_events.dart'; +import 'html_message.dart'; +import 'image_bubble.dart'; +import 'map_bubble.dart'; +import 'message_download_content.dart'; + +class MessageContent extends StatelessWidget { + final Event event; + final Color textColor; + final Color linkColor; + final void Function(Event)? onInfoTab; + final BorderRadius borderRadius; + final Timeline timeline; + final bool selected; + + const MessageContent( + this.event, { + this.onInfoTab, + super.key, + required this.timeline, + required this.textColor, + required this.linkColor, + required this.borderRadius, + required this.selected, + }); + + void _verifyOrRequestKey(BuildContext context) async { + final l10n = L10n.of(context); + if (event.content['can_request_session'] != true) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text( + event.calcLocalizedBodyFallback(MatrixLocals(l10n)), + ), + ), + ); + return; + } + final client = Matrix.of(context).client; + if (client.isUnknownSession && client.encryption!.crossSigning.enabled) { + final success = await BootstrapDialog( + client: Matrix.of(context).client, + ).show(context); + if (success != true) return; + } + event.requestKey(); + final sender = event.senderFromMemoryOrFallback; + await showAdaptiveBottomSheet( + context: context, + builder: (context) => Scaffold( + appBar: AppBar( + leading: CloseButton(onPressed: Navigator.of(context).pop), + title: Text( + l10n.whyIsThisMessageEncrypted, + style: const TextStyle(fontSize: 16), + ), + ), + body: SafeArea( + child: ListView( + padding: const EdgeInsets.all(16), + children: [ + ListTile( + contentPadding: EdgeInsets.zero, + leading: Avatar( + mxContent: sender.avatarUrl, + name: sender.calcDisplayname(), + presenceUserId: sender.stateKey, + client: event.room.client, + ), + title: Text(sender.calcDisplayname()), + subtitle: Text(event.originServerTs.localizedTime(context)), + trailing: const Icon(Icons.lock_outlined), + ), + const Divider(), + Text( + event.calcLocalizedBodyFallback( + MatrixLocals(l10n), + ), + ), + ], + ), + ), + ), + ); + } + + @override + Widget build(BuildContext context) { + final fontSize = + AppConfig.messageFontSize * AppSettings.fontSizeFactor.value; + final buttonTextColor = textColor; + switch (event.type) { + case EventTypes.Message: + case EventTypes.Encrypted: + case EventTypes.Sticker: + switch (event.messageType) { + case MessageTypes.Image: + case MessageTypes.Sticker: + if (event.redacted) continue textmessage; + const maxSize = 256.0; + final w = event.content + .tryGetMap('info') + ?.tryGet('w'); + final h = event.content + .tryGetMap('info') + ?.tryGet('h'); + var width = maxSize; + var height = maxSize; + var fit = event.messageType == MessageTypes.Sticker + ? BoxFit.contain + : BoxFit.cover; + if (w != null && h != null) { + fit = BoxFit.contain; + if (w > h) { + width = maxSize; + height = max(32, maxSize * (h / w)); + } else { + height = maxSize; + width = max(32, maxSize * (w / h)); + } + } + return ImageBubble( + event, + width: width, + height: height, + fit: fit, + borderRadius: borderRadius, + timeline: timeline, + textColor: textColor, + ); + case CuteEventContent.eventType: + return CuteContent(event); + case MessageTypes.Audio: + if (PlatformInfos.isMobile || + PlatformInfos.isMacOS || + PlatformInfos.isWeb + // Disabled until https://github.com/bleonard252/just_audio_mpv/issues/3 + // is fixed + // || PlatformInfos.isLinux + ) { + return AudioPlayerWidget( + event, + color: textColor, + linkColor: linkColor, + fontSize: fontSize, + ); + } + return MessageDownloadContent( + event, + textColor: textColor, + linkColor: linkColor, + ); + case MessageTypes.Video: + return EventVideoPlayer( + event, + textColor: textColor, + linkColor: linkColor, + timeline: timeline, + ); + case MessageTypes.File: + return MessageDownloadContent( + event, + textColor: textColor, + linkColor: linkColor, + ); + case MessageTypes.BadEncrypted: + case EventTypes.Encrypted: + return _ButtonContent( + textColor: buttonTextColor, + onPressed: () => _verifyOrRequestKey(context), + icon: '🔒', + label: L10n.of(context).encrypted, + fontSize: fontSize, + ); + case MessageTypes.Location: + final geoUri = + Uri.tryParse(event.content.tryGet('geo_uri')!); + if (geoUri != null && geoUri.scheme == 'geo') { + final latlong = geoUri.path + .split(';') + .first + .split(',') + .map((s) => double.tryParse(s)) + .toList(); + if (latlong.length == 2 && + latlong.first != null && + latlong.last != null) { + return Column( + mainAxisSize: MainAxisSize.min, + children: [ + MapBubble( + latitude: latlong.first!, + longitude: latlong.last!, + ), + const SizedBox(height: 6), + OutlinedButton.icon( + icon: Icon(Icons.location_on_outlined, color: textColor), + onPressed: + UrlLauncher(context, geoUri.toString()).launchUrl, + label: Text( + L10n.of(context).openInMaps, + style: TextStyle(color: textColor), + ), + ), + ], + ); + } + } + continue textmessage; + case MessageTypes.Text: + case MessageTypes.Notice: + case MessageTypes.Emote: + case MessageTypes.None: + textmessage: + default: + if (event.redacted) { + return RedactionWidget( + event: event, + buttonTextColor: buttonTextColor, + onInfoTab: onInfoTab, + fontSize: fontSize, + ); + } + var html = AppSettings.renderHtml.value && event.isRichMessage + ? event.formattedText + : event.body; + if (event.messageType == MessageTypes.Emote) { + html = '* $html'; + } + + final bigEmotes = event.onlyEmotes && + event.numberEmotes > 0 && + event.numberEmotes <= 3; + return Padding( + padding: const EdgeInsets.symmetric( + horizontal: 16, + vertical: 8, + ), + child: HtmlMessage( + html: html, + textColor: textColor, + room: event.room, + fontSize: AppSettings.fontSizeFactor.value * + AppConfig.messageFontSize * + (bigEmotes ? 5 : 1), + limitHeight: !selected, + linkStyle: TextStyle( + color: linkColor, + fontSize: AppSettings.fontSizeFactor.value * + AppConfig.messageFontSize, + decoration: TextDecoration.underline, + decorationColor: linkColor, + ), + onOpen: (url) => UrlLauncher(context, url.url).launchUrl(), + eventId: event.eventId, + checkboxCheckedEvents: event.aggregatedEvents( + timeline, + EventCheckboxRoomExtension.relationshipType, + ), + ), + ); + } + case PollEventContent.startType: + if (event.redacted) { + return RedactionWidget( + event: event, + buttonTextColor: buttonTextColor, + onInfoTab: onInfoTab, + fontSize: fontSize, + ); + } + return PollWidget( + event: event, + timeline: timeline, + textColor: textColor, + linkColor: linkColor, + ); + case EventTypes.CallInvite: + return FutureBuilder( + future: event.fetchSenderUser(), + builder: (context, snapshot) { + return _ButtonContent( + label: L10n.of(context).startedACall( + snapshot.data?.calcDisplayname() ?? + event.senderFromMemoryOrFallback.calcDisplayname(), + ), + icon: '📞', + textColor: buttonTextColor, + onPressed: () => onInfoTab!(event), + fontSize: fontSize, + ); + }, + ); + default: + return FutureBuilder( + future: event.fetchSenderUser(), + builder: (context, snapshot) { + return _ButtonContent( + label: L10n.of(context).userSentUnknownEvent( + snapshot.data?.calcDisplayname() ?? + event.senderFromMemoryOrFallback.calcDisplayname(), + event.type, + ), + icon: 'ℹ️', + textColor: buttonTextColor, + onPressed: () => onInfoTab!(event), + fontSize: fontSize, + ); + }, + ); + } + } +} + +class RedactionWidget extends StatelessWidget { + const RedactionWidget({ + super.key, + required this.event, + required this.buttonTextColor, + required this.onInfoTab, + required this.fontSize, + }); + + final Event event; + final Color buttonTextColor; + final void Function(Event p1)? onInfoTab; + final double fontSize; + + @override + Widget build(BuildContext context) { + return FutureBuilder( + future: event.redactedBecause?.fetchSenderUser(), + builder: (context, snapshot) { + final reason = event.redactedBecause?.content.tryGet('reason'); + final redactedBy = snapshot.data?.calcDisplayname() ?? + event.redactedBecause?.senderId.localpart ?? + L10n.of(context).user; + return _ButtonContent( + label: reason == null + ? L10n.of(context).redactedBy(redactedBy) + : L10n.of(context).redactedByBecause( + redactedBy, + reason, + ), + icon: '🗑️', + textColor: buttonTextColor.withAlpha(128), + onPressed: () => onInfoTab!(event), + fontSize: fontSize, + ); + }, + ); + } +} + +class _ButtonContent extends StatelessWidget { + final void Function() onPressed; + final String label; + final String icon; + final Color? textColor; + final double fontSize; + + const _ButtonContent({ + required this.label, + required this.icon, + required this.textColor, + required this.onPressed, + required this.fontSize, + }); + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.symmetric( + horizontal: 16, + vertical: 8, + ), + child: InkWell( + onTap: onPressed, + child: Text( + '$icon $label', + style: TextStyle( + color: textColor, + fontSize: fontSize, + ), + ), + ), + ); + } +} diff --git a/lib/pages/chat/events/message_download_content.dart b/lib/pages/chat/events/message_download_content.dart new file mode 100644 index 0000000..18b5c0b --- /dev/null +++ b/lib/pages/chat/events/message_download_content.dart @@ -0,0 +1,114 @@ +import 'package:flutter/material.dart'; + +import 'package:flutter_linkify/flutter_linkify.dart'; +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/config/setting_keys.dart'; +import 'package:fluffychat/utils/file_description.dart'; +import 'package:fluffychat/utils/matrix_sdk_extensions/event_extension.dart'; +import 'package:fluffychat/utils/url_launcher.dart'; + +class MessageDownloadContent extends StatelessWidget { + final Event event; + final Color textColor; + final Color linkColor; + + const MessageDownloadContent( + this.event, { + required this.textColor, + required this.linkColor, + super.key, + }); + + @override + Widget build(BuildContext context) { + final filename = event.content.tryGet('filename') ?? event.body; + final filetype = (filename.contains('.') + ? filename.split('.').last.toUpperCase() + : event.content + .tryGetMap('info') + ?.tryGet('mimetype') + ?.toUpperCase() ?? + 'UNKNOWN'); + final sizeString = event.sizeString ?? '?MB'; + final fileDescription = event.fileDescription; + return Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + spacing: 8, + children: [ + Material( + color: Colors.transparent, + child: InkWell( + borderRadius: BorderRadius.circular(AppConfig.borderRadius / 2), + onTap: () => event.saveFile(context), + child: Container( + width: 400, + padding: const EdgeInsets.all(16.0), + child: Row( + mainAxisSize: MainAxisSize.min, + spacing: 16, + children: [ + CircleAvatar( + backgroundColor: textColor.withAlpha(32), + child: Icon(Icons.file_download_outlined, color: textColor), + ), + Flexible( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + filename, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + color: textColor, + fontWeight: FontWeight.w500, + ), + ), + Text( + '$sizeString | $filetype', + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle(color: textColor, fontSize: 10), + ), + ], + ), + ), + ], + ), + ), + ), + ), + if (fileDescription != null) ...[ + Padding( + padding: const EdgeInsets.symmetric( + horizontal: 16.0, + vertical: 8.0, + ), + child: Linkify( + text: fileDescription, + textScaleFactor: MediaQuery.textScalerOf(context).scale(1), + style: TextStyle( + color: textColor, + fontSize: AppSettings.fontSizeFactor.value * + AppConfig.messageFontSize, + ), + options: const LinkifyOptions(humanize: false), + linkStyle: TextStyle( + color: linkColor, + fontSize: AppSettings.fontSizeFactor.value * + AppConfig.messageFontSize, + decoration: TextDecoration.underline, + decorationColor: linkColor, + ), + onOpen: (url) => UrlLauncher(context, url.url).launchUrl(), + ), + ), + ], + ], + ); + } +} diff --git a/lib/pages/chat/events/message_reactions.dart b/lib/pages/chat/events/message_reactions.dart new file mode 100644 index 0000000..dede458 --- /dev/null +++ b/lib/pages/chat/events/message_reactions.dart @@ -0,0 +1,234 @@ +import 'package:flutter/material.dart'; + +import 'package:collection/collection.dart' show IterableExtension; +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/widgets/avatar.dart'; +import 'package:fluffychat/widgets/future_loading_dialog.dart'; +import 'package:fluffychat/widgets/matrix.dart'; +import 'package:fluffychat/widgets/mxc_image.dart'; + +class MessageReactions extends StatelessWidget { + final Event event; + final Timeline timeline; + + const MessageReactions(this.event, this.timeline, {super.key}); + + @override + Widget build(BuildContext context) { + final allReactionEvents = + event.aggregatedEvents(timeline, RelationshipTypes.reaction); + final reactionMap = {}; + final client = Matrix.of(context).client; + + for (final e in allReactionEvents) { + final key = e.content + .tryGetMap('m.relates_to') + ?.tryGet('key'); + if (key != null) { + if (!reactionMap.containsKey(key)) { + reactionMap[key] = _ReactionEntry( + key: key, + count: 0, + reacted: false, + reactors: [], + ); + } + reactionMap[key]!.count++; + reactionMap[key]!.reactors!.add(e.senderFromMemoryOrFallback); + reactionMap[key]!.reacted |= e.senderId == e.room.client.userID; + } + } + + final reactionList = reactionMap.values.toList(); + reactionList.sort((a, b) => b.count - a.count > 0 ? 1 : -1); + final ownMessage = event.senderId == event.room.client.userID; + return Wrap( + spacing: 4.0, + runSpacing: 4.0, + alignment: ownMessage ? WrapAlignment.end : WrapAlignment.start, + children: [ + ...reactionList.map( + (r) => _Reaction( + reactionKey: r.key, + count: r.count, + reacted: r.reacted, + onTap: () { + if (r.reacted) { + final evt = allReactionEvents.firstWhereOrNull( + (e) => + e.senderId == e.room.client.userID && + e.content.tryGetMap('m.relates_to')?['key'] == r.key, + ); + if (evt != null) { + showFutureLoadingDialog( + context: context, + future: () => evt.redactEvent(), + ); + } + } else { + event.room.sendReaction(event.eventId, r.key); + } + }, + onLongPress: () async => await _AdaptableReactorsDialog( + client: client, + reactionEntry: r, + ).show(context), + ), + ), + if (allReactionEvents.any((e) => e.status.isSending)) + const SizedBox( + width: 24, + height: 24, + child: Padding( + padding: EdgeInsets.all(4.0), + child: CircularProgressIndicator.adaptive(strokeWidth: 1), + ), + ), + ], + ); + } +} + +class _Reaction extends StatelessWidget { + final String reactionKey; + final int count; + final bool? reacted; + final void Function()? onTap; + final void Function()? onLongPress; + + const _Reaction({ + required this.reactionKey, + required this.count, + required this.reacted, + required this.onTap, + required this.onLongPress, + }); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + Widget content; + if (reactionKey.startsWith('mxc://')) { + content = Row( + mainAxisSize: MainAxisSize.min, + children: [ + MxcImage( + uri: Uri.parse(reactionKey), + width: 20, + height: 20, + animated: false, + isThumbnail: false, + ), + if (count > 1) ...[ + const SizedBox(width: 4), + Text( + count.toString(), + textAlign: TextAlign.center, + style: TextStyle( + color: theme.colorScheme.onSurface, + fontSize: DefaultTextStyle.of(context).style.fontSize, + ), + ), + ], + ], + ); + } else { + var renderKey = Characters(reactionKey); + if (renderKey.length > 10) { + renderKey = renderKey.getRange(0, 9) + Characters('…'); + } + content = Text( + renderKey.toString() + (count > 1 ? ' $count' : ''), + style: TextStyle( + color: theme.colorScheme.onSurface, + fontSize: DefaultTextStyle.of(context).style.fontSize, + ), + ); + } + return InkWell( + onTap: () => onTap != null ? onTap!() : null, + onLongPress: () => onLongPress != null ? onLongPress!() : null, + borderRadius: BorderRadius.circular(AppConfig.borderRadius / 2), + child: Container( + decoration: BoxDecoration( + color: reacted == true + ? theme.colorScheme.primaryContainer + : theme.colorScheme.surfaceContainerHigh, + border: Border.all( + color: reacted == true + ? theme.colorScheme.primary + : theme.colorScheme.surfaceContainerHigh, + width: 1, + ), + borderRadius: BorderRadius.circular(AppConfig.borderRadius / 2), + ), + padding: const EdgeInsets.symmetric(horizontal: 4, vertical: 2), + child: content, + ), + ); + } +} + +class _ReactionEntry { + String key; + int count; + bool reacted; + List? reactors; + + _ReactionEntry({ + required this.key, + required this.count, + required this.reacted, + this.reactors, + }); +} + +class _AdaptableReactorsDialog extends StatelessWidget { + final Client? client; + final _ReactionEntry? reactionEntry; + + const _AdaptableReactorsDialog({ + this.client, + this.reactionEntry, + }); + + Future show(BuildContext context) => showAdaptiveDialog( + context: context, + builder: (context) => this, + barrierDismissible: true, + useRootNavigator: false, + ); + + @override + Widget build(BuildContext context) { + final body = SingleChildScrollView( + child: Wrap( + spacing: 8.0, + runSpacing: 4.0, + alignment: WrapAlignment.center, + children: [ + for (final reactor in reactionEntry!.reactors!) + Chip( + avatar: Avatar( + mxContent: reactor.avatarUrl, + name: reactor.displayName, + client: client, + presenceUserId: reactor.stateKey, + ), + label: Text(reactor.displayName!), + ), + ], + ), + ); + + final title = Center(child: Text(reactionEntry!.key)); + + return AlertDialog.adaptive( + title: title, + content: body, + ); + } +} diff --git a/lib/pages/chat/events/poll.dart b/lib/pages/chat/events/poll.dart new file mode 100644 index 0000000..af948d7 --- /dev/null +++ b/lib/pages/chat/events/poll.dart @@ -0,0 +1,233 @@ +import 'package:flutter/material.dart'; + +import 'package:async/async.dart'; +import 'package:flutter_linkify/flutter_linkify.dart'; +import 'package:matrix/matrix.dart' hide Result; + +import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/config/setting_keys.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/url_launcher.dart'; +import 'package:fluffychat/widgets/avatar.dart'; +import 'package:fluffychat/widgets/future_loading_dialog.dart'; + +class PollWidget extends StatelessWidget { + final Event event; + final Timeline timeline; + final Color textColor; + final Color linkColor; + const PollWidget({ + required this.event, + required this.timeline, + required this.textColor, + required this.linkColor, + super.key, + }); + + void _endPoll(BuildContext context) => showFutureLoadingDialog( + context: context, + future: () => event.endPoll(), + ); + + void _toggleVote( + BuildContext context, + String answerId, + int maxSelection, + ) async { + final userId = event.room.client.userID!; + final answerIds = event.getPollResponses(timeline)[userId] ?? {}; + if (!answerIds.remove(answerId)) { + answerIds.add(answerId); + if (answerIds.length > maxSelection) { + answerIds.clear(); + answerIds.add(answerId); + } + } + + showFutureLoadingDialog( + context: context, + future: () => event.answerPoll(answerIds.toList()), + ); + } + + @override + Widget build(BuildContext context) { + final eventContentResult = Result(() => event.parsedPollEventContent); + final eventContent = eventContentResult.asValue?.value; + if (eventContent == null) { + Logs().w('Invalid poll event', eventContentResult.error); + return const Text('Unable to parse poll event...'); + } + final responses = event.getPollResponses(timeline); + final pollHasBeenEnded = event.getPollHasBeenEnded(timeline); + final canVote = event.room.canSendEvent(PollEventContent.responseType) && + !pollHasBeenEnded; + final maxPolls = responses.length; + final answersVisible = + eventContent.pollStartContent.kind == PollKind.disclosed || + pollHasBeenEnded; + + return Padding( + padding: const EdgeInsets.symmetric( + vertical: 8, + ), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: const EdgeInsets.symmetric(horizontal: 16), + child: Linkify( + text: eventContent.pollStartContent.question.mText, + textScaleFactor: MediaQuery.textScalerOf(context).scale(1), + style: TextStyle( + color: textColor, + fontSize: AppSettings.fontSizeFactor.value * + AppConfig.messageFontSize, + ), + options: const LinkifyOptions(humanize: false), + linkStyle: TextStyle( + color: linkColor, + fontSize: AppSettings.fontSizeFactor.value * + AppConfig.messageFontSize, + decoration: TextDecoration.underline, + decorationColor: linkColor, + ), + onOpen: (url) => UrlLauncher(context, url.url).launchUrl(), + ), + ), + Divider(color: linkColor.withAlpha(64)), + ...eventContent.pollStartContent.answers.map( + (answer) { + final votedUserIds = responses.entries + .where((entry) => entry.value.contains(answer.id)) + .map((entry) => entry.key) + .toSet(); + return Material( + color: Colors.transparent, + clipBehavior: Clip.hardEdge, + child: CheckboxListTile.adaptive( + value: responses[event.room.client.userID!] + ?.contains(answer.id) ?? + false, + contentPadding: const EdgeInsets.symmetric(horizontal: 16), + checkboxScaleFactor: 1.5, + checkboxShape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(32), + ), + onChanged: !canVote + ? null + : (_) => _toggleVote( + context, + answer.id, + eventContent.pollStartContent.maxSelections, + ), + title: Text( + answer.mText, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + color: textColor, + fontSize: AppConfig.messageFontSize * + AppSettings.fontSizeFactor.value, + ), + ), + subtitle: answersVisible + ? Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Row( + children: [ + Text( + L10n.of(context) + .countVotes(votedUserIds.length), + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + color: linkColor, + fontSize: + 12 * AppSettings.fontSizeFactor.value, + ), + ), + const SizedBox(width: 2), + ...votedUserIds.map((userId) { + final user = event.room + .getState(EventTypes.RoomMember, userId) + ?.asUser(event.room); + return Padding( + padding: const EdgeInsets.symmetric( + horizontal: 2.0, + ), + child: Avatar( + mxContent: user?.avatarUrl, + name: user?.calcDisplayname() ?? + userId.localpart, + size: 12 * + AppSettings.fontSizeFactor.value, + ), + ); + }), + const SizedBox(width: 2), + ], + ), + ), + LinearProgressIndicator( + color: linkColor, + backgroundColor: linkColor.withAlpha(128), + borderRadius: + BorderRadius.circular(AppConfig.borderRadius), + value: maxPolls == 0 + ? 0 + : votedUserIds.length / maxPolls, + ), + ], + ) + : null, + ), + ); + }, + ), + if (!pollHasBeenEnded && event.senderId == event.room.client.userID) + Padding( + padding: const EdgeInsets.symmetric(horizontal: 16), + child: OutlinedButton( + onPressed: () => _endPoll(context), + style: OutlinedButton.styleFrom( + foregroundColor: linkColor, + side: BorderSide(color: linkColor.withAlpha(64)), + ), + child: Text(L10n.of(context).endPoll), + ), + ) + else if (!answersVisible) + Padding( + padding: const EdgeInsets.symmetric(horizontal: 16), + child: Text( + L10n.of(context).answersWillBeVisibleWhenPollHasEnded, + style: TextStyle( + color: linkColor, + fontSize: 12 * AppSettings.fontSizeFactor.value, + fontStyle: FontStyle.italic, + ), + ), + ) + else if (pollHasBeenEnded) + Padding( + padding: const EdgeInsets.symmetric(horizontal: 16), + child: Text( + L10n.of(context).pollHasBeenEnded, + style: TextStyle( + color: linkColor, + fontSize: 12 * AppSettings.fontSizeFactor.value, + fontStyle: FontStyle.italic, + ), + ), + ), + ], + ), + ); + } +} diff --git a/lib/pages/chat/events/reply_content.dart b/lib/pages/chat/events/reply_content.dart new file mode 100644 index 0000000..10e6c23 --- /dev/null +++ b/lib/pages/chat/events/reply_content.dart @@ -0,0 +1,103 @@ +import 'package:flutter/material.dart'; + +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/config/setting_keys.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; +import '../../../config/app_config.dart'; + +class ReplyContent extends StatelessWidget { + final Event replyEvent; + final bool ownMessage; + final Timeline? timeline; + + const ReplyContent( + this.replyEvent, { + this.ownMessage = false, + super.key, + this.timeline, + }); + + static const BorderRadius borderRadius = BorderRadius.only( + topRight: Radius.circular(AppConfig.borderRadius / 2), + bottomRight: Radius.circular(AppConfig.borderRadius / 2), + ); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + final timeline = this.timeline; + final displayEvent = + timeline != null ? replyEvent.getDisplayEvent(timeline) : replyEvent; + final fontSize = + AppConfig.messageFontSize * AppSettings.fontSizeFactor.value; + final color = theme.brightness == Brightness.dark + ? theme.colorScheme.onTertiaryContainer + : ownMessage + ? theme.colorScheme.tertiaryContainer + : theme.colorScheme.tertiary; + + return Material( + color: Colors.transparent, + borderRadius: borderRadius, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Container( + width: 5, + height: fontSize * 2 + 16, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(AppConfig.borderRadius), + color: color, + ), + ), + const SizedBox(width: 6), + Flexible( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + FutureBuilder( + initialData: displayEvent.senderFromMemoryOrFallback, + future: displayEvent.fetchSenderUser(), + builder: (context, snapshot) { + return Text( + '${snapshot.data?.calcDisplayname() ?? displayEvent.senderFromMemoryOrFallback.calcDisplayname()}:', + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + fontWeight: FontWeight.bold, + color: color, + fontSize: fontSize, + ), + ); + }, + ), + Text( + displayEvent.calcLocalizedBodyFallback( + MatrixLocals(L10n.of(context)), + withSenderNamePrefix: false, + hideReply: true, + ), + overflow: TextOverflow.ellipsis, + maxLines: 1, + style: TextStyle( + color: theme.brightness == Brightness.dark + ? theme.colorScheme.onSurface + : ownMessage + ? theme.colorScheme.onTertiary + : theme.colorScheme.onSurface, + fontSize: fontSize, + ), + ), + ], + ), + ), + const SizedBox(width: 6), + ], + ), + ); + } +} diff --git a/lib/pages/chat/events/room_creation_state_event.dart b/lib/pages/chat/events/room_creation_state_event.dart new file mode 100644 index 0000000..0cac172 --- /dev/null +++ b/lib/pages/chat/events/room_creation_state_event.dart @@ -0,0 +1,59 @@ +import 'package:flutter/material.dart'; + +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/date_time_extension.dart'; +import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; +import 'package:fluffychat/widgets/avatar.dart'; + +class RoomCreationStateEvent extends StatelessWidget { + final Event event; + + const RoomCreationStateEvent({required this.event, super.key}); + + @override + Widget build(BuildContext context) { + final l10n = L10n.of(context); + final matrixLocals = MatrixLocals(l10n); + final theme = Theme.of(context); + final roomName = event.room.getLocalizedDisplayname(matrixLocals); + return Padding( + padding: const EdgeInsets.only(bottom: 32.0), + child: Center( + child: ConstrainedBox( + constraints: const BoxConstraints(maxWidth: 256), + child: Material( + color: theme.colorScheme.surfaceContainer, + borderRadius: BorderRadius.circular(AppConfig.borderRadius), + child: Padding( + padding: const EdgeInsets.all(16.0), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Avatar( + mxContent: event.room.avatar, + name: roomName, + size: Avatar.defaultSize * 2, + ), + Text( + roomName, + style: theme.textTheme.bodyLarge, + textAlign: TextAlign.center, + ), + const SizedBox(height: 8), + Text( + '${event.originServerTs.localizedTime(context)} | ${l10n.countParticipants((event.room.summary.mJoinedMemberCount ?? 1) + (event.room.summary.mInvitedMemberCount ?? 0))}', + style: theme.textTheme.labelSmall, + textAlign: TextAlign.center, + ), + ], + ), + ), + ), + ), + ), + ); + } +} diff --git a/lib/pages/chat/events/state_message.dart b/lib/pages/chat/events/state_message.dart new file mode 100644 index 0000000..9ef9d4e --- /dev/null +++ b/lib/pages/chat/events/state_message.dart @@ -0,0 +1,85 @@ +import 'package:flutter/gestures.dart'; +import 'package:flutter/material.dart'; + +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/config/setting_keys.dart'; +import 'package:fluffychat/config/themes.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; +import '../../../config/app_config.dart'; + +class StateMessage extends StatelessWidget { + final Event event; + final void Function()? onExpand; + final bool isCollapsed; + const StateMessage( + this.event, { + this.onExpand, + this.isCollapsed = false, + super.key, + }); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + return AnimatedSize( + duration: FluffyThemes.animationDuration, + curve: FluffyThemes.animationCurve, + child: isCollapsed + ? const SizedBox.shrink() + : Padding( + padding: const EdgeInsets.symmetric(horizontal: 8.0), + child: Center( + child: Padding( + padding: const EdgeInsets.all(4), + child: Material( + color: theme.colorScheme.surface.withAlpha(128), + borderRadius: + BorderRadius.circular(AppConfig.borderRadius / 3), + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 8.0, + vertical: 4.0, + ), + child: Text.rich( + TextSpan( + children: [ + TextSpan( + text: event.calcLocalizedBodyFallback( + MatrixLocals(L10n.of(context)), + ), + ), + if (onExpand != null) ...[ + const TextSpan( + text: ' + ', + style: TextStyle(fontWeight: FontWeight.bold), + ), + TextSpan( + style: TextStyle( + color: theme.colorScheme.primary, + decoration: TextDecoration.underline, + ), + recognizer: TapGestureRecognizer() + ..onTap = onExpand, + text: L10n.of(context).moreEvents, + ), + ], + ], + ), + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 12 * AppSettings.fontSizeFactor.value, + decoration: event.redacted + ? TextDecoration.lineThrough + : null, + ), + ), + ), + ), + ), + ), + ), + ); + } +} diff --git a/lib/pages/chat/events/video_player.dart b/lib/pages/chat/events/video_player.dart new file mode 100644 index 0000000..5635bd2 --- /dev/null +++ b/lib/pages/chat/events/video_player.dart @@ -0,0 +1,158 @@ +import 'dart:math'; + +import 'package:flutter/material.dart'; + +import 'package:flutter_linkify/flutter_linkify.dart'; +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/config/setting_keys.dart'; +import 'package:fluffychat/utils/file_description.dart'; +import 'package:fluffychat/utils/matrix_sdk_extensions/event_extension.dart'; +import 'package:fluffychat/utils/platform_infos.dart'; +import 'package:fluffychat/utils/url_launcher.dart'; +import 'package:fluffychat/widgets/blur_hash.dart'; +import 'package:fluffychat/widgets/mxc_image.dart'; +import '../../image_viewer/image_viewer.dart'; + +class EventVideoPlayer extends StatelessWidget { + final Event event; + final Timeline? timeline; + final Color? textColor; + final Color? linkColor; + + const EventVideoPlayer( + this.event, { + this.timeline, + this.textColor, + this.linkColor, + super.key, + }); + + static const String fallbackBlurHash = 'L5H2EC=PM+yV0g-mq.wG9c010J}I'; + + @override + Widget build(BuildContext context) { + final supportsVideoPlayer = PlatformInfos.supportsVideoPlayer; + + final blurHash = (event.infoMap as Map) + .tryGet('xyz.amorgan.blurhash') ?? + fallbackBlurHash; + final fileDescription = event.fileDescription; + const maxDimension = 300.0; + final infoMap = event.content.tryGetMap('info'); + final videoWidth = infoMap?.tryGet('w') ?? maxDimension; + final videoHeight = infoMap?.tryGet('h') ?? maxDimension; + + final modifier = max(videoWidth, videoHeight) / maxDimension; + final width = videoWidth / modifier; + final height = videoHeight / modifier; + + final durationInt = infoMap?.tryGet('duration'); + final duration = + durationInt == null ? null : Duration(milliseconds: durationInt); + + return Column( + mainAxisSize: MainAxisSize.min, + spacing: 8, + children: [ + Material( + color: Colors.black, + borderRadius: BorderRadius.circular(AppConfig.borderRadius), + child: InkWell( + onTap: () => supportsVideoPlayer + ? showDialog( + context: context, + builder: (_) => ImageViewer( + event, + timeline: timeline, + outerContext: context, + ), + ) + : event.saveFile(context), + borderRadius: BorderRadius.circular(AppConfig.borderRadius), + child: SizedBox( + width: width, + height: height, + child: Hero( + tag: event.eventId, + child: Stack( + children: [ + if (event.hasThumbnail) + MxcImage( + event: event, + isThumbnail: true, + width: width, + height: height, + fit: BoxFit.cover, + placeholder: (context) => BlurHash( + blurhash: blurHash, + width: width, + height: height, + fit: BoxFit.cover, + ), + ) + else + BlurHash( + blurhash: blurHash, + width: width, + height: height, + fit: BoxFit.cover, + ), + Center( + child: CircleAvatar( + child: supportsVideoPlayer + ? const Icon(Icons.play_arrow_outlined) + : const Icon(Icons.file_download_outlined), + ), + ), + if (duration != null) + Positioned( + bottom: 8, + left: 16, + child: Text( + '${duration.inMinutes.toString().padLeft(2, '0')}:${(duration.inSeconds % 60).toString().padLeft(2, '0')}', + style: TextStyle( + color: Colors.white, + backgroundColor: Colors.black.withAlpha(32), + ), + ), + ), + ], + ), + ), + ), + ), + ), + if (fileDescription != null && textColor != null && linkColor != null) + SizedBox( + width: width, + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 16, + vertical: 8, + ), + child: Linkify( + text: fileDescription, + textScaleFactor: MediaQuery.textScalerOf(context).scale(1), + style: TextStyle( + color: textColor, + fontSize: AppSettings.fontSizeFactor.value * + AppConfig.messageFontSize, + ), + options: const LinkifyOptions(humanize: false), + linkStyle: TextStyle( + color: linkColor, + fontSize: AppSettings.fontSizeFactor.value * + AppConfig.messageFontSize, + decoration: TextDecoration.underline, + decorationColor: linkColor, + ), + onOpen: (url) => UrlLauncher(context, url.url).launchUrl(), + ), + ), + ), + ], + ); + } +} diff --git a/lib/pages/chat/input_bar.dart b/lib/pages/chat/input_bar.dart new file mode 100644 index 0000000..5491521 --- /dev/null +++ b/lib/pages/chat/input_bar.dart @@ -0,0 +1,450 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +import 'package:emojis/emoji.dart'; +import 'package:matrix/matrix.dart'; +import 'package:slugify/slugify.dart'; + +import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/config/setting_keys.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/markdown_context_builder.dart'; +import 'package:fluffychat/widgets/mxc_image.dart'; +import '../../widgets/avatar.dart'; +import '../../widgets/matrix.dart'; +import 'command_hints.dart'; + +class InputBar extends StatelessWidget { + final Room room; + final int? minLines; + final int? maxLines; + final TextInputType? keyboardType; + final TextInputAction? textInputAction; + final ValueChanged? onSubmitted; + final ValueChanged? onSubmitImage; + final FocusNode? focusNode; + final TextEditingController? controller; + final InputDecoration decoration; + final ValueChanged? onChanged; + final bool? autofocus; + final bool readOnly; + + const InputBar({ + required this.room, + this.minLines, + this.maxLines, + this.keyboardType, + this.onSubmitted, + this.onSubmitImage, + this.focusNode, + this.controller, + required this.decoration, + this.onChanged, + this.autofocus, + this.textInputAction, + this.readOnly = false, + super.key, + }); + + List> getSuggestions(TextEditingValue text) { + if (text.selection.baseOffset != text.selection.extentOffset || + text.selection.baseOffset < 0) { + return []; // no entries if there is selected text + } + final searchText = text.text.substring(0, text.selection.baseOffset); + final ret = >[]; + const maxResults = 30; + + final commandMatch = RegExp(r'^/(\w*)$').firstMatch(searchText); + if (commandMatch != null) { + final commandSearch = commandMatch[1]!.toLowerCase(); + for (final command in room.client.commands.keys) { + if (command.contains(commandSearch)) { + ret.add({ + 'type': 'command', + 'name': command, + }); + } + + if (ret.length > maxResults) return ret; + } + } + final emojiMatch = + RegExp(r'(?:\s|^):(?:([-\w]+)~)?([-\w]+)$').firstMatch(searchText); + if (emojiMatch != null) { + final packSearch = emojiMatch[1]; + final emoteSearch = emojiMatch[2]!.toLowerCase(); + final emotePacks = room.getImagePacks(ImagePackUsage.emoticon); + if (packSearch == null || packSearch.isEmpty) { + for (final pack in emotePacks.entries) { + for (final emote in pack.value.images.entries) { + if (emote.key.toLowerCase().contains(emoteSearch)) { + ret.add({ + 'type': 'emote', + 'name': emote.key, + 'pack': pack.key, + 'pack_avatar_url': pack.value.pack.avatarUrl?.toString(), + 'pack_display_name': pack.value.pack.displayName ?? pack.key, + 'mxc': emote.value.url.toString(), + }); + } + if (ret.length > maxResults) { + break; + } + } + if (ret.length > maxResults) { + break; + } + } + } else if (emotePacks[packSearch] != null) { + for (final emote in emotePacks[packSearch]!.images.entries) { + if (emote.key.toLowerCase().contains(emoteSearch)) { + ret.add({ + 'type': 'emote', + 'name': emote.key, + 'pack': packSearch, + 'pack_avatar_url': + emotePacks[packSearch]!.pack.avatarUrl?.toString(), + 'pack_display_name': + emotePacks[packSearch]!.pack.displayName ?? packSearch, + 'mxc': emote.value.url.toString(), + }); + } + if (ret.length > maxResults) { + break; + } + } + } + // aside of emote packs, also propose normal (tm) unicode emojis + final matchingUnicodeEmojis = Emoji.all() + .where( + (element) => [element.name, ...element.keywords] + .any((element) => element.toLowerCase().contains(emoteSearch)), + ) + .toList(); + // sort by the index of the search term in the name in order to have + // best matches first + // (thanks for the hint by github.com/nextcloud/circles devs) + matchingUnicodeEmojis.sort((a, b) { + final indexA = a.name.indexOf(emoteSearch); + final indexB = b.name.indexOf(emoteSearch); + if (indexA == -1 || indexB == -1) { + if (indexA == indexB) return 0; + if (indexA == -1) { + return 1; + } else { + return 0; + } + } + return indexA.compareTo(indexB); + }); + for (final emoji in matchingUnicodeEmojis) { + ret.add({ + 'type': 'emoji', + 'emoji': emoji.char, + // don't include sub-group names, splitting at `:` hence + 'label': '${emoji.char} - ${emoji.name.split(':').first}', + 'current_word': ':$emoteSearch', + }); + if (ret.length > maxResults) { + break; + } + } + } + final userMatch = RegExp(r'(?:\s|^)@([-\w]+)$').firstMatch(searchText); + if (userMatch != null) { + final userSearch = userMatch[1]!.toLowerCase(); + for (final user in room.getParticipants()) { + if ((user.displayName != null && + (user.displayName!.toLowerCase().contains(userSearch) || + slugify(user.displayName!.toLowerCase()) + .contains(userSearch))) || + user.id.split(':')[0].toLowerCase().contains(userSearch)) { + ret.add({ + 'type': 'user', + 'mxid': user.id, + 'mention': user.mention, + 'displayname': user.displayName, + 'avatar_url': user.avatarUrl?.toString(), + }); + } + if (ret.length > maxResults) { + break; + } + } + } + final roomMatch = RegExp(r'(?:\s|^)#([-\w]+)$').firstMatch(searchText); + if (roomMatch != null) { + final roomSearch = roomMatch[1]!.toLowerCase(); + for (final r in room.client.rooms) { + if (r.getState(EventTypes.RoomTombstone) != null) { + continue; // we don't care about tombstoned rooms + } + final state = r.getState(EventTypes.RoomCanonicalAlias); + if ((state != null && + ((state.content['alias'] is String && + state.content + .tryGet('alias')! + .split(':')[0] + .toLowerCase() + .contains(roomSearch)) || + (state.content['alt_aliases'] is List && + (state.content['alt_aliases'] as List).any( + (l) => + l is String && + l + .split(':')[0] + .toLowerCase() + .contains(roomSearch), + )))) || + (r.name.toLowerCase().contains(roomSearch))) { + ret.add({ + 'type': 'room', + 'mxid': (r.canonicalAlias.isNotEmpty) ? r.canonicalAlias : r.id, + 'displayname': r.getLocalizedDisplayname(), + 'avatar_url': r.avatar?.toString(), + }); + } + if (ret.length > maxResults) { + break; + } + } + } + return ret; + } + + Widget buildSuggestion( + BuildContext context, + Map suggestion, + void Function(Map) onSelected, + Client? client, + ) { + final theme = Theme.of(context); + const size = 30.0; + if (suggestion['type'] == 'command') { + final command = suggestion['name']!; + final hint = commandHint(L10n.of(context), command); + return Tooltip( + message: hint, + waitDuration: const Duration(days: 1), // don't show on hover + child: ListTile( + onTap: () => onSelected(suggestion), + title: Text( + commandExample(command), + style: const TextStyle(fontFamily: 'RobotoMono'), + ), + subtitle: Text( + hint, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: theme.textTheme.bodySmall, + ), + ), + ); + } + if (suggestion['type'] == 'emoji') { + final label = suggestion['label']!; + return Tooltip( + message: label, + waitDuration: const Duration(days: 1), // don't show on hover + child: ListTile( + onTap: () => onSelected(suggestion), + title: Text(label, style: const TextStyle(fontFamily: 'RobotoMono')), + ), + ); + } + if (suggestion['type'] == 'emote') { + return ListTile( + onTap: () => onSelected(suggestion), + leading: MxcImage( + // ensure proper ordering ... + key: ValueKey(suggestion['name']), + uri: suggestion['mxc'] is String + ? Uri.parse(suggestion['mxc'] ?? '') + : null, + width: size, + height: size, + isThumbnail: false, + ), + title: Row( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Text(suggestion['name']!), + Expanded( + child: Align( + alignment: Alignment.centerRight, + child: Opacity( + opacity: suggestion['pack_avatar_url'] != null ? 0.8 : 0.5, + child: suggestion['pack_avatar_url'] != null + ? Avatar( + mxContent: Uri.tryParse( + suggestion.tryGet('pack_avatar_url') ?? '', + ), + name: suggestion.tryGet('pack_display_name'), + size: size * 0.9, + client: client, + ) + : Text(suggestion['pack_display_name']!), + ), + ), + ), + ], + ), + ); + } + if (suggestion['type'] == 'user' || suggestion['type'] == 'room') { + final url = Uri.parse(suggestion['avatar_url'] ?? ''); + return ListTile( + onTap: () => onSelected(suggestion), + leading: Avatar( + mxContent: url, + name: suggestion.tryGet('displayname') ?? + suggestion.tryGet('mxid'), + size: size, + client: client, + ), + title: Text(suggestion['displayname'] ?? suggestion['mxid']!), + ); + } + return const SizedBox.shrink(); + } + + String insertSuggestion(Map suggestion) { + final replaceText = + controller!.text.substring(0, controller!.selection.baseOffset); + var startText = ''; + final afterText = replaceText == controller!.text + ? '' + : controller!.text.substring(controller!.selection.baseOffset + 1); + var insertText = ''; + if (suggestion['type'] == 'command') { + insertText = '${suggestion['name']!} '; + startText = replaceText.replaceAllMapped( + RegExp(r'^(/\w*)$'), + (Match m) => '/$insertText', + ); + } + if (suggestion['type'] == 'emoji') { + insertText = '${suggestion['emoji']!} '; + startText = replaceText.replaceAllMapped( + suggestion['current_word']!, + (Match m) => insertText, + ); + } + if (suggestion['type'] == 'emote') { + var isUnique = true; + final insertEmote = suggestion['name']; + final insertPack = suggestion['pack']; + final emotePacks = room.getImagePacks(ImagePackUsage.emoticon); + for (final pack in emotePacks.entries) { + if (pack.key == insertPack) { + continue; + } + for (final emote in pack.value.images.entries) { + if (emote.key == insertEmote) { + isUnique = false; + break; + } + } + if (!isUnique) { + break; + } + } + insertText = ':${isUnique ? '' : '${insertPack!}~'}$insertEmote: '; + startText = replaceText.replaceAllMapped( + RegExp(r'(\s|^)(:(?:[-\w]+~)?[-\w]+)$'), + (Match m) => '${m[1]}$insertText', + ); + } + if (suggestion['type'] == 'user') { + insertText = '${suggestion['mention']!} '; + startText = replaceText.replaceAllMapped( + RegExp(r'(\s|^)(@[-\w]+)$'), + (Match m) => '${m[1]}$insertText', + ); + } + if (suggestion['type'] == 'room') { + insertText = '${suggestion['mxid']!} '; + startText = replaceText.replaceAllMapped( + RegExp(r'(\s|^)(#[-\w]+)$'), + (Match m) => '${m[1]}$insertText', + ); + } + + return startText + afterText; + } + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + return Autocomplete>( + focusNode: focusNode, + textEditingController: controller, + optionsBuilder: getSuggestions, + fieldViewBuilder: (context, controller, focusNode, _) => TextField( + controller: controller, + focusNode: focusNode, + readOnly: readOnly, + contextMenuBuilder: (c, e) => markdownContextBuilder(c, e, controller), + contentInsertionConfiguration: ContentInsertionConfiguration( + onContentInserted: (KeyboardInsertedContent content) { + final data = content.data; + if (data == null) return; + + final file = MatrixFile( + mimeType: content.mimeType, + bytes: data, + name: content.uri.split('/').last, + ); + room.sendFileEvent( + file, + shrinkImageMaxDimension: 1600, + ); + }, + ), + minLines: minLines, + maxLines: maxLines, + keyboardType: keyboardType!, + textInputAction: textInputAction, + autofocus: autofocus!, + inputFormatters: [ + LengthLimitingTextInputFormatter((maxPDUSize / 3).floor()), + ], + onSubmitted: (text) { + // fix for library for now + // it sets the types for the callback incorrectly + onSubmitted!(text); + }, + maxLength: AppSettings.textMessageMaxLength.value, + decoration: decoration, + onChanged: (text) { + // fix for the library for now + // it sets the types for the callback incorrectly + onChanged!(text); + }, + textCapitalization: TextCapitalization.sentences, + ), + optionsViewBuilder: (c, onSelected, s) { + final suggestions = s.toList(); + return Material( + elevation: theme.appBarTheme.scrolledUnderElevation ?? 4, + shadowColor: theme.appBarTheme.shadowColor, + borderRadius: BorderRadius.circular(AppConfig.borderRadius), + clipBehavior: Clip.hardEdge, + child: ListView.builder( + shrinkWrap: true, + itemCount: suggestions.length, + itemBuilder: (context, i) => buildSuggestion( + c, + suggestions[i], + onSelected, + Matrix.of(context).client, + ), + ), + ); + }, + displayStringForOption: insertSuggestion, + optionsViewOpenDirection: OptionsViewOpenDirection.up, + ); + } +} diff --git a/lib/pages/chat/pinned_events.dart b/lib/pages/chat/pinned_events.dart new file mode 100644 index 0000000..7c9967a --- /dev/null +++ b/lib/pages/chat/pinned_events.dart @@ -0,0 +1,92 @@ +import 'dart:async'; + +import 'package:flutter/material.dart'; + +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/chat/chat.dart'; +import 'package:fluffychat/pages/chat/chat_app_bar_list_tile.dart'; +import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_modal_action_popup.dart'; +import 'package:fluffychat/widgets/future_loading_dialog.dart'; + +class PinnedEvents extends StatelessWidget { + final ChatController controller; + + const PinnedEvents(this.controller, {super.key}); + + Future _displayPinnedEventsDialog(BuildContext context) async { + final eventsResult = await showFutureLoadingDialog( + context: context, + future: () => Future.wait( + controller.room.pinnedEventIds.map( + (eventId) => controller.room.getEventById(eventId), + ), + ), + ); + final events = eventsResult.result; + if (events == null) return; + + final eventId = events.length == 1 + ? events.single?.eventId + : await showModalActionPopup( + context: context, + title: L10n.of(context).pin, + cancelLabel: L10n.of(context).cancel, + actions: events + .map( + (event) => AdaptiveModalAction( + value: event?.eventId ?? '', + icon: const Icon(Icons.push_pin_outlined), + label: event?.calcLocalizedBodyFallback( + MatrixLocals(L10n.of(context)), + withSenderNamePrefix: true, + hideReply: true, + ) ?? + 'UNKNOWN', + ), + ) + .toList(), + ); + + if (eventId != null) controller.scrollToEventId(eventId); + } + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + final pinnedEventIds = controller.room.pinnedEventIds; + + if (pinnedEventIds.isEmpty || controller.activeThreadId != null) { + return const SizedBox.shrink(); + } + + return FutureBuilder( + future: controller.room.getEventById(pinnedEventIds.last), + builder: (context, snapshot) { + final event = snapshot.data; + return ChatAppBarListTile( + title: event?.calcLocalizedBodyFallback( + MatrixLocals(L10n.of(context)), + withSenderNamePrefix: true, + hideReply: true, + ) ?? + L10n.of(context).loadingPleaseWait, + leading: IconButton( + splashRadius: 18, + iconSize: 18, + color: theme.colorScheme.onSurfaceVariant, + icon: const Icon(Icons.push_pin), + tooltip: L10n.of(context).unpin, + onPressed: controller.room.canSendEvent(EventTypes.RoomPinnedEvents) + ? () => controller.unpinEvent(event!.eventId) + : null, + ), + onTap: () => _displayPinnedEventsDialog(context), + ); + }, + ); + } +} diff --git a/lib/pages/chat/recording_input_row.dart b/lib/pages/chat/recording_input_row.dart new file mode 100644 index 0000000..2432db3 --- /dev/null +++ b/lib/pages/chat/recording_input_row.dart @@ -0,0 +1,89 @@ +import 'package:flutter/material.dart'; + +import 'package:fluffychat/config/themes.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/chat/recording_view_model.dart'; + +class RecordingInputRow extends StatelessWidget { + final RecordingViewModelState state; + final Future Function(String, int, List, String?) onSend; + const RecordingInputRow({ + required this.state, + required this.onSend, + super.key, + }); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + const maxDecibalWidth = 36.0; + final time = + '${state.duration.inMinutes.toString().padLeft(2, '0')}:${(state.duration.inSeconds % 60).toString().padLeft(2, '0')}'; + return Row( + children: [ + IconButton( + tooltip: L10n.of(context).cancel, + icon: const Icon(Icons.delete_outlined), + color: theme.colorScheme.error, + onPressed: state.cancel, + ), + if (state.isPaused) + IconButton( + tooltip: L10n.of(context).resume, + icon: const Icon(Icons.play_circle_outline_outlined), + onPressed: state.resume, + ) + else + IconButton( + tooltip: L10n.of(context).pause, + icon: const Icon(Icons.pause_circle_outline_outlined), + onPressed: state.pause, + ), + Text(time), + const SizedBox(width: 8), + Expanded( + child: LayoutBuilder( + builder: (context, constraints) { + const width = 4; + return Row( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.end, + children: state.amplitudeTimeline.reversed + .take((constraints.maxWidth / (width + 2)).floor()) + .toList() + .reversed + .map( + (amplitude) => Container( + margin: const EdgeInsets.only(left: 2), + width: width.toDouble(), + decoration: BoxDecoration( + color: theme.colorScheme.primary, + borderRadius: BorderRadius.circular(2), + ), + height: maxDecibalWidth * (amplitude / 100), + ), + ) + .toList(), + ); + }, + ), + ), + IconButton( + style: IconButton.styleFrom( + disabledBackgroundColor: theme.bubbleColor.withAlpha(128), + backgroundColor: theme.bubbleColor, + foregroundColor: theme.onBubbleColor, + ), + tooltip: L10n.of(context).sendAudio, + icon: state.isSending + ? const SizedBox.square( + dimension: 24, + child: CircularProgressIndicator.adaptive(), + ) + : const Icon(Icons.send_outlined), + onPressed: state.isSending ? null : () => state.stopAndSend(onSend), + ), + ], + ); + } +} diff --git a/lib/pages/chat/recording_view_model.dart b/lib/pages/chat/recording_view_model.dart new file mode 100644 index 0000000..7224301 --- /dev/null +++ b/lib/pages/chat/recording_view_model.dart @@ -0,0 +1,234 @@ +import 'dart:async'; + +import 'package:flutter/cupertino.dart'; +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; + +import 'package:device_info_plus/device_info_plus.dart'; +import 'package:matrix/matrix.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'; + +import 'package:fluffychat/config/setting_keys.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/platform_infos.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_ok_cancel_alert_dialog.dart'; +import 'events/audio_player.dart'; + +class RecordingViewModel extends StatefulWidget { + final Widget Function(BuildContext, RecordingViewModelState) builder; + + const RecordingViewModel({ + required this.builder, + super.key, + }); + + @override + RecordingViewModelState createState() => RecordingViewModelState(); +} + +class RecordingViewModelState extends State { + Timer? _recorderSubscription; + Duration duration = Duration.zero; + + bool isSending = false; + + bool get isRecording => _audioRecorder != null; + + AudioRecorder? _audioRecorder; + final List amplitudeTimeline = []; + + String? fileName; + + bool isPaused = false; + + Future startRecording(Room room) async { + room.client.getConfig(); // Preload server file configuration. + if (PlatformInfos.isAndroid) { + final info = await DeviceInfoPlugin().androidInfo; + if (info.version.sdkInt < 19) { + showOkAlertDialog( + context: context, + title: L10n.of(context).unsupportedAndroidVersion, + message: L10n.of(context).unsupportedAndroidVersionLong, + okLabel: L10n.of(context).close, + ); + return; + } + } + if (await AudioRecorder().hasPermission() == false) return; + + final audioRecorder = _audioRecorder ??= AudioRecorder(); + setState(() {}); + + try { + 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: + : !PlatformInfos + .isIOS && // Blocked by https://github.com/llfbandit/record/issues/560 + await audioRecorder.isEncoderSupported(AudioEncoder.opus) + ? AudioEncoder.opus + : AudioEncoder.aacLc; + fileName = + 'recording${DateTime.now().microsecondsSinceEpoch}.${codec.fileExtension}'; + String? path; + if (!kIsWeb) { + final tempDir = await getTemporaryDirectory(); + path = path_lib.join(tempDir.path, fileName); + } + + final result = await audioRecorder.hasPermission(); + if (result != true) { + showOkAlertDialog( + context: context, + title: L10n.of(context).oopsSomethingWentWrong, + message: L10n.of(context).noPermission, + ); + return; + } + await WakelockPlus.enable(); + + await audioRecorder.start( + RecordConfig( + bitRate: AppSettings.audioRecordingBitRate.value, + sampleRate: AppSettings.audioRecordingSamplingRate.value, + numChannels: AppSettings.audioRecordingNumChannels.value, + autoGain: AppSettings.audioRecordingAutoGain.value, + echoCancel: AppSettings.audioRecordingEchoCancel.value, + noiseSuppress: AppSettings.audioRecordingNoiseSuppress.value, + encoder: codec, + ), + path: path ?? '', + ); + setState(() => duration = Duration.zero); + _subscribe(); + } catch (e, s) { + Logs().w('Unable to start voice message recording', e, s); + showOkAlertDialog( + context: context, + title: L10n.of(context).oopsSomethingWentWrong, + message: e.toString(), + ); + setState(_reset); + } + } + + @override + void dispose() { + _reset(); + super.dispose(); + } + + void _subscribe() { + _recorderSubscription?.cancel(); + _recorderSubscription = + Timer.periodic(const Duration(milliseconds: 100), (_) async { + final amplitude = await _audioRecorder!.getAmplitude(); + var value = 100 + amplitude.current * 2; + value = value < 1 ? 1 : value; + amplitudeTimeline.add(value); + setState(() { + duration += const Duration(milliseconds: 100); + }); + }); + } + + void _reset() { + WakelockPlus.disable(); + _recorderSubscription?.cancel(); + _audioRecorder?.stop(); + _audioRecorder = null; + isSending = false; + fileName = null; + duration = Duration.zero; + amplitudeTimeline.clear(); + isPaused = false; + } + + void cancel() { + setState(() { + _reset(); + }); + } + + void pause() { + _audioRecorder?.pause(); + _recorderSubscription?.cancel(); + setState(() { + isPaused = true; + }); + } + + void resume() { + _audioRecorder?.resume(); + _subscribe(); + setState(() { + isPaused = false; + }); + } + + void stopAndSend( + Future Function( + String path, + int duration, + List waveform, + String? fileName, + ) onSend, + ) async { + _recorderSubscription?.cancel(); + final path = await _audioRecorder?.stop(); + + if (path == null) throw ('Recording failed!'); + const waveCount = AudioPlayerWidget.wavesCount; + final step = amplitudeTimeline.length < waveCount + ? 1 + : (amplitudeTimeline.length / waveCount).round(); + final waveform = []; + for (var i = 0; i < amplitudeTimeline.length; i += step) { + waveform.add((amplitudeTimeline[i] / 100 * 1024).round()); + } + + setState(() { + isSending = true; + }); + try { + await onSend(path, duration.inMilliseconds, waveform, fileName); + } catch (e, s) { + Logs().e('Unable to send voice message', e, s); + setState(() { + isSending = false; + }); + return; + } + + cancel(); + } + + @override + Widget build(BuildContext context) => widget.builder(context, this); +} + +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/pages/chat/reply_display.dart b/lib/pages/chat/reply_display.dart new file mode 100644 index 0000000..fb352f1 --- /dev/null +++ b/lib/pages/chat/reply_display.dart @@ -0,0 +1,86 @@ +import 'package:flutter/material.dart'; + +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; +import '../../config/themes.dart'; +import 'chat.dart'; +import 'events/reply_content.dart'; + +class ReplyDisplay extends StatelessWidget { + final ChatController controller; + const ReplyDisplay(this.controller, {super.key}); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + return AnimatedContainer( + duration: FluffyThemes.animationDuration, + curve: FluffyThemes.animationCurve, + height: controller.editEvent != null || controller.replyEvent != null + ? 56 + : 0, + clipBehavior: Clip.hardEdge, + decoration: BoxDecoration( + color: theme.colorScheme.onInverseSurface, + ), + child: Row( + children: [ + IconButton( + tooltip: L10n.of(context).close, + icon: const Icon(Icons.close), + onPressed: controller.cancelReplyEventAction, + ), + Expanded( + child: controller.replyEvent != null + ? ReplyContent( + controller.replyEvent!, + timeline: controller.timeline!, + ) + : _EditContent( + controller.editEvent?.getDisplayEvent(controller.timeline!), + ), + ), + ], + ), + ); + } +} + +class _EditContent extends StatelessWidget { + final Event? event; + + const _EditContent(this.event); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + final event = this.event; + if (event == null) { + return const SizedBox.shrink(); + } + return Row( + children: [ + Icon( + Icons.edit, + color: theme.colorScheme.primary, + ), + Container(width: 15.0), + Text( + event.calcLocalizedBodyFallback( + MatrixLocals(L10n.of(context)), + withSenderNamePrefix: false, + hideReply: true, + ), + overflow: TextOverflow.ellipsis, + maxLines: 1, + style: TextStyle( + color: theme.textTheme.bodyMedium!.color, + ), + ), + ], + ); + } +} diff --git a/lib/pages/chat/seen_by_row.dart b/lib/pages/chat/seen_by_row.dart new file mode 100644 index 0000000..83813f5 --- /dev/null +++ b/lib/pages/chat/seen_by_row.dart @@ -0,0 +1,69 @@ +import 'package:flutter/material.dart'; + +import 'package:fluffychat/config/themes.dart'; +import 'package:fluffychat/pages/chat/chat.dart'; +import 'package:fluffychat/utils/room_status_extension.dart'; +import 'package:fluffychat/widgets/avatar.dart'; +import 'package:fluffychat/widgets/matrix.dart'; + +class SeenByRow extends StatelessWidget { + final ChatController controller; + const SeenByRow(this.controller, {super.key}); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + final seenByUsers = controller.room.getSeenByUsers(controller.timeline!); + const maxAvatars = 7; + return Container( + width: double.infinity, + alignment: Alignment.center, + child: AnimatedContainer( + constraints: + const BoxConstraints(maxWidth: FluffyThemes.maxTimelineWidth), + height: seenByUsers.isEmpty ? 0 : 24, + duration: seenByUsers.isEmpty + ? Duration.zero + : FluffyThemes.animationDuration, + curve: FluffyThemes.animationCurve, + alignment: controller.timeline!.events.isNotEmpty && + controller.timeline!.events.first.senderId == + Matrix.of(context).client.userID + ? Alignment.topRight + : Alignment.topLeft, + padding: const EdgeInsets.only(left: 8, right: 8, bottom: 4), + child: Wrap( + spacing: 4, + children: [ + ...(seenByUsers.length > maxAvatars + ? seenByUsers.sublist(0, maxAvatars) + : seenByUsers) + .map( + (user) => Avatar( + mxContent: user.avatarUrl, + name: user.calcDisplayname(), + size: 16, + ), + ), + if (seenByUsers.length > maxAvatars) + SizedBox( + width: 16, + height: 16, + child: Material( + color: theme.colorScheme.surface, + borderRadius: BorderRadius.circular(32), + child: Center( + child: Text( + '+${seenByUsers.length - maxAvatars}', + style: const TextStyle(fontSize: 9), + ), + ), + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/pages/chat/send_file_dialog.dart b/lib/pages/chat/send_file_dialog.dart new file mode 100644 index 0000000..deab148 --- /dev/null +++ b/lib/pages/chat/send_file_dialog.dart @@ -0,0 +1,444 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; + +import 'package:cross_file/cross_file.dart'; +import 'package:matrix/matrix.dart'; +import 'package:mime/mime.dart'; + +import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/localized_exception_extension.dart'; +import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_file_extension.dart'; +import 'package:fluffychat/utils/other_party_can_receive.dart'; +import 'package:fluffychat/utils/platform_infos.dart'; +import 'package:fluffychat/utils/size_string.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/adaptive_dialog_action.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/dialog_text_field.dart'; +import '../../utils/resize_video.dart'; + +class SendFileDialog extends StatefulWidget { + final Room room; + final List files; + final BuildContext outerContext; + final String? threadLastEventId, threadRootEventId; + + const SendFileDialog({ + required this.room, + required this.files, + required this.outerContext, + required this.threadLastEventId, + required this.threadRootEventId, + super.key, + }); + + @override + SendFileDialogState createState() => SendFileDialogState(); +} + +class SendFileDialogState extends State { + bool compress = true; + + /// Images smaller than 20kb don't need compression. + static const int minSizeToCompress = 20 * 1000; + + final TextEditingController _labelTextController = TextEditingController(); + + Future _send() async { + final scaffoldMessenger = ScaffoldMessenger.of(widget.outerContext); + final l10n = L10n.of(context); + + try { + if (!widget.room.otherPartyCanReceiveMessages) { + throw OtherPartyCanNotReceiveMessages(); + } + scaffoldMessenger.showLoadingSnackBar(l10n.prepareSendingAttachment); + Navigator.of(context, rootNavigator: false).pop(); + final clientConfig = await widget.room.client.getConfig(); + final maxUploadSize = clientConfig.mUploadSize ?? 100 * 1000 * 1000; + + for (final xfile in widget.files) { + final MatrixFile file; + MatrixImageFile? thumbnail; + final length = await xfile.length(); + final mimeType = xfile.mimeType ?? lookupMimeType(xfile.path); + + // Generate video thumbnail + if (PlatformInfos.isMobile && + mimeType != null && + mimeType.startsWith('video')) { + scaffoldMessenger.showLoadingSnackBar(l10n.generatingVideoThumbnail); + thumbnail = await xfile.getVideoThumbnail(); + } + + // If file is a video, shrink it! + if (PlatformInfos.isMobile && + mimeType != null && + mimeType.startsWith('video')) { + scaffoldMessenger.showLoadingSnackBar(l10n.compressVideo); + file = await xfile.getVideoInfo( + compress: length > minSizeToCompress && compress, + ); + } else { + if (length > maxUploadSize) { + throw FileTooBigMatrixException(length, maxUploadSize); + } + // Else we just create a MatrixFile + file = MatrixFile( + bytes: await xfile.readAsBytes(), + name: xfile.name, + mimeType: mimeType, + ).detectFileType; + } + + if (file.bytes.length > maxUploadSize) { + throw FileTooBigMatrixException(length, maxUploadSize); + } + + if (widget.files.length > 1) { + scaffoldMessenger.showLoadingSnackBar( + l10n.sendingAttachmentCountOfCount( + widget.files.indexOf(xfile) + 1, + widget.files.length, + ), + ); + } + + final label = _labelTextController.text.trim(); + + try { + await widget.room.sendFileEvent( + file, + thumbnail: thumbnail, + shrinkImageMaxDimension: compress ? 1600 : null, + extraContent: label.isEmpty ? null : {'body': label}, + threadRootEventId: widget.threadRootEventId, + threadLastEventId: widget.threadLastEventId, + ); + } on MatrixException catch (e) { + final retryAfterMs = e.retryAfterMs; + if (e.error != MatrixError.M_LIMIT_EXCEEDED || retryAfterMs == null) { + rethrow; + } + final retryAfterDuration = + Duration(milliseconds: retryAfterMs + 1000); + + scaffoldMessenger.showSnackBar( + SnackBar( + content: Text( + l10n.serverLimitReached(retryAfterDuration.inSeconds), + ), + ), + ); + await Future.delayed(retryAfterDuration); + + scaffoldMessenger.showLoadingSnackBar(l10n.sendingAttachment); + + await widget.room.sendFileEvent( + file, + thumbnail: thumbnail, + shrinkImageMaxDimension: compress ? 1600 : null, + extraContent: label.isEmpty ? null : {'body': label}, + ); + } + } + scaffoldMessenger.clearSnackBars(); + } catch (e) { + scaffoldMessenger.clearSnackBars(); + final theme = Theme.of(context); + scaffoldMessenger.showSnackBar( + SnackBar( + backgroundColor: theme.colorScheme.errorContainer, + closeIconColor: theme.colorScheme.onErrorContainer, + content: Text( + e.toLocalizedString(widget.outerContext), + style: TextStyle(color: theme.colorScheme.onErrorContainer), + ), + duration: const Duration(seconds: 30), + showCloseIcon: true, + ), + ); + rethrow; + } + + return; + } + + Future _calcCombinedFileSize() async { + final lengths = + await Future.wait(widget.files.map((file) => file.length())); + return lengths.fold(0, (p, length) => p + length).sizeString; + } + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + var sendStr = L10n.of(context).sendFile; + final uniqueFileType = widget.files + .map((file) => file.mimeType ?? lookupMimeType(file.name)) + .map((mimeType) => mimeType?.split('/').first) + .toSet() + .singleOrNull; + + final fileName = widget.files.length == 1 + ? widget.files.single.name + : L10n.of(context).countFiles(widget.files.length); + final fileTypes = widget.files + .map((file) => file.name.split('.').last) + .toSet() + .join(', ') + .toUpperCase(); + + if (uniqueFileType == 'image') { + if (widget.files.length == 1) { + sendStr = L10n.of(context).sendImage; + } else { + sendStr = L10n.of(context).sendImages(widget.files.length); + } + } else if (uniqueFileType == 'audio') { + sendStr = L10n.of(context).sendAudio; + } else if (uniqueFileType == 'video') { + sendStr = L10n.of(context).sendVideo; + } + + final compressionSupported = + uniqueFileType != 'video' || PlatformInfos.isMobile; + + return FutureBuilder( + future: _calcCombinedFileSize(), + builder: (context, snapshot) { + final sizeString = + snapshot.data ?? L10n.of(context).calculatingFileSize; + + return AlertDialog.adaptive( + title: Text(sendStr), + content: SizedBox( + width: 256, + child: SingleChildScrollView( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + const SizedBox(height: 12), + if (uniqueFileType == 'image') + Padding( + padding: const EdgeInsets.only(bottom: 16.0), + child: SizedBox( + height: 256, + child: Center( + child: ListView.builder( + shrinkWrap: true, + itemCount: widget.files.length, + scrollDirection: Axis.horizontal, + itemBuilder: (context, i) => Padding( + padding: const EdgeInsets.only(right: 8.0), + child: Material( + borderRadius: BorderRadius.circular( + AppConfig.borderRadius / 2, + ), + color: Colors.black, + clipBehavior: Clip.hardEdge, + child: FutureBuilder( + future: widget.files[i].readAsBytes(), + builder: (context, snapshot) { + final bytes = snapshot.data; + if (bytes == null) { + return const Center( + child: CircularProgressIndicator + .adaptive(), + ); + } + if (snapshot.error != null) { + Logs().w( + 'Unable to preview image', + snapshot.error, + snapshot.stackTrace, + ); + return const Center( + child: SizedBox( + width: 256, + height: 256, + child: Icon( + Icons.broken_image_outlined, + size: 64, + ), + ), + ); + } + return Image.memory( + bytes, + height: 256, + width: widget.files.length == 1 + ? 256 - 36 + : null, + fit: BoxFit.contain, + errorBuilder: (context, e, s) { + Logs() + .w('Unable to preview image', e, s); + return const Center( + child: SizedBox( + width: 256, + height: 256, + child: Icon( + Icons.broken_image_outlined, + size: 64, + ), + ), + ); + }, + ); + }, + ), + ), + ), + ), + ), + ), + ), + if (uniqueFileType != 'image') + Padding( + padding: const EdgeInsets.only(bottom: 16.0), + child: Row( + children: [ + Icon( + uniqueFileType == null + ? Icons.description_outlined + : uniqueFileType == 'video' + ? Icons.video_file_outlined + : uniqueFileType == 'audio' + ? Icons.audio_file_outlined + : Icons.description_outlined, + size: 32, + ), + const SizedBox(width: 8), + Expanded( + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + fileName, + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + Text( + '$sizeString - $fileTypes', + style: theme.textTheme.labelSmall, + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + ], + ), + ), + ], + ), + ), + if (widget.files.length == 1) + Padding( + padding: const EdgeInsets.only(bottom: 8.0), + child: DialogTextField( + controller: _labelTextController, + labelText: L10n.of(context).optionalMessage, + minLines: 1, + maxLines: 3, + maxLength: 255, + counterText: '', + ), + ), + // Workaround for SwitchListTile.adaptive crashes in CupertinoDialog + if ({'image', 'video'}.contains(uniqueFileType)) + Row( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + if ({TargetPlatform.iOS, TargetPlatform.macOS} + .contains(theme.platform)) + CupertinoSwitch( + value: compressionSupported && compress, + onChanged: compressionSupported + ? (v) => setState(() => compress = v) + : null, + ) + else + Switch.adaptive( + value: compressionSupported && compress, + onChanged: compressionSupported + ? (v) => setState(() => compress = v) + : null, + ), + const SizedBox(width: 16), + Expanded( + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + L10n.of(context).compress, + style: theme.textTheme.titleMedium, + textAlign: TextAlign.left, + ), + ], + ), + if (!compress) + Text( + ' ($sizeString)', + style: theme.textTheme.labelSmall, + ), + if (!compressionSupported) + Text( + L10n.of(context).notSupportedOnThisDevice, + style: theme.textTheme.labelSmall, + ), + ], + ), + ), + ], + ), + ], + ), + ), + ), + actions: [ + AdaptiveDialogAction( + onPressed: () => + Navigator.of(context, rootNavigator: false).pop(), + child: Text(L10n.of(context).cancel), + ), + AdaptiveDialogAction( + onPressed: _send, + child: Text(L10n.of(context).send), + ), + ], + ); + }, + ); + } +} + +extension on ScaffoldMessengerState { + ScaffoldFeatureController showLoadingSnackBar( + String title, + ) { + clearSnackBars(); + return showSnackBar( + SnackBar( + duration: const Duration(minutes: 5), + dismissDirection: DismissDirection.none, + content: Row( + children: [ + const SizedBox( + width: 16, + height: 16, + child: CircularProgressIndicator.adaptive( + strokeWidth: 2, + ), + ), + const SizedBox(width: 16), + Text(title), + ], + ), + ), + ); + } +} diff --git a/lib/pages/chat/send_location_dialog.dart b/lib/pages/chat/send_location_dialog.dart new file mode 100644 index 0000000..865b909 --- /dev/null +++ b/lib/pages/chat/send_location_dialog.dart @@ -0,0 +1,134 @@ +import 'dart:async'; + +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; + +import 'package:geolocator/geolocator.dart'; +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/chat/events/map_bubble.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/adaptive_dialog_action.dart'; +import 'package:fluffychat/widgets/future_loading_dialog.dart'; + +class SendLocationDialog extends StatefulWidget { + final Room room; + + const SendLocationDialog({ + required this.room, + super.key, + }); + + @override + SendLocationDialogState createState() => SendLocationDialogState(); +} + +class SendLocationDialogState extends State { + bool disabled = false; + bool denied = false; + bool isSending = false; + Position? position; + Object? error; + + @override + void initState() { + super.initState(); + requestLocation(); + } + + Future requestLocation() async { + if (!(await Geolocator.isLocationServiceEnabled())) { + setState(() => disabled = true); + return; + } + var permission = await Geolocator.checkPermission(); + if (permission == LocationPermission.denied) { + permission = await Geolocator.requestPermission(); + if (permission == LocationPermission.denied) { + setState(() => denied = true); + return; + } + } + if (permission == LocationPermission.deniedForever) { + setState(() => denied = true); + return; + } + try { + Position position; + try { + position = await Geolocator.getCurrentPosition( + locationSettings: const LocationSettings( + accuracy: LocationAccuracy.best, + timeLimit: Duration(seconds: 30), + ), + ); + } on TimeoutException { + position = await Geolocator.getCurrentPosition( + locationSettings: const LocationSettings( + accuracy: LocationAccuracy.medium, + timeLimit: Duration(seconds: 30), + ), + ); + } + setState(() => this.position = position); + } catch (e) { + setState(() => error = e); + } + } + + void sendAction() async { + setState(() => isSending = true); + final body = + 'https://www.openstreetmap.org/?mlat=${position!.latitude}&mlon=${position!.longitude}#map=16/${position!.latitude}/${position!.longitude}'; + final uri = + 'geo:${position!.latitude},${position!.longitude};u=${position!.accuracy}'; + await showFutureLoadingDialog( + context: context, + future: () => widget.room.sendLocation(body, uri), + ); + Navigator.of(context, rootNavigator: false).pop(); + } + + @override + Widget build(BuildContext context) { + Widget contentWidget; + if (position != null) { + contentWidget = MapBubble( + latitude: position!.latitude, + longitude: position!.longitude, + ); + } else if (disabled) { + contentWidget = Text(L10n.of(context).locationDisabledNotice); + } else if (denied) { + contentWidget = Text(L10n.of(context).locationPermissionDeniedNotice); + } else if (error != null) { + contentWidget = + Text(L10n.of(context).errorObtainingLocation(error.toString())); + } else { + contentWidget = Row( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const CupertinoActivityIndicator(), + const SizedBox(width: 12), + Text(L10n.of(context).obtainingLocation), + ], + ); + } + return AlertDialog.adaptive( + title: Text(L10n.of(context).shareLocation), + content: contentWidget, + actions: [ + AdaptiveDialogAction( + onPressed: Navigator.of(context, rootNavigator: false).pop, + child: Text(L10n.of(context).cancel), + ), + if (position != null) + AdaptiveDialogAction( + onPressed: isSending ? null : sendAction, + child: Text(L10n.of(context).send), + ), + ], + ); + } +} diff --git a/lib/pages/chat/start_poll_bottom_sheet.dart b/lib/pages/chat/start_poll_bottom_sheet.dart new file mode 100644 index 0000000..9c16c13 --- /dev/null +++ b/lib/pages/chat/start_poll_bottom_sheet.dart @@ -0,0 +1,171 @@ +import 'package:flutter/material.dart'; + +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/localized_exception_extension.dart'; + +class StartPollBottomSheet extends StatefulWidget { + final Room room; + const StartPollBottomSheet({required this.room, super.key}); + + @override + State createState() => _StartPollBottomSheetState(); +} + +class _StartPollBottomSheetState extends State { + final TextEditingController _bodyController = TextEditingController(); + bool _allowMultipleAnswers = false; + final List _answers = [ + TextEditingController(), + TextEditingController(), + ]; + PollKind _pollKind = PollKind.disclosed; + + bool _canCreate = false; + + bool isLoading = false; + + String? _txid; + + void _createPoll() async { + try { + var id = 0; + _txid ??= widget.room.client.generateUniqueTransactionId(); + await widget.room.startPoll( + question: _bodyController.text.trim(), + answers: _answers + .map( + (answerController) => PollAnswer( + id: (++id).toString(), + mText: answerController.text.trim(), + ), + ) + .toList(), + kind: _pollKind, + maxSelections: _allowMultipleAnswers ? _answers.length : 1, + txid: _txid, + ); + Navigator.of(context).pop(); + } catch (e, s) { + Logs().w('Unable to create poll', e, s); + if (!mounted) return; + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text(e.toLocalizedString(context))), + ); + } + } + + void _updateCanCreate([_]) { + final newCanCreate = _bodyController.text.trim().isNotEmpty && + !_answers.any((controller) => controller.text.trim().isEmpty); + if (_canCreate != newCanCreate) { + setState(() { + _canCreate = newCanCreate; + }); + } + } + + @override + Widget build(BuildContext context) { + const maxAnswers = 10; + return Scaffold( + appBar: AppBar( + leading: CloseButton( + onPressed: Navigator.of(context).pop, + ), + title: Text(L10n.of(context).startPoll), + ), + body: ListView( + padding: const EdgeInsets.symmetric(horizontal: 32, vertical: 16), + children: [ + SegmentedButton( + selected: {_pollKind}, + multiSelectionEnabled: false, + onSelectionChanged: (pollKind) => setState(() { + _pollKind = pollKind.first; + }), + segments: [ + ButtonSegment( + value: PollKind.disclosed, + label: Text( + L10n.of(context).answersVisible, + ), + ), + ButtonSegment( + value: PollKind.undisclosed, + label: Text( + L10n.of(context).answersHidden, + ), + ), + ], + ), + const SizedBox(height: 32), + TextField( + controller: _bodyController, + minLines: 1, + maxLines: 4, + maxLength: 512, + onChanged: _updateCanCreate, + decoration: InputDecoration( + hintText: L10n.of(context).pollQuestion, + counter: const SizedBox.shrink(), + ), + ), + const Divider(height: 32), + ..._answers.map( + (answerController) => Padding( + padding: const EdgeInsets.only(bottom: 16.0), + child: TextField( + controller: answerController, + onChanged: _updateCanCreate, + maxLength: 64, + decoration: InputDecoration( + counter: const SizedBox.shrink(), + hintText: L10n.of(context).answerOption, + suffixIcon: _answers.length == 2 + ? null + : IconButton( + icon: const Icon(Icons.cancel_outlined), + onPressed: () => setState(() { + _answers.remove(answerController..dispose()); + }), + ), + ), + ), + ), + ), + Align( + alignment: Alignment.centerLeft, + child: TextButton.icon( + icon: const Icon(Icons.add_outlined), + onPressed: _answers.length < maxAnswers + ? () => setState(() { + _answers.add(TextEditingController()); + }) + : null, + label: Text(L10n.of(context).addAnswerOption), + ), + ), + ListTile( + contentPadding: EdgeInsets.zero, + leading: Switch.adaptive( + value: _allowMultipleAnswers, + onChanged: (allow) => setState(() { + _allowMultipleAnswers = allow; + }), + ), + title: Text(L10n.of(context).allowMultipleAnswers), + ), + const SizedBox(height: 8), + ElevatedButton( + onPressed: !isLoading && _canCreate ? _createPoll : null, + child: isLoading + ? const LinearProgressIndicator() + : Text(L10n.of(context).startPoll), + ), + ], + ), + ); + } +} diff --git a/lib/pages/chat/sticker_picker_dialog.dart b/lib/pages/chat/sticker_picker_dialog.dart new file mode 100644 index 0000000..090be36 --- /dev/null +++ b/lib/pages/chat/sticker_picker_dialog.dart @@ -0,0 +1,166 @@ +import 'package:flutter/material.dart'; + +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/url_launcher.dart'; +import 'package:fluffychat/widgets/mxc_image.dart'; +import '../../widgets/avatar.dart'; + +class StickerPickerDialog extends StatefulWidget { + final Room room; + final void Function(ImagePackImageContent) onSelected; + + const StickerPickerDialog({ + required this.onSelected, + required this.room, + super.key, + }); + + @override + StickerPickerDialogState createState() => StickerPickerDialogState(); +} + +class StickerPickerDialogState extends State { + String? searchFilter; + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + final stickerPacks = widget.room.getImagePacks(ImagePackUsage.sticker); + final packSlugs = stickerPacks.keys.toList(); + + // ignore: prefer_function_declarations_over_variables + final packBuilder = (BuildContext context, int packIndex) { + final pack = stickerPacks[packSlugs[packIndex]]!; + final filteredImagePackImageEntried = pack.images.entries.toList(); + if (searchFilter?.isNotEmpty ?? false) { + filteredImagePackImageEntried.removeWhere( + (e) => !(e.key.toLowerCase().contains(searchFilter!.toLowerCase()) || + (e.value.body + ?.toLowerCase() + .contains(searchFilter!.toLowerCase()) ?? + false)), + ); + } + final imageKeys = + filteredImagePackImageEntried.map((e) => e.key).toList(); + if (imageKeys.isEmpty) { + return const SizedBox.shrink(); + } + final packName = pack.pack.displayName ?? packSlugs[packIndex]; + return Column( + children: [ + if (packIndex != 0) const SizedBox(height: 20), + if (packName != 'user') + ListTile( + leading: Avatar( + mxContent: pack.pack.avatarUrl, + name: packName, + client: widget.room.client, + ), + title: Text(packName), + ), + const SizedBox(height: 6), + GridView.builder( + itemCount: imageKeys.length, + gridDelegate: const SliverGridDelegateWithMaxCrossAxisExtent( + maxCrossAxisExtent: 128, + ), + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + itemBuilder: (BuildContext context, int imageIndex) { + final image = pack.images[imageKeys[imageIndex]]!; + return Tooltip( + message: image.body ?? imageKeys[imageIndex], + child: InkWell( + radius: AppConfig.borderRadius, + key: ValueKey(image.url.toString()), + onTap: () { + // copy the image + final imageCopy = + ImagePackImageContent.fromJson(image.toJson().copy()); + // set the body, if it doesn't exist, to the key + imageCopy.body ??= imageKeys[imageIndex]; + widget.onSelected(imageCopy); + }, + child: AbsorbPointer( + absorbing: true, + child: MxcImage( + uri: image.url, + fit: BoxFit.contain, + width: 128, + height: 128, + animated: true, + isThumbnail: false, + ), + ), + ), + ); + }, + ), + ], + ); + }; + + return Scaffold( + backgroundColor: theme.colorScheme.onInverseSurface, + body: SizedBox( + width: double.maxFinite, + child: CustomScrollView( + slivers: [ + SliverAppBar( + floating: true, + pinned: true, + scrolledUnderElevation: 0, + automaticallyImplyLeading: false, + backgroundColor: Colors.transparent, + title: SizedBox( + height: 42, + child: TextField( + autofocus: false, + decoration: InputDecoration( + filled: true, + hintText: L10n.of(context).search, + prefixIcon: const Icon(Icons.search_outlined), + contentPadding: EdgeInsets.zero, + ), + onChanged: (s) => setState(() => searchFilter = s), + ), + ), + ), + if (packSlugs.isEmpty) + SliverFillRemaining( + child: Center( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Text(L10n.of(context).noEmotesFound), + const SizedBox(height: 12), + OutlinedButton.icon( + onPressed: () => UrlLauncher( + context, + 'https://matrix.to/#/#fluffychat-stickers:janian.de', + ).launchUrl(), + icon: const Icon(Icons.explore_outlined), + label: Text(L10n.of(context).discover), + ), + ], + ), + ), + ) + else + SliverList( + delegate: SliverChildBuilderDelegate( + packBuilder, + childCount: packSlugs.length, + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/pages/chat/typing_indicators.dart b/lib/pages/chat/typing_indicators.dart new file mode 100644 index 0000000..8d3fa8d --- /dev/null +++ b/lib/pages/chat/typing_indicators.dart @@ -0,0 +1,164 @@ +import 'dart:async'; + +import 'package:flutter/material.dart'; + +import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/config/themes.dart'; +import 'package:fluffychat/pages/chat/chat.dart'; +import 'package:fluffychat/widgets/avatar.dart'; +import 'package:fluffychat/widgets/matrix.dart'; + +class TypingIndicators extends StatelessWidget { + final ChatController controller; + const TypingIndicators(this.controller, {super.key}); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + const avatarSize = Avatar.defaultSize / 2; + + return StreamBuilder( + stream: controller.room.client.onSync.stream.where( + (syncUpdate) => + syncUpdate.rooms?.join?[controller.room.id]?.ephemeral + ?.any((ephemeral) => ephemeral.type == 'm.typing') ?? + false, + ), + builder: (context, _) { + final typingUsers = controller.room.typingUsers + ..removeWhere((u) => u.stateKey == Matrix.of(context).client.userID); + + return Container( + width: double.infinity, + alignment: Alignment.center, + child: AnimatedContainer( + constraints: + const BoxConstraints(maxWidth: FluffyThemes.maxTimelineWidth), + height: typingUsers.isEmpty ? 0 : avatarSize + 8, + duration: FluffyThemes.animationDuration, + curve: FluffyThemes.animationCurve, + alignment: controller.timeline!.events.isNotEmpty && + controller.timeline!.events.first.senderId == + Matrix.of(context).client.userID + ? Alignment.topRight + : Alignment.topLeft, + clipBehavior: Clip.hardEdge, + decoration: const BoxDecoration(), + padding: const EdgeInsets.symmetric( + horizontal: 8.0, + vertical: 4.0, + ), + child: Row( + children: [ + Container( + alignment: Alignment.center, + height: avatarSize, + width: Avatar.defaultSize, + child: Stack( + children: [ + if (typingUsers.isNotEmpty) + Avatar( + size: avatarSize, + mxContent: typingUsers.first.avatarUrl, + name: typingUsers.first.calcDisplayname(), + ), + if (typingUsers.length == 2) + Padding( + padding: const EdgeInsets.only(left: 16), + child: Avatar( + size: avatarSize, + mxContent: typingUsers.length == 2 + ? typingUsers.last.avatarUrl + : null, + name: typingUsers.length == 2 + ? typingUsers.last.calcDisplayname() + : '+${typingUsers.length - 1}', + ), + ), + ], + ), + ), + const SizedBox(width: 8), + Material( + color: theme.colorScheme.surfaceContainerHigh, + borderRadius: const BorderRadius.all( + Radius.circular(AppConfig.borderRadius), + ), + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 8), + child: typingUsers.isEmpty ? null : const _TypingDots(), + ), + ), + ], + ), + ), + ); + }, + ); + } +} + +class _TypingDots extends StatefulWidget { + const _TypingDots(); + + @override + State<_TypingDots> createState() => __TypingDotsState(); +} + +class __TypingDotsState extends State<_TypingDots> { + int _tick = 0; + + late final Timer _timer; + + static const Duration animationDuration = Duration(milliseconds: 300); + + @override + void initState() { + _timer = Timer.periodic( + animationDuration, + (_) { + if (!mounted) { + return; + } + setState(() { + _tick = (_tick + 1) % 4; + }); + }, + ); + super.initState(); + } + + @override + void dispose() { + _timer.cancel(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + const size = 8.0; + + return Row( + mainAxisSize: MainAxisSize.min, + children: [ + for (var i = 1; i <= 3; i++) + AnimatedContainer( + duration: animationDuration * 1.5, + curve: FluffyThemes.animationCurve, + width: size, + height: _tick == i ? size * 2 : size, + margin: EdgeInsets.symmetric( + horizontal: 2, + vertical: _tick == i ? 4 : 8, + ), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(size * 2), + color: theme.colorScheme.secondary, + ), + ), + ], + ); + } +} diff --git a/lib/pages/chat_access_settings/chat_access_settings_controller.dart b/lib/pages/chat_access_settings/chat_access_settings_controller.dart new file mode 100644 index 0000000..5a7f8d9 --- /dev/null +++ b/lib/pages/chat_access_settings/chat_access_settings_controller.dart @@ -0,0 +1,359 @@ +import 'package:flutter/material.dart' hide Visibility; + +import 'package:go_router/go_router.dart'; +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/chat_access_settings/chat_access_settings_page.dart'; +import 'package:fluffychat/utils/localized_exception_extension.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_modal_action_popup.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_ok_cancel_alert_dialog.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_text_input_dialog.dart'; +import 'package:fluffychat/widgets/future_loading_dialog.dart'; +import 'package:fluffychat/widgets/matrix.dart'; + +class ChatAccessSettings extends StatefulWidget { + final String roomId; + const ChatAccessSettings({required this.roomId, super.key}); + + @override + State createState() => ChatAccessSettingsController(); +} + +class ChatAccessSettingsController extends State { + bool joinRulesLoading = false; + bool visibilityLoading = false; + bool historyVisibilityLoading = false; + bool guestAccessLoading = false; + Room get room => Matrix.of(context).client.getRoomById(widget.roomId)!; + Set get knownSpaceParents => { + ...room.client.rooms.where( + (space) => + space.isSpace && + space.spaceChildren.any((child) => child.roomId == room.id), + ), + ...room.spaceParents + .map((parent) => room.client.getRoomById(parent.roomId ?? '')) + .whereType(), + }; + + 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); + } + + // Restricted is only supported for rooms up from version 8: + if (roomVersionInt != null && roomVersionInt <= 7) { + joinRules.remove(JoinRules.restricted); + } + + // Knock-Restricted is only supported for rooms up from version 10: + if (roomVersionInt != null && roomVersionInt <= 9) { + joinRules.remove(JoinRules.knockRestricted); + } + + if (knownSpaceParents.isEmpty) { + 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(() { + joinRulesLoading = true; + }); + + try { + await room.setJoinRules( + newJoinRules, + allowConditionRoomIds: {JoinRules.restricted, JoinRules.knockRestricted} + .contains(newJoinRules) + ? knownSpaceParents.map((parent) => parent.id).toList() + : null, + ); + } catch (e, s) { + Logs().w('Unable to change join rules', e, s); + if (mounted) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text( + e.toLocalizedString(context), + ), + ), + ); + } + } finally { + if (mounted) { + setState(() { + joinRulesLoading = false; + }); + } + } + } + + void setHistoryVisibility(HistoryVisibility? historyVisibility) async { + if (historyVisibility == null) return; + setState(() { + historyVisibilityLoading = true; + }); + + try { + await room.setHistoryVisibility(historyVisibility); + } catch (e, s) { + Logs().w('Unable to change history visibility', e, s); + if (mounted) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text( + e.toLocalizedString(context), + ), + ), + ); + } + } finally { + if (mounted) { + setState(() { + historyVisibilityLoading = false; + }); + } + } + } + + void setGuestAccess(GuestAccess? guestAccess) async { + if (guestAccess == null) return; + setState(() { + guestAccessLoading = true; + }); + + try { + await room.setGuestAccess(guestAccess); + } catch (e, s) { + Logs().w('Unable to change guest access', e, s); + if (mounted) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text( + e.toLocalizedString(context), + ), + ), + ); + } + } finally { + if (mounted) { + setState(() { + guestAccessLoading = false; + }); + } + } + } + + void updateRoomAction() async { + final roomVersion = room + .getState(EventTypes.RoomCreate)! + .content + .tryGet('room_version'); + final capabilitiesResult = await showFutureLoadingDialog( + context: context, + future: () => room.client.getCapabilities(), + ); + final capabilities = capabilitiesResult.result; + if (capabilities == null) return; + final newVersion = await showModalActionPopup( + context: context, + title: L10n.of(context).replaceRoomWithNewerVersion, + cancelLabel: L10n.of(context).cancel, + actions: capabilities.mRoomVersions!.available.entries + .where((r) => r.key != roomVersion) + .map( + (version) => AdaptiveModalAction( + value: version.key, + label: + '${version.key} (${version.value.toString().split('.').last})', + ), + ) + .toList(), + ); + if (newVersion == null || + OkCancelResult.cancel == + await showOkCancelAlertDialog( + context: context, + okLabel: L10n.of(context).yes, + cancelLabel: L10n.of(context).cancel, + title: L10n.of(context).areYouSure, + message: L10n.of(context).roomUpgradeDescription, + isDestructive: true, + )) { + return; + } + final result = await showFutureLoadingDialog( + context: context, + futureWithProgress: (onProgress) async { + final newRoomId = await room.client.upgradeRoom(room.id, newVersion); + var newRoom = room.client.getRoomById(newRoomId); + while (newRoom == null) { + await room.client.onSync.stream.first; + newRoom = room.client.getRoomById(newRoomId); + } + + if ({JoinRules.invite, JoinRules.knock, JoinRules.knockRestricted} + .contains(room.joinRules)) { + final users = await room.requestParticipants([ + Membership.join, + Membership.invite, + ]); + users.removeWhere((user) => user.id == room.client.userID); + for (final (i, user) in users.indexed) { + try { + Logs().v('Inviting...', user.id); + await newRoom.invite(user.id); + onProgress(i / users.length); + } on MatrixException catch (e) { + final retryAfterMs = e.retryAfterMs; + if (e.error != MatrixError.M_LIMIT_EXCEEDED || + retryAfterMs == null) { + rethrow; + } + Logs().d('Limit exceeded. Retry after $retryAfterMs'); + await Future.delayed(Duration(milliseconds: retryAfterMs)); + await newRoom.invite(user.id); + onProgress(i / users.length); + } + } + } + }, + ); + if (result.error != null) return; + if (!mounted) return; + context.go('/rooms/${room.id}'); + } + + Future addAlias() async { + final domain = room.client.userID?.domain; + if (domain == null) { + throw Exception('userID or domain is null! This should never happen.'); + } + + final input = await showTextInputDialog( + context: context, + title: L10n.of(context).editRoomAliases, + prefixText: '#', + suffixText: domain, + hintText: L10n.of(context).alias, + ); + final aliasLocalpart = input?.trim(); + if (aliasLocalpart == null || aliasLocalpart.isEmpty) return; + final alias = '#$aliasLocalpart:$domain'; + + final result = await showFutureLoadingDialog( + context: context, + future: () => room.client.setRoomAlias(alias, room.id), + ); + if (result.error != null) return; + setState(() {}); + + if (!room.canChangeStateEvent(EventTypes.RoomCanonicalAlias)) return; + + final canonicalAliasConsent = await showOkCancelAlertDialog( + context: context, + title: L10n.of(context).setAsCanonicalAlias, + message: alias, + okLabel: L10n.of(context).yes, + cancelLabel: L10n.of(context).no, + ); + + final altAliases = room + .getState(EventTypes.RoomCanonicalAlias) + ?.content + .tryGetList('alt_aliases') + ?.toSet() ?? + {}; + if (room.canonicalAlias.isNotEmpty) altAliases.add(room.canonicalAlias); + altAliases.add(alias); + if (canonicalAliasConsent == OkCancelResult.ok) { + altAliases.remove(alias); + } else { + altAliases.remove(room.canonicalAlias); + } + + await showFutureLoadingDialog( + context: context, + future: () => room.client.setRoomStateWithKey( + room.id, + EventTypes.RoomCanonicalAlias, + '', + { + 'alias': canonicalAliasConsent == OkCancelResult.ok + ? alias + : room.canonicalAlias, + if (altAliases.isNotEmpty) 'alt_aliases': altAliases.toList(), + }, + ), + ); + } + + void deleteAlias(String alias) async { + await showFutureLoadingDialog( + context: context, + future: () => room.client.deleteRoomAlias(alias), + ); + setState(() {}); + } + + void setChatVisibilityOnDirectory(bool? visibility) async { + if (visibility == null) return; + setState(() { + visibilityLoading = true; + }); + + try { + await room.client.setRoomVisibilityOnDirectory( + room.id, + visibility: visibility == true ? Visibility.public : Visibility.private, + ); + setState(() {}); + } catch (e, s) { + Logs().w('Unable to change visibility', e, s); + if (mounted) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text( + e.toLocalizedString(context), + ), + ), + ); + } + } finally { + if (mounted) { + setState(() { + visibilityLoading = false; + }); + } + } + } + + @override + Widget build(BuildContext context) { + return ChatAccessSettingsPageView(this); + } +} diff --git a/lib/pages/chat_access_settings/chat_access_settings_page.dart b/lib/pages/chat_access_settings/chat_access_settings_page.dart new file mode 100644 index 0000000..616d139 --- /dev/null +++ b/lib/pages/chat_access_settings/chat_access_settings_page.dart @@ -0,0 +1,310 @@ +import 'package:flutter/material.dart' hide Visibility; + +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/chat_access_settings/chat_access_settings_controller.dart'; +import 'package:fluffychat/utils/fluffy_share.dart'; +import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; +import 'package:fluffychat/widgets/layouts/max_width_body.dart'; + +class ChatAccessSettingsPageView extends StatelessWidget { + final ChatAccessSettingsController controller; + const ChatAccessSettingsPageView(this.controller, {super.key}); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + final room = controller.room; + return Scaffold( + appBar: AppBar( + leading: const Center(child: BackButton()), + title: Text(L10n.of(context).accessAndVisibility), + ), + body: MaxWidthBody( + child: StreamBuilder( + stream: room.client.onRoomState.stream + .where((update) => update.roomId == controller.room.id), + builder: (context, snapshot) { + final canonicalAlias = room.canonicalAlias; + final altAliases = room + .getState(EventTypes.RoomCanonicalAlias) + ?.content + .tryGetList('alt_aliases') ?? + []; + return Column( + mainAxisSize: MainAxisSize.min, + children: [ + ListTile( + title: Text( + L10n.of(context).visibilityOfTheChatHistory, + style: TextStyle( + color: theme.colorScheme.secondary, + fontWeight: FontWeight.bold, + ), + ), + ), + RadioGroup( + groupValue: room.historyVisibility, + onChanged: controller.historyVisibilityLoading || + !room.canChangeHistoryVisibility + ? (_) {} + : controller.setHistoryVisibility, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + for (final historyVisibility in HistoryVisibility.values) + RadioListTile.adaptive( + title: Text( + historyVisibility.getLocalizedString( + MatrixLocals(L10n.of(context)), + ), + ), + value: historyVisibility, + ), + ], + ), + ), + Divider(color: theme.dividerColor), + ListTile( + title: Text( + L10n.of(context).whoIsAllowedToJoinThisGroup, + style: TextStyle( + color: theme.colorScheme.secondary, + fontWeight: FontWeight.bold, + ), + ), + ), + RadioGroup( + groupValue: room.joinRules, + onChanged: controller.setJoinRule, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + for (final joinRule in controller.availableJoinRules) + if (joinRule != JoinRules.private) + RadioListTile.adaptive( + enabled: !controller.joinRulesLoading && + room.canChangeJoinRules, + title: Text( + joinRule.localizedString( + L10n.of(context), + controller.knownSpaceParents, + ), + ), + value: joinRule, + ), + ], + ), + ), + Divider(color: theme.dividerColor), + if ({JoinRules.public, JoinRules.knock} + .contains(room.joinRules)) ...[ + ListTile( + title: Text( + L10n.of(context).areGuestsAllowedToJoin, + style: TextStyle( + color: theme.colorScheme.secondary, + fontWeight: FontWeight.bold, + ), + ), + ), + RadioGroup( + groupValue: room.guestAccess, + onChanged: controller.setGuestAccess, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + for (final guestAccess in GuestAccess.values) + RadioListTile.adaptive( + enabled: !controller.guestAccessLoading && + room.canChangeGuestAccess, + title: Text( + guestAccess.getLocalizedString( + MatrixLocals(L10n.of(context)), + ), + ), + value: guestAccess, + ), + ], + ), + ), + Divider(color: theme.dividerColor), + ListTile( + title: Text( + L10n.of(context).publicChatAddresses, + style: TextStyle( + color: theme.colorScheme.secondary, + fontWeight: FontWeight.bold, + ), + ), + trailing: IconButton( + icon: const Icon(Icons.add_outlined), + tooltip: L10n.of(context).createNewAddress, + onPressed: controller.addAlias, + ), + ), + if (canonicalAlias.isNotEmpty) + _AliasListTile( + alias: canonicalAlias, + onDelete: room.canChangeStateEvent( + EventTypes.RoomCanonicalAlias, + ) + ? () => controller.deleteAlias(canonicalAlias) + : null, + isCanonicalAlias: true, + ), + for (final alias in altAliases) + _AliasListTile( + alias: alias, + onDelete: room.canChangeStateEvent( + EventTypes.RoomCanonicalAlias, + ) + ? () => controller.deleteAlias(alias) + : null, + ), + FutureBuilder( + future: room.client.getLocalAliases(room.id), + builder: (context, snapshot) { + final localAddresses = snapshot.data; + if (localAddresses == null) { + return const SizedBox.shrink(); + } + localAddresses.remove(room.canonicalAlias); + localAddresses + .removeWhere((alias) => altAliases.contains(alias)); + return Column( + mainAxisSize: MainAxisSize.min, + children: localAddresses + .map( + (alias) => _AliasListTile( + alias: alias, + published: false, + onDelete: () => controller.deleteAlias(alias), + ), + ) + .toList(), + ); + }, + ), + Divider(color: theme.dividerColor), + FutureBuilder( + future: room.client.getRoomVisibilityOnDirectory(room.id), + builder: (context, snapshot) => SwitchListTile.adaptive( + value: snapshot.data == Visibility.public, + title: Text( + L10n.of(context).chatCanBeDiscoveredViaSearchOnServer( + room.client.userID!.domain!, + ), + ), + onChanged: controller.setChatVisibilityOnDirectory, + ), + ), + ], + ListTile( + title: Text(L10n.of(context).globalChatId), + subtitle: SelectableText(room.id), + trailing: IconButton( + icon: const Icon(Icons.copy_outlined), + onPressed: () => FluffyShare.share(room.id, context), + ), + ), + ListTile( + title: Text(L10n.of(context).roomVersion), + subtitle: SelectableText( + room + .getState(EventTypes.RoomCreate)! + .content + .tryGet('room_version') ?? + 'Unknown', + ), + trailing: room.canSendEvent(EventTypes.RoomTombstone) + ? IconButton( + icon: const Icon(Icons.upgrade_outlined), + onPressed: controller.updateRoomAction, + ) + : null, + ), + ], + ); + }, + ), + ), + ); + } +} + +class _AliasListTile extends StatelessWidget { + const _AliasListTile({ + required this.alias, + required this.onDelete, + this.isCanonicalAlias = false, + this.published = true, + }); + + final String alias; + final void Function()? onDelete; + final bool isCanonicalAlias; + final bool published; + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + return ListTile( + leading: isCanonicalAlias + ? const Icon(Icons.star) + : const Icon(Icons.link_outlined), + title: InkWell( + onTap: () => FluffyShare.share( + 'https://matrix.to/#/$alias', + context, + ), + child: SelectableText( + alias, + style: TextStyle( + decoration: TextDecoration.underline, + decorationColor: theme.colorScheme.primary, + color: theme.colorScheme.primary, + fontSize: 14, + ), + ), + ), + trailing: onDelete != null + ? IconButton( + color: theme.colorScheme.error, + icon: const Icon(Icons.delete_outlined), + onPressed: onDelete, + ) + : null, + ); + } +} + +extension JoinRulesDisplayString on JoinRules { + String localizedString(L10n l10n, Set spaceParents) { + switch (this) { + case JoinRules.public: + return l10n.anyoneCanJoin; + case JoinRules.invite: + return l10n.invitedUsersOnly; + case JoinRules.knock: + return l10n.usersMustKnock; + case JoinRules.private: + return l10n.noOneCanJoin; + case JoinRules.restricted: + return l10n.spaceMemberOf( + spaceParents + .map((space) => space.getLocalizedDisplayname(MatrixLocals(l10n))) + .join(', '), + ); + case JoinRules.knockRestricted: + return l10n.spaceMemberOfCanKnock( + spaceParents + .map((space) => space.getLocalizedDisplayname(MatrixLocals(l10n))) + .join(', '), + ); + } + } +} diff --git a/lib/pages/chat_details/chat_details.dart b/lib/pages/chat_details/chat_details.dart new file mode 100644 index 0000000..0952b07 --- /dev/null +++ b/lib/pages/chat_details/chat_details.dart @@ -0,0 +1,168 @@ +import 'package:flutter/material.dart'; + +import 'package:collection/collection.dart'; +import 'package:image_picker/image_picker.dart'; +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/chat_details/chat_details_view.dart'; +import 'package:fluffychat/pages/settings/settings.dart'; +import 'package:fluffychat/utils/file_selector.dart'; +import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; +import 'package:fluffychat/utils/platform_infos.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_modal_action_popup.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_text_input_dialog.dart'; +import 'package:fluffychat/widgets/future_loading_dialog.dart'; +import 'package:fluffychat/widgets/matrix.dart'; + +enum AliasActions { copy, delete, setCanonical } + +class ChatDetails extends StatefulWidget { + final String roomId; + final Widget? embeddedCloseButton; + + const ChatDetails({ + super.key, + required this.roomId, + this.embeddedCloseButton, + }); + + @override + ChatDetailsController createState() => ChatDetailsController(); +} + +class ChatDetailsController extends State { + bool displaySettings = false; + + void toggleDisplaySettings() => + setState(() => displaySettings = !displaySettings); + + String? get roomId => widget.roomId; + + void setDisplaynameAction() async { + final room = Matrix.of(context).client.getRoomById(roomId!)!; + final input = await showTextInputDialog( + context: context, + title: L10n.of(context).changeTheNameOfTheGroup, + okLabel: L10n.of(context).ok, + cancelLabel: L10n.of(context).cancel, + initialText: room.getLocalizedDisplayname( + MatrixLocals( + L10n.of(context), + ), + ), + ); + if (input == null) return; + final success = await showFutureLoadingDialog( + context: context, + future: () => room.setName(input), + ); + if (success.error == null) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text(L10n.of(context).displaynameHasBeenChanged)), + ); + } + } + + void setTopicAction() async { + final room = Matrix.of(context).client.getRoomById(roomId!)!; + final input = await showTextInputDialog( + context: context, + title: L10n.of(context).setChatDescription, + okLabel: L10n.of(context).ok, + cancelLabel: L10n.of(context).cancel, + hintText: L10n.of(context).noChatDescriptionYet, + initialText: room.topic, + minLines: 4, + maxLines: 8, + ); + if (input == null) return; + final success = await showFutureLoadingDialog( + context: context, + future: () => room.setDescription(input), + ); + if (success.error == null) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text(L10n.of(context).chatDescriptionHasBeenChanged), + ), + ); + } + } + + void setAvatarAction() async { + final room = Matrix.of(context).client.getRoomById(roomId!); + final actions = [ + if (PlatformInfos.isMobile) + AdaptiveModalAction( + value: AvatarAction.camera, + label: L10n.of(context).openCamera, + isDefaultAction: true, + icon: const Icon(Icons.camera_alt_outlined), + ), + AdaptiveModalAction( + value: AvatarAction.file, + label: L10n.of(context).openGallery, + icon: const Icon(Icons.photo_outlined), + ), + if (room?.avatar != null) + AdaptiveModalAction( + value: AvatarAction.remove, + label: L10n.of(context).delete, + isDestructive: true, + icon: const Icon(Icons.delete_outlined), + ), + ]; + final action = actions.length == 1 + ? actions.single.value + : await showModalActionPopup( + context: context, + title: L10n.of(context).editRoomAvatar, + cancelLabel: L10n.of(context).cancel, + actions: actions, + ); + if (action == null) return; + if (action == AvatarAction.remove) { + await showFutureLoadingDialog( + context: context, + future: () => room!.setAvatar(null), + ); + return; + } + MatrixFile file; + if (PlatformInfos.isMobile) { + final result = await ImagePicker().pickImage( + source: action == AvatarAction.camera + ? ImageSource.camera + : ImageSource.gallery, + imageQuality: 50, + ); + if (result == null) return; + file = MatrixFile( + bytes: await result.readAsBytes(), + name: result.path, + ); + } else { + final picked = await selectFiles( + context, + allowMultiple: false, + type: FileSelectorType.images, + ); + final pickedFile = picked.firstOrNull; + if (pickedFile == null) return; + file = MatrixFile( + bytes: await pickedFile.readAsBytes(), + name: pickedFile.name, + ); + } + await showFutureLoadingDialog( + context: context, + future: () => room!.setAvatar(file), + ); + } + + static const fixedWidth = 360.0; + + @override + Widget build(BuildContext context) => ChatDetailsView(this); +} diff --git a/lib/pages/chat_details/chat_details_view.dart b/lib/pages/chat_details/chat_details_view.dart new file mode 100644 index 0000000..69c4498 --- /dev/null +++ b/lib/pages/chat_details/chat_details_view.dart @@ -0,0 +1,354 @@ +import 'package:flutter/material.dart'; + +import 'package:flutter_linkify/flutter_linkify.dart'; +import 'package:go_router/go_router.dart'; +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/chat_details/chat_details.dart'; +import 'package:fluffychat/pages/chat_details/participant_list_item.dart'; +import 'package:fluffychat/utils/fluffy_share.dart'; +import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; +import 'package:fluffychat/widgets/avatar.dart'; +import 'package:fluffychat/widgets/chat_settings_popup_menu.dart'; +import 'package:fluffychat/widgets/layouts/max_width_body.dart'; +import 'package:fluffychat/widgets/matrix.dart'; +import '../../utils/url_launcher.dart'; +import '../../widgets/mxc_image_viewer.dart'; +import '../../widgets/qr_code_viewer.dart'; + +class ChatDetailsView extends StatelessWidget { + final ChatDetailsController controller; + + const ChatDetailsView(this.controller, {super.key}); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + final room = Matrix.of(context).client.getRoomById(controller.roomId!); + if (room == null) { + return Scaffold( + appBar: AppBar( + title: Text(L10n.of(context).oopsSomethingWentWrong), + ), + body: Center( + child: Text(L10n.of(context).youAreNoLongerParticipatingInThisChat), + ), + ); + } + + final directChatMatrixID = room.directChatMatrixID; + final roomAvatar = room.avatar; + + return StreamBuilder( + stream: room.client.onRoomState.stream + .where((update) => update.roomId == room.id), + builder: (context, snapshot) { + var members = room.getParticipants().toList() + ..sort((b, a) => a.powerLevel.compareTo(b.powerLevel)); + members = members.take(10).toList(); + final actualMembersCount = (room.summary.mInvitedMemberCount ?? 0) + + (room.summary.mJoinedMemberCount ?? 0); + final canRequestMoreMembers = members.length < actualMembersCount; + final iconColor = theme.textTheme.bodyLarge!.color; + final displayname = room.getLocalizedDisplayname( + MatrixLocals(L10n.of(context)), + ); + return Scaffold( + appBar: AppBar( + leading: controller.widget.embeddedCloseButton ?? + const Center(child: BackButton()), + elevation: theme.appBarTheme.elevation, + actions: [ + if (room.canonicalAlias.isNotEmpty) + IconButton( + tooltip: L10n.of(context).share, + icon: const Icon(Icons.qr_code_rounded), + onPressed: () => showQrCodeViewer( + context, + room.canonicalAlias, + ), + ) + else if (directChatMatrixID != null) + IconButton( + tooltip: L10n.of(context).share, + icon: const Icon(Icons.qr_code_rounded), + onPressed: () => showQrCodeViewer( + context, + directChatMatrixID, + ), + ), + if (controller.widget.embeddedCloseButton == null) + ChatSettingsPopupMenu(room, false), + ], + title: Text(L10n.of(context).chatDetails), + backgroundColor: theme.appBarTheme.backgroundColor, + ), + body: MaxWidthBody( + child: ListView.builder( + physics: const NeverScrollableScrollPhysics(), + shrinkWrap: true, + itemCount: members.length + 1 + (canRequestMoreMembers ? 1 : 0), + itemBuilder: (BuildContext context, int i) => i == 0 + ? Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + Row( + children: [ + Padding( + padding: const EdgeInsets.all(32.0), + child: Stack( + children: [ + Hero( + tag: + controller.widget.embeddedCloseButton != + null + ? 'embedded_content_banner' + : 'content_banner', + child: Avatar( + mxContent: room.avatar, + name: displayname, + size: Avatar.defaultSize * 2.5, + onTap: roomAvatar != null + ? () => showDialog( + context: context, + builder: (_) => + MxcImageViewer(roomAvatar), + ) + : null, + ), + ), + if (!room.isDirectChat && + room.canChangeStateEvent( + EventTypes.RoomAvatar, + )) + Positioned( + bottom: 0, + right: 0, + child: FloatingActionButton.small( + onPressed: controller.setAvatarAction, + heroTag: null, + child: const Icon( + Icons.camera_alt_outlined, + ), + ), + ), + ], + ), + ), + Expanded( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + TextButton.icon( + onPressed: () => room.isDirectChat + ? null + : room.canChangeStateEvent( + EventTypes.RoomName, + ) + ? controller.setDisplaynameAction() + : FluffyShare.share( + displayname, + context, + copyOnly: true, + ), + icon: Icon( + room.isDirectChat + ? Icons.chat_bubble_outline + : room.canChangeStateEvent( + EventTypes.RoomName, + ) + ? Icons.edit_outlined + : Icons.copy_outlined, + size: 16, + ), + style: TextButton.styleFrom( + foregroundColor: + theme.colorScheme.onSurface, + iconColor: theme.colorScheme.onSurface, + ), + label: Text( + room.isDirectChat + ? L10n.of(context).directChat + : displayname, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: const TextStyle(fontSize: 18), + ), + ), + TextButton.icon( + onPressed: () => room.isDirectChat + ? null + : context.push( + '/rooms/${controller.roomId}/details/members', + ), + icon: const Icon( + Icons.group_outlined, + size: 14, + ), + style: TextButton.styleFrom( + foregroundColor: + theme.colorScheme.secondary, + iconColor: theme.colorScheme.secondary, + ), + label: Text( + L10n.of(context).countParticipants( + actualMembersCount, + ), + maxLines: 1, + overflow: TextOverflow.ellipsis, + // style: const TextStyle(fontSize: 12), + ), + ), + ], + ), + ), + ], + ), + if (room.canChangeStateEvent(EventTypes.RoomTopic) || + room.topic.isNotEmpty) ...[ + Divider(color: theme.dividerColor), + ListTile( + title: Text( + L10n.of(context).chatDescription, + style: TextStyle( + color: theme.colorScheme.secondary, + fontWeight: FontWeight.bold, + ), + ), + trailing: + room.canChangeStateEvent(EventTypes.RoomTopic) + ? IconButton( + onPressed: controller.setTopicAction, + tooltip: + L10n.of(context).setChatDescription, + icon: const Icon(Icons.edit_outlined), + ) + : null, + ), + Padding( + padding: const EdgeInsets.symmetric( + horizontal: 16.0, + ), + child: SelectableLinkify( + text: room.topic.isEmpty + ? L10n.of(context).noChatDescriptionYet + : room.topic, + textScaleFactor: + MediaQuery.textScalerOf(context).scale(1), + options: const LinkifyOptions(humanize: false), + linkStyle: const TextStyle( + color: Colors.blueAccent, + decorationColor: Colors.blueAccent, + ), + style: TextStyle( + fontSize: 14, + fontStyle: room.topic.isEmpty + ? FontStyle.italic + : FontStyle.normal, + color: theme.textTheme.bodyMedium!.color, + decorationColor: + theme.textTheme.bodyMedium!.color, + ), + onOpen: (url) => + UrlLauncher(context, url.url).launchUrl(), + ), + ), + const SizedBox(height: 16), + ], + if (!room.isDirectChat) ...[ + Divider(color: theme.dividerColor), + ListTile( + leading: CircleAvatar( + backgroundColor: + theme.colorScheme.surfaceContainer, + foregroundColor: iconColor, + child: const Icon( + Icons.admin_panel_settings_outlined, + ), + ), + title: Text( + L10n.of(context).accessAndVisibility, + ), + subtitle: Text( + L10n.of(context).accessAndVisibilityDescription, + ), + onTap: () => context + .push('/rooms/${room.id}/details/access'), + trailing: const Icon(Icons.chevron_right_outlined), + ), + ListTile( + title: Text(L10n.of(context).chatPermissions), + subtitle: Text( + L10n.of(context).whoCanPerformWhichAction, + ), + leading: CircleAvatar( + backgroundColor: + theme.colorScheme.surfaceContainer, + foregroundColor: iconColor, + child: const Icon( + Icons.tune_outlined, + ), + ), + trailing: const Icon(Icons.chevron_right_outlined), + onTap: () => context + .push('/rooms/${room.id}/details/permissions'), + ), + ], + Divider(color: theme.dividerColor), + ListTile( + title: Text( + L10n.of(context).countParticipants( + actualMembersCount, + ), + style: TextStyle( + color: theme.colorScheme.secondary, + fontWeight: FontWeight.bold, + ), + ), + ), + if (!room.isDirectChat && room.canInvite) + ListTile( + title: Text(L10n.of(context).inviteContact), + leading: CircleAvatar( + backgroundColor: + theme.colorScheme.primaryContainer, + foregroundColor: + theme.colorScheme.onPrimaryContainer, + radius: Avatar.defaultSize / 2, + child: const Icon(Icons.add_outlined), + ), + trailing: const Icon(Icons.chevron_right_outlined), + onTap: () => context.go('/rooms/${room.id}/invite'), + ), + ], + ) + : i < members.length + 1 + ? ParticipantListItem(members[i - 1]) + : ListTile( + title: Text( + L10n.of(context).loadCountMoreParticipants( + (actualMembersCount - members.length), + ), + ), + leading: CircleAvatar( + backgroundColor: theme.scaffoldBackgroundColor, + child: const Icon( + Icons.group_outlined, + color: Colors.grey, + ), + ), + onTap: () => context.push( + '/rooms/${controller.roomId!}/details/members', + ), + trailing: const Icon(Icons.chevron_right_outlined), + ), + ), + ), + ); + }, + ); + } +} diff --git a/lib/pages/chat_details/participant_list_item.dart b/lib/pages/chat_details/participant_list_item.dart new file mode 100644 index 0000000..cb19ded --- /dev/null +++ b/lib/pages/chat_details/participant_list_item.dart @@ -0,0 +1,102 @@ +import 'package:flutter/material.dart'; + +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/widgets/member_actions_popup_menu_button.dart'; +import '../../widgets/avatar.dart'; + +class ParticipantListItem extends StatelessWidget { + final User user; + + const ParticipantListItem(this.user, {super.key}); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + final membershipBatch = switch (user.membership) { + Membership.ban => L10n.of(context).banned, + Membership.invite => L10n.of(context).invited, + Membership.join => null, + Membership.knock => L10n.of(context).knocking, + Membership.leave => L10n.of(context).leftTheChat, + }; + + final permissionBatch = user.powerLevel >= 100 + ? L10n.of(context).admin + : user.powerLevel >= 50 + ? L10n.of(context).moderator + : ''; + + return ListTile( + onTap: () => showMemberActionsPopupMenu(context: context, user: user), + title: Row( + children: [ + Expanded( + child: Text( + user.calcDisplayname(), + overflow: TextOverflow.ellipsis, + ), + ), + if (permissionBatch.isNotEmpty) + Container( + padding: const EdgeInsets.symmetric( + horizontal: 12, + vertical: 6, + ), + decoration: BoxDecoration( + color: user.powerLevel >= 100 + ? theme.colorScheme.tertiary + : theme.colorScheme.tertiaryContainer, + borderRadius: BorderRadius.circular( + AppConfig.borderRadius, + ), + ), + child: Text( + permissionBatch, + style: theme.textTheme.labelSmall?.copyWith( + color: user.powerLevel >= 100 + ? theme.colorScheme.onTertiary + : theme.colorScheme.onTertiaryContainer, + ), + ), + ), + membershipBatch == null + ? const SizedBox.shrink() + : Container( + padding: + const EdgeInsets.symmetric(vertical: 4, horizontal: 8), + margin: const EdgeInsets.symmetric(horizontal: 8), + decoration: BoxDecoration( + color: theme.colorScheme.secondaryContainer, + borderRadius: BorderRadius.circular(8), + ), + child: Center( + child: Text( + membershipBatch, + style: theme.textTheme.labelSmall?.copyWith( + color: theme.colorScheme.onSecondaryContainer, + ), + ), + ), + ), + ], + ), + subtitle: Text( + user.id, + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + leading: Opacity( + opacity: user.membership == Membership.join ? 1 : 0.5, + child: Avatar( + mxContent: user.avatarUrl, + name: user.calcDisplayname(), + presenceUserId: user.stateKey, + ), + ), + ); + } +} diff --git a/lib/pages/chat_encryption_settings/chat_encryption_settings.dart b/lib/pages/chat_encryption_settings/chat_encryption_settings.dart new file mode 100644 index 0000000..704f336 --- /dev/null +++ b/lib/pages/chat_encryption_settings/chat_encryption_settings.dart @@ -0,0 +1,99 @@ +import 'package:flutter/material.dart'; + +import 'package:go_router/go_router.dart'; +import 'package:matrix/encryption.dart'; +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/chat_encryption_settings/chat_encryption_settings_view.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_ok_cancel_alert_dialog.dart'; +import 'package:fluffychat/widgets/future_loading_dialog.dart'; +import 'package:fluffychat/widgets/matrix.dart'; +import '../key_verification/key_verification_dialog.dart'; + +class ChatEncryptionSettings extends StatefulWidget { + const ChatEncryptionSettings({super.key}); + + @override + ChatEncryptionSettingsController createState() => + ChatEncryptionSettingsController(); +} + +class ChatEncryptionSettingsController extends State { + String? get roomId => GoRouterState.of(context).pathParameters['roomid']; + + Room get room => Matrix.of(context).client.getRoomById(roomId!)!; + + Future unblock(DeviceKeys key) async { + if (key.blocked) { + await key.setBlocked(false); + } + } + + void enableEncryption(_) async { + if (room.encrypted) { + showOkAlertDialog( + context: context, + title: L10n.of(context).sorryThatsNotPossible, + message: L10n.of(context).disableEncryptionWarning, + ); + return; + } + if (room.joinRules == JoinRules.public) { + showOkAlertDialog( + context: context, + title: L10n.of(context).sorryThatsNotPossible, + message: L10n.of(context).noEncryptionForPublicRooms, + ); + return; + } + if (!room.canChangeStateEvent(EventTypes.Encryption)) { + showOkAlertDialog( + context: context, + title: L10n.of(context).sorryThatsNotPossible, + message: L10n.of(context).noPermission, + ); + return; + } + final consent = await showOkCancelAlertDialog( + context: context, + title: L10n.of(context).areYouSure, + message: L10n.of(context).enableEncryptionWarning, + okLabel: L10n.of(context).yes, + cancelLabel: L10n.of(context).cancel, + ); + if (consent != OkCancelResult.ok) return; + await showFutureLoadingDialog( + context: context, + future: () => room.enableEncryption(), + ); + } + + void startVerification() async { + final consent = await showOkCancelAlertDialog( + context: context, + title: L10n.of(context).verifyOtherUser, + message: L10n.of(context).verifyOtherUserDescription, + okLabel: L10n.of(context).ok, + cancelLabel: L10n.of(context).cancel, + ); + if (consent != OkCancelResult.ok) return; + final req = await room.client.userDeviceKeys[room.directChatMatrixID]! + .startVerification(); + req.onUpdate = () { + if (req.state == KeyVerificationState.done) { + setState(() {}); + } + }; + await KeyVerificationDialog(request: req).show(context); + } + + void toggleDeviceKey(DeviceKeys key) { + setState(() { + key.setBlocked(!key.blocked); + }); + } + + @override + Widget build(BuildContext context) => ChatEncryptionSettingsView(this); +} diff --git a/lib/pages/chat_encryption_settings/chat_encryption_settings_view.dart b/lib/pages/chat_encryption_settings/chat_encryption_settings_view.dart new file mode 100644 index 0000000..754178c --- /dev/null +++ b/lib/pages/chat_encryption_settings/chat_encryption_settings_view.dart @@ -0,0 +1,200 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; + +import 'package:go_router/go_router.dart'; +import 'package:matrix/matrix.dart'; +import 'package:url_launcher/url_launcher_string.dart'; + +import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/chat_encryption_settings/chat_encryption_settings.dart'; +import 'package:fluffychat/utils/beautify_string_extension.dart'; +import 'package:fluffychat/widgets/avatar.dart'; +import 'package:fluffychat/widgets/layouts/max_width_body.dart'; + +class ChatEncryptionSettingsView extends StatelessWidget { + final ChatEncryptionSettingsController controller; + + const ChatEncryptionSettingsView(this.controller, {super.key}); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + final room = controller.room; + return StreamBuilder( + stream: room.client.onSync.stream.where( + (s) => s.rooms?.join?[room.id] != null || s.deviceLists != null, + ), + builder: (context, _) => Scaffold( + appBar: AppBar( + leading: IconButton( + icon: const Icon(Icons.close_outlined), + onPressed: () => context.go('/rooms/${controller.roomId!}'), + ), + title: Text(L10n.of(context).encryption), + actions: [ + TextButton( + onPressed: () => launchUrlString(AppConfig.encryptionTutorial), + child: Text(L10n.of(context).help), + ), + ], + ), + body: MaxWidthBody( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + SwitchListTile( + secondary: CircleAvatar( + foregroundColor: theme.colorScheme.onPrimaryContainer, + backgroundColor: theme.colorScheme.primaryContainer, + child: const Icon(Icons.lock_outlined), + ), + title: Text(L10n.of(context).encryptThisChat), + value: room.encrypted, + onChanged: controller.enableEncryption, + ), + Icon( + CupertinoIcons.lock_shield, + size: 128, + color: theme.colorScheme.onInverseSurface, + ), + if (room.isDirectChat) + Padding( + padding: const EdgeInsets.all(16.0), + child: SizedBox( + width: double.infinity, + child: ElevatedButton.icon( + onPressed: controller.startVerification, + icon: const Icon(Icons.verified_outlined), + label: Text(L10n.of(context).verifyStart), + ), + ), + ), + if (room.encrypted) ...[ + const SizedBox(height: 16), + ListTile( + title: Text( + L10n.of(context).deviceKeys, + style: const TextStyle( + fontWeight: FontWeight.bold, + ), + ), + ), + StreamBuilder( + stream: room.client.onRoomState.stream + .where((update) => update.roomId == controller.room.id), + builder: (context, snapshot) => + FutureBuilder>( + future: room.getUserDeviceKeys(), + builder: (BuildContext context, snapshot) { + if (snapshot.hasError) { + return Center( + child: Text( + '${L10n.of(context).oopsSomethingWentWrong}: ${snapshot.error}', + ), + ); + } + if (!snapshot.hasData) { + return const Center( + child: CircularProgressIndicator.adaptive( + strokeWidth: 2, + ), + ); + } + final deviceKeys = snapshot.data!; + return ListView.builder( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + itemCount: deviceKeys.length, + itemBuilder: (BuildContext context, int i) => Column( + mainAxisSize: MainAxisSize.min, + children: [ + if (i == 0 || + deviceKeys[i].userId != + deviceKeys[i - 1].userId) ...[ + const Divider(), + FutureBuilder( + future: room.client + .getUserProfile(deviceKeys[i].userId), + builder: (context, snapshot) { + final displayname = + snapshot.data?.displayname ?? + deviceKeys[i].userId.localpart ?? + deviceKeys[i].userId; + return ListTile( + leading: Avatar( + name: displayname, + mxContent: snapshot.data?.avatarUrl, + ), + title: Text(displayname), + subtitle: Text(deviceKeys[i].userId), + ); + }, + ), + ], + SwitchListTile( + value: !deviceKeys[i].blocked, + activeThumbColor: deviceKeys[i].verified + ? Colors.green + : Colors.orange, + onChanged: (_) => + controller.toggleDeviceKey(deviceKeys[i]), + title: Row( + children: [ + Text( + deviceKeys[i].verified + ? L10n.of(context).verified + : deviceKeys[i].blocked + ? L10n.of(context).blocked + : L10n.of(context).unverified, + style: TextStyle( + color: deviceKeys[i].verified + ? Colors.green + : deviceKeys[i].blocked + ? Colors.red + : Colors.orange, + ), + ), + const Text(' | ID: '), + Text( + deviceKeys[i].deviceId ?? + L10n.of(context).unknownDevice, + ), + ], + ), + subtitle: Text( + deviceKeys[i].ed25519Key?.beautified ?? + L10n.of(context).unknownEncryptionAlgorithm, + style: TextStyle( + fontFamily: 'RobotoMono', + color: theme.colorScheme.secondary, + fontSize: 11, + ), + ), + ), + ], + ), + ); + }, + ), + ), + ] else + Padding( + padding: const EdgeInsets.all(16.0), + child: Center( + child: Text( + L10n.of(context).encryptionNotEnabled, + style: const TextStyle( + fontStyle: FontStyle.italic, + ), + ), + ), + ), + ], + ), + ), + ), + ); + } +} diff --git a/lib/pages/chat_list/chat_list.dart b/lib/pages/chat_list/chat_list.dart new file mode 100644 index 0000000..4f96aff --- /dev/null +++ b/lib/pages/chat_list/chat_list.dart @@ -0,0 +1,925 @@ +import 'dart:async'; + +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +import 'package:app_links/app_links.dart'; +import 'package:cross_file/cross_file.dart'; +import 'package:flutter_shortcuts_new/flutter_shortcuts_new.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:fluffychat/l10n/l10n.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'; +import 'package:fluffychat/utils/platform_infos.dart'; +import 'package:fluffychat/utils/show_scaffold_dialog.dart'; +import 'package:fluffychat/utils/show_update_snackbar.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_modal_action_popup.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_ok_cancel_alert_dialog.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_text_input_dialog.dart'; +import 'package:fluffychat/widgets/avatar.dart'; +import 'package:fluffychat/widgets/future_loading_dialog.dart'; +import 'package:fluffychat/widgets/share_scaffold_dialog.dart'; +import '../../../utils/account_bundles.dart'; +import '../../config/setting_keys.dart'; +import '../../utils/url_launcher.dart'; +import '../../widgets/matrix.dart'; +import '../bootstrap/bootstrap_dialog.dart'; + +enum PopupMenuAction { + settings, + invite, + newGroup, + newSpace, + setStatus, + archive, +} + +enum ActiveFilter { + allChats, + messages, + groups, + unread, + spaces, +} + +extension LocalizedActiveFilter on ActiveFilter { + String toLocalizedString(BuildContext context) { + 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: + return L10n.of(context).groups; + case ActiveFilter.spaces: + return L10n.of(context).spaces; + } + } +} + +class ChatList extends StatefulWidget { + static BuildContext? contextForVoip; + final String? activeChat; + final String? activeSpace; + final bool displayNavigationRail; + + const ChatList({ + super.key, + required this.activeChat, + this.activeSpace, + this.displayNavigationRail = false, + }); + + @override + ChatListController createState() => ChatListController(); +} + +class ChatListController extends State + with TickerProviderStateMixin, RouteAware { + StreamSubscription? _intentDataStreamSubscription; + + StreamSubscription? _intentFileStreamSubscription; + + StreamSubscription? _intentUriStreamSubscription; + + late ActiveFilter activeFilter; + + String? _activeSpaceId; + String? get activeSpaceId => _activeSpaceId; + + void setActiveSpace(String spaceId) async { + await Matrix.of(context).client.getRoomById(spaceId)!.postLoad(); + + setState(() { + _activeSpaceId = spaceId; + }); + } + + void clearActiveSpace() => setState(() { + _activeSpaceId = null; + }); + + void onChatTap(Room room) async { + if (room.membership == Membership.invite) { + final joinResult = await showFutureLoadingDialog( + context: context, + future: () async { + final waitForRoom = room.client.waitForRoomInSync( + room.id, + join: true, + ); + await room.join(); + await waitForRoom; + }, + exceptionContext: ExceptionContext.joinRoom, + ); + 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; + } + + if (room.isSpace) { + setActiveSpace(room.id); + return; + } + + context.go('/rooms/${room.id}'); + } + + bool Function(Room) getRoomFilterByActiveFilter(ActiveFilter activeFilter) { + 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: + return (room) => room.isUnreadOrInvited; + case ActiveFilter.spaces: + return (room) => room.isSpace; + } + } + + List get filteredRooms => Matrix.of(context) + .client + .rooms + .where(getRoomFilterByActiveFilter(activeFilter)) + .toList(); + + bool isSearchMode = false; + Future? publicRoomsResponse; + String? searchServer; + Timer? _coolDown; + SearchUserDirectoryResponse? userSearchResult; + QueryPublicRoomsResponse? roomSearchResult; + + bool isSearching = false; + static const String _serverStoreNamespace = 'im.fluffychat.search.server'; + + void setServer() async { + final newServer = await showTextInputDialog( + useRootNavigator: false, + title: L10n.of(context).changeTheHomeserver, + context: context, + okLabel: L10n.of(context).ok, + cancelLabel: L10n.of(context).cancel, + prefixText: 'https://', + hintText: Matrix.of(context).client.homeserver?.host, + initialText: searchServer, + keyboardType: TextInputType.url, + autocorrect: false, + validator: (server) => server.contains('.') == true + ? null + : L10n.of(context).invalidServerName, + ); + if (newServer == null) return; + Matrix.of(context).store.setString(_serverStoreNamespace, newServer); + setState(() { + searchServer = newServer; + }); + _coolDown?.cancel(); + _coolDown = Timer(const Duration(milliseconds: 500), _search); + } + + final TextEditingController searchController = TextEditingController(); + final FocusNode searchFocusNode = FocusNode(); + + void _search() async { + final client = Matrix.of(context).client; + if (!isSearching) { + setState(() { + isSearching = true; + }); + } + SearchUserDirectoryResponse? userSearchResult; + QueryPublicRoomsResponse? roomSearchResult; + final searchQuery = searchController.text.trim(); + try { + roomSearchResult = await client.queryPublicRooms( + server: searchServer, + filter: PublicRoomQueryFilter(genericSearchTerm: searchQuery), + limit: 20, + ); + + if (searchQuery.isValidMatrixId && + searchQuery.sigil == '#' && + roomSearchResult.chunk + .any((room) => room.canonicalAlias == searchQuery) == + false) { + final response = await client.getRoomIdByAlias(searchQuery); + final roomId = response.roomId; + if (roomId != null) { + roomSearchResult.chunk.add( + PublishedRoomsChunk( + name: searchQuery, + guestCanJoin: false, + numJoinedMembers: 0, + roomId: roomId, + worldReadable: false, + canonicalAlias: searchQuery, + ), + ); + } + } + userSearchResult = await client.searchUserDirectory( + searchController.text, + limit: 20, + ); + } catch (e, s) { + Logs().w('Searching has crashed', e, s); + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text( + e.toLocalizedString(context), + ), + ), + ); + } + if (!isSearchMode) return; + setState(() { + isSearching = false; + this.roomSearchResult = roomSearchResult; + this.userSearchResult = userSearchResult; + }); + } + + void onSearchEnter(String text, {bool globalSearch = true}) { + if (text.isEmpty) { + cancelSearch(unfocus: false); + return; + } + + setState(() { + isSearchMode = true; + }); + _coolDown?.cancel(); + if (globalSearch) { + _coolDown = Timer(const Duration(milliseconds: 500), _search); + } + } + + void startSearch() { + setState(() { + isSearchMode = true; + }); + searchFocusNode.requestFocus(); + _coolDown?.cancel(); + _coolDown = Timer(const Duration(milliseconds: 500), _search); + } + + void cancelSearch({bool unfocus = true}) { + setState(() { + searchController.clear(); + isSearchMode = false; + roomSearchResult = userSearchResult = null; + isSearching = false; + }); + if (unfocus) searchFocusNode.unfocus(); + } + + BoxConstraints? snappingSheetContainerSize; + + final ScrollController scrollController = ScrollController(); + final ValueNotifier scrolledToTop = ValueNotifier(true); + + final StreamController _clientStream = StreamController.broadcast(); + + Stream get clientStream => _clientStream.stream; + + void addAccountAction() => context.go('/rooms/settings/account'); + + void _onScroll() { + final newScrolledToTop = scrollController.position.pixels <= 0; + if (newScrolledToTop != scrolledToTop.value) { + scrolledToTop.value = newScrolledToTop; + } + } + + void editSpace(BuildContext context, String spaceId) async { + await Matrix.of(context).client.getRoomById(spaceId)!.postLoad(); + if (mounted) { + context.push('/rooms/$spaceId/details'); + } + } + + // Needs to match GroupsSpacesEntry for 'separate group' checking. + List get spaces => + Matrix.of(context).client.rooms.where((r) => r.isSpace).toList(); + + String? get activeChat => widget.activeChat; + + void _processIncomingSharedMedia(List files) { + if (files.isEmpty) return; + + showScaffoldDialog( + context: context, + builder: (context) => ShareScaffoldDialog( + items: files.map( + (file) { + if ({ + SharedMediaType.text, + SharedMediaType.url, + }.contains(file.type)) { + return TextShareItem(file.path); + } + return FileShareItem( + XFile( + file.path.replaceFirst('file://', ''), + mimeType: file.mimeType, + ), + ); + }, + ).toList(), + ), + ); + } + + void _processIncomingUris(Uri? uri) async { + if (uri == null) return; + context.go('/rooms'); + WidgetsBinding.instance.addPostFrameCallback((_) { + UrlLauncher(context, uri.toString()).openMatrixToUrl(); + }); + } + + void _initReceiveSharingIntent() { + if (!PlatformInfos.isMobile) return; + + // For sharing images coming from outside the app while the app is in the memory + _intentFileStreamSubscription = ReceiveSharingIntent.instance + .getMediaStream() + .listen(_processIncomingSharedMedia, onError: print); + + // For sharing images coming from outside the app while the app is closed + ReceiveSharingIntent.instance + .getInitialMedia() + .then(_processIncomingSharedMedia); + + // For receiving shared Uris + _intentUriStreamSubscription = + AppLinks().uriLinkStream.listen(_processIncomingUris); + + if (PlatformInfos.isAndroid) { + final shortcuts = FlutterShortcuts(); + shortcuts.initialize().then( + (_) => shortcuts.listenAction((action) { + if (!mounted) return; + UrlLauncher(context, action).launchUrl(); + }), + ); + } + } + + @override + void initState() { + activeFilter = AppSettings.separateChatTypes.value + ? ActiveFilter.messages + : ActiveFilter.allChats; + _initReceiveSharingIntent(); + _activeSpaceId = widget.activeSpace; + + scrollController.addListener(_onScroll); + _waitForFirstSync(); + _hackyWebRTCFixForWeb(); + WidgetsBinding.instance.addPostFrameCallback((_) async { + if (mounted) { + 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 + SystemChrome.setSystemUIOverlayStyle( + Theme.of(context).appBarTheme.systemOverlayStyle!, + ); + }); + + super.initState(); + } + + @override + void dispose() { + _intentDataStreamSubscription?.cancel(); + _intentFileStreamSubscription?.cancel(); + _intentUriStreamSubscription?.cancel(); + scrollController.removeListener(_onScroll); + super.dispose(); + } + + 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 spacesWithPowerLevels = room.client.rooms + .where( + (space) => + space.isSpace && + space.canChangeStateEvent(EventTypes.SpaceChild) && + !space.spaceChildren.any((c) => c.roomId == room.id), + ) + .toList(); + + final action = await showMenu( + context: posContext, + position: position, + items: [ + PopupMenuItem( + value: ChatContextAction.open, + child: Row( + mainAxisSize: MainAxisSize.min, + spacing: 12.0, + children: [ + Avatar( + mxContent: room.avatar, + name: displayname, + ), + ConstrainedBox( + constraints: const BoxConstraints(maxWidth: 128), + child: Text( + displayname, + style: + TextStyle(color: Theme.of(context).colorScheme.onSurface), + maxLines: 2, + overflow: TextOverflow.ellipsis, + ), + ), + ], + ), + ), + const PopupMenuDivider(), + if (space != null) + PopupMenuItem( + value: ChatContextAction.goToSpace, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Avatar( + mxContent: space.avatar, + size: Avatar.defaultSize / 2, + name: space.getLocalizedDisplayname(), + ), + const SizedBox(width: 12), + Expanded( + child: Text( + L10n.of(context).goToSpace(space.getLocalizedDisplayname()), + ), + ), + ], + ), + ), + if (room.membership == Membership.join) ...[ + 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, + ), + ], + ), + ), + 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, + ), + ], + ), + ), + 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, + ), + ], + ), + ), + if (spacesWithPowerLevels.isNotEmpty) + PopupMenuItem( + value: ChatContextAction.addToSpace, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + const Icon(Icons.group_work_outlined), + const SizedBox(width: 12), + Text(L10n.of(context).addToSpace), + ], + ), + ), + ], + PopupMenuItem( + value: ChatContextAction.leave, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + Icons.delete_outlined, + color: Theme.of(context).colorScheme.onErrorContainer, + ), + const SizedBox(width: 12), + Text( + room.membership == Membership.invite + ? L10n.of(context).delete + : L10n.of(context).leave, + style: TextStyle( + color: Theme.of(context).colorScheme.onErrorContainer, + ), + ), + ], + ), + ), + if (room.membership == Membership.invite) + PopupMenuItem( + value: ChatContextAction.block, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + Icons.block_outlined, + color: Theme.of(context).colorScheme.onErrorContainer, + ), + const SizedBox(width: 12), + Text( + L10n.of(context).block, + style: TextStyle( + color: Theme.of(context).colorScheme.onErrorContainer, + ), + ), + ], + ), + ), + ], + ); + + if (action == null) return; + if (!mounted) return; + + 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.block: + final inviteEvent = room.getState( + EventTypes.RoomMember, + room.client.userID!, + ); + context.go( + '/rooms/settings/security/ignorelist', + extra: inviteEvent?.senderId, + ); + case ChatContextAction.leave: + final confirmed = await showOkCancelAlertDialog( + context: context, + title: L10n.of(context).areYouSure, + message: L10n.of(context).archiveRoomDescription, + okLabel: L10n.of(context).leave, + cancelLabel: L10n.of(context).cancel, + isDestructive: true, + ); + if (confirmed == OkCancelResult.cancel) return; + if (!mounted) return; + + await showFutureLoadingDialog(context: context, future: room.leave); + + return; + case ChatContextAction.addToSpace: + final space = await showModalActionPopup( + context: context, + title: L10n.of(context).space, + actions: spacesWithPowerLevels + .map( + (space) => AdaptiveModalAction( + value: space, + label: space + .getLocalizedDisplayname(MatrixLocals(L10n.of(context))), + ), + ) + .toList(), + ); + if (space == null) return; + await showFutureLoadingDialog( + context: context, + future: () => space.setSpaceChild(room.id), + ); + } + } + + void dismissStatusList() async { + final result = await showOkCancelAlertDialog( + title: L10n.of(context).hidePresences, + context: context, + ); + if (result == OkCancelResult.ok) { + AppSettings.showPresences.setItem(false); + setState(() {}); + } + } + + void setStatus() async { + final client = Matrix.of(context).client; + final currentPresence = await client.fetchCurrentPresence(client.userID!); + final input = await showTextInputDialog( + useRootNavigator: false, + context: context, + title: L10n.of(context).setStatus, + message: L10n.of(context).leaveEmptyToClearStatus, + okLabel: L10n.of(context).ok, + cancelLabel: L10n.of(context).cancel, + hintText: L10n.of(context).statusExampleMessage, + maxLines: 6, + minLines: 1, + maxLength: 255, + initialText: currentPresence.statusMsg, + ); + if (input == null) return; + if (!mounted) return; + await showFutureLoadingDialog( + context: context, + future: () => client.setPresence( + client.userID!, + PresenceType.online, + statusMsg: input, + ), + ); + } + + bool waitForFirstSync = false; + + Future _waitForFirstSync() async { + final router = GoRouter.of(context); + final client = Matrix.of(context).client; + await client.roomsLoading; + await client.accountDataLoading; + await client.userDeviceKeysLoading; + if (client.prevBatch == null) { + await client.onSyncStatus.stream + .firstWhere((status) => status.status == SyncStatus.finished); + + if (!mounted) return; + setState(() { + waitForFirstSync = true; + }); + + // Display first login bootstrap if enabled + if (client.encryption?.keyManager.enabled == true) { + if (await client.encryption?.keyManager.isCached() == false || + await client.encryption?.crossSigning.isCached() == false || + client.isUnknownSession && !mounted) { + await BootstrapDialog(client: client).show(context); + } + } + } + if (!mounted) return; + setState(() { + waitForFirstSync = true; + }); + + if (client.userDeviceKeys[client.userID!]?.deviceKeys.values + .any((device) => !device.verified && !device.blocked) ?? + false) { + late final ScaffoldFeatureController controller; + final theme = Theme.of(context); + controller = ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + duration: const Duration(seconds: 15), + showCloseIcon: true, + backgroundColor: theme.colorScheme.errorContainer, + closeIconColor: theme.colorScheme.onErrorContainer, + content: Text( + L10n.of(context).oneOfYourDevicesIsNotVerified, + style: TextStyle( + color: theme.colorScheme.onErrorContainer, + ), + ), + action: SnackBarAction( + onPressed: () { + controller.close(); + router.go('/rooms/settings/devices'); + }, + textColor: theme.colorScheme.onErrorContainer, + label: L10n.of(context).settings, + ), + ), + ); + } + } + + void setActiveFilter(ActiveFilter filter) { + setState(() { + activeFilter = filter; + }); + } + + void setActiveClient(Client client) { + context.go('/rooms'); + setState(() { + activeFilter = ActiveFilter.allChats; + _activeSpaceId = null; + Matrix.of(context).setActiveClient(client); + }); + _clientStream.add(client); + } + + void setActiveBundle(String bundle) { + context.go('/rooms'); + setState(() { + _activeSpaceId = null; + Matrix.of(context).activeBundle = bundle; + if (!Matrix.of(context) + .currentBundle! + .any((client) => client == Matrix.of(context).client)) { + Matrix.of(context) + .setActiveClient(Matrix.of(context).currentBundle!.first); + } + }); + } + + void editBundlesForAccount(String? userId, String? activeBundle) async { + final l10n = L10n.of(context); + final client = Matrix.of(context) + .widget + .clients[Matrix.of(context).getClientIndexByMatrixId(userId!)]; + final action = await showModalActionPopup( + context: context, + title: L10n.of(context).editBundlesForAccount, + cancelLabel: L10n.of(context).cancel, + actions: [ + AdaptiveModalAction( + value: EditBundleAction.addToBundle, + label: L10n.of(context).addToBundle, + ), + if (activeBundle != client.userID) + AdaptiveModalAction( + value: EditBundleAction.removeFromBundle, + label: L10n.of(context).removeFromBundle, + ), + ], + ); + if (action == null) return; + switch (action) { + case EditBundleAction.addToBundle: + final bundle = await showTextInputDialog( + context: context, + title: l10n.bundleName, + hintText: l10n.bundleName, + ); + if (bundle == null || bundle.isEmpty || bundle.isEmpty) return; + await showFutureLoadingDialog( + context: context, + future: () => client.setAccountBundle(bundle), + ); + break; + case EditBundleAction.removeFromBundle: + await showFutureLoadingDialog( + context: context, + future: () => client.removeFromAccountBundle(activeBundle!), + ); + } + } + + bool get displayBundles => + Matrix.of(context).hasComplexBundles && + Matrix.of(context).accountBundles.keys.length > 1; + + String? get secureActiveBundle { + if (Matrix.of(context).activeBundle == null || + !Matrix.of(context) + .accountBundles + .keys + .contains(Matrix.of(context).activeBundle)) { + return Matrix.of(context).accountBundles.keys.first; + } + return Matrix.of(context).activeBundle; + } + + void resetActiveBundle() { + WidgetsBinding.instance.addPostFrameCallback((timeStamp) { + setState(() { + Matrix.of(context).activeBundle = null; + }); + }); + } + + @override + Widget build(BuildContext context) => ChatListView(this); + + void _hackyWebRTCFixForWeb() { + ChatList.contextForVoip = context; + } + + Future dehydrate() => Matrix.of(context).dehydrateAction(context); +} + +enum EditBundleAction { addToBundle, removeFromBundle } + +enum InviteActions { + accept, + decline, + block, +} + +enum ChatContextAction { + open, + goToSpace, + favorite, + markUnread, + mute, + leave, + addToSpace, + block, +} diff --git a/lib/pages/chat_list/chat_list_body.dart b/lib/pages/chat_list/chat_list_body.dart new file mode 100644 index 0000000..20c85b3 --- /dev/null +++ b/lib/pages/chat_list/chat_list_body.dart @@ -0,0 +1,340 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; + +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/config/setting_keys.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/chat_list/chat_list.dart'; +import 'package:fluffychat/pages/chat_list/chat_list_item.dart'; +import 'package:fluffychat/pages/chat_list/dummy_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/utils/stream_extension.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/public_room_dialog.dart'; +import 'package:fluffychat/widgets/avatar.dart'; +import '../../config/themes.dart'; +import '../../widgets/adaptive_dialogs/user_dialog.dart'; +import '../../widgets/matrix.dart'; +import 'chat_list_header.dart'; + +class ChatListViewBody extends StatelessWidget { + final ChatListController controller; + + const ChatListViewBody(this.controller, {super.key}); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + final client = Matrix.of(context).client; + final activeSpace = controller.activeSpaceId; + if (activeSpace != null) { + return SpaceView( + key: ValueKey(activeSpace), + spaceId: activeSpace, + onBack: controller.clearActiveSpace, + onChatTab: (room) => controller.onChatTap(room), + activeChat: controller.activeChat, + ); + } + 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(); + final publicSpaces = controller.roomSearchResult?.chunk + .where((room) => room.roomType == 'm.space') + .toList(); + final userSearchResult = controller.userSearchResult; + const dummyChatCount = 4; + final filter = controller.searchController.text.toLowerCase(); + 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; + + 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: () => UserDialog.show( + context: context, + profile: userSearchResult.results[i], + ), + ), + ), + ), + ], + if (!controller.isSearchMode && + AppSettings.showPresences.value) + GestureDetector( + onLongPress: () => controller.dismissStatusList(), + child: StatusMessageList( + onStatusEdit: controller.setStatus, + ), + ), + if (client.rooms.isNotEmpty && !controller.isSearchMode) + SizedBox( + height: 64, + child: ListView( + padding: const EdgeInsets.symmetric( + horizontal: 12.0, + vertical: 12.0, + ), + shrinkWrap: true, + scrollDirection: Axis.horizontal, + children: [ + if (AppSettings.separateChatTypes.value) + ActiveFilter.messages + else + ActiveFilter.allChats, + ActiveFilter.groups, + ActiveFilter.unread, + if (spaceDelegateCandidates.isNotEmpty && + !AppSettings.displayNavigationRail.value && + !FluffyThemes.isColumnMode(context)) + ActiveFilter.spaces, + ] + .map( + (filter) => Padding( + padding: const EdgeInsets.symmetric( + horizontal: 4.0, + ), + child: FilterChip( + selected: filter == controller.activeFilter, + onSelected: (_) => + controller.setActiveFilter(filter), + label: + Text(filter.toLocalizedString(context)), + ), + ), + ) + .toList(), + ), + ), + if (controller.isSearchMode) + SearchTitle( + title: L10n.of(context).chats, + icon: const Icon(Icons.forum_outlined), + ), + if (client.prevBatch != null && + rooms.isEmpty && + !controller.isSearchMode) ...[ + Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Stack( + alignment: Alignment.center, + children: [ + const Column( + mainAxisSize: MainAxisSize.min, + children: [ + DummyChatListItem( + opacity: 0.5, + animate: false, + ), + DummyChatListItem( + opacity: 0.3, + animate: false, + ), + ], + ), + Icon( + CupertinoIcons.chat_bubble_text_fill, + size: 128, + color: theme.colorScheme.secondary, + ), + ], + ), + Padding( + padding: const EdgeInsets.all(16.0), + child: Text( + client.rooms.isEmpty + ? L10n.of(context).noChatsFoundHere + : L10n.of(context).noMoreChatsFound, + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 18, + color: theme.colorScheme.secondary, + ), + ), + ), + ], + ), + ], + ], + ), + ), + if (client.prevBatch == null) + SliverList( + delegate: SliverChildBuilderDelegate( + (context, i) => DummyChatListItem( + opacity: (dummyChatCount - i) / dummyChatCount, + animate: true, + ), + childCount: dummyChatCount, + ), + ), + if (client.prevBatch != null) + SliverList.builder( + itemCount: rooms.length, + itemBuilder: (BuildContext context, int i) { + final room = rooms[i]; + final space = spaceDelegateCandidates[room.id]; + return ChatListItem( + room, + space: space, + key: Key('chat_list_item_${room.id}'), + filter: filter, + onTap: () => controller.onChatTap(room), + onLongPress: (context) => + controller.chatContextAction(room, context, space), + activeChat: controller.activeChat == room.id, + ); + }, + ), + ], + ), + ); + }, + ); + } +} + +class PublicRoomsHorizontalList extends StatelessWidget { + const PublicRoomsHorizontalList({ + super.key, + required this.publicRooms, + }); + + final List? publicRooms; + + @override + Widget build(BuildContext context) { + final publicRooms = this.publicRooms; + return AnimatedContainer( + clipBehavior: Clip.hardEdge, + decoration: const BoxDecoration(), + height: publicRooms == null || publicRooms.isEmpty ? 0 : 106, + duration: FluffyThemes.animationDuration, + curve: FluffyThemes.animationCurve, + child: publicRooms == null + ? null + : ListView.builder( + scrollDirection: Axis.horizontal, + itemCount: publicRooms.length, + itemBuilder: (context, i) => _SearchItem( + title: publicRooms[i].name ?? + publicRooms[i].canonicalAlias?.localpart ?? + L10n.of(context).group, + avatar: publicRooms[i].avatarUrl, + onPressed: () => showAdaptiveDialog( + context: context, + builder: (c) => PublicRoomDialog( + roomAlias: + publicRooms[i].canonicalAlias ?? publicRooms[i].roomId, + chunk: publicRooms[i], + ), + ), + ), + ), + ); + } +} + +class _SearchItem extends StatelessWidget { + final String title; + final Uri? avatar; + final void Function() onPressed; + + const _SearchItem({ + required this.title, + this.avatar, + required this.onPressed, + }); + + @override + Widget build(BuildContext context) => InkWell( + onTap: onPressed, + child: SizedBox( + width: 84, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + const SizedBox(height: 8), + Avatar( + mxContent: avatar, + name: title, + ), + Padding( + padding: const EdgeInsets.all(8.0), + child: Text( + title, + maxLines: 2, + textAlign: TextAlign.center, + overflow: TextOverflow.ellipsis, + style: const TextStyle( + fontSize: 12, + ), + ), + ), + ], + ), + ), + ); +} diff --git a/lib/pages/chat_list/chat_list_header.dart b/lib/pages/chat_list/chat_list_header.dart new file mode 100644 index 0000000..ca2bfcb --- /dev/null +++ b/lib/pages/chat_list/chat_list_header.dart @@ -0,0 +1,140 @@ +import 'package:flutter/material.dart'; + +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/config/themes.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/chat_list/chat_list.dart'; +import 'package:fluffychat/pages/chat_list/client_chooser_button.dart'; +import 'package:fluffychat/utils/sync_status_localization.dart'; +import '../../widgets/matrix.dart'; + +class ChatListHeader extends StatelessWidget implements PreferredSizeWidget { + final ChatListController controller; + final bool globalSearch; + + const ChatListHeader({ + super.key, + required this.controller, + this.globalSearch = true, + }); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + final client = Matrix.of(context).client; + + return SliverAppBar( + floating: true, + toolbarHeight: 72, + pinned: FluffyThemes.isColumnMode(context), + scrolledUnderElevation: 0, + backgroundColor: Colors.transparent, + automaticallyImplyLeading: false, + title: StreamBuilder( + stream: client.onSyncStatus.stream, + builder: (context, snapshot) { + final status = client.onSyncStatus.value ?? + const SyncStatusUpdate(SyncStatus.waitingForResponse); + final hide = client.onSync.value != null && + status.status != SyncStatus.error && + client.prevBatch != null; + return TextField( + controller: controller.searchController, + focusNode: controller.searchFocusNode, + textInputAction: TextInputAction.search, + onChanged: (text) => controller.onSearchEnter( + text, + globalSearch: globalSearch, + ), + decoration: InputDecoration( + filled: true, + fillColor: theme.colorScheme.secondaryContainer, + border: OutlineInputBorder( + borderSide: BorderSide.none, + borderRadius: BorderRadius.circular(99), + ), + contentPadding: EdgeInsets.zero, + hintText: hide + ? L10n.of(context).searchChatsRooms + : status.calcLocalizedString(context), + hintStyle: TextStyle( + color: status.error != null + ? Colors.orange + : theme.colorScheme.onPrimaryContainer, + fontWeight: FontWeight.normal, + ), + prefixIcon: hide + ? controller.isSearchMode + ? IconButton( + tooltip: L10n.of(context).cancel, + icon: const Icon(Icons.close_outlined), + onPressed: controller.cancelSearch, + color: theme.colorScheme.onPrimaryContainer, + ) + : IconButton( + onPressed: controller.startSearch, + icon: Icon( + Icons.search_outlined, + color: theme.colorScheme.onPrimaryContainer, + ), + ) + : Container( + margin: const EdgeInsets.all(12), + width: 8, + height: 8, + child: Center( + child: CircularProgressIndicator.adaptive( + strokeWidth: 2, + value: status.progress, + valueColor: status.error != null + ? const AlwaysStoppedAnimation( + Colors.orange, + ) + : null, + ), + ), + ), + 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), + ), + ), + ); + }, + ), + ); + } + + @override + Size get preferredSize => const Size.fromHeight(56); +} diff --git a/lib/pages/chat_list/chat_list_item.dart b/lib/pages/chat_list/chat_list_item.dart new file mode 100644 index 0000000..995a7ea --- /dev/null +++ b/lib/pages/chat_list/chat_list_item.dart @@ -0,0 +1,387 @@ +import 'package:flutter/material.dart'; + +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/chat_list/unread_bubble.dart'; +import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; +import 'package:fluffychat/utils/room_status_extension.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_ok_cancel_alert_dialog.dart'; +import 'package:fluffychat/widgets/future_loading_dialog.dart'; +import 'package:fluffychat/widgets/hover_builder.dart'; +import '../../config/themes.dart'; +import '../../utils/date_time_extension.dart'; +import '../../widgets/avatar.dart'; + +enum ArchivedRoomAction { delete, rejoin } + +class ChatListItem extends StatelessWidget { + final Room room; + final Room? space; + final bool activeChat; + final void Function(BuildContext context)? onLongPress; + final void Function()? onForget; + final void Function() onTap; + final String? filter; + + const ChatListItem( + this.room, { + this.activeChat = false, + required this.onTap, + this.onLongPress, + this.onForget, + this.filter, + this.space, + super.key, + }); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + final isMuted = room.pushRuleState != PushRuleState.notify; + final typingText = room.getLocalizedTypingText(context); + final lastEvent = room.lastEvent; + final ownMessage = lastEvent?.senderId == room.client.userID; + final unread = room.isUnread; + final directChatMatrixId = room.directChatMatrixID; + final isDirectChat = directChatMatrixId != null; + final hasNotifications = room.notificationCount > 0; + final backgroundColor = + activeChat ? theme.colorScheme.secondaryContainer : null; + final displayname = room.getLocalizedDisplayname( + MatrixLocals(L10n.of(context)), + ); + final filter = this.filter; + if (filter != null && !displayname.toLowerCase().contains(filter)) { + return const SizedBox.shrink(); + } + + final needLastEventSender = lastEvent == null + ? false + : room.getState(EventTypes.RoomMember, lastEvent.senderId) == null; + final space = this.space; + + return Padding( + padding: const EdgeInsets.symmetric( + horizontal: 8, + vertical: 1, + ), + child: Material( + borderRadius: BorderRadius.circular(AppConfig.borderRadius), + clipBehavior: Clip.hardEdge, + color: backgroundColor, + child: FutureBuilder( + future: room.loadHeroUsers(), + 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.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: 1, + color: theme.dividerColor, + ) + : null + : BorderSide( + width: 2, + color: backgroundColor ?? + theme.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( + top: 0, + right: 0, + 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, + ), + ), + ), + ), + ), + ], + ), + ), + ), + ), + title: Row( + children: [ + Expanded( + child: Text( + displayname, + maxLines: 1, + overflow: TextOverflow.ellipsis, + softWrap: false, + style: TextStyle( + fontWeight: unread || room.hasNewMessages + ? FontWeight.w500 + : null, + ), + ), + ), + if (isMuted) + const Padding( + padding: EdgeInsets.only(left: 4.0), + child: Icon( + Icons.notifications_off_outlined, + size: 16, + ), + ), + if (room.isFavourite) + Padding( + padding: EdgeInsets.only( + right: hasNotifications ? 4.0 : 0.0, + ), + child: Icon( + Icons.push_pin, + size: 16, + color: theme.colorScheme.primary, + ), + ), + if (!room.isSpace && room.membership != Membership.invite) + Padding( + padding: const EdgeInsets.only(left: 4.0), + child: Text( + room.latestEventReceivedTime + .localizedTimeShort(context), + style: TextStyle( + fontSize: 12, + color: theme.colorScheme.outline, + ), + ), + ), + ], + ), + subtitle: Row( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + if (typingText.isEmpty && + ownMessage && + room.lastEvent?.status.isSending == true) ...[ + const SizedBox( + width: 16, + height: 16, + child: CircularProgressIndicator.adaptive(strokeWidth: 2), + ), + const SizedBox(width: 4), + ], + AnimatedSize( + clipBehavior: Clip.hardEdge, + duration: FluffyThemes.animationDuration, + curve: FluffyThemes.animationCurve, + child: typingText.isNotEmpty + ? Padding( + padding: const EdgeInsets.only(right: 4.0), + child: Icon( + Icons.edit_outlined, + color: theme.colorScheme.secondary, + size: 16, + ), + ) + : room.lastEvent?.relationshipType == + RelationshipTypes.thread + ? Container( + decoration: BoxDecoration( + border: Border.all( + color: theme.colorScheme.outline, + ), + borderRadius: BorderRadius.circular( + AppConfig.borderRadius, + ), + ), + padding: + const EdgeInsets.symmetric(horizontal: 8.0), + margin: const EdgeInsets.only(right: 4.0), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + Icons.message_outlined, + size: 12, + color: theme.colorScheme.outline, + ), + const SizedBox(width: 4), + Text( + L10n.of(context).thread, + style: TextStyle( + fontSize: 12, + color: theme.colorScheme.outline, + ), + ), + ], + ), + ) + : const SizedBox.shrink(), + ), + Expanded( + child: room.isSpace && room.membership == Membership.join + ? Text( + L10n.of(context) + .countChats(room.spaceChildren.length), + style: TextStyle(color: theme.colorScheme.outline), + ) + : typingText.isNotEmpty + ? Text( + typingText, + style: TextStyle( + color: theme.colorScheme.primary, + ), + maxLines: 1, + softWrap: false, + ) + : FutureBuilder( + key: ValueKey( + '${lastEvent?.eventId}_${lastEvent?.type}_${lastEvent?.redacted}', + ), + 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 + ? room + .getState( + EventTypes.RoomMember, + room.client.userID!, + ) + ?.content + .tryGet('reason') ?? + (isDirectChat + ? L10n.of(context).newChatRequest + : L10n.of(context) + .inviteGroupChat) + : snapshot.data ?? + L10n.of(context).noMessagesYet, + softWrap: false, + maxLines: room.notificationCount >= 1 ? 2 : 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + color: unread || room.hasNewMessages + ? theme.colorScheme.onSurface + : theme.colorScheme.outline, + decoration: room.lastEvent?.redacted == true + ? TextDecoration.lineThrough + : null, + ), + ), + ), + ), + const SizedBox(width: 8), + UnreadBubble(room: room), + ], + ), + onTap: onTap, + trailing: onForget == null + ? room.membership == Membership.invite + ? IconButton( + tooltip: L10n.of(context).declineInvitation, + icon: const Icon(Icons.delete_forever_outlined), + color: theme.colorScheme.error, + onPressed: () async { + final consent = await showOkCancelAlertDialog( + context: context, + title: L10n.of(context).declineInvitation, + message: L10n.of(context).areYouSure, + okLabel: L10n.of(context).yes, + isDestructive: true, + ); + if (consent != OkCancelResult.ok) return; + if (!context.mounted) return; + await showFutureLoadingDialog( + context: context, + future: room.leave, + ); + }, + ) + : null + : IconButton( + icon: const Icon(Icons.delete_outlined), + onPressed: onForget, + ), + ), + ), + ), + ), + ); + } +} diff --git a/lib/pages/chat_list/chat_list_view.dart b/lib/pages/chat_list/chat_list_view.dart new file mode 100644 index 0000000..1b04bed --- /dev/null +++ b/lib/pages/chat_list/chat_list_view.dart @@ -0,0 +1,71 @@ +import 'package:flutter/material.dart'; + +import 'package:go_router/go_router.dart'; + +import 'package:fluffychat/config/setting_keys.dart'; +import 'package:fluffychat/config/themes.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/chat_list/chat_list.dart'; +import 'package:fluffychat/widgets/navigation_rail.dart'; +import 'chat_list_body.dart'; + +class ChatListView extends StatelessWidget { + final ChatListController controller; + + const ChatListView(this.controller, {super.key}); + + @override + Widget build(BuildContext context) { + return PopScope( + canPop: !controller.isSearchMode && controller.activeSpaceId == null, + onPopInvokedWithResult: (pop, _) { + if (pop) return; + if (controller.activeSpaceId != null) { + controller.clearActiveSpace(); + return; + } + if (controller.isSearchMode) { + controller.cancelSearch(); + return; + } + }, + child: Row( + children: [ + if (FluffyThemes.isColumnMode(context) || + AppSettings.displayNavigationRail.value) ...[ + SpacesNavigationRail( + activeSpaceId: controller.activeSpaceId, + onGoToChats: controller.clearActiveSpace, + onGoToSpaceId: controller.setActiveSpace, + ), + 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: !controller.isSearchMode && + controller.activeSpaceId == null + ? FloatingActionButton.extended( + onPressed: () => context.go('/rooms/newprivatechat'), + 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/client_chooser_button.dart b/lib/pages/chat_list/client_chooser_button.dart new file mode 100644 index 0000000..9161226 --- /dev/null +++ b/lib/pages/chat_list/client_chooser_button.dart @@ -0,0 +1,248 @@ +import 'package:flutter/material.dart'; + +import 'package:go_router/go_router.dart'; +import 'package:matrix/matrix.dart'; +import 'package:url_launcher/url_launcher_string.dart'; + +import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/config/themes.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_ok_cancel_alert_dialog.dart'; +import 'package:fluffychat/widgets/avatar.dart'; +import 'package:fluffychat/widgets/matrix.dart'; +import '../../utils/fluffy_share.dart'; +import 'chat_list.dart'; + +class ClientChooserButton extends StatelessWidget { + final ChatListController controller; + + const ClientChooserButton(this.controller, {super.key}); + + List> _bundleMenuItems(BuildContext context) { + final matrix = Matrix.of(context); + final bundles = matrix.accountBundles.keys.toList() + ..sort( + (a, b) => a!.isValidMatrixId == b!.isValidMatrixId + ? 0 + : a.isValidMatrixId && !b.isValidMatrixId + ? -1 + : 1, + ); + return >[ + PopupMenuItem( + value: SettingsAction.newGroup, + child: Row( + children: [ + const Icon(Icons.group_add_outlined), + const SizedBox(width: 18), + Text(L10n.of(context).createGroup), + ], + ), + ), + PopupMenuItem( + value: SettingsAction.setStatus, + child: Row( + children: [ + const Icon(Icons.edit_outlined), + const SizedBox(width: 18), + Text(L10n.of(context).setStatus), + ], + ), + ), + PopupMenuItem( + value: SettingsAction.invite, + child: Row( + children: [ + Icon(Icons.adaptive.share_outlined), + const SizedBox(width: 18), + Text(L10n.of(context).inviteContact), + ], + ), + ), + PopupMenuItem( + value: SettingsAction.archive, + child: Row( + children: [ + const Icon(Icons.archive_outlined), + const SizedBox(width: 18), + Text(L10n.of(context).archive), + ], + ), + ), + if (Matrix.of(context).backgroundPush?.firebaseEnabled != true) + PopupMenuItem( + value: SettingsAction.support, + child: Row( + children: [ + const Icon(Icons.favorite, color: Colors.red), + const SizedBox(width: 18), + Text(L10n.of(context).donate), + ], + ), + ), + PopupMenuItem( + value: SettingsAction.settings, + child: Row( + children: [ + const Icon(Icons.settings_outlined), + const SizedBox(width: 18), + Text(L10n.of(context).settings), + ], + ), + ), + const PopupMenuDivider(), + for (final bundle in bundles) ...[ + if (matrix.accountBundles[bundle]!.length != 1 || + matrix.accountBundles[bundle]!.single!.userID != bundle) + PopupMenuItem( + value: null, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + bundle!, + style: TextStyle( + color: Theme.of(context).textTheme.titleMedium!.color, + fontSize: 14, + ), + ), + const Divider(height: 1), + ], + ), + ), + ...matrix.accountBundles[bundle]! + .whereType() + .where((client) => client.isLogged()) + .map( + (client) => PopupMenuItem( + value: client, + child: FutureBuilder( + future: client.fetchOwnProfile(), + builder: (context, snapshot) => Row( + children: [ + Avatar( + mxContent: snapshot.data?.avatarUrl, + name: snapshot.data?.displayName ?? + client.userID!.localpart, + size: 32, + ), + const SizedBox(width: 12), + Expanded( + child: Text( + snapshot.data?.displayName ?? + client.userID!.localpart!, + overflow: TextOverflow.ellipsis, + ), + ), + const SizedBox(width: 12), + IconButton( + icon: const Icon(Icons.edit_outlined), + onPressed: () => controller.editBundlesForAccount( + client.userID, + bundle, + ), + ), + ], + ), + ), + ), + ), + ], + PopupMenuItem( + value: SettingsAction.addAccount, + child: Row( + children: [ + const Icon(Icons.person_add_outlined), + const SizedBox(width: 18), + Text(L10n.of(context).addAccount), + ], + ), + ), + ]; + } + + @override + Widget build(BuildContext context) { + final matrix = Matrix.of(context); + + var clientCount = 0; + matrix.accountBundles.forEach((key, value) => clientCount += value.length); + return FutureBuilder( + future: matrix.client.isLogged() ? matrix.client.fetchOwnProfile() : null, + builder: (context, snapshot) => Material( + clipBehavior: Clip.hardEdge, + borderRadius: BorderRadius.circular(99), + color: Colors.transparent, + child: PopupMenuButton( + popUpAnimationStyle: FluffyThemes.isColumnMode(context) + ? AnimationStyle.noAnimation + : null, // https://github.com/flutter/flutter/issues/167180 + onSelected: (o) => _clientSelected(o, context), + itemBuilder: _bundleMenuItems, + child: Center( + child: Avatar( + mxContent: snapshot.data?.avatarUrl, + name: + snapshot.data?.displayName ?? matrix.client.userID?.localpart, + size: 32, + ), + ), + ), + ), + ); + } + + void _clientSelected( + Object object, + BuildContext context, + ) async { + if (object is Client) { + controller.setActiveClient(object); + } else if (object is String) { + controller.setActiveBundle(object); + } else if (object is SettingsAction) { + switch (object) { + case SettingsAction.addAccount: + final consent = await showOkCancelAlertDialog( + context: context, + title: L10n.of(context).addAccount, + message: L10n.of(context).enableMultiAccounts, + okLabel: L10n.of(context).next, + cancelLabel: L10n.of(context).cancel, + ); + if (consent != OkCancelResult.ok) return; + context.go('/rooms/settings/addaccount'); + break; + case SettingsAction.newGroup: + context.go('/rooms/newgroup'); + break; + case SettingsAction.invite: + FluffyShare.shareInviteLink(context); + break; + case SettingsAction.support: + launchUrlString(AppConfig.donationUrl); + break; + case SettingsAction.settings: + context.go('/rooms/settings'); + break; + case SettingsAction.archive: + context.go('/rooms/archive'); + break; + case SettingsAction.setStatus: + controller.setStatus(); + break; + } + } + } +} + +enum SettingsAction { + addAccount, + newGroup, + setStatus, + invite, + support, + settings, + archive, +} diff --git a/lib/pages/chat_list/dummy_chat_list_item.dart b/lib/pages/chat_list/dummy_chat_list_item.dart new file mode 100644 index 0000000..8652ccc --- /dev/null +++ b/lib/pages/chat_list/dummy_chat_list_item.dart @@ -0,0 +1,72 @@ +import 'package:flutter/material.dart'; + +class DummyChatListItem extends StatelessWidget { + final double opacity; + final bool animate; + + const DummyChatListItem({ + required this.opacity, + required this.animate, + super.key, + }); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + final titleColor = theme.textTheme.bodyLarge!.color!.withAlpha(100); + final subtitleColor = theme.textTheme.bodyLarge!.color!.withAlpha(50); + return Opacity( + opacity: opacity, + child: ListTile( + leading: CircleAvatar( + backgroundColor: titleColor, + child: animate + ? CircularProgressIndicator( + strokeWidth: 1, + color: theme.textTheme.bodyLarge!.color, + ) + : const SizedBox.shrink(), + ), + 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), + ), + ), + ); + } +} diff --git a/lib/pages/chat_list/navi_rail_item.dart b/lib/pages/chat_list/navi_rail_item.dart new file mode 100644 index 0000000..f29a16b --- /dev/null +++ b/lib/pages/chat_list/navi_rail_item.dart @@ -0,0 +1,99 @@ +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 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, + required this.isSelected, + required this.onTap, + required this.icon, + this.selectedIcon, + this.unreadBadgeFilter, + super.key, + }); + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + final borderRadius = BorderRadius.circular(AppConfig.borderRadius); + final icon = isSelected ? selectedIcon ?? this.icon : this.icon; + final unreadBadgeFilter = this.unreadBadgeFilter; + return HoverBuilder( + builder: (context, hovered) { + return SizedBox( + height: 72, + width: FluffyThemes.navRailWidth, + child: Stack( + children: [ + Positioned( + top: 8, + bottom: 8, + left: 0, + child: AnimatedContainer( + width: isSelected + ? FluffyThemes.isColumnMode(context) + ? 8 + : 4 + : 0, + duration: FluffyThemes.animationDuration, + curve: FluffyThemes.animationCurve, + decoration: BoxDecoration( + color: theme.colorScheme.primary, + borderRadius: const BorderRadius.only( + topRight: Radius.circular(90), + bottomRight: Radius.circular(90), + ), + ), + ), + ), + Center( + child: AnimatedScale( + scale: hovered ? 1.1 : 1.0, + duration: FluffyThemes.animationDuration, + curve: FluffyThemes.animationCurve, + child: Material( + borderRadius: borderRadius, + color: isSelected + ? theme.colorScheme.primaryContainer + : theme.colorScheme.surfaceContainerHigh, + child: Tooltip( + message: toolTip, + child: InkWell( + borderRadius: borderRadius, + onTap: onTap, + child: unreadBadgeFilter == null + ? icon + : UnreadRoomsBadge( + filter: unreadBadgeFilter, + badgePosition: BadgePosition.topEnd( + top: -12, + end: -8, + ), + child: icon, + ), + ), + ), + ), + ), + ), + ], + ), + ); + }, + ); + } +} diff --git a/lib/pages/chat_list/search_title.dart b/lib/pages/chat_list/search_title.dart new file mode 100644 index 0000000..496a5fe --- /dev/null +++ b/lib/pages/chat_list/search_title.dart @@ -0,0 +1,75 @@ +import 'package:flutter/material.dart'; + +class SearchTitle extends StatelessWidget { + final String title; + final Widget icon; + final Widget? trailing; + final void Function()? onTap; + final Color? color; + + const SearchTitle({ + required this.title, + required this.icon, + this.trailing, + this.onTap, + this.color, + super.key, + }); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + return Material( + shape: Border( + top: BorderSide( + color: theme.dividerColor, + width: 1, + ), + bottom: BorderSide( + color: theme.dividerColor, + width: 1, + ), + ), + color: color ?? theme.colorScheme.surface, + child: InkWell( + onTap: onTap, + splashColor: theme.colorScheme.surface, + child: Align( + alignment: Alignment.centerLeft, + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 16, + vertical: 8, + ), + child: IconTheme( + data: theme.iconTheme.copyWith(size: 16), + child: Row( + children: [ + icon, + const SizedBox(width: 16), + Text( + title, + textAlign: TextAlign.left, + style: TextStyle( + color: theme.colorScheme.onSurface, + fontSize: 12, + fontWeight: FontWeight.bold, + ), + ), + if (trailing != null) + Expanded( + child: Align( + alignment: Alignment.centerRight, + child: trailing!, + ), + ), + ], + ), + ), + ), + ), + ), + ); + } +} diff --git a/lib/pages/chat_list/space_view.dart b/lib/pages/chat_list/space_view.dart new file mode 100644 index 0000000..a16220c --- /dev/null +++ b/lib/pages/chat_list/space_view.dart @@ -0,0 +1,685 @@ +import 'dart:convert'; + +import 'package:flutter/material.dart'; + +import 'package:collection/collection.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'; +import 'package:fluffychat/config/themes.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/chat_list/unread_bubble.dart'; +import 'package:fluffychat/utils/localized_exception_extension.dart'; +import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; +import 'package:fluffychat/utils/stream_extension.dart'; +import 'package:fluffychat/utils/string_color.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/public_room_dialog.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_modal_action_popup.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_ok_cancel_alert_dialog.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_text_input_dialog.dart'; +import 'package:fluffychat/widgets/avatar.dart'; +import 'package:fluffychat/widgets/future_loading_dialog.dart'; +import 'package:fluffychat/widgets/hover_builder.dart'; +import 'package:fluffychat/widgets/matrix.dart'; + +enum AddRoomType { chat, subspace } + +enum SpaceChildAction { edit, moveToSpace, removeFromSpace } + +enum SpaceActions { + settings, + invite, + members, + leave, +} + +class SpaceView extends StatefulWidget { + final String spaceId; + final void Function() onBack; + final void Function(Room room) onChatTab; + final String? activeChat; + + const SpaceView({ + required this.spaceId, + required this.onBack, + required this.onChatTab, + required this.activeChat, + super.key, + }); + + @override + State createState() => _SpaceViewState(); +} + +class _SpaceViewState extends State { + final List _discoveredChildren = []; + final TextEditingController _filterController = TextEditingController(); + String? _nextBatch; + bool _noMoreRooms = false; + bool _isLoading = false; + + @override + void initState() { + _loadHierarchy(); + super.initState(); + } + + void _loadHierarchy() async { + final matrix = Matrix.of(context); + final room = matrix.client.getRoomById(widget.spaceId); + if (room == null) return; + + final cacheKey = 'spaces_history_cache${room.id}'; + if (_discoveredChildren.isEmpty) { + final cachedChildren = matrix.store.getStringList(cacheKey); + if (cachedChildren != null) { + try { + _discoveredChildren.addAll( + cachedChildren.map( + (jsonString) => + SpaceRoomsChunk$2.fromJson(jsonDecode(jsonString)), + ), + ); + } catch (e, s) { + Logs().e('Unable to json decode spaces hierarchy cache!', e, s); + matrix.store.remove(cacheKey); + } + } + } + + setState(() { + _isLoading = true; + }); + + try { + final hierarchy = await room.client.getSpaceHierarchy( + widget.spaceId, + suggestedOnly: false, + maxDepth: 2, + from: _nextBatch, + ); + if (!mounted) return; + setState(() { + if (_nextBatch == null) _discoveredChildren.clear(); + _nextBatch = hierarchy.nextBatch; + if (hierarchy.nextBatch == null) { + _noMoreRooms = true; + } + _discoveredChildren.addAll( + hierarchy.rooms.where((room) => room.roomId != widget.spaceId), + ); + _isLoading = false; + }); + + if (_nextBatch == null) { + matrix.store.setStringList( + cacheKey, + _discoveredChildren + .map((child) => jsonEncode(child.toJson())) + .toList(), + ); + } + } 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 _joinChildRoom(SpaceRoomsChunk$2 item) async { + final client = Matrix.of(context).client; + final space = client.getRoomById(widget.spaceId); + + final joined = await showAdaptiveDialog( + context: context, + builder: (_) => PublicRoomDialog( + chunk: item, + via: space?.spaceChildren + .firstWhereOrNull( + (child) => child.roomId == item.roomId, + ) + ?.via, + ), + ); + if (mounted && joined == true) { + setState(() {}); + } + } + + 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.members: + await space?.postLoad(); + context.push('/rooms/${widget.spaceId}/details/members'); + break; + case SpaceActions.leave: + final confirmed = await showOkCancelAlertDialog( + context: context, + title: L10n.of(context).areYouSure, + message: L10n.of(context).archiveRoomDescription, + okLabel: L10n.of(context).leave, + cancelLabel: L10n.of(context).cancel, + isDestructive: true, + ); + 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(); + } + } + + void _addChatOrSubspace(AddRoomType roomType) async { + final names = await showTextInputDialog( + context: context, + title: roomType == AddRoomType.subspace + ? L10n.of(context).newSubSpace + : L10n.of(context).createGroup, + hintText: roomType == AddRoomType.subspace + ? L10n.of(context).spaceName + : L10n.of(context).groupName, + minLines: 1, + maxLines: 1, + maxLength: 64, + validator: (text) { + if (text.isEmpty) { + return L10n.of(context).pleaseChoose; + } + return null; + }, + 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(); + final isPublicSpace = activeSpace.joinRules == JoinRules.public; + + if (roomType == AddRoomType.subspace) { + roomId = await client.createSpace( + name: names, + visibility: + isPublicSpace ? sdk.Visibility.public : sdk.Visibility.private, + ); + } else { + roomId = await client.createGroupChat( + enableEncryption: !isPublicSpace, + groupName: names, + preset: isPublicSpace + ? CreateRoomPreset.publicChat + : CreateRoomPreset.privateChat, + visibility: + isPublicSpace ? sdk.Visibility.public : sdk.Visibility.private, + initialState: isPublicSpace + ? null + : [ + StateEvent( + content: { + 'join_rule': 'restricted', + 'allow': [ + { + 'room_id': widget.spaceId, + 'type': 'm.room_membership', + }, + ], + }, + type: EventTypes.RoomJoinRules, + ), + ], + ); + } + await activeSpace.setSpaceChild(roomId); + }, + ); + if (result.error != null) return; + setState(() { + _nextBatch = null; + _discoveredChildren.clear(); + }); + _loadHierarchy(); + } + + void _showSpaceChildEditMenu(BuildContext posContext, String roomId) 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 action = await showMenu( + context: posContext, + position: position, + items: [ + PopupMenuItem( + value: SpaceChildAction.moveToSpace, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + const Icon(Icons.move_down_outlined), + const SizedBox(width: 12), + Text(L10n.of(context).moveToDifferentSpace), + ], + ), + ), + PopupMenuItem( + value: SpaceChildAction.edit, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + const Icon(Icons.edit_outlined), + const SizedBox(width: 12), + Text(L10n.of(context).edit), + ], + ), + ), + PopupMenuItem( + value: SpaceChildAction.removeFromSpace, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + const Icon(Icons.group_remove_outlined), + const SizedBox(width: 12), + Text(L10n.of(context).removeFromSpace), + ], + ), + ), + ], + ); + if (action == null) return; + if (!mounted) return; + final space = Matrix.of(context).client.getRoomById(widget.spaceId); + if (space == null) return; + switch (action) { + case SpaceChildAction.edit: + context.push('/rooms/${widget.spaceId}/details'); + case SpaceChildAction.moveToSpace: + final spacesWithPowerLevels = space.client.rooms + .where( + (room) => + room.isSpace && + room.canChangeStateEvent(EventTypes.SpaceChild) && + room.id != widget.spaceId, + ) + .toList(); + final newSpace = await showModalActionPopup( + context: context, + title: L10n.of(context).space, + actions: spacesWithPowerLevels + .map( + (space) => AdaptiveModalAction( + value: space, + label: space + .getLocalizedDisplayname(MatrixLocals(L10n.of(context))), + ), + ) + .toList(), + ); + if (newSpace == null) return; + final result = await showFutureLoadingDialog( + context: context, + future: () async { + await newSpace.setSpaceChild(newSpace.id); + await space.removeSpaceChild(roomId); + }, + ); + if (result.isError) return; + if (!mounted) return; + _nextBatch = null; + _loadHierarchy(); + return; + + case SpaceChildAction.removeFromSpace: + final consent = await showOkCancelAlertDialog( + context: context, + title: L10n.of(context).removeFromSpace, + message: L10n.of(context).removeFromSpaceDescription, + ); + if (consent != OkCancelResult.ok) return; + if (!mounted) return; + final result = await showFutureLoadingDialog( + context: context, + future: () => space.removeSpaceChild(roomId), + ); + if (result.isError) return; + if (!mounted) return; + _nextBatch = null; + _loadHierarchy(); + return; + } + } + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + final room = Matrix.of(context).client.getRoomById(widget.spaceId); + final displayname = + room?.getLocalizedDisplayname() ?? L10n.of(context).nothingFound; + const avatarSize = Avatar.defaultSize / 1.5; + final isAdmin = room?.canChangeStateEvent( + EventTypes.SpaceChild, + ) == + true; + return Scaffold( + appBar: AppBar( + leading: FluffyThemes.isColumnMode(context) + ? null + : Center( + child: CloseButton( + onPressed: widget.onBack, + ), + ), + automaticallyImplyLeading: false, + titleSpacing: FluffyThemes.isColumnMode(context) ? null : 0, + title: ListTile( + contentPadding: EdgeInsets.zero, + leading: Avatar( + size: avatarSize, + mxContent: room?.avatar, + name: displayname, + border: BorderSide(width: 1, color: theme.dividerColor), + borderRadius: BorderRadius.circular(AppConfig.borderRadius / 2), + ), + title: Text( + displayname, + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + ), + actions: [ + if (isAdmin) + PopupMenuButton( + icon: const Icon(Icons.add_outlined), + onSelected: _addChatOrSubspace, + tooltip: L10n.of(context).addChatOrSubSpace, + itemBuilder: (context) => [ + PopupMenuItem( + value: AddRoomType.chat, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + const Icon(Icons.group_add_outlined), + const SizedBox(width: 12), + Text(L10n.of(context).newGroup), + ], + ), + ), + PopupMenuItem( + value: AddRoomType.subspace, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + const Icon(Icons.workspaces_outlined), + const SizedBox(width: 12), + Text(L10n.of(context).newSubSpace), + ], + ), + ), + ], + ), + PopupMenuButton( + useRootNavigator: true, + 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.members, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + const Icon(Icons.group_outlined), + const SizedBox(width: 12), + Text( + L10n.of(context).countParticipants( + room?.summary.mJoinedMemberCount ?? 1, + ), + ), + ], + ), + ), + 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 filter = _filterController.text.trim().toLowerCase(); + return CustomScrollView( + slivers: [ + SliverAppBar( + floating: true, + scrolledUnderElevation: 0, + backgroundColor: Colors.transparent, + automaticallyImplyLeading: false, + title: TextField( + controller: _filterController, + onChanged: (_) => setState(() {}), + textInputAction: TextInputAction.search, + decoration: InputDecoration( + filled: true, + contentPadding: EdgeInsets.zero, + hintText: L10n.of(context).search, + hintStyle: TextStyle( + color: theme.colorScheme.onPrimaryContainer, + fontWeight: FontWeight.normal, + ), + floatingLabelBehavior: FloatingLabelBehavior.never, + prefixIcon: IconButton( + onPressed: () {}, + icon: Icon( + Icons.search_outlined, + color: theme.colorScheme.onPrimaryContainer, + ), + ), + ), + ), + ), + SliverList.builder( + itemCount: _discoveredChildren.length + 1, + itemBuilder: (context, i) { + if (i == _discoveredChildren.length) { + if (_noMoreRooms) { + return const SizedBox.shrink(); + } + return Padding( + padding: const EdgeInsets.symmetric( + horizontal: 12.0, + vertical: 2.0, + ), + child: TextButton( + onPressed: _isLoading ? null : _loadHierarchy, + child: _isLoading + ? const CircularProgressIndicator.adaptive() + : 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(); + } + var joinedRoom = room.client.getRoomById(item.roomId); + if (joinedRoom?.membership == Membership.leave) { + joinedRoom = null; + } + return Padding( + padding: const EdgeInsets.symmetric( + horizontal: 8, + vertical: 1, + ), + child: Material( + borderRadius: + BorderRadius.circular(AppConfig.borderRadius), + clipBehavior: Clip.hardEdge, + color: joinedRoom != null && + widget.activeChat == joinedRoom.id + ? theme.colorScheme.secondaryContainer + : Colors.transparent, + child: HoverBuilder( + builder: (context, hovered) => ListTile( + visualDensity: + const VisualDensity(vertical: -0.5), + contentPadding: + const EdgeInsets.symmetric(horizontal: 8), + onTap: joinedRoom != null + ? () => widget.onChatTab(joinedRoom!) + : () => _joinChildRoom(item), + onLongPress: isAdmin + ? () => _showSpaceChildEditMenu( + context, + item.roomId, + ) + : null, + leading: hovered && isAdmin + ? SizedBox.square( + dimension: avatarSize, + child: IconButton( + splashRadius: avatarSize, + iconSize: 14, + style: IconButton.styleFrom( + foregroundColor: theme.colorScheme + .onTertiaryContainer, + backgroundColor: theme + .colorScheme.tertiaryContainer, + ), + onPressed: () => + _showSpaceChildEditMenu( + context, + item.roomId, + ), + icon: const Icon(Icons.edit_outlined), + ), + ) + : Avatar( + size: avatarSize, + mxContent: item.avatarUrl, + name: '#', + backgroundColor: + theme.colorScheme.surfaceContainer, + textColor: item.name?.darkColor ?? + theme.colorScheme.onSurface, + border: item.roomType == 'm.space' + ? BorderSide( + color: theme.colorScheme + .surfaceContainerHighest, + ) + : null, + borderRadius: item.roomType == 'm.space' + ? BorderRadius.circular( + AppConfig.borderRadius / 4, + ) + : null, + ), + title: Row( + children: [ + Expanded( + child: Opacity( + opacity: joinedRoom == null ? 0.5 : 1, + child: Text( + displayname, + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + ), + ), + if (joinedRoom != null) + UnreadBubble(room: joinedRoom) + else + const Icon(Icons.chevron_right_outlined), + ], + ), + ), + ), + ), + ); + }, + ), + const SliverPadding(padding: EdgeInsets.only(top: 32)), + ], + ); + }, + ), + ); + } +} diff --git a/lib/pages/chat_list/status_msg_list.dart b/lib/pages/chat_list/status_msg_list.dart new file mode 100644 index 0000000..f49da93 --- /dev/null +++ b/lib/pages/chat_list/status_msg_list.dart @@ -0,0 +1,347 @@ +import 'package:flutter/material.dart'; + +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/config/themes.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/matrix.dart'; +import '../../widgets/adaptive_dialogs/user_dialog.dart'; + +class StatusMessageList extends StatelessWidget { + final void Function() onStatusEdit; + + const StatusMessageList({ + required this.onStatusEdit, + super.key, + }); + + static const double height = 116; + + void _onStatusTab(BuildContext context, Profile profile) { + final client = Matrix.of(context).client; + if (profile.userId == client.userID) return onStatusEdit(); + + UserDialog.show( + context: context, + profile: profile, + ); + return; + } + + @override + Widget build(BuildContext context) { + final client = Matrix.of(context).client; + final interestingPresences = client.interestingPresences; + + return StreamBuilder( + stream: client.onSync.stream.rateLimit(const Duration(seconds: 3)), + builder: (context, snapshot) { + return AnimatedSize( + duration: FluffyThemes.animationDuration, + curve: Curves.easeInOut, + child: FutureBuilder( + initialData: interestingPresences + // ignore: deprecated_member_use + .map((userId) => client.presences[userId]) + .whereType(), + future: Future.wait( + client.interestingPresences.map( + (userId) => client.fetchCurrentPresence( + userId, + fetchOnlyFromCached: true, + ), + ), + ), + builder: (context, snapshot) { + final presences = + snapshot.data?.where(isInterestingPresence).toList(); + + // If no other presences than the own entry is interesting, we + // hide the presence header. + if (presences == null || presences.length <= 1) { + return const SizedBox.shrink(); + } + + // Make sure own entry is at the first position. Sort by last + // active instead. + presences.sort((a, b) { + if (a.userid == client.userID) return -1; + if (b.userid == client.userID) return 1; + return b.sortOrderDateTime.compareTo(a.sortOrderDateTime); + }); + + return SizedBox( + height: StatusMessageList.height, + child: ListView.builder( + padding: const EdgeInsets.only( + left: 8.0, + right: 8.0, + top: 8.0, + bottom: 6.0, + ), + scrollDirection: Axis.horizontal, + itemCount: presences.length, + itemBuilder: (context, i) => PresenceAvatar( + presence: presences[i], + height: StatusMessageList.height, + onTap: (profile) => _onStatusTab(context, profile), + ), + ), + ); + }, + ), + ); + }, + ); + } +} + +class PresenceAvatar extends StatelessWidget { + final CachedPresence presence; + final double height; + final void Function(Profile) onTap; + + const PresenceAvatar({ + required this.presence, + required this.height, + required this.onTap, + super.key, + }); + + @override + Widget build(BuildContext context) { + final avatarSize = height - 16 - 16 - 6; + final client = Matrix.of(context).client; + return FutureBuilder( + future: client.getProfileFromUserId(presence.userid), + builder: (context, snapshot) { + final theme = Theme.of(context); + + final profile = snapshot.data; + final displayName = profile?.displayName ?? + presence.userid.localpart ?? + presence.userid; + final statusMsg = presence.statusMsg; + + const statusMsgBubbleElevation = 6.0; + final statusMsgBubbleShadowColor = theme.colorScheme.surface; + final statusMsgBubbleColor = Colors.white.withAlpha(230); + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 8.0), + child: SizedBox( + width: avatarSize, + child: Column( + children: [ + HoverBuilder( + builder: (context, hovered) { + return AnimatedScale( + scale: hovered ? 1.15 : 1.0, + duration: FluffyThemes.animationDuration, + curve: FluffyThemes.animationCurve, + child: InkWell( + borderRadius: BorderRadius.circular(avatarSize), + onTap: profile == null ? null : () => onTap(profile), + child: Material( + borderRadius: BorderRadius.circular(avatarSize), + child: Stack( + children: [ + Container( + padding: const EdgeInsets.all(3), + decoration: BoxDecoration( + gradient: presence.gradient, + borderRadius: + BorderRadius.circular(avatarSize), + ), + alignment: Alignment.center, + child: Container( + height: avatarSize - 6, + alignment: Alignment.center, + decoration: BoxDecoration( + color: theme.colorScheme.surface, + borderRadius: + BorderRadius.circular(avatarSize), + ), + padding: const EdgeInsets.all(3.0), + child: Avatar( + name: displayName, + mxContent: profile?.avatarUrl, + size: avatarSize - 12, + ), + ), + ), + if (presence.userid == client.userID) + Positioned( + right: 0, + bottom: 0, + child: SizedBox( + width: 24, + height: 24, + child: FloatingActionButton.small( + heroTag: null, + onPressed: () => onTap( + profile ?? + Profile(userId: presence.userid), + ), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8), + ), + child: const Icon( + Icons.add_outlined, + size: 16, + ), + ), + ), + ), + if (statusMsg != null) ...[ + Positioned( + left: 0, + top: 0, + right: 8, + child: Column( + spacing: 2, + crossAxisAlignment: + CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + Material( + elevation: statusMsgBubbleElevation, + shadowColor: statusMsgBubbleShadowColor, + borderRadius: BorderRadius.circular( + AppConfig.borderRadius / 2, + ), + color: statusMsgBubbleColor, + child: Padding( + padding: const EdgeInsets.symmetric( + vertical: 2.0, + horizontal: 4.0, + ), + child: Text( + statusMsg, + maxLines: 2, + overflow: TextOverflow.ellipsis, + style: const TextStyle( + color: Colors.black, + fontSize: 9, + ), + ), + ), + ), + Padding( + padding: + const EdgeInsets.only(left: 8.0), + child: Material( + color: statusMsgBubbleColor, + elevation: statusMsgBubbleElevation, + shadowColor: + statusMsgBubbleShadowColor, + borderRadius: BorderRadius.circular( + AppConfig.borderRadius, + ), + child: const SizedBox.square( + dimension: 8, + ), + ), + ), + Padding( + padding: + const EdgeInsets.only(left: 13.0), + child: Material( + color: statusMsgBubbleColor, + elevation: statusMsgBubbleElevation, + shadowColor: + statusMsgBubbleShadowColor, + borderRadius: BorderRadius.circular( + AppConfig.borderRadius, + ), + child: const SizedBox.square( + dimension: 5, + ), + ), + ), + ], + ), + ), + ], + ], + ), + ), + ), + ); + }, + ), + const Spacer(), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 4.0), + child: Text( + displayName, + textAlign: TextAlign.center, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: const TextStyle( + fontSize: 11, + ), + ), + ), + ], + ), + ), + ); + }, + ); + } +} + +extension on Client { + Set get interestingPresences { + final allHeroes = rooms.map((room) => room.summary.mHeroes).fold( + {}, + (previousValue, element) => previousValue..addAll(element ?? {}), + ); + allHeroes.add(userID!); + return allHeroes; + } +} + +bool isInterestingPresence(CachedPresence presence) => + !presence.presence.isOffline || (presence.statusMsg?.isNotEmpty ?? false); + +extension on CachedPresence { + DateTime get sortOrderDateTime => + lastActiveTimestamp ?? + (currentlyActive == true + ? DateTime.now() + : DateTime.fromMillisecondsSinceEpoch(0)); + + LinearGradient get gradient => presence.isOnline == true + ? LinearGradient( + colors: [ + Colors.green, + Colors.green.shade200, + Colors.green.shade900, + ], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ) + : presence.isUnavailable + ? LinearGradient( + colors: [ + Colors.yellow, + Colors.yellow.shade200, + Colors.yellow.shade900, + ], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ) + : LinearGradient( + colors: [ + Colors.grey, + Colors.grey.shade200, + Colors.grey.shade900, + ], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ); +} diff --git a/lib/pages/chat_list/unread_bubble.dart b/lib/pages/chat_list/unread_bubble.dart new file mode 100644 index 0000000..964094f --- /dev/null +++ b/lib/pages/chat_list/unread_bubble.dart @@ -0,0 +1,56 @@ +import 'package:flutter/material.dart'; + +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/config/themes.dart'; + +class UnreadBubble extends StatelessWidget { + final Room room; + const UnreadBubble({required this.room, super.key}); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + final unread = room.isUnread; + final hasNotifications = room.notificationCount > 0; + final unreadBubbleSize = unread || room.hasNewMessages + ? room.notificationCount > 0 + ? 20.0 + : 14.0 + : 0.0; + return AnimatedContainer( + duration: FluffyThemes.animationDuration, + curve: FluffyThemes.animationCurve, + alignment: Alignment.center, + 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 + ? theme.colorScheme.error + : hasNotifications || room.markedUnread + ? theme.colorScheme.primary + : theme.colorScheme.primaryContainer, + borderRadius: BorderRadius.circular(7), + ), + child: hasNotifications + ? Text( + room.notificationCount.toString(), + style: TextStyle( + color: room.highlightCount > 0 + ? theme.colorScheme.onError + : hasNotifications + ? theme.colorScheme.onPrimary + : theme.colorScheme.onPrimaryContainer, + fontSize: 13, + fontWeight: FontWeight.w500, + ), + textAlign: TextAlign.center, + ) + : const SizedBox.shrink(), + ); + } +} diff --git a/lib/pages/chat_members/chat_members.dart b/lib/pages/chat_members/chat_members.dart new file mode 100644 index 0000000..028cbc1 --- /dev/null +++ b/lib/pages/chat_members/chat_members.dart @@ -0,0 +1,115 @@ +import 'dart:async'; + +import 'package:flutter/material.dart'; + +import 'package:matrix/matrix.dart'; + +import '../../widgets/matrix.dart'; +import 'chat_members_view.dart'; + +class ChatMembersPage extends StatefulWidget { + final String roomId; + + const ChatMembersPage({required this.roomId, super.key}); + + @override + State createState() => ChatMembersController(); +} + +class ChatMembersController extends State { + List? members; + List? filteredMembers; + Object? error; + Membership membershipFilter = Membership.join; + + final TextEditingController filterController = TextEditingController(); + + void setMembershipFilter(Membership membership) { + membershipFilter = membership; + setFilter(); + } + + void setFilter([_]) async { + final filter = filterController.text.toLowerCase().trim(); + + final members = this + .members + ?.where((member) => member.membership == membershipFilter) + .toList(); + + if (filter.isEmpty) { + setState(() { + filteredMembers = members + ?..sort((b, a) => a.powerLevel.compareTo(b.powerLevel)); + }); + return; + } + setState(() { + filteredMembers = members + ?.where( + (user) => + user.displayName?.toLowerCase().contains(filter) ?? + user.id.toLowerCase().contains(filter), + ) + .toList() + ?..sort((b, a) => a.powerLevel.compareTo(b.powerLevel)); + }); + } + + void refreshMembers([_]) async { + Logs().d('Load room members from', widget.roomId); + try { + setState(() { + error = null; + }); + final participants = await Matrix.of(context) + .client + .getRoomById(widget.roomId) + ?.requestParticipants( + [...Membership.values]..remove(Membership.leave), + ); + + if (!mounted) return; + + setState(() { + members = participants; + }); + setFilter(); + } catch (e, s) { + Logs() + .d('Unable to request participants. Try again in 3 seconds...', e, s); + setState(() { + error = e; + }); + } + } + + StreamSubscription? _updateSub; + + @override + void initState() { + super.initState(); + refreshMembers(); + + _updateSub = Matrix.of(context) + .client + .onSync + .stream + .where( + (syncUpdate) => + syncUpdate.rooms?.join?[widget.roomId]?.timeline?.events + ?.any((state) => state.type == EventTypes.RoomMember) ?? + false, + ) + .listen(refreshMembers); + } + + @override + void dispose() { + _updateSub?.cancel(); + super.dispose(); + } + + @override + Widget build(BuildContext context) => ChatMembersView(this); +} diff --git a/lib/pages/chat_members/chat_members_view.dart b/lib/pages/chat_members/chat_members_view.dart new file mode 100644 index 0000000..e4c812e --- /dev/null +++ b/lib/pages/chat_members/chat_members_view.dart @@ -0,0 +1,197 @@ +import 'package:flutter/material.dart'; + +import 'package:go_router/go_router.dart'; +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/localized_exception_extension.dart'; +import '../../widgets/layouts/max_width_body.dart'; +import '../../widgets/matrix.dart'; +import '../chat_details/participant_list_item.dart'; +import 'chat_members.dart'; + +class ChatMembersView extends StatelessWidget { + final ChatMembersController controller; + + const ChatMembersView(this.controller, {super.key}); + + @override + Widget build(BuildContext context) { + final room = + Matrix.of(context).client.getRoomById(controller.widget.roomId); + if (room == null) { + return Scaffold( + appBar: AppBar( + title: Text(L10n.of(context).oopsSomethingWentWrong), + ), + body: Center( + child: Text(L10n.of(context).youAreNoLongerParticipatingInThisChat), + ), + ); + } + + final members = controller.filteredMembers; + + final roomCount = (room.summary.mJoinedMemberCount ?? 0) + + (room.summary.mInvitedMemberCount ?? 0); + + final error = controller.error; + final theme = Theme.of(context); + + return Scaffold( + appBar: AppBar( + leading: const Center(child: BackButton()), + title: Text( + L10n.of(context).countParticipants(roomCount), + ), + actions: [ + if (room.canInvite) + IconButton( + onPressed: () => context.go('/rooms/${room.id}/invite'), + icon: const Icon( + Icons.person_add_outlined, + ), + ), + ], + ), + body: MaxWidthBody( + withScrolling: false, + innerPadding: const EdgeInsets.symmetric(vertical: 8), + child: error != null + ? Center( + child: Padding( + padding: const EdgeInsets.all(16.0), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + const Icon(Icons.error_outline), + Text(error.toLocalizedString(context)), + const SizedBox(height: 8), + OutlinedButton.icon( + onPressed: controller.refreshMembers, + icon: const Icon(Icons.refresh_outlined), + label: Text(L10n.of(context).tryAgain), + ), + ], + ), + ), + ) + : members == null + ? const Center( + child: Padding( + padding: EdgeInsets.all(16.0), + child: CircularProgressIndicator.adaptive(), + ), + ) + : ListView.builder( + shrinkWrap: true, + itemCount: members.length + 1, + itemBuilder: (context, i) { + if (i == 0) { + final availableFilters = Membership.values + .where( + (membership) => + controller.members?.any( + (member) => member.membership == membership, + ) ?? + false, + ) + .toList(); + availableFilters + .sort((a, b) => a == Membership.join ? -1 : 1); + return Column( + mainAxisSize: MainAxisSize.min, + children: [ + Padding( + padding: const EdgeInsets.all(16.0), + child: TextField( + controller: controller.filterController, + onChanged: controller.setFilter, + decoration: InputDecoration( + filled: true, + fillColor: + theme.colorScheme.secondaryContainer, + border: OutlineInputBorder( + borderSide: BorderSide.none, + borderRadius: BorderRadius.circular(99), + ), + hintStyle: TextStyle( + color: theme.colorScheme.onPrimaryContainer, + fontWeight: FontWeight.normal, + ), + prefixIcon: const Icon(Icons.search_outlined), + hintText: L10n.of(context).search, + ), + ), + ), + if (availableFilters.length > 1) + SizedBox( + height: 64, + child: ListView.builder( + padding: const EdgeInsets.symmetric( + horizontal: 12.0, + vertical: 12.0, + ), + scrollDirection: Axis.horizontal, + itemCount: availableFilters.length, + itemBuilder: (context, i) => Padding( + padding: const EdgeInsets.symmetric( + horizontal: 4.0, + ), + child: FilterChip( + label: Text( + switch (availableFilters[i]) { + Membership.ban => + L10n.of(context).banned, + Membership.invite => + L10n.of(context).countInvited( + room.summary + .mInvitedMemberCount ?? + controller.members + ?.where( + (member) => + member.membership == + Membership.invite, + ) + .length ?? + 0, + ), + Membership.join => + L10n.of(context).countParticipants( + room.summary.mJoinedMemberCount ?? + controller.members + ?.where( + (member) => + member.membership == + Membership.join, + ) + .length ?? + 0, + ), + Membership.knock => + L10n.of(context).knocking, + Membership.leave => + L10n.of(context).leftTheChat, + }, + ), + selected: controller.membershipFilter == + availableFilters[i], + onSelected: (_) => + controller.setMembershipFilter( + availableFilters[i], + ), + ), + ), + ), + ), + ], + ); + } + i--; + return ParticipantListItem(members[i]); + }, + ), + ), + ); + } +} diff --git a/lib/pages/chat_permissions_settings/chat_permissions_settings.dart b/lib/pages/chat_permissions_settings/chat_permissions_settings.dart new file mode 100644 index 0000000..28f0a43 --- /dev/null +++ b/lib/pages/chat_permissions_settings/chat_permissions_settings.dart @@ -0,0 +1,76 @@ +import 'dart:developer'; + +import 'package:flutter/material.dart'; + +import 'package:go_router/go_router.dart'; +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/chat_permissions_settings/chat_permissions_settings_view.dart'; +import 'package:fluffychat/widgets/future_loading_dialog.dart'; +import 'package:fluffychat/widgets/matrix.dart'; +import 'package:fluffychat/widgets/permission_slider_dialog.dart'; + +class ChatPermissionsSettings extends StatefulWidget { + const ChatPermissionsSettings({super.key}); + + @override + ChatPermissionsSettingsController createState() => + ChatPermissionsSettingsController(); +} + +class ChatPermissionsSettingsController extends State { + String? get roomId => GoRouterState.of(context).pathParameters['roomid']; + void editPowerLevel( + BuildContext context, + String key, + int currentLevel, { + int? newLevel, + String? category, + }) async { + final room = Matrix.of(context).client.getRoomById(roomId!)!; + if (!room.canSendEvent(EventTypes.RoomPowerLevels)) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text(L10n.of(context).noPermission)), + ); + return; + } + newLevel ??= await showPermissionChooser( + context, + currentLevel: currentLevel, + ); + if (newLevel == null) return; + final content = Map.from( + room.getState(EventTypes.RoomPowerLevels)!.content, + ); + if (category != null) { + if (!content.containsKey(category)) { + content[category] = {}; + } + content[category][key] = newLevel; + } else { + content[key] = newLevel; + } + inspect(content); + await showFutureLoadingDialog( + context: context, + future: () => room.client.setRoomStateWithKey( + room.id, + EventTypes.RoomPowerLevels, + '', + content, + ), + ); + } + + Stream get onChanged => Matrix.of(context).client.onSync.stream.where( + (e) => + (e.rooms?.join?.containsKey(roomId) ?? false) && + (e.rooms!.join![roomId!]?.timeline?.events + ?.any((s) => s.type == EventTypes.RoomPowerLevels) ?? + false), + ); + + @override + Widget build(BuildContext context) => ChatPermissionsSettingsView(this); +} diff --git a/lib/pages/chat_permissions_settings/chat_permissions_settings_view.dart b/lib/pages/chat_permissions_settings/chat_permissions_settings_view.dart new file mode 100644 index 0000000..a1f7486 --- /dev/null +++ b/lib/pages/chat_permissions_settings/chat_permissions_settings_view.dart @@ -0,0 +1,145 @@ +import 'package:flutter/material.dart'; + +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/chat_permissions_settings/chat_permissions_settings.dart'; +import 'package:fluffychat/pages/chat_permissions_settings/permission_list_tile.dart'; +import 'package:fluffychat/widgets/layouts/max_width_body.dart'; +import 'package:fluffychat/widgets/matrix.dart'; + +class ChatPermissionsSettingsView extends StatelessWidget { + final ChatPermissionsSettingsController controller; + + const ChatPermissionsSettingsView(this.controller, {super.key}); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + return Scaffold( + appBar: AppBar( + leading: const Center(child: BackButton()), + title: Text(L10n.of(context).chatPermissions), + ), + body: MaxWidthBody( + child: StreamBuilder( + stream: controller.onChanged, + builder: (context, _) { + final roomId = controller.roomId; + final room = roomId == null + ? null + : Matrix.of(context).client.getRoomById(roomId); + if (room == null) { + return Center(child: Text(L10n.of(context).noRoomsFound)); + } + final powerLevelsContent = Map.from( + room.getState(EventTypes.RoomPowerLevels)?.content ?? {}, + ); + final powerLevels = Map.from(powerLevelsContent) + ..removeWhere((k, v) => v is! int); + final eventsPowerLevels = Map.from( + powerLevelsContent.tryGetMap('events') ?? {}, + )..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.dividerColor), + ListTile( + title: Text( + L10n.of(context).chatPermissions, + style: TextStyle( + color: theme.colorScheme.primary, + fontWeight: FontWeight.bold, + ), + ), + ), + Column( + mainAxisSize: MainAxisSize.min, + children: [ + for (final entry in powerLevels.entries) + PermissionsListTile( + permissionKey: entry.key, + permission: entry.value, + onChanged: (level) => controller.editPowerLevel( + context, + entry.key, + entry.value, + newLevel: level, + ), + canEdit: room.canChangePowerLevel, + ), + Divider(color: theme.dividerColor), + ListTile( + title: Text( + L10n.of(context).notifications, + style: TextStyle( + color: theme.colorScheme.primary, + fontWeight: FontWeight.bold, + ), + ), + ), + Builder( + builder: (context) { + const key = 'rooms'; + final value = powerLevelsContent + .containsKey('notifications') + ? powerLevelsContent + .tryGetMap('notifications') + ?.tryGet('rooms') ?? + 0 + : 0; + return PermissionsListTile( + permissionKey: key, + permission: value, + category: 'notifications', + canEdit: room.canChangePowerLevel, + onChanged: (level) => controller.editPowerLevel( + context, + key, + value, + newLevel: level, + category: 'notifications', + ), + ); + }, + ), + Divider(color: theme.dividerColor), + ListTile( + title: Text( + L10n.of(context).configureChat, + style: TextStyle( + color: theme.colorScheme.primary, + fontWeight: FontWeight.bold, + ), + ), + ), + for (final entry in eventsPowerLevels.entries) + PermissionsListTile( + permissionKey: entry.key, + category: 'events', + permission: entry.value ?? 0, + canEdit: room.canChangePowerLevel, + onChanged: (level) => controller.editPowerLevel( + context, + entry.key, + entry.value ?? 0, + newLevel: level, + category: 'events', + ), + ), + ], + ), + ], + ); + }, + ), + ), + ); + } +} diff --git a/lib/pages/chat_permissions_settings/permission_list_tile.dart b/lib/pages/chat_permissions_settings/permission_list_tile.dart new file mode 100644 index 0000000..b51cb32 --- /dev/null +++ b/lib/pages/chat_permissions_settings/permission_list_tile.dart @@ -0,0 +1,126 @@ +import 'package:flutter/material.dart'; + +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/l10n/l10n.dart'; + +class PermissionsListTile extends StatelessWidget { + final String permissionKey; + final int permission; + final String? category; + final void Function(int? level)? onChanged; + final bool canEdit; + + const PermissionsListTile({ + super.key, + required this.permissionKey, + required this.permission, + this.category, + required this.onChanged, + required this.canEdit, + }); + + String getLocalizedPowerLevelString(BuildContext context) { + if (category == null) { + switch (permissionKey) { + case 'users_default': + return L10n.of(context).defaultPermissionLevel; + case 'events_default': + return L10n.of(context).sendMessages; + case 'state_default': + return L10n.of(context).changeGeneralChatSettings; + case 'ban': + return L10n.of(context).banFromChat; + case 'kick': + return L10n.of(context).kickFromChat; + case 'redact': + return L10n.of(context).deleteMessage; + case 'invite': + return L10n.of(context).inviteOtherUsers; + } + } else if (category == 'notifications') { + switch (permissionKey) { + case 'rooms': + 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).changeTheChatPermissions; + case EventTypes.HistoryVisibility: + return L10n.of(context).changeTheVisibilityOfChatHistory; + case EventTypes.RoomCanonicalAlias: + return L10n.of(context).changeTheCanonicalRoomAlias; + case EventTypes.RoomAvatar: + return L10n.of(context).editRoomAvatar; + case EventTypes.RoomTombstone: + return L10n.of(context).replaceRoomWithNewerVersion; + case EventTypes.Encryption: + return L10n.of(context).enableEncryption; + case 'm.room.server_acl': + return L10n.of(context).editBlockedServers; + } + } + return permissionKey; + } + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + final color = permission >= 100 + ? Colors.orangeAccent + : permission >= 50 + ? Colors.blueAccent + : Colors.greenAccent; + return ListTile( + title: Text( + getLocalizedPowerLevelString(context), + style: theme.textTheme.titleSmall, + ), + trailing: Material( + 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), + underline: const SizedBox.shrink(), + onChanged: canEdit ? onChanged : null, + value: permission, + items: [ + DropdownMenuItem( + value: permission < 50 ? permission : 0, + 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 < 100 && permission >= 50 ? permission : 50, + ), + ), + ), + DropdownMenuItem( + value: permission >= 100 ? permission : 100, + child: Text( + L10n.of(context) + .adminLevel(permission >= 100 ? permission : 100), + ), + ), + DropdownMenuItem( + value: null, + child: Text(L10n.of(context).custom), + ), + ], + ), + ), + ); + } +} diff --git a/lib/pages/chat_search/chat_search_files_tab.dart b/lib/pages/chat_search/chat_search_files_tab.dart new file mode 100644 index 0000000..81fdf51 --- /dev/null +++ b/lib/pages/chat_search/chat_search_files_tab.dart @@ -0,0 +1,175 @@ +import 'package:flutter/material.dart'; + +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/date_time_extension.dart'; +import 'package:fluffychat/utils/matrix_sdk_extensions/event_extension.dart'; +import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; + +class ChatSearchFilesTab extends StatelessWidget { + final Room room; + final Stream<(List, String?)>? searchStream; + final void Function({ + String? prevBatch, + List? previousSearchResult, + }) startSearch; + + const ChatSearchFilesTab({ + required this.room, + required this.startSearch, + required this.searchStream, + super.key, + }); + + @override + Widget build(BuildContext context) { + return StreamBuilder( + stream: searchStream, + builder: (context, snapshot) { + final theme = Theme.of(context); + final events = snapshot.data?.$1; + if (searchStream == null || events == null) { + return Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const CircularProgressIndicator.adaptive(strokeWidth: 2), + const SizedBox(height: 8), + Text( + L10n.of(context).searchIn( + room.getLocalizedDisplayname( + MatrixLocals(L10n.of(context)), + ), + ), + ), + ], + ); + } + + if (events.isEmpty) { + return Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Icon(Icons.file_present_outlined, size: 64), + const SizedBox(height: 8), + Text(L10n.of(context).nothingFound), + ], + ); + } + + return SelectionArea( + child: ListView.builder( + padding: const EdgeInsets.all(8.0), + itemCount: events.length + 1, + itemBuilder: (context, i) { + if (i == events.length) { + if (snapshot.connectionState != ConnectionState.done) { + return const Padding( + padding: EdgeInsets.all(16.0), + child: Center( + child: CircularProgressIndicator.adaptive( + strokeWidth: 2, + ), + ), + ); + } + final nextBatch = snapshot.data?.$2; + if (nextBatch == null) { + return const SizedBox.shrink(); + } + return Center( + child: Padding( + padding: const EdgeInsets.all(16.0), + child: TextButton.icon( + style: TextButton.styleFrom( + backgroundColor: theme.colorScheme.secondaryContainer, + foregroundColor: theme.colorScheme.onSecondaryContainer, + ), + onPressed: () => startSearch( + prevBatch: nextBatch, + previousSearchResult: events, + ), + icon: const Icon( + Icons.arrow_downward_outlined, + ), + label: Text(L10n.of(context).searchMore), + ), + ), + ); + } + final event = events[i]; + final filename = event.content.tryGet('filename') ?? + event.content.tryGet('body') ?? + L10n.of(context).unknownEvent('File'); + final filetype = (filename.contains('.') + ? filename.split('.').last.toUpperCase() + : event.content + .tryGetMap('info') + ?.tryGet('mimetype') + ?.toUpperCase() ?? + 'UNKNOWN'); + final sizeString = event.sizeString; + final prevEvent = i > 0 ? events[i - 1] : null; + final sameEnvironment = prevEvent == null + ? false + : prevEvent.originServerTs + .sameEnvironment(event.originServerTs); + return Padding( + padding: const EdgeInsets.all(8.0), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + if (!sameEnvironment) ...[ + Row( + children: [ + Expanded( + child: Container( + height: 1, + color: theme.dividerColor, + ), + ), + Padding( + padding: const EdgeInsets.all(8.0), + child: Text( + event.originServerTs.localizedTime(context), + style: theme.textTheme.labelSmall, + textAlign: TextAlign.center, + ), + ), + Expanded( + child: Container( + height: 1, + color: theme.dividerColor, + ), + ), + ], + ), + const SizedBox(height: 4), + ], + Material( + borderRadius: + BorderRadius.circular(AppConfig.borderRadius), + color: theme.colorScheme.onInverseSurface, + clipBehavior: Clip.hardEdge, + child: ListTile( + leading: const Icon(Icons.file_present_outlined), + title: Text( + filename, + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + subtitle: Text('$sizeString | $filetype'), + onTap: () => event.saveFile(context), + ), + ), + ], + ), + ); + }, + ), + ); + }, + ); + } +} diff --git a/lib/pages/chat_search/chat_search_images_tab.dart b/lib/pages/chat_search/chat_search_images_tab.dart new file mode 100644 index 0000000..566e44c --- /dev/null +++ b/lib/pages/chat_search/chat_search_images_tab.dart @@ -0,0 +1,194 @@ +import 'package:flutter/material.dart'; + +import 'package:intl/intl.dart'; +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/chat/events/video_player.dart'; +import 'package:fluffychat/pages/image_viewer/image_viewer.dart'; +import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; +import 'package:fluffychat/widgets/mxc_image.dart'; + +class ChatSearchImagesTab extends StatelessWidget { + final Room room; + final Stream<(List, String?)>? searchStream; + final void Function({ + String? prevBatch, + List? previousSearchResult, + }) startSearch; + + const ChatSearchImagesTab({ + required this.room, + required this.startSearch, + required this.searchStream, + super.key, + }); + + @override + Widget build(BuildContext context) { + final borderRadius = BorderRadius.circular(AppConfig.borderRadius / 2); + return StreamBuilder( + stream: searchStream, + builder: (context, snapshot) { + final theme = Theme.of(context); + final events = snapshot.data?.$1; + if (searchStream == null || events == null) { + return Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const CircularProgressIndicator.adaptive(strokeWidth: 2), + const SizedBox(height: 8), + Text( + L10n.of(context).searchIn( + room.getLocalizedDisplayname( + MatrixLocals(L10n.of(context)), + ), + ), + ), + ], + ); + } + if (events.isEmpty) { + return Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Icon(Icons.photo_outlined, size: 64), + const SizedBox(height: 8), + Text(L10n.of(context).nothingFound), + ], + ); + } + final eventsByMonth = >{}; + for (final event in events) { + final month = DateTime( + event.originServerTs.year, + event.originServerTs.month, + ); + eventsByMonth[month] ??= []; + eventsByMonth[month]!.add(event); + } + final eventsByMonthList = eventsByMonth.entries.toList(); + + const padding = 8.0; + + return ListView.builder( + itemCount: eventsByMonth.length + 1, + itemBuilder: (context, i) { + if (i == eventsByMonth.length) { + if (snapshot.connectionState != ConnectionState.done) { + return const Padding( + padding: EdgeInsets.all(16.0), + child: Center( + child: CircularProgressIndicator.adaptive( + strokeWidth: 2, + ), + ), + ); + } + final nextBatch = snapshot.data?.$2; + if (nextBatch == null) { + return const SizedBox.shrink(); + } + return Center( + child: Padding( + padding: const EdgeInsets.all(16.0), + child: TextButton.icon( + style: TextButton.styleFrom( + backgroundColor: theme.colorScheme.secondaryContainer, + foregroundColor: theme.colorScheme.onSecondaryContainer, + ), + onPressed: () => startSearch( + prevBatch: nextBatch, + previousSearchResult: events, + ), + icon: const Icon( + Icons.arrow_downward_outlined, + ), + label: Text(L10n.of(context).searchMore), + ), + ), + ); + } + + final monthEvents = eventsByMonthList[i].value; + return Column( + mainAxisSize: MainAxisSize.min, + children: [ + const SizedBox(height: 4), + Row( + children: [ + Expanded( + child: Container( + height: 1, + color: theme.dividerColor, + ), + ), + Padding( + padding: const EdgeInsets.all(8.0), + child: Text( + DateFormat.yMMMM( + Localizations.localeOf(context).languageCode, + ).format(eventsByMonthList[i].key), + style: theme.textTheme.labelSmall, + textAlign: TextAlign.center, + ), + ), + Expanded( + child: Container( + height: 1, + color: theme.dividerColor, + ), + ), + ], + ), + GridView.count( + physics: const NeverScrollableScrollPhysics(), + shrinkWrap: true, + mainAxisSpacing: padding, + crossAxisSpacing: padding, + clipBehavior: Clip.hardEdge, + padding: const EdgeInsets.all(padding), + crossAxisCount: 3, + children: monthEvents.map( + (event) { + if (event.messageType == MessageTypes.Video) { + return Material( + clipBehavior: Clip.hardEdge, + borderRadius: borderRadius, + child: EventVideoPlayer(event), + ); + } + return InkWell( + onTap: () => showDialog( + context: context, + builder: (_) => ImageViewer( + event, + outerContext: context, + ), + ), + borderRadius: borderRadius, + child: Material( + clipBehavior: Clip.hardEdge, + borderRadius: borderRadius, + child: MxcImage( + event: event, + width: 128, + height: 128, + fit: BoxFit.cover, + animated: true, + isThumbnail: true, + ), + ), + ); + }, + ).toList(), + ), + ], + ); + }, + ); + }, + ); + } +} diff --git a/lib/pages/chat_search/chat_search_message_tab.dart b/lib/pages/chat_search/chat_search_message_tab.dart new file mode 100644 index 0000000..a56e4a5 --- /dev/null +++ b/lib/pages/chat_search/chat_search_message_tab.dart @@ -0,0 +1,188 @@ +import 'package:flutter/material.dart'; + +import 'package:flutter_linkify/flutter_linkify.dart'; +import 'package:go_router/go_router.dart'; +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/date_time_extension.dart'; +import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; +import 'package:fluffychat/utils/url_launcher.dart'; +import 'package:fluffychat/widgets/avatar.dart'; + +class ChatSearchMessageTab extends StatelessWidget { + final String searchQuery; + final Room room; + final Stream<(List, String?)>? searchStream; + final void Function({ + String? prevBatch, + List? previousSearchResult, + }) startSearch; + + const ChatSearchMessageTab({ + required this.searchQuery, + required this.room, + required this.searchStream, + required this.startSearch, + super.key, + }); + + @override + Widget build(BuildContext context) { + return StreamBuilder( + key: ValueKey(searchQuery), + stream: searchStream, + builder: (context, snapshot) { + final theme = Theme.of(context); + if (searchStream == null) { + return Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Icon(Icons.search_outlined, size: 64), + const SizedBox(height: 8), + Text( + L10n.of(context).searchIn( + room.getLocalizedDisplayname( + MatrixLocals(L10n.of(context)), + ), + ), + ), + ], + ); + } + final events = snapshot.data?.$1 ?? []; + + return SelectionArea( + child: ListView.separated( + itemCount: events.length + 1, + separatorBuilder: (context, _) => Divider( + color: theme.dividerColor, + height: 1, + ), + itemBuilder: (context, i) { + if (i == events.length) { + if (snapshot.connectionState != ConnectionState.done) { + return const Padding( + padding: EdgeInsets.all(16.0), + child: Center( + child: CircularProgressIndicator.adaptive( + strokeWidth: 2, + ), + ), + ); + } + final nextBatch = snapshot.data?.$2; + if (nextBatch == null) { + return const SizedBox.shrink(); + } + return Center( + child: Padding( + padding: const EdgeInsets.all(16.0), + child: TextButton.icon( + style: TextButton.styleFrom( + backgroundColor: theme.colorScheme.secondaryContainer, + foregroundColor: theme.colorScheme.onSecondaryContainer, + ), + onPressed: () => startSearch( + prevBatch: nextBatch, + previousSearchResult: events, + ), + icon: const Icon( + Icons.arrow_downward_outlined, + ), + label: Text(L10n.of(context).searchMore), + ), + ), + ); + } + final event = events[i]; + final sender = event.senderFromMemoryOrFallback; + final displayname = sender.calcDisplayname( + i18n: MatrixLocals(L10n.of(context)), + ); + return _MessageSearchResultListTile( + sender: sender, + displayname: displayname, + event: event, + room: room, + ); + }, + ), + ); + }, + ); + } +} + +class _MessageSearchResultListTile extends StatelessWidget { + const _MessageSearchResultListTile({ + required this.sender, + required this.displayname, + required this.event, + required this.room, + }); + + final User sender; + final String displayname; + final Event event; + final Room room; + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + return ListTile( + title: Row( + children: [ + Avatar( + mxContent: sender.avatarUrl, + name: displayname, + size: 16, + ), + const SizedBox(width: 8), + Text( + displayname, + ), + Expanded( + child: Text( + ' | ${event.originServerTs.localizedTimeShort(context)}', + style: const TextStyle(fontSize: 12), + ), + ), + ], + ), + subtitle: Linkify( + textScaleFactor: MediaQuery.textScalerOf(context).scale(1), + options: const LinkifyOptions(humanize: false), + linkStyle: TextStyle( + color: theme.colorScheme.primary, + decoration: TextDecoration.underline, + decorationColor: theme.colorScheme.primary, + ), + onOpen: (url) => UrlLauncher(context, url.url).launchUrl(), + text: event + .calcLocalizedBodyFallback( + plaintextBody: true, + removeMarkdown: true, + MatrixLocals( + L10n.of(context), + ), + ) + .trim(), + maxLines: 7, + overflow: TextOverflow.ellipsis, + ), + trailing: IconButton( + icon: const Icon( + Icons.chevron_right_outlined, + ), + onPressed: () => context.go( + '/${Uri( + pathSegments: ['rooms', room.id], + queryParameters: {'event': event.eventId}, + )}', + ), + ), + ); + } +} diff --git a/lib/pages/chat_search/chat_search_page.dart b/lib/pages/chat_search/chat_search_page.dart new file mode 100644 index 0000000..40109d0 --- /dev/null +++ b/lib/pages/chat_search/chat_search_page.dart @@ -0,0 +1,196 @@ +import 'dart:async'; + +import 'package:flutter/material.dart'; + +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/pages/chat_search/chat_search_view.dart'; +import 'package:fluffychat/widgets/matrix.dart'; + +class ChatSearchPage extends StatefulWidget { + final String roomId; + const ChatSearchPage({required this.roomId, super.key}); + + @override + ChatSearchController createState() => ChatSearchController(); +} + +class ChatSearchController extends State + with SingleTickerProviderStateMixin { + Room? get room => Matrix.of(context).client.getRoomById(widget.roomId); + + final TextEditingController searchController = TextEditingController(); + late final TabController tabController; + + Timeline? timeline; + + Stream<(List, String?)>? searchStream; + Stream<(List, String?)>? galleryStream; + Stream<(List, String?)>? fileStream; + + void restartSearch() { + if (searchController.text.isEmpty) { + setState(() { + searchStream = null; + }); + return; + } + setState(() { + searchStream = const Stream.empty(); + }); + WidgetsBinding.instance.addPostFrameCallback((timeStamp) { + startMessageSearch(); + }); + } + + void startMessageSearch({ + String? prevBatch, + List? previousSearchResult, + }) async { + final timeline = this.timeline ??= await room!.getTimeline(); + + if (tabController.index == 0 && searchController.text.isEmpty) { + return; + } + + setState(() { + searchStream = timeline + .startSearch( + searchTerm: searchController.text, + prevBatch: prevBatch, + requestHistoryCount: 1000, + limit: 32, + ) + .map( + (result) => ( + [ + if (previousSearchResult != null) ...previousSearchResult, + ...result.$1, + ], + result.$2, + ), + ) + // Deduplication workaround for + // https://github.com/famedly/matrix-dart-sdk/issues/1831 + .map( + (result) => ( + { + for (final event in result.$1) event.eventId: event, + }.values.toList(), + result.$2, + ), + ) + .asBroadcastStream(); + }); + } + + void startGallerySearch({ + String? prevBatch, + List? previousSearchResult, + }) async { + final timeline = this.timeline ??= await room!.getTimeline(); + + setState(() { + galleryStream = timeline + .startSearch( + searchFunc: (event) => { + MessageTypes.Image, + MessageTypes.Video, + }.contains(event.messageType), + prevBatch: prevBatch, + requestHistoryCount: 1000, + limit: 32, + ) + .map( + (result) => ( + [ + if (previousSearchResult != null) ...previousSearchResult, + ...result.$1, + ], + result.$2, + ), + ) + // Deduplication workaround for + // https://github.com/famedly/matrix-dart-sdk/issues/1831 + .map( + (result) => ( + { + for (final event in result.$1) event.eventId: event, + }.values.toList(), + result.$2, + ), + ) + .asBroadcastStream(); + }); + } + + void startFileSearch({ + String? prevBatch, + List? previousSearchResult, + }) async { + final timeline = this.timeline ??= await room!.getTimeline(); + + setState(() { + fileStream = timeline + .startSearch( + searchFunc: (event) => + event.messageType == MessageTypes.File || + (event.messageType == MessageTypes.Audio && + !event.content.containsKey('org.matrix.msc3245.voice')), + prevBatch: prevBatch, + requestHistoryCount: 1000, + limit: 32, + ) + .map( + (result) => ( + [ + if (previousSearchResult != null) ...previousSearchResult, + ...result.$1, + ], + result.$2, + ), + ) + // Deduplication workaround for + // https://github.com/famedly/matrix-dart-sdk/issues/1831 + .map( + (result) => ( + { + for (final event in result.$1) event.eventId: event, + }.values.toList(), + result.$2, + ), + ) + .asBroadcastStream(); + }); + } + + void _onTabChanged() { + switch (tabController.index) { + case 1: + startGallerySearch(); + break; + case 2: + startFileSearch(); + break; + default: + restartSearch(); + break; + } + } + + @override + void initState() { + super.initState(); + tabController = TabController(initialIndex: 0, length: 3, vsync: this); + tabController.addListener(_onTabChanged); + } + + @override + void dispose() { + tabController.removeListener(_onTabChanged); + super.dispose(); + } + + @override + Widget build(BuildContext context) => ChatSearchView(this); +} diff --git a/lib/pages/chat_search/chat_search_view.dart b/lib/pages/chat_search/chat_search_view.dart new file mode 100644 index 0000000..8776582 --- /dev/null +++ b/lib/pages/chat_search/chat_search_view.dart @@ -0,0 +1,111 @@ +import 'package:flutter/material.dart'; + +import 'package:fluffychat/config/themes.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/chat_search/chat_search_files_tab.dart'; +import 'package:fluffychat/pages/chat_search/chat_search_images_tab.dart'; +import 'package:fluffychat/pages/chat_search/chat_search_message_tab.dart'; +import 'package:fluffychat/pages/chat_search/chat_search_page.dart'; +import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; +import 'package:fluffychat/widgets/layouts/max_width_body.dart'; + +class ChatSearchView extends StatelessWidget { + final ChatSearchController controller; + + const ChatSearchView(this.controller, {super.key}); + + @override + Widget build(BuildContext context) { + final room = controller.room; + if (room == null) { + return Scaffold( + appBar: AppBar(title: Text(L10n.of(context).oopsSomethingWentWrong)), + body: Center( + child: Padding( + padding: const EdgeInsets.all(16), + child: Text(L10n.of(context).youAreNoLongerParticipatingInThisChat), + ), + ), + ); + } + + final theme = Theme.of(context); + + return Scaffold( + appBar: AppBar( + leading: const Center(child: BackButton()), + titleSpacing: 0, + title: Text( + L10n.of(context).searchIn( + room.getLocalizedDisplayname(MatrixLocals(L10n.of(context))), + ), + ), + ), + body: MaxWidthBody( + withScrolling: false, + child: Column( + children: [ + if (FluffyThemes.isThreeColumnMode(context)) + const SizedBox(height: 16), + Padding( + padding: const EdgeInsets.symmetric( + horizontal: 16, + ), + child: TextField( + controller: controller.searchController, + onSubmitted: (_) => controller.restartSearch(), + autofocus: true, + enabled: controller.tabController.index == 0, + decoration: InputDecoration( + hintText: L10n.of(context).search, + prefixIcon: const Icon(Icons.search_outlined), + filled: true, + fillColor: theme.colorScheme.secondaryContainer, + border: OutlineInputBorder( + borderSide: BorderSide.none, + borderRadius: BorderRadius.circular(99), + ), + hintStyle: TextStyle( + color: theme.colorScheme.onPrimaryContainer, + fontWeight: FontWeight.normal, + ), + ), + ), + ), + TabBar( + controller: controller.tabController, + tabs: [ + Tab(child: Text(L10n.of(context).messages)), + Tab(child: Text(L10n.of(context).gallery)), + Tab(child: Text(L10n.of(context).files)), + ], + ), + Expanded( + child: TabBarView( + controller: controller.tabController, + children: [ + ChatSearchMessageTab( + searchQuery: controller.searchController.text, + room: room, + startSearch: controller.startMessageSearch, + searchStream: controller.searchStream, + ), + ChatSearchImagesTab( + room: room, + startSearch: controller.startGallerySearch, + searchStream: controller.galleryStream, + ), + ChatSearchFilesTab( + room: room, + startSearch: controller.startFileSearch, + searchStream: controller.fileStream, + ), + ], + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/pages/device_settings/device_settings.dart b/lib/pages/device_settings/device_settings.dart new file mode 100644 index 0000000..2114e99 --- /dev/null +++ b/lib/pages/device_settings/device_settings.dart @@ -0,0 +1,175 @@ +import 'package:flutter/material.dart'; + +import 'package:collection/collection.dart' show IterableExtension; +import 'package:matrix/encryption/utils/key_verification.dart'; +import 'package:matrix/matrix.dart'; +import 'package:url_launcher/url_launcher_string.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/device_settings/device_settings_view.dart'; +import 'package:fluffychat/pages/key_verification/key_verification_dialog.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_ok_cancel_alert_dialog.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_text_input_dialog.dart'; +import 'package:fluffychat/widgets/future_loading_dialog.dart'; +import '../../widgets/matrix.dart'; + +class DevicesSettings extends StatefulWidget { + const DevicesSettings({super.key}); + + @override + DevicesSettingsController createState() => DevicesSettingsController(); +} + +class DevicesSettingsController extends State { + List? devices; + Future loadUserDevices(BuildContext context) async { + if (devices != null) return true; + devices = await Matrix.of(context).client.getDevices(); + return true; + } + + void reload() => setState(() => devices = null); + + bool? chatBackupEnabled; + + @override + void initState() { + _checkChatBackup(); + super.initState(); + } + + void _checkChatBackup() async { + final client = Matrix.of(context).client; + if (client.encryption?.keyManager.enabled == true) { + if (await client.encryption?.keyManager.isCached() == false || + await client.encryption?.crossSigning.isCached() == false || + client.isUnknownSession && !mounted) { + setState(() { + chatBackupEnabled = false; + }); + return; + } + } + } + + void removeDevicesAction(List devices) async { + final client = Matrix.of(context).client; + + final accountManageUrl = client.wellKnown?.additionalProperties + .tryGetMap('org.matrix.msc2965.authentication') + ?.tryGet('account'); + if (accountManageUrl != null) { + launchUrlString( + accountManageUrl, + mode: LaunchMode.inAppBrowserView, + ); + return; + } + if (await showOkCancelAlertDialog( + context: context, + title: L10n.of(context).areYouSure, + okLabel: L10n.of(context).remove, + cancelLabel: L10n.of(context).cancel, + message: L10n.of(context).removeDevicesDescription, + isDestructive: true, + ) == + OkCancelResult.cancel) { + return; + } + final matrix = Matrix.of(context); + final deviceIds = []; + for (final userDevice in devices) { + deviceIds.add(userDevice.deviceId); + } + + await showFutureLoadingDialog( + context: context, + delay: false, + future: () => matrix.client.uiaRequestBackground( + (auth) => matrix.client.deleteDevices( + deviceIds, + auth: auth, + ), + ), + ); + reload(); + } + + void renameDeviceAction(Device device) async { + final displayName = await showTextInputDialog( + context: context, + title: L10n.of(context).changeDeviceName, + okLabel: L10n.of(context).ok, + cancelLabel: L10n.of(context).cancel, + hintText: device.displayName, + ); + if (displayName == null) return; + final success = await showFutureLoadingDialog( + context: context, + future: () => Matrix.of(context) + .client + .updateDevice(device.deviceId, displayName: displayName), + ); + if (success.error == null) { + reload(); + } + } + + void verifyDeviceAction(Device device) async { + final consent = await showOkCancelAlertDialog( + context: context, + title: L10n.of(context).verifyOtherDevice, + message: L10n.of(context).verifyOtherDeviceDescription, + okLabel: L10n.of(context).ok, + cancelLabel: L10n.of(context).cancel, + ); + if (consent != OkCancelResult.ok) return; + final req = await Matrix.of(context) + .client + .userDeviceKeys[Matrix.of(context).client.userID!]! + .deviceKeys[device.deviceId]! + .startVerification(); + req.onUpdate = () { + if ({KeyVerificationState.error, KeyVerificationState.done} + .contains(req.state)) { + setState(() {}); + } + }; + await KeyVerificationDialog(request: req).show(context); + } + + void blockDeviceAction(Device device) async { + final key = Matrix.of(context) + .client + .userDeviceKeys[Matrix.of(context).client.userID!]! + .deviceKeys[device.deviceId]!; + if (key.directVerified) { + await key.setVerified(false); + } + await key.setBlocked(true); + setState(() {}); + } + + void unblockDeviceAction(Device device) async { + final key = Matrix.of(context) + .client + .userDeviceKeys[Matrix.of(context).client.userID!]! + .deviceKeys[device.deviceId]!; + await key.setBlocked(false); + setState(() {}); + } + + bool _isOwnDevice(Device userDevice) => + userDevice.deviceId == Matrix.of(context).client.deviceID; + + Device? get thisDevice => devices!.firstWhereOrNull( + _isOwnDevice, + ); + + List get notThisDevice => List.from(devices!) + ..removeWhere(_isOwnDevice) + ..sort((a, b) => (b.lastSeenTs ?? 0).compareTo(a.lastSeenTs ?? 0)); + + @override + Widget build(BuildContext context) => DevicesSettingsView(this); +} diff --git a/lib/pages/device_settings/device_settings_view.dart b/lib/pages/device_settings/device_settings_view.dart new file mode 100644 index 0000000..74e1903 --- /dev/null +++ b/lib/pages/device_settings/device_settings_view.dart @@ -0,0 +1,142 @@ +import 'package:flutter/material.dart'; + +import 'package:fluffychat/config/themes.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/device_settings/device_settings.dart'; +import 'package:fluffychat/widgets/layouts/max_width_body.dart'; +import 'user_device_list_item.dart'; + +class DevicesSettingsView extends StatelessWidget { + final DevicesSettingsController controller; + + const DevicesSettingsView(this.controller, {super.key}); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + automaticallyImplyLeading: !FluffyThemes.isColumnMode(context), + centerTitle: FluffyThemes.isColumnMode(context), + title: Text(L10n.of(context).devices), + ), + body: MaxWidthBody( + child: FutureBuilder( + future: controller.loadUserDevices(context), + builder: (BuildContext context, snapshot) { + final theme = Theme.of(context); + if (snapshot.hasError) { + return Center( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + const Icon(Icons.error_outlined), + Text(snapshot.error.toString()), + ], + ), + ); + } + if (!snapshot.hasData || controller.devices == null) { + return const Center( + child: CircularProgressIndicator.adaptive(strokeWidth: 2), + ); + } + return ListView.builder( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + itemCount: controller.notThisDevice.length + 1, + itemBuilder: (BuildContext context, int i) { + if (i == 0) { + return Column( + mainAxisSize: MainAxisSize.min, + children: [ + if (controller.chatBackupEnabled == false) + Padding( + padding: const EdgeInsets.symmetric(horizontal: 8.0), + child: ListTile( + leading: const CircleAvatar( + child: Icon(Icons.info_outlined), + ), + subtitle: Text( + L10n.of(context) + .noticeChatBackupDeviceVerification, + ), + ), + ), + if (controller.thisDevice != null) ...[ + Container( + padding: const EdgeInsets.symmetric( + horizontal: 16.0, + vertical: 8.0, + ), + alignment: Alignment.centerLeft, + child: Text( + L10n.of(context).thisDevice, + style: TextStyle( + fontWeight: FontWeight.bold, + color: theme.colorScheme.primary, + ), + textAlign: TextAlign.left, + ), + ), + UserDeviceListItem( + controller.thisDevice!, + rename: controller.renameDeviceAction, + remove: (d) => controller.removeDevicesAction([d]), + verify: controller.verifyDeviceAction, + block: controller.blockDeviceAction, + unblock: controller.unblockDeviceAction, + ), + ], + if (controller.notThisDevice.isNotEmpty) + Padding( + padding: const EdgeInsets.symmetric( + horizontal: 16.0, + vertical: 8.0, + ), + child: SizedBox( + width: double.infinity, + child: TextButton.icon( + label: Text( + L10n.of(context).removeAllOtherDevices, + ), + style: TextButton.styleFrom( + iconColor: theme.colorScheme.onErrorContainer, + foregroundColor: + theme.colorScheme.onErrorContainer, + backgroundColor: + theme.colorScheme.errorContainer, + ), + icon: const Icon(Icons.delete_outline), + onPressed: () => controller.removeDevicesAction( + controller.notThisDevice, + ), + ), + ), + ) + else + Center( + child: Padding( + padding: const EdgeInsets.all(16.0), + child: Text(L10n.of(context).noOtherDevicesFound), + ), + ), + ], + ); + } + i--; + return UserDeviceListItem( + controller.notThisDevice[i], + rename: controller.renameDeviceAction, + remove: (d) => controller.removeDevicesAction([d]), + verify: controller.verifyDeviceAction, + block: controller.blockDeviceAction, + unblock: controller.unblockDeviceAction, + ); + }, + ); + }, + ), + ), + ); + } +} diff --git a/lib/pages/device_settings/user_device_list_item.dart b/lib/pages/device_settings/user_device_list_item.dart new file mode 100644 index 0000000..02c9159 --- /dev/null +++ b/lib/pages/device_settings/user_device_list_item.dart @@ -0,0 +1,154 @@ +import 'package:flutter/material.dart'; + +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_modal_action_popup.dart'; +import '../../utils/date_time_extension.dart'; +import '../../utils/matrix_sdk_extensions/device_extension.dart'; +import '../../widgets/matrix.dart'; + +enum UserDeviceListItemAction { + rename, + remove, + verify, + block, + unblock, +} + +class UserDeviceListItem extends StatelessWidget { + final Device userDevice; + final void Function(Device) remove; + final void Function(Device) rename; + final void Function(Device) verify; + final void Function(Device) block; + final void Function(Device) unblock; + + const UserDeviceListItem( + this.userDevice, { + required this.remove, + required this.rename, + required this.verify, + required this.block, + required this.unblock, + super.key, + }); + + @override + Widget build(BuildContext context) { + final client = Matrix.of(context).client; + final keys = client.userDeviceKeys[Matrix.of(context).client.userID] + ?.deviceKeys[userDevice.deviceId]; + final isOwnDevice = userDevice.deviceId == client.deviceID; + + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 8.0), + child: Material( + borderRadius: BorderRadius.circular(AppConfig.borderRadius), + clipBehavior: Clip.hardEdge, + child: ListTile( + onTap: () async { + final action = await showModalActionPopup( + context: context, + title: '${userDevice.displayName} (${userDevice.deviceId})', + cancelLabel: L10n.of(context).cancel, + actions: [ + AdaptiveModalAction( + value: UserDeviceListItemAction.rename, + icon: const Icon(Icons.edit_outlined), + label: L10n.of(context).changeDeviceName, + ), + if (!isOwnDevice && keys != null) ...{ + AdaptiveModalAction( + value: UserDeviceListItemAction.verify, + icon: const Icon(Icons.verified_outlined), + label: L10n.of(context).verifyStart, + ), + if (!keys.blocked) + AdaptiveModalAction( + value: UserDeviceListItemAction.block, + icon: const Icon(Icons.block_outlined), + label: L10n.of(context).blockDevice, + isDestructive: true, + ), + if (keys.blocked) + AdaptiveModalAction( + value: UserDeviceListItemAction.unblock, + icon: const Icon(Icons.block), + label: L10n.of(context).unblockDevice, + isDestructive: true, + ), + }, + if (!isOwnDevice) + AdaptiveModalAction( + value: UserDeviceListItemAction.remove, + icon: const Icon(Icons.delete_outlined), + label: L10n.of(context).delete, + isDestructive: true, + ), + ], + ); + if (action == null) return; + switch (action) { + case UserDeviceListItemAction.rename: + rename(userDevice); + break; + case UserDeviceListItemAction.remove: + remove(userDevice); + break; + case UserDeviceListItemAction.verify: + verify(userDevice); + break; + case UserDeviceListItemAction.block: + block(userDevice); + break; + case UserDeviceListItemAction.unblock: + unblock(userDevice); + break; + } + }, + leading: CircleAvatar( + foregroundColor: Colors.white, + backgroundColor: keys == null + ? Colors.grey[700] + : keys.blocked + ? Colors.red + : keys.verified + ? Colors.green + : Colors.orange, + child: Icon(userDevice.icon), + ), + title: Text( + userDevice.displayname, + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + subtitle: Text( + L10n.of(context).lastActiveAgo( + DateTime.fromMillisecondsSinceEpoch(userDevice.lastSeenTs ?? 0) + .localizedTimeShort(context), + ), + style: const TextStyle(fontWeight: FontWeight.w300), + ), + trailing: keys == null + ? null + : Text( + keys.blocked + ? L10n.of(context).blocked + : keys.verified + ? L10n.of(context).verified + : L10n.of(context).unverified, + style: TextStyle( + color: keys.blocked + ? Colors.red + : keys.verified + ? Colors.green + : Colors.orange, + ), + ), + ), + ), + ); + } +} diff --git a/lib/pages/dialer/dialer.dart b/lib/pages/dialer/dialer.dart new file mode 100644 index 0000000..8f31480 --- /dev/null +++ b/lib/pages/dialer/dialer.dart @@ -0,0 +1,629 @@ +/* + * Famedly + * Copyright (C) 2019, 2020, 2021 Famedly GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +import 'dart:async'; +import 'dart:math'; + +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +import 'package:flutter_foreground_task/flutter_foreground_task.dart'; +import 'package:flutter_webrtc/flutter_webrtc.dart' hide VideoRenderer; +import 'package:just_audio/just_audio.dart'; +import 'package:matrix/matrix.dart'; +import 'package:wakelock_plus/wakelock_plus.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; +import 'package:fluffychat/utils/platform_infos.dart'; +import 'package:fluffychat/utils/voip/video_renderer.dart'; +import 'package:fluffychat/widgets/avatar.dart'; +import 'pip/pip_view.dart'; + +class _StreamView extends StatelessWidget { + const _StreamView( + this.wrappedStream, { + this.mainView = false, + required this.matrixClient, + }); + + final WrappedMediaStream wrappedStream; + final Client matrixClient; + + final bool mainView; + + Uri? get avatarUrl => wrappedStream.getUser().avatarUrl; + + String? get displayName => wrappedStream.displayName; + + String get avatarName => wrappedStream.avatarName; + + bool get isLocal => wrappedStream.isLocal(); + + bool get mirrored => + wrappedStream.isLocal() && + wrappedStream.purpose == SDPStreamMetadataPurpose.Usermedia; + + bool get audioMuted => wrappedStream.audioMuted; + + bool get videoMuted => wrappedStream.videoMuted; + + bool get isScreenSharing => + wrappedStream.purpose == SDPStreamMetadataPurpose.Screenshare; + + @override + Widget build(BuildContext context) { + return Container( + decoration: const BoxDecoration( + color: Colors.black54, + ), + child: Stack( + alignment: Alignment.center, + children: [ + VideoRenderer( + wrappedStream, + mirror: mirrored, + fit: RTCVideoViewObjectFit.RTCVideoViewObjectFitContain, + ), + if (videoMuted) ...[ + Container(color: Colors.black54), + Positioned( + child: Avatar( + mxContent: avatarUrl, + name: displayName, + size: mainView ? 96 : 48, + client: matrixClient, + // textSize: mainView ? 36 : 24, + // matrixClient: matrixClient, + ), + ), + ], + if (!isScreenSharing) + Positioned( + left: 4.0, + bottom: 4.0, + child: Icon( + audioMuted ? Icons.mic_off : Icons.mic, + color: Colors.white, + size: 18.0, + ), + ), + ], + ), + ); + } +} + +class Calling extends StatefulWidget { + final VoidCallback? onClear; + final BuildContext context; + final String callId; + final CallSession call; + final Client client; + + const Calling({ + required this.context, + required this.call, + required this.client, + required this.callId, + this.onClear, + super.key, + }); + + @override + MyCallingPage createState() => MyCallingPage(); +} + +class MyCallingPage extends State { + Room? get room => call.room; + + String get displayName => call.room.getLocalizedDisplayname( + MatrixLocals(L10n.of(widget.context)), + ); + + String get callId => widget.callId; + + CallSession get call => widget.call; + + MediaStream? get localStream { + if (call.localUserMediaStream != null) { + return call.localUserMediaStream!.stream!; + } + return null; + } + + MediaStream? get remoteStream { + if (call.getRemoteStreams.isNotEmpty) { + return call.getRemoteStreams[0].stream!; + } + return null; + } + + bool get isMicrophoneMuted => call.isMicrophoneMuted; + + bool get isLocalVideoMuted => call.isLocalVideoMuted; + + bool get isScreensharingEnabled => call.screensharingEnabled; + + bool get isRemoteOnHold => call.remoteOnHold; + + bool get voiceonly => call.type == CallType.kVoice; + + bool get connecting => call.state == CallState.kConnecting; + + bool get connected => call.state == CallState.kConnected; + + double? _localVideoHeight; + double? _localVideoWidth; + EdgeInsetsGeometry? _localVideoMargin; + CallState? _state; + + void _playCallSound() async { + const path = 'assets/sounds/call.ogg'; + if (kIsWeb || PlatformInfos.isMobile || PlatformInfos.isMacOS) { + final player = AudioPlayer(); + await player.setAsset(path); + player.play(); + } else { + Logs().w('Playing sound not implemented for this platform!'); + } + } + + @override + void initState() { + super.initState(); + initialize(); + _playCallSound(); + } + + void initialize() async { + final call = this.call; + call.onCallStateChanged.stream.listen(_handleCallState); + call.onCallEventChanged.stream.listen((event) { + if (event == CallStateChange.kFeedsChanged) { + setState(() { + call.tryRemoveStopedStreams(); + }); + } else if (event == CallStateChange.kLocalHoldUnhold || + event == CallStateChange.kRemoteHoldUnhold) { + setState(() {}); + Logs().i( + 'Call hold event: local ${call.localHold}, remote ${call.remoteOnHold}', + ); + } + }); + _state = call.state; + + if (call.type == CallType.kVideo) { + try { + // Enable wakelock (keep screen on) + unawaited(WakelockPlus.enable()); + } catch (_) {} + } + } + + void cleanUp() { + Timer( + const Duration(seconds: 2), + () => widget.onClear?.call(), + ); + if (call.type == CallType.kVideo) { + try { + unawaited(WakelockPlus.disable()); + } catch (_) {} + } + } + + @override + void dispose() { + super.dispose(); + call.cleanUp.call(); + } + + void _resizeLocalVideo(Orientation orientation) { + final shortSide = min( + MediaQuery.sizeOf(widget.context).width, + MediaQuery.sizeOf(widget.context).height, + ); + _localVideoMargin = remoteStream != null + ? const EdgeInsets.only(top: 20.0, right: 20.0) + : EdgeInsets.zero; + _localVideoWidth = remoteStream != null + ? shortSide / 3 + : MediaQuery.sizeOf(widget.context).width; + _localVideoHeight = remoteStream != null + ? shortSide / 4 + : MediaQuery.sizeOf(widget.context).height; + } + + void _handleCallState(CallState state) { + Logs().v('CallingPage::handleCallState: ${state.toString()}'); + if ({CallState.kConnected, CallState.kEnded}.contains(state)) { + HapticFeedback.heavyImpact(); + } + + if (mounted) { + setState(() { + _state = state; + if (_state == CallState.kEnded) cleanUp(); + }); + } + } + + void _answerCall() { + setState(() { + call.answer(); + }); + } + + void _hangUp() { + setState(() { + if (call.isRinging) { + call.reject(); + } else { + call.hangup(reason: CallErrorCode.userHangup); + } + }); + } + + void _muteMic() { + setState(() { + call.setMicrophoneMuted(!call.isMicrophoneMuted); + }); + } + + void _screenSharing() async { + if (PlatformInfos.isAndroid) { + if (!call.screensharingEnabled) { + FlutterForegroundTask.init( + androidNotificationOptions: AndroidNotificationOptions( + channelId: 'notification_channel_id', + channelName: 'Foreground Notification', + channelDescription: + L10n.of(widget.context).foregroundServiceRunning, + ), + iosNotificationOptions: const IOSNotificationOptions(), + foregroundTaskOptions: ForegroundTaskOptions( + eventAction: ForegroundTaskEventAction.nothing(), + ), + ); + FlutterForegroundTask.startService( + notificationTitle: L10n.of(widget.context).screenSharingTitle, + notificationText: L10n.of(widget.context).screenSharingDetail, + ); + } else { + FlutterForegroundTask.stopService(); + } + } + + setState(() { + call.setScreensharingEnabled(!call.screensharingEnabled); + }); + } + + void _remoteOnHold() { + setState(() { + call.setRemoteOnHold(!call.remoteOnHold); + }); + } + + void _muteCamera() { + setState(() { + call.setLocalVideoMuted(!call.isLocalVideoMuted); + }); + } + + void _switchCamera() async { + if (call.localUserMediaStream != null) { + await Helper.switchCamera( + call.localUserMediaStream!.stream!.getVideoTracks()[0], + ); + } + setState(() {}); + } + + /* + void _switchSpeaker() { + setState(() { + session.setSpeakerOn(); + }); + } + */ + + List _buildActionButtons(bool isFloating) { + if (isFloating) { + return []; + } + + final switchCameraButton = FloatingActionButton( + heroTag: 'switchCamera', + onPressed: _switchCamera, + backgroundColor: Colors.black45, + child: const Icon(Icons.switch_camera), + ); + /* + var switchSpeakerButton = FloatingActionButton( + heroTag: 'switchSpeaker', + child: Icon(_speakerOn ? Icons.volume_up : Icons.volume_off), + onPressed: _switchSpeaker, + foregroundColor: Colors.black54, + backgroundColor: Theme.of(widget.context).backgroundColor, + ); + */ + final hangupButton = FloatingActionButton( + heroTag: 'hangup', + onPressed: _hangUp, + tooltip: 'Hangup', + backgroundColor: _state == CallState.kEnded ? Colors.black45 : Colors.red, + child: const Icon(Icons.call_end), + ); + + final answerButton = FloatingActionButton( + heroTag: 'answer', + onPressed: _answerCall, + tooltip: 'Answer', + backgroundColor: Colors.green, + child: const Icon(Icons.phone), + ); + + final muteMicButton = FloatingActionButton( + heroTag: 'muteMic', + onPressed: _muteMic, + foregroundColor: isMicrophoneMuted ? Colors.black26 : Colors.white, + backgroundColor: isMicrophoneMuted ? Colors.white : Colors.black45, + child: Icon(isMicrophoneMuted ? Icons.mic_off : Icons.mic), + ); + + final screenSharingButton = FloatingActionButton( + heroTag: 'screenSharing', + onPressed: _screenSharing, + foregroundColor: isScreensharingEnabled ? Colors.black26 : Colors.white, + backgroundColor: isScreensharingEnabled ? Colors.white : Colors.black45, + child: const Icon(Icons.desktop_mac), + ); + + final holdButton = FloatingActionButton( + heroTag: 'hold', + onPressed: _remoteOnHold, + foregroundColor: isRemoteOnHold ? Colors.black26 : Colors.white, + backgroundColor: isRemoteOnHold ? Colors.white : Colors.black45, + child: const Icon(Icons.pause), + ); + + final muteCameraButton = FloatingActionButton( + heroTag: 'muteCam', + onPressed: _muteCamera, + foregroundColor: isLocalVideoMuted ? Colors.black26 : Colors.white, + backgroundColor: isLocalVideoMuted ? Colors.white : Colors.black45, + child: Icon(isLocalVideoMuted ? Icons.videocam_off : Icons.videocam), + ); + + switch (_state) { + case CallState.kRinging: + case CallState.kInviteSent: + case CallState.kCreateAnswer: + case CallState.kConnecting: + return call.isOutgoing + ? [hangupButton] + : [answerButton, hangupButton]; + case CallState.kConnected: + return [ + muteMicButton, + //switchSpeakerButton, + if (!voiceonly && !kIsWeb) switchCameraButton, + if (!voiceonly) muteCameraButton, + if (PlatformInfos.isMobile || PlatformInfos.isWeb) + screenSharingButton, + holdButton, + hangupButton, + ]; + case CallState.kEnded: + return [ + hangupButton, + ]; + case CallState.kFledgling: + case CallState.kWaitLocalMedia: + case CallState.kCreateOffer: + case CallState.kEnding: + case null: + break; + } + return []; + } + + List _buildContent(Orientation orientation, bool isFloating) { + final stackWidgets = []; + + final call = this.call; + if (call.callHasEnded) { + return stackWidgets; + } + + if (call.localHold || call.remoteOnHold) { + var title = ''; + if (call.localHold) { + title = '${call.room.getLocalizedDisplayname( + MatrixLocals(L10n.of(widget.context)), + )} held the call.'; + } else if (call.remoteOnHold) { + title = 'You held the call.'; + } + stackWidgets.add( + Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Icon( + Icons.pause, + size: 48.0, + color: Colors.white, + ), + Text( + title, + style: const TextStyle( + color: Colors.white, + fontSize: 24.0, + ), + ), + ], + ), + ), + ); + return stackWidgets; + } + + var primaryStream = call.remoteScreenSharingStream ?? + call.localScreenSharingStream ?? + call.remoteUserMediaStream ?? + call.localUserMediaStream; + + if (!connected) { + primaryStream = call.localUserMediaStream; + } + + if (primaryStream != null) { + stackWidgets.add( + Center( + child: _StreamView( + primaryStream, + mainView: true, + matrixClient: widget.client, + ), + ), + ); + } + + if (isFloating || !connected) { + return stackWidgets; + } + + _resizeLocalVideo(orientation); + + if (call.getRemoteStreams.isEmpty) { + return stackWidgets; + } + + final secondaryStreamViews = []; + + if (call.remoteScreenSharingStream != null) { + final remoteUserMediaStream = call.remoteUserMediaStream; + secondaryStreamViews.add( + SizedBox( + width: _localVideoWidth, + height: _localVideoHeight, + child: + _StreamView(remoteUserMediaStream!, matrixClient: widget.client), + ), + ); + secondaryStreamViews.add(const SizedBox(height: 10)); + } + + final localStream = + call.localUserMediaStream ?? call.localScreenSharingStream; + if (localStream != null && !isFloating) { + secondaryStreamViews.add( + SizedBox( + width: _localVideoWidth, + height: _localVideoHeight, + child: _StreamView(localStream, matrixClient: widget.client), + ), + ); + secondaryStreamViews.add(const SizedBox(height: 10)); + } + + if (call.localScreenSharingStream != null && !isFloating) { + secondaryStreamViews.add( + SizedBox( + width: _localVideoWidth, + height: _localVideoHeight, + child: _StreamView( + call.remoteUserMediaStream!, + matrixClient: widget.client, + ), + ), + ); + secondaryStreamViews.add(const SizedBox(height: 10)); + } + + if (secondaryStreamViews.isNotEmpty) { + stackWidgets.add( + Container( + padding: const EdgeInsets.fromLTRB(0, 20, 0, 120), + alignment: Alignment.bottomRight, + child: Container( + width: _localVideoWidth, + margin: _localVideoMargin, + child: Column( + children: secondaryStreamViews, + ), + ), + ), + ); + } + + return stackWidgets; + } + + @override + Widget build(BuildContext context) { + return PIPView( + builder: (context, isFloating) { + return Scaffold( + resizeToAvoidBottomInset: !isFloating, + floatingActionButtonLocation: + FloatingActionButtonLocation.centerFloat, + floatingActionButton: SizedBox( + width: 320.0, + height: 150.0, + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: _buildActionButtons(isFloating), + ), + ), + body: OrientationBuilder( + builder: (BuildContext context, Orientation orientation) { + return Container( + decoration: const BoxDecoration( + color: Colors.black87, + ), + child: Stack( + children: [ + ..._buildContent(orientation, isFloating), + if (!isFloating) + Positioned( + top: 24.0, + left: 24.0, + child: IconButton( + color: Colors.black45, + icon: const Icon(Icons.arrow_back), + onPressed: () { + PIPView.of(context)?.setFloating(true); + }, + ), + ), + ], + ), + ); + }, + ), + ); + }, + ); + } +} diff --git a/lib/pages/dialer/pip/dismiss_keyboard.dart b/lib/pages/dialer/pip/dismiss_keyboard.dart new file mode 100644 index 0000000..c9ca318 --- /dev/null +++ b/lib/pages/dialer/pip/dismiss_keyboard.dart @@ -0,0 +1,5 @@ +import 'package:flutter/material.dart'; + +void dismissKeyboard(BuildContext context) { + FocusScope.of(context).requestFocus(FocusNode()); +} diff --git a/lib/pages/dialer/pip/pip_view.dart b/lib/pages/dialer/pip/pip_view.dart new file mode 100644 index 0000000..78facfa --- /dev/null +++ b/lib/pages/dialer/pip/pip_view.dart @@ -0,0 +1,342 @@ +import 'package:flutter/material.dart'; + +import 'package:fluffychat/config/themes.dart'; +import 'dismiss_keyboard.dart'; + +class PIPView extends StatefulWidget { + final PIPViewCorner initialCorner; + final double? floatingWidth; + final double? floatingHeight; + final bool avoidKeyboard; + + final Widget Function( + BuildContext context, + bool isFloating, + ) builder; + + const PIPView({ + super.key, + required this.builder, + this.initialCorner = PIPViewCorner.topRight, + this.floatingWidth, + this.floatingHeight, + this.avoidKeyboard = true, + }); + + @override + PIPViewState createState() => PIPViewState(); + + static PIPViewState? of(BuildContext context) { + return context.findAncestorStateOfType(); + } +} + +class PIPViewState extends State with TickerProviderStateMixin { + late AnimationController _toggleFloatingAnimationController; + late AnimationController _dragAnimationController; + late PIPViewCorner _corner; + Offset _dragOffset = Offset.zero; + bool _isDragging = false; + bool _floating = false; + Map _offsets = {}; + + @override + void initState() { + super.initState(); + _corner = widget.initialCorner; + _toggleFloatingAnimationController = AnimationController( + duration: FluffyThemes.animationDuration, + vsync: this, + ); + _dragAnimationController = AnimationController( + duration: FluffyThemes.animationDuration, + vsync: this, + ); + } + + void _updateCornersOffsets({ + required Size spaceSize, + required Size widgetSize, + required EdgeInsets windowPadding, + }) { + _offsets = _calculateOffsets( + spaceSize: spaceSize, + widgetSize: widgetSize, + windowPadding: windowPadding, + ); + } + + bool _isAnimating() { + return _toggleFloatingAnimationController.isAnimating || + _dragAnimationController.isAnimating; + } + + void setFloating(bool floating) { + if (_isAnimating()) return; + dismissKeyboard(context); + setState(() { + _floating = floating; + }); + _toggleFloatingAnimationController.forward(); + } + + void stopFloating() { + if (_isAnimating()) return; + dismissKeyboard(context); + _toggleFloatingAnimationController.reverse().whenCompleteOrCancel(() { + if (mounted) { + setState(() { + _floating = false; + }); + } + }); + } + + void _onPanUpdate(DragUpdateDetails details) { + if (!_isDragging) return; + setState(() { + _dragOffset = _dragOffset.translate( + details.delta.dx, + details.delta.dy, + ); + }); + } + + void _onPanCancel() { + if (!_isDragging) return; + setState(() { + _dragAnimationController.value = 0; + _dragOffset = Offset.zero; + _isDragging = false; + }); + } + + void _onPanEnd(_) { + if (!_isDragging) return; + + final nearestCorner = _calculateNearestCorner( + offset: _dragOffset, + offsets: _offsets, + ); + setState(() { + _corner = nearestCorner; + _isDragging = false; + }); + _dragAnimationController.forward().whenCompleteOrCancel(() { + _dragAnimationController.value = 0; + _dragOffset = Offset.zero; + }); + } + + void _onPanStart(_) { + if (_isAnimating()) return; + setState(() { + _dragOffset = _offsets[_corner]!; + _isDragging = true; + }); + } + + @override + Widget build(BuildContext context) { + var windowPadding = MediaQuery.paddingOf(context); + if (widget.avoidKeyboard) { + windowPadding += MediaQuery.viewInsetsOf(context); + } + final isFloating = _floating; + + return LayoutBuilder( + builder: (context, constraints) { + final width = constraints.maxWidth; + final height = constraints.maxHeight; + var floatingWidth = widget.floatingWidth; + var floatingHeight = widget.floatingHeight; + if (floatingWidth == null && floatingHeight != null) { + floatingWidth = width / height * floatingHeight; + } + floatingWidth ??= 100.0; + floatingHeight ??= height / width * floatingWidth; + + final floatingWidgetSize = Size(floatingWidth, floatingHeight); + final fullWidgetSize = Size(width, height); + + _updateCornersOffsets( + spaceSize: fullWidgetSize, + widgetSize: floatingWidgetSize, + windowPadding: windowPadding, + ); + + final calculatedOffset = _offsets[_corner]; + + // BoxFit.cover + final widthRatio = floatingWidth / width; + final heightRatio = floatingHeight / height; + final scaledDownScale = widthRatio > heightRatio + ? floatingWidgetSize.width / fullWidgetSize.width + : floatingWidgetSize.height / fullWidgetSize.height; + + return Stack( + children: [ + AnimatedBuilder( + animation: Listenable.merge([ + _toggleFloatingAnimationController, + _dragAnimationController, + ]), + builder: (context, child) { + final animationCurve = CurveTween( + curve: Curves.easeInOutQuad, + ); + final dragAnimationValue = animationCurve.transform( + _dragAnimationController.value, + ); + final toggleFloatingAnimationValue = animationCurve.transform( + _toggleFloatingAnimationController.value, + ); + + final floatingOffset = _isDragging + ? _dragOffset + : Tween( + begin: _dragOffset, + end: calculatedOffset, + ).transform( + _dragAnimationController.isAnimating + ? dragAnimationValue + : toggleFloatingAnimationValue, + ); + final borderRadius = Tween( + begin: 0, + end: 10, + ).transform(toggleFloatingAnimationValue); + final width = Tween( + begin: fullWidgetSize.width, + end: floatingWidgetSize.width, + ).transform(toggleFloatingAnimationValue); + final height = Tween( + begin: fullWidgetSize.height, + end: floatingWidgetSize.height, + ).transform(toggleFloatingAnimationValue); + final scale = Tween( + begin: 1, + end: scaledDownScale, + ).transform(toggleFloatingAnimationValue); + return Positioned( + left: floatingOffset.dx, + top: floatingOffset.dy, + child: GestureDetector( + onPanStart: isFloating ? _onPanStart : null, + onPanUpdate: isFloating ? _onPanUpdate : null, + onPanCancel: isFloating ? _onPanCancel : null, + onPanEnd: isFloating ? _onPanEnd : null, + onTap: isFloating ? stopFloating : null, + child: Material( + elevation: 10, + borderRadius: BorderRadius.circular(borderRadius), + child: Container( + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration( + color: Colors.transparent, + borderRadius: BorderRadius.circular(borderRadius), + ), + width: width, + height: height, + child: Transform.scale( + scale: scale, + child: OverflowBox( + maxHeight: fullWidgetSize.height, + maxWidth: fullWidgetSize.width, + child: IgnorePointer( + ignoring: isFloating, + child: child, + ), + ), + ), + ), + ), + ), + ); + }, + child: Builder( + builder: (context) => widget.builder(context, isFloating), + ), + ), + ], + ); + }, + ); + } +} + +enum PIPViewCorner { + topLeft, + topRight, + bottomLeft, + bottomRight, +} + +class _CornerDistance { + final PIPViewCorner corner; + final double distance; + + _CornerDistance({ + required this.corner, + required this.distance, + }); +} + +PIPViewCorner _calculateNearestCorner({ + required Offset offset, + required Map offsets, +}) { + _CornerDistance calculateDistance(PIPViewCorner corner) { + final distance = offsets[corner]! + .translate( + -offset.dx, + -offset.dy, + ) + .distanceSquared; + return _CornerDistance( + corner: corner, + distance: distance, + ); + } + + final distances = PIPViewCorner.values.map(calculateDistance).toList(); + + distances.sort((cd0, cd1) => cd0.distance.compareTo(cd1.distance)); + + return distances.first.corner; +} + +Map _calculateOffsets({ + required Size spaceSize, + required Size widgetSize, + required EdgeInsets windowPadding, +}) { + Offset getOffsetForCorner(PIPViewCorner corner) { + const spacing = 16; + final left = spacing + windowPadding.left; + final top = spacing + windowPadding.top; + final right = + spaceSize.width - widgetSize.width - windowPadding.right - spacing; + final bottom = + spaceSize.height - widgetSize.height - windowPadding.bottom - spacing; + + switch (corner) { + case PIPViewCorner.topLeft: + return Offset(left, top); + case PIPViewCorner.topRight: + return Offset(right, top); + case PIPViewCorner.bottomLeft: + return Offset(left, bottom); + case PIPViewCorner.bottomRight: + return Offset(right, bottom); + } + } + + const corners = PIPViewCorner.values; + final offsets = {}; + for (final corner in corners) { + offsets[corner] = getOffsetForCorner(corner); + } + + return offsets; +} diff --git a/lib/pages/homeserver_picker/homeserver_picker.dart b/lib/pages/homeserver_picker/homeserver_picker.dart new file mode 100644 index 0000000..e572438 --- /dev/null +++ b/lib/pages/homeserver_picker/homeserver_picker.dart @@ -0,0 +1,221 @@ +import 'dart:async'; + +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; + +import 'package:collection/collection.dart'; +import 'package:flutter_web_auth_2/flutter_web_auth_2.dart'; +import 'package:go_router/go_router.dart'; +import 'package:matrix/matrix.dart'; +import 'package:universal_html/html.dart' as html; +import 'package:url_launcher/url_launcher.dart'; + +import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/config/setting_keys.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/homeserver_picker/homeserver_picker_view.dart'; +import 'package:fluffychat/utils/file_selector.dart'; +import 'package:fluffychat/utils/platform_infos.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_ok_cancel_alert_dialog.dart'; +import 'package:fluffychat/widgets/matrix.dart'; +import '../../utils/localized_exception_extension.dart'; + +class HomeserverPicker extends StatefulWidget { + final bool addMultiAccount; + const HomeserverPicker({required this.addMultiAccount, super.key}); + + @override + HomeserverPickerController createState() => HomeserverPickerController(); +} + +class HomeserverPickerController extends State { + bool isLoading = false; + + final TextEditingController homeserverController = TextEditingController( + text: AppSettings.defaultHomeserver.value, + ); + + String? error; + + /// Starts an analysis of the given homeserver. It uses the current domain and + /// makes sure that it is prefixed with https. Then it searches for the + /// well-known information and forwards to the login page depending on the + /// login type. + Future checkHomeserverAction({bool legacyPasswordLogin = false}) async { + final homeserverInput = + homeserverController.text.trim().toLowerCase().replaceAll(' ', '-'); + + if (homeserverInput.isEmpty) { + final client = await Matrix.of(context).getLoginClient(); + setState(() { + error = loginFlows = null; + isLoading = false; + client.homeserver = null; + }); + return; + } + setState(() { + error = loginFlows = null; + isLoading = true; + }); + + final l10n = L10n.of(context); + + try { + var homeserver = Uri.parse(homeserverInput); + if (homeserver.scheme.isEmpty) { + homeserver = Uri.https(homeserverInput, ''); + } + final client = await Matrix.of(context).getLoginClient(); + final (_, _, loginFlows, _) = await client.checkHomeserver(homeserver); + this.loginFlows = loginFlows; + if (supportsSso && !legacyPasswordLogin) { + if (!PlatformInfos.isMobile) { + final consent = await showOkCancelAlertDialog( + context: context, + title: l10n.appWantsToUseForLogin(homeserverInput), + message: l10n.appWantsToUseForLoginDescription, + okLabel: l10n.continueText, + ); + if (consent != OkCancelResult.ok) return; + } + return ssoLoginAction(); + } + context.push( + '${GoRouter.of(context).routeInformationProvider.value.uri.path}/login', + extra: client, + ); + } catch (e) { + setState( + () => error = (e).toLocalizedString( + context, + ExceptionContext.checkHomeserver, + ), + ); + } finally { + if (mounted) { + setState(() => isLoading = false); + } + } + } + + List? loginFlows; + + bool _supportsFlow(String flowType) => + loginFlows?.any((flow) => flow.type == flowType) ?? false; + + bool get supportsSso => _supportsFlow('m.login.sso'); + + bool isDefaultPlatform = + (PlatformInfos.isMobile || PlatformInfos.isWeb || PlatformInfos.isMacOS); + + bool get supportsPasswordLogin => _supportsFlow('m.login.password'); + + void ssoLoginAction() async { + final redirectUrl = kIsWeb + ? Uri.parse(html.window.location.href) + .resolveUri( + Uri(pathSegments: ['auth.html']), + ) + .toString() + : isDefaultPlatform + ? '${AppConfig.appOpenUrlScheme.toLowerCase()}://login' + : 'http://localhost:3001//login'; + final client = await Matrix.of(context).getLoginClient(); + final url = client.homeserver!.replace( + path: '/_matrix/client/v3/login/sso/redirect', + queryParameters: {'redirectUrl': redirectUrl}, + ); + + final urlScheme = isDefaultPlatform + ? Uri.parse(redirectUrl).scheme + : "http://localhost:3001"; + final result = await FlutterWebAuth2.authenticate( + url: url.toString(), + callbackUrlScheme: urlScheme, + options: FlutterWebAuth2Options(useWebview: PlatformInfos.isMobile), + ); + final token = Uri.parse(result).queryParameters['loginToken']; + if (token?.isEmpty ?? false) return; + + setState(() { + error = null; + isLoading = true; + }); + try { + await client.login( + LoginType.mLoginToken, + token: token, + initialDeviceDisplayName: PlatformInfos.clientName, + ); + } catch (e) { + setState(() { + error = e.toLocalizedString(context); + }); + } finally { + if (mounted) { + setState(() { + isLoading = false; + }); + } + } + } + + @override + Widget build(BuildContext context) => HomeserverPickerView(this); + + Future restoreBackup() async { + final picked = await selectFiles(context); + final file = picked.firstOrNull; + if (file == null) return; + setState(() { + error = null; + isLoading = true; + }); + try { + final client = await Matrix.of(context).getLoginClient(); + await client.importDump(String.fromCharCodes(await file.readAsBytes())); + Matrix.of(context).initMatrix(); + } catch (e) { + setState(() { + error = e.toLocalizedString(context); + }); + } finally { + if (mounted) { + setState(() { + isLoading = false; + }); + } + } + } + + void onMoreAction(MoreLoginActions action) { + switch (action) { + case MoreLoginActions.importBackup: + restoreBackup(); + case MoreLoginActions.privacy: + launchUrl(AppConfig.privacyUrl); + case MoreLoginActions.about: + PlatformInfos.showDialog(context); + } + } +} + +enum MoreLoginActions { importBackup, privacy, about } + +class IdentityProvider { + final String? id; + final String? name; + final String? icon; + final String? brand; + + IdentityProvider({this.id, this.name, this.icon, this.brand}); + + factory IdentityProvider.fromJson(Map json) => + IdentityProvider( + id: json['id'], + name: json['name'], + icon: json['icon'], + brand: json['brand'], + ); +} diff --git a/lib/pages/homeserver_picker/homeserver_picker_view.dart b/lib/pages/homeserver_picker/homeserver_picker_view.dart new file mode 100644 index 0000000..c49ac16 --- /dev/null +++ b/lib/pages/homeserver_picker/homeserver_picker_view.dart @@ -0,0 +1,225 @@ +import 'package:flutter/material.dart'; + +import 'package:flutter_linkify/flutter_linkify.dart'; +import 'package:url_launcher/url_launcher.dart'; +import 'package:url_launcher/url_launcher_string.dart'; + +import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/config/setting_keys.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/adaptive_dialog_action.dart'; +import 'package:fluffychat/widgets/layouts/login_scaffold.dart'; +import 'package:fluffychat/widgets/matrix.dart'; +import 'homeserver_picker.dart'; + +class HomeserverPickerView extends StatelessWidget { + final HomeserverPickerController controller; + + const HomeserverPickerView( + this.controller, { + super.key, + }); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + return LoginScaffold( + enforceMobileMode: + Matrix.of(context).widget.clients.any((client) => client.isLogged()), + appBar: AppBar( + centerTitle: true, + title: Text( + controller.widget.addMultiAccount + ? L10n.of(context).addAccount + : L10n.of(context).login, + ), + actions: [ + PopupMenuButton( + useRootNavigator: true, + onSelected: controller.onMoreAction, + itemBuilder: (_) => [ + PopupMenuItem( + value: MoreLoginActions.importBackup, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + const Icon(Icons.import_export_outlined), + const SizedBox(width: 12), + Text(L10n.of(context).hydrate), + ], + ), + ), + PopupMenuItem( + value: MoreLoginActions.privacy, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + const Icon(Icons.privacy_tip_outlined), + const SizedBox(width: 12), + Text(L10n.of(context).privacy), + ], + ), + ), + PopupMenuItem( + value: MoreLoginActions.about, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + const Icon(Icons.info_outlined), + const SizedBox(width: 12), + Text(L10n.of(context).about), + ], + ), + ), + ], + ), + ], + ), + body: LayoutBuilder( + builder: (context, constraints) { + return SingleChildScrollView( + child: ConstrainedBox( + constraints: BoxConstraints(minHeight: constraints.maxHeight), + child: IntrinsicHeight( + child: Column( + children: [ + Container( + alignment: Alignment.center, + padding: const EdgeInsets.symmetric(horizontal: 8.0), + child: Hero( + tag: 'info-logo', + child: Image.asset( + './assets/banner_transparent.png', + fit: BoxFit.fitWidth, + ), + ), + ), + const SizedBox(height: 32), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 32.0), + child: SelectableLinkify( + text: L10n.of(context).appIntroduction, + textScaleFactor: + MediaQuery.textScalerOf(context).scale(1), + textAlign: TextAlign.center, + linkStyle: TextStyle( + color: theme.colorScheme.secondary, + decorationColor: theme.colorScheme.secondary, + ), + onOpen: (link) => launchUrlString(link.url), + ), + ), + const Spacer(), + Padding( + padding: const EdgeInsets.all(32.0), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + TextField( + onSubmitted: (_) => + controller.checkHomeserverAction(), + controller: controller.homeserverController, + autocorrect: false, + keyboardType: TextInputType.url, + decoration: InputDecoration( + prefixIcon: const Icon(Icons.search_outlined), + filled: false, + border: OutlineInputBorder( + borderRadius: BorderRadius.circular( + AppConfig.borderRadius, + ), + ), + hintText: AppSettings.defaultHomeserver.value, + hintStyle: TextStyle( + color: theme.colorScheme.surfaceTint, + ), + labelText: 'Sign in with:', + errorText: controller.error, + errorMaxLines: 4, + suffixIcon: IconButton( + onPressed: () { + showDialog( + context: context, + builder: (context) => AlertDialog.adaptive( + title: Text( + L10n.of(context).whatIsAHomeserver, + ), + content: Linkify( + text: L10n.of(context) + .homeserverDescription, + textScaleFactor: + MediaQuery.textScalerOf(context) + .scale(1), + options: const LinkifyOptions( + humanize: false, + ), + linkStyle: TextStyle( + color: theme.colorScheme.primary, + decorationColor: + theme.colorScheme.primary, + ), + onOpen: (link) => + launchUrlString(link.url), + ), + actions: [ + AdaptiveDialogAction( + onPressed: () => launchUrl( + Uri.https('servers.joinmatrix.org'), + ), + child: Text( + L10n.of(context) + .discoverHomeservers, + ), + ), + AdaptiveDialogAction( + onPressed: Navigator.of(context).pop, + child: Text(L10n.of(context).close), + ), + ], + ), + ); + }, + icon: const Icon(Icons.info_outlined), + ), + ), + ), + const SizedBox(height: 32), + ElevatedButton( + style: ElevatedButton.styleFrom( + backgroundColor: theme.colorScheme.primary, + foregroundColor: theme.colorScheme.onPrimary, + ), + onPressed: controller.isLoading + ? null + : controller.checkHomeserverAction, + child: controller.isLoading + ? const LinearProgressIndicator() + : Text(L10n.of(context).continueText), + ), + TextButton( + style: TextButton.styleFrom( + foregroundColor: theme.colorScheme.secondary, + textStyle: theme.textTheme.labelMedium, + ), + onPressed: controller.isLoading + ? null + : () => controller.checkHomeserverAction( + legacyPasswordLogin: true, + ), + child: Text(L10n.of(context).loginWithMatrixId), + ), + ], + ), + ), + ], + ), + ), + ), + ); + }, + ), + ); + } +} diff --git a/lib/pages/image_viewer/image_viewer.dart b/lib/pages/image_viewer/image_viewer.dart new file mode 100644 index 0000000..3ae3410 --- /dev/null +++ b/lib/pages/image_viewer/image_viewer.dart @@ -0,0 +1,122 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/config/themes.dart'; +import 'package:fluffychat/pages/image_viewer/image_viewer_view.dart'; +import 'package:fluffychat/utils/platform_infos.dart'; +import 'package:fluffychat/utils/show_scaffold_dialog.dart'; +import 'package:fluffychat/widgets/share_scaffold_dialog.dart'; +import '../../utils/matrix_sdk_extensions/event_extension.dart'; + +class ImageViewer extends StatefulWidget { + final Event event; + final Timeline? timeline; + final BuildContext outerContext; + + const ImageViewer( + this.event, { + required this.outerContext, + this.timeline, + super.key, + }); + + @override + ImageViewerController createState() => ImageViewerController(); +} + +class ImageViewerController extends State { + final FocusNode focusNode = FocusNode(); + + @override + void initState() { + super.initState(); + allEvents = widget.timeline?.events + .where( + (event) => { + MessageTypes.Image, + MessageTypes.Sticker, + if (PlatformInfos.supportsVideoPlayer) MessageTypes.Video, + }.contains(event.messageType), + ) + .toList() + .reversed + .toList() ?? + [widget.event]; + var index = + allEvents.indexWhere((event) => event.eventId == widget.event.eventId); + if (index < 0) index = 0; + pageController = PageController(initialPage: index); + } + + late final PageController pageController; + + late final List allEvents; + + void onKeyEvent(KeyEvent event) { + switch (event.logicalKey) { + case LogicalKeyboardKey.arrowUp: + if (canGoBack) prevImage(); + break; + case LogicalKeyboardKey.arrowDown: + if (canGoNext) nextImage(); + break; + } + } + + void prevImage() async { + await pageController.previousPage( + duration: FluffyThemes.animationDuration, + curve: FluffyThemes.animationCurve, + ); + if (!mounted) return; + setState(() {}); + } + + void nextImage() async { + await pageController.nextPage( + duration: FluffyThemes.animationDuration, + curve: FluffyThemes.animationCurve, + ); + if (!mounted) return; + setState(() {}); + } + + int get _index => pageController.page?.toInt() ?? 0; + + Event get currentEvent => allEvents[_index]; + + bool get canGoNext => _index < allEvents.length - 1; + + bool get canGoBack => _index > 0; + + /// Forward this image to another room. + void forwardAction() => showScaffoldDialog( + context: context, + builder: (context) => ShareScaffoldDialog( + items: [ContentShareItem(currentEvent.content)], + ), + ); + + /// Save this file with a system call. + void saveFileAction(BuildContext context) => currentEvent.saveFile(context); + + /// Save this file with a system call. + void shareFileAction(BuildContext context) => currentEvent.shareFile(context); + + static const maxScaleFactor = 1.5; + + /// Go back if user swiped it away + void onInteractionEnds(ScaleEndDetails endDetails) { + if (PlatformInfos.usesTouchscreen == false) { + if (endDetails.velocity.pixelsPerSecond.dy > + MediaQuery.sizeOf(context).height * maxScaleFactor) { + Navigator.of(context, rootNavigator: false).pop(); + } + } + } + + @override + Widget build(BuildContext context) => ImageViewerView(this); +} diff --git a/lib/pages/image_viewer/image_viewer_view.dart b/lib/pages/image_viewer/image_viewer_view.dart new file mode 100644 index 0000000..f6cfa96 --- /dev/null +++ b/lib/pages/image_viewer/image_viewer_view.dart @@ -0,0 +1,158 @@ +import 'package:flutter/material.dart'; + +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/image_viewer/video_player.dart'; +import 'package:fluffychat/utils/platform_infos.dart'; +import 'package:fluffychat/widgets/hover_builder.dart'; +import 'package:fluffychat/widgets/mxc_image.dart'; +import 'image_viewer.dart'; + +class ImageViewerView extends StatelessWidget { + final ImageViewerController controller; + + const ImageViewerView(this.controller, {super.key}); + + @override + Widget build(BuildContext context) { + final iconButtonStyle = IconButton.styleFrom( + backgroundColor: Colors.black.withAlpha(200), + foregroundColor: Colors.white, + ); + return GestureDetector( + onTap: () => Navigator.of(context).pop(), + child: Scaffold( + backgroundColor: Colors.black.withAlpha(128), + extendBodyBehindAppBar: true, + appBar: AppBar( + elevation: 0, + leading: IconButton( + style: iconButtonStyle, + icon: const Icon(Icons.close), + onPressed: Navigator.of(context).pop, + color: Colors.white, + tooltip: L10n.of(context).close, + ), + backgroundColor: Colors.transparent, + actions: [ + IconButton( + style: iconButtonStyle, + icon: const Icon(Icons.reply_outlined), + onPressed: controller.forwardAction, + color: Colors.white, + tooltip: L10n.of(context).share, + ), + const SizedBox(width: 8), + IconButton( + style: iconButtonStyle, + icon: const Icon(Icons.download_outlined), + onPressed: () => controller.saveFileAction(context), + color: Colors.white, + tooltip: L10n.of(context).downloadFile, + ), + const SizedBox(width: 8), + if (PlatformInfos.isMobile) + // Use builder context to correctly position the share dialog on iPad + Padding( + padding: const EdgeInsets.only(right: 8.0), + child: Builder( + builder: (context) => IconButton( + style: iconButtonStyle, + onPressed: () => controller.shareFileAction(context), + tooltip: L10n.of(context).share, + color: Colors.white, + icon: Icon(Icons.adaptive.share_outlined), + ), + ), + ), + ], + ), + body: HoverBuilder( + builder: (context, hovered) => Stack( + children: [ + KeyboardListener( + focusNode: controller.focusNode, + onKeyEvent: controller.onKeyEvent, + child: PageView.builder( + scrollDirection: Axis.vertical, + controller: controller.pageController, + itemCount: controller.allEvents.length, + itemBuilder: (context, i) { + final event = controller.allEvents[i]; + switch (event.messageType) { + case MessageTypes.Video: + return Padding( + padding: const EdgeInsets.only(top: 52.0), + child: Center( + child: GestureDetector( + // Ignore taps to not go back here: + onTap: () {}, + child: EventVideoPlayer(event), + ), + ), + ); + case MessageTypes.Image: + case MessageTypes.Sticker: + default: + return InteractiveViewer( + minScale: 1.0, + maxScale: 10.0, + onInteractionEnd: controller.onInteractionEnds, + child: Center( + child: Hero( + tag: event.eventId, + child: GestureDetector( + // Ignore taps to not go back here: + onTap: () {}, + child: MxcImage( + key: ValueKey(event.eventId), + event: event, + fit: BoxFit.contain, + isThumbnail: false, + animated: true, + ), + ), + ), + ), + ); + } + }, + ), + ), + if (hovered) + Align( + alignment: Alignment.centerRight, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + if (controller.canGoBack) + Padding( + padding: const EdgeInsets.all(12.0), + child: IconButton( + style: iconButtonStyle, + tooltip: L10n.of(context).previous, + icon: const Icon(Icons.arrow_upward_outlined), + onPressed: controller.prevImage, + ), + ), + if (controller.canGoNext) + Padding( + padding: const EdgeInsets.all(12.0), + child: IconButton( + style: iconButtonStyle, + tooltip: L10n.of(context).next, + icon: const Icon(Icons.arrow_downward_outlined), + onPressed: controller.nextImage, + ), + ), + ], + ), + ), + ], + ), + ), + ), + ); + } +} diff --git a/lib/pages/image_viewer/video_player.dart b/lib/pages/image_viewer/video_player.dart new file mode 100644 index 0000000..3f3ac9e --- /dev/null +++ b/lib/pages/image_viewer/video_player.dart @@ -0,0 +1,191 @@ +import 'dart:io'; + +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; + +import 'package:chewie/chewie.dart'; +import 'package:matrix/matrix.dart'; +import 'package:path_provider/path_provider.dart'; +import 'package:universal_html/html.dart' as html; +import 'package:video_player/video_player.dart'; + +import 'package:fluffychat/utils/localized_exception_extension.dart'; +import 'package:fluffychat/utils/matrix_sdk_extensions/event_extension.dart'; +import 'package:fluffychat/utils/platform_infos.dart'; +import 'package:fluffychat/widgets/blur_hash.dart'; +import '../../../utils/error_reporter.dart'; +import '../../widgets/mxc_image.dart'; + +class EventVideoPlayer extends StatefulWidget { + final Event event; + + const EventVideoPlayer( + this.event, { + super.key, + }); + + @override + EventVideoPlayerState createState() => EventVideoPlayerState(); +} + +class EventVideoPlayerState extends State { + ChewieController? _chewieController; + VideoPlayerController? _videoPlayerController; + + double? _downloadProgress; + + // The video_player package only doesn't support Windows and Linux. + final _supportsVideoPlayer = + !PlatformInfos.isWindows && !PlatformInfos.isLinux; + + void _downloadAction() async { + if (!_supportsVideoPlayer) { + widget.event.saveFile(context); + return; + } + + try { + final fileSize = widget.event.content + .tryGetMap('info') + ?.tryGet('size'); + final videoFile = await widget.event.downloadAndDecryptAttachment( + onDownloadProgress: fileSize == null + ? null + : (progress) { + final progressPercentage = progress / fileSize; + setState(() { + _downloadProgress = + progressPercentage < 1 ? progressPercentage : null; + }); + }, + ); + + // Dispose the controllers if we already have them. + _disposeControllers(); + late VideoPlayerController videoPlayerController; + + // Create the VideoPlayerController from the contents of videoFile. + if (kIsWeb) { + final blob = html.Blob([videoFile.bytes]); + final networkUri = Uri.parse(html.Url.createObjectUrlFromBlob(blob)); + videoPlayerController = VideoPlayerController.networkUrl(networkUri); + } else { + final tempDir = await getTemporaryDirectory(); + final fileName = Uri.encodeComponent( + widget.event.attachmentOrThumbnailMxcUrl()!.pathSegments.last, + ); + final file = File('${tempDir.path}/${fileName}_${videoFile.name}'); + if (await file.exists() == false) { + await file.writeAsBytes(videoFile.bytes); + } + videoPlayerController = VideoPlayerController.file(file); + } + _videoPlayerController = videoPlayerController; + + await videoPlayerController.initialize(); + + final infoMap = widget.event.content.tryGetMap('info'); + final videoWidth = infoMap?.tryGet('w') ?? 400; + final videoHeight = infoMap?.tryGet('h') ?? 300; + + // Create a ChewieController on top. + setState(() { + _chewieController = ChewieController( + videoPlayerController: videoPlayerController, + showControlsOnInitialize: false, + autoPlay: true, + autoInitialize: true, + looping: true, + aspectRatio: videoHeight == 0 ? null : videoWidth / videoHeight, + ); + }); + } on IOException catch (e) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text(e.toLocalizedString(context)), + ), + ); + } catch (e, s) { + ErrorReporter(context, 'Unable to play video').onErrorCallback(e, s); + } + } + + void _disposeControllers() { + _chewieController?.dispose(); + _videoPlayerController?.dispose(); + _chewieController = null; + _videoPlayerController = null; + } + + @override + void dispose() { + _disposeControllers(); + super.dispose(); + } + + @override + void initState() { + super.initState(); + WidgetsBinding.instance.addPostFrameCallback((_) { + _downloadAction(); + }); + } + + static const String fallbackBlurHash = 'L5H2EC=PM+yV0g-mq.wG9c010J}I'; + + @override + Widget build(BuildContext context) { + final hasThumbnail = widget.event.hasThumbnail; + final blurHash = (widget.event.infoMap as Map) + .tryGet('xyz.amorgan.blurhash') ?? + fallbackBlurHash; + final infoMap = widget.event.content.tryGetMap('info'); + final videoWidth = infoMap?.tryGet('w') ?? 400; + final videoHeight = infoMap?.tryGet('h') ?? 300; + final height = MediaQuery.sizeOf(context).height - 52; + final width = videoWidth * (height / videoHeight); + + final chewieController = _chewieController; + return chewieController != null + ? Center( + child: SizedBox( + width: width, + height: height, + child: Chewie(controller: chewieController), + ), + ) + : Stack( + children: [ + Center( + child: Hero( + tag: widget.event.eventId, + child: hasThumbnail + ? MxcImage( + event: widget.event, + isThumbnail: true, + width: width, + height: height, + fit: BoxFit.cover, + placeholder: (context) => BlurHash( + blurhash: blurHash, + width: width, + height: height, + fit: BoxFit.cover, + ), + ) + : BlurHash( + blurhash: blurHash, + width: width, + height: height, + ), + ), + ), + Center( + child: CircularProgressIndicator.adaptive( + value: _downloadProgress, + ), + ), + ], + ); + } +} diff --git a/lib/pages/invitation_selection/invitation_selection.dart b/lib/pages/invitation_selection/invitation_selection.dart new file mode 100644 index 0000000..0c0d27f --- /dev/null +++ b/lib/pages/invitation_selection/invitation_selection.dart @@ -0,0 +1,116 @@ +import 'dart:async'; + +import 'package:flutter/material.dart'; + +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/invitation_selection/invitation_selection_view.dart'; +import 'package:fluffychat/widgets/future_loading_dialog.dart'; +import 'package:fluffychat/widgets/matrix.dart'; +import '../../utils/localized_exception_extension.dart'; + +class InvitationSelection extends StatefulWidget { + final String roomId; + const InvitationSelection({ + super.key, + required this.roomId, + }); + + @override + InvitationSelectionController createState() => + InvitationSelectionController(); +} + +class InvitationSelectionController extends State { + TextEditingController controller = TextEditingController(); + late String currentSearchTerm; + bool loading = false; + List foundProfiles = []; + Timer? coolDown; + + String? get roomId => widget.roomId; + + Future> getContacts(BuildContext context) async { + final client = Matrix.of(context).client; + final room = client.getRoomById(roomId!)!; + + final participants = (room.summary.mJoinedMemberCount ?? 0) > 100 + ? room.getParticipants() + : await room.requestParticipants(); + participants.removeWhere( + (u) => ![Membership.join, Membership.invite].contains(u.membership), + ); + final contacts = client.rooms + .where((r) => r.isDirectChat) + .map((r) => r.unsafeGetUserFromMemoryOrFallback(r.directChatMatrixID!)) + .toList(); + contacts.sort( + (a, b) => a.calcDisplayname().toLowerCase().compareTo( + b.calcDisplayname().toLowerCase(), + ), + ); + return contacts; + } + + void inviteAction(BuildContext context, String id, String displayname) async { + final room = Matrix.of(context).client.getRoomById(roomId!)!; + + final success = await showFutureLoadingDialog( + context: context, + future: () => room.invite(id), + ); + if (success.error == null) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text(L10n.of(context).contactHasBeenInvitedToTheGroup), + ), + ); + } + } + + void searchUserWithCoolDown(String text) async { + coolDown?.cancel(); + coolDown = Timer( + const Duration(milliseconds: 500), + () => searchUser(context, text), + ); + } + + void searchUser(BuildContext context, String text) async { + coolDown?.cancel(); + if (text.isEmpty) { + setState(() => foundProfiles = []); + } + currentSearchTerm = text; + if (currentSearchTerm.isEmpty) return; + if (loading) return; + setState(() => loading = true); + final matrix = Matrix.of(context); + SearchUserDirectoryResponse response; + try { + response = await matrix.client.searchUserDirectory(text, limit: 10); + } catch (e) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text((e).toLocalizedString(context))), + ); + return; + } finally { + setState(() => loading = false); + } + setState(() { + foundProfiles = List.from(response.results); + if (text.isValidMatrixId && + foundProfiles.indexWhere((profile) => text == profile.userId) == -1) { + setState( + () => foundProfiles = [ + Profile.fromJson({'user_id': text}), + ], + ); + } + }); + } + + @override + Widget build(BuildContext context) => InvitationSelectionView(this); +} diff --git a/lib/pages/invitation_selection/invitation_selection_view.dart b/lib/pages/invitation_selection/invitation_selection_view.dart new file mode 100644 index 0000000..f4a84d5 --- /dev/null +++ b/lib/pages/invitation_selection/invitation_selection_view.dart @@ -0,0 +1,197 @@ +import 'package:flutter/material.dart'; + +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/invitation_selection/invitation_selection.dart'; +import 'package:fluffychat/widgets/avatar.dart'; +import 'package:fluffychat/widgets/layouts/max_width_body.dart'; +import 'package:fluffychat/widgets/matrix.dart'; +import '../../widgets/adaptive_dialogs/user_dialog.dart'; + +class InvitationSelectionView extends StatelessWidget { + final InvitationSelectionController controller; + + const InvitationSelectionView(this.controller, {super.key}); + + @override + Widget build(BuildContext context) { + final room = + Matrix.of(context).client.getRoomById(controller.widget.roomId); + if (room == null) { + return Scaffold( + appBar: AppBar( + title: Text(L10n.of(context).oopsSomethingWentWrong), + ), + body: Center( + child: Text(L10n.of(context).youAreNoLongerParticipatingInThisChat), + ), + ); + } + + final groupName = room.name.isEmpty ? L10n.of(context).group : room.name; + final theme = Theme.of(context); + return Scaffold( + appBar: AppBar( + leading: const Center(child: BackButton()), + titleSpacing: 0, + title: Text(L10n.of(context).inviteContact), + ), + body: MaxWidthBody( + innerPadding: const EdgeInsets.symmetric(vertical: 8), + child: Column( + children: [ + Padding( + padding: const EdgeInsets.all(16.0), + child: TextField( + textInputAction: TextInputAction.search, + decoration: InputDecoration( + filled: true, + fillColor: theme.colorScheme.secondaryContainer, + border: OutlineInputBorder( + borderSide: BorderSide.none, + borderRadius: BorderRadius.circular(99), + ), + hintStyle: TextStyle( + color: theme.colorScheme.onPrimaryContainer, + fontWeight: FontWeight.normal, + ), + hintText: L10n.of(context).inviteContactToGroup(groupName), + prefixIcon: controller.loading + ? const Padding( + padding: EdgeInsets.symmetric( + vertical: 10.0, + horizontal: 12, + ), + child: SizedBox.square( + dimension: 24, + child: CircularProgressIndicator.adaptive( + strokeWidth: 2, + ), + ), + ) + : const Icon(Icons.search_outlined), + ), + onChanged: controller.searchUserWithCoolDown, + ), + ), + StreamBuilder( + stream: room.client.onRoomState.stream + .where((update) => update.roomId == room.id), + builder: (context, snapshot) { + final participants = + room.getParticipants().map((user) => user.id).toSet(); + return controller.foundProfiles.isNotEmpty + ? ListView.builder( + physics: const NeverScrollableScrollPhysics(), + shrinkWrap: true, + itemCount: controller.foundProfiles.length, + itemBuilder: (BuildContext context, int i) => + _InviteContactListTile( + profile: controller.foundProfiles[i], + isMember: participants + .contains(controller.foundProfiles[i].userId), + onTap: () => controller.inviteAction( + context, + controller.foundProfiles[i].userId, + controller.foundProfiles[i].displayName ?? + controller.foundProfiles[i].userId.localpart ?? + L10n.of(context).user, + ), + ), + ) + : FutureBuilder>( + future: controller.getContacts(context), + builder: (BuildContext context, snapshot) { + if (!snapshot.hasData) { + return const Center( + child: CircularProgressIndicator.adaptive( + strokeWidth: 2, + ), + ); + } + final contacts = snapshot.data!; + return ListView.builder( + physics: const NeverScrollableScrollPhysics(), + shrinkWrap: true, + itemCount: contacts.length, + itemBuilder: (BuildContext context, int i) => + _InviteContactListTile( + user: contacts[i], + profile: Profile( + avatarUrl: contacts[i].avatarUrl, + displayName: contacts[i].displayName ?? + contacts[i].id.localpart ?? + L10n.of(context).user, + userId: contacts[i].id, + ), + isMember: participants.contains(contacts[i].id), + onTap: () => controller.inviteAction( + context, + contacts[i].id, + contacts[i].displayName ?? + contacts[i].id.localpart ?? + L10n.of(context).user, + ), + ), + ); + }, + ); + }, + ), + ], + ), + ), + ); + } +} + +class _InviteContactListTile extends StatelessWidget { + final Profile profile; + final User? user; + final bool isMember; + final void Function() onTap; + + const _InviteContactListTile({ + required this.profile, + this.user, + required this.isMember, + required this.onTap, + }); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + final l10n = L10n.of(context); + + return ListTile( + leading: Avatar( + mxContent: profile.avatarUrl, + name: profile.displayName, + presenceUserId: profile.userId, + onTap: () => UserDialog.show( + context: context, + profile: profile, + ), + ), + title: Text( + profile.displayName ?? profile.userId.localpart ?? l10n.user, + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + subtitle: Text( + profile.userId, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + color: theme.colorScheme.secondary, + ), + ), + trailing: TextButton.icon( + onPressed: isMember ? null : onTap, + label: Text(isMember ? l10n.participant : l10n.invite), + icon: Icon(isMember ? Icons.check : Icons.add), + ), + ); + } +} diff --git a/lib/pages/key_verification/key_verification_dialog.dart b/lib/pages/key_verification/key_verification_dialog.dart new file mode 100644 index 0000000..cea3713 --- /dev/null +++ b/lib/pages/key_verification/key_verification_dialog.dart @@ -0,0 +1,411 @@ +import 'dart:convert'; +import 'dart:ui'; + +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +import 'package:matrix/encryption.dart'; +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/adaptive_dialog_action.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_ok_cancel_alert_dialog.dart'; +import 'package:fluffychat/widgets/avatar.dart'; +import 'package:fluffychat/widgets/future_loading_dialog.dart'; + +class KeyVerificationDialog extends StatefulWidget { + Future show(BuildContext context) => showAdaptiveDialog( + context: context, + builder: (context) => this, + barrierDismissible: false, + ); + + final KeyVerification request; + + const KeyVerificationDialog({ + super.key, + required this.request, + }); + + @override + KeyVerificationPageState createState() => KeyVerificationPageState(); +} + +class KeyVerificationPageState extends State { + void Function()? originalOnUpdate; + late final List sasEmoji; + + @override + void initState() { + originalOnUpdate = widget.request.onUpdate; + widget.request.onUpdate = () { + originalOnUpdate?.call(); + setState(() {}); + }; + widget.request.client.getProfileFromUserId(widget.request.userId).then((p) { + profile = p; + setState(() {}); + }); + rootBundle.loadString('assets/sas-emoji.json').then((e) { + sasEmoji = json.decode(e); + setState(() {}); + }); + super.initState(); + } + + @override + void dispose() { + widget.request.onUpdate = + originalOnUpdate; // don't want to get updates anymore + if (![KeyVerificationState.error, KeyVerificationState.done] + .contains(widget.request.state)) { + widget.request.cancel('m.user'); + } + super.dispose(); + } + + Profile? profile; + + Future checkInput(String input) async { + if (input.isEmpty) return; + + final valid = await showFutureLoadingDialog( + context: context, + future: () async { + // make sure the loading spinner shows before we test the keys + await Future.delayed(const Duration(milliseconds: 100)); + var valid = false; + try { + await widget.request.openSSSS(keyOrPassphrase: input); + valid = true; + } catch (_) { + valid = false; + } + return valid; + }, + ); + if (valid.error != null) { + await showOkAlertDialog( + useRootNavigator: false, + context: context, + title: L10n.of(context).incorrectPassphraseOrKey, + ); + } + } + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + User? user; + final directChatId = + widget.request.client.getDirectChatFromUserId(widget.request.userId); + if (directChatId != null) { + user = widget.request.client + .getRoomById(directChatId)! + .unsafeGetUserFromMemoryOrFallback(widget.request.userId); + } + final displayName = + user?.calcDisplayname() ?? widget.request.userId.localpart!; + var title = Text(L10n.of(context).verifyTitle); + Widget body; + final buttons = []; + + switch (widget.request.state) { + case KeyVerificationState.showQRSuccess: + case KeyVerificationState.confirmQRScan: + throw 'Not implemented'; + case KeyVerificationState.askSSSS: + // prompt the user for their ssss passphrase / key + final textEditingController = TextEditingController(); + String input; + body = Container( + margin: const EdgeInsets.only(left: 8.0, right: 8.0), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + L10n.of(context).askSSSSSign, + style: const TextStyle(fontSize: 20), + ), + Container(height: 10), + TextField( + controller: textEditingController, + autofocus: false, + autocorrect: false, + onSubmitted: (s) { + input = s; + checkInput(input); + }, + minLines: 1, + maxLines: 1, + obscureText: true, + decoration: InputDecoration( + hintText: L10n.of(context).passphraseOrKey, + prefixStyle: TextStyle(color: theme.colorScheme.primary), + suffixStyle: TextStyle(color: theme.colorScheme.primary), + border: const OutlineInputBorder(), + ), + ), + ], + ), + ); + buttons.add( + AdaptiveDialogAction( + child: Text( + L10n.of(context).submit, + ), + onPressed: () => checkInput(textEditingController.text), + ), + ); + buttons.add( + AdaptiveDialogAction( + child: Text( + L10n.of(context).skip, + ), + onPressed: () => widget.request.openSSSS(skip: true), + ), + ); + break; + case KeyVerificationState.askAccept: + title = Text(L10n.of(context).newVerificationRequest); + body = Column( + mainAxisSize: MainAxisSize.min, + children: [ + const SizedBox(height: 16), + Avatar( + mxContent: user?.avatarUrl, + name: displayName, + size: Avatar.defaultSize * 2, + ), + const SizedBox(height: 16), + Text( + L10n.of(context).askVerificationRequest(displayName), + ), + ], + ); + buttons.add( + AdaptiveDialogAction( + onPressed: () => widget.request + .rejectVerification() + .then((_) => Navigator.of(context, rootNavigator: false).pop()), + child: Text( + L10n.of(context).reject, + style: TextStyle(color: theme.colorScheme.error), + ), + ), + ); + buttons.add( + AdaptiveDialogAction( + onPressed: () => widget.request.acceptVerification(), + child: Text(L10n.of(context).accept), + ), + ); + break; + case KeyVerificationState.askChoice: + case KeyVerificationState.waitingAccept: + body = Center( + child: Column( + children: [ + const SizedBox(height: 16), + Stack( + alignment: Alignment.center, + children: [ + Avatar( + mxContent: user?.avatarUrl, + name: displayName, + ), + const SizedBox( + width: Avatar.defaultSize + 2, + height: Avatar.defaultSize + 2, + child: CircularProgressIndicator(strokeWidth: 2), + ), + ], + ), + const SizedBox(height: 16), + Text( + L10n.of(context).waitingPartnerAcceptRequest, + textAlign: TextAlign.center, + ), + ], + ), + ); + buttons.add( + AdaptiveDialogAction( + onPressed: () => widget.request.cancel(), + child: Text(L10n.of(context).cancel), + ), + ); + + break; + case KeyVerificationState.askSas: + TextSpan compareWidget; + // maybe add a button to switch between the two and only determine default + // view for if "emoji" is a present sasType or not? + + if (widget.request.sasTypes.contains('emoji')) { + title = Text( + L10n.of(context).compareEmojiMatch, + maxLines: 1, + style: const TextStyle(fontSize: 16), + ); + compareWidget = TextSpan( + children: widget.request.sasEmojis + .map((e) => WidgetSpan(child: _Emoji(e, sasEmoji))) + .toList(), + ); + } else { + title = Text(L10n.of(context).compareNumbersMatch); + final numbers = widget.request.sasNumbers; + final numbstr = '${numbers[0]}-${numbers[1]}-${numbers[2]}'; + compareWidget = + TextSpan(text: numbstr, style: const TextStyle(fontSize: 40)); + } + body = Column( + mainAxisSize: MainAxisSize.min, + children: [ + Text.rich( + compareWidget, + textAlign: TextAlign.center, + ), + ], + ); + buttons.add( + AdaptiveDialogAction( + onPressed: () => widget.request.rejectSas(), + child: Text( + L10n.of(context).theyDontMatch, + style: TextStyle(color: theme.colorScheme.error), + ), + ), + ); + buttons.add( + AdaptiveDialogAction( + onPressed: () => widget.request.acceptSas(), + child: Text(L10n.of(context).theyMatch), + ), + ); + break; + case KeyVerificationState.waitingSas: + final acceptText = widget.request.sasTypes.contains('emoji') + ? L10n.of(context).waitingPartnerEmoji + : L10n.of(context).waitingPartnerNumbers; + body = Column( + mainAxisSize: MainAxisSize.min, + children: [ + const SizedBox(height: 16), + const CircularProgressIndicator.adaptive(strokeWidth: 2), + const SizedBox(height: 16), + Text( + acceptText, + textAlign: TextAlign.center, + ), + ], + ); + break; + case KeyVerificationState.done: + title = Text(L10n.of(context).verifySuccess); + body = const Padding( + padding: EdgeInsets.all(16.0), + child: Icon( + Icons.verified_outlined, + color: Colors.green, + size: 128.0, + ), + ); + buttons.add( + AdaptiveDialogAction( + child: Text( + L10n.of(context).close, + ), + onPressed: () => Navigator.of(context, rootNavigator: false).pop(), + ), + ); + break; + case KeyVerificationState.error: + title = const Text(''); + body = Column( + mainAxisSize: MainAxisSize.min, + children: [ + const SizedBox(height: 16), + Icon(Icons.cancel, color: theme.colorScheme.error, size: 64.0), + const SizedBox(height: 16), + // TODO: Add better error UI to user + Text( + 'Error ${widget.request.canceledCode}: ${widget.request.canceledReason}', + textAlign: TextAlign.center, + ), + ], + ); + buttons.add( + AdaptiveDialogAction( + child: Text( + L10n.of(context).close, + ), + onPressed: () => Navigator.of(context, rootNavigator: false).pop(), + ), + ); + break; + } + + return AlertDialog.adaptive( + title: title, + content: SizedBox( + height: 256, + width: 256, + child: ListView( + children: [body], + ), + ), + actions: buttons, + ); + } +} + +class _Emoji extends StatelessWidget { + final KeyVerificationEmoji emoji; + final List? sasEmoji; + + const _Emoji(this.emoji, this.sasEmoji); + + String getLocalizedName() { + final sasEmoji = this.sasEmoji; + if (sasEmoji == null) { + // asset is still being loaded + return emoji.name; + } + final translations = Map.from( + sasEmoji[emoji.number]['translated_descriptions'], + ); + translations['en'] = emoji.name; + for (final locale in PlatformDispatcher.instance.locales) { + final wantLocaleParts = locale.toString().split('_'); + final wantLanguage = wantLocaleParts.removeAt(0); + for (final haveLocale in translations.keys) { + final haveLocaleParts = haveLocale.split('_'); + final haveLanguage = haveLocaleParts.removeAt(0); + if (haveLanguage == wantLanguage && + (Set.from(haveLocaleParts)..removeAll(wantLocaleParts)).isEmpty && + (translations[haveLocale]?.isNotEmpty ?? false)) { + return translations[haveLocale]!; + } + } + } + return emoji.name; + } + + @override + Widget build(BuildContext context) { + return Column( + mainAxisSize: MainAxisSize.min, + children: [ + Text(emoji.emoji, style: const TextStyle(fontSize: 50)), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 4.0), + child: Text(getLocalizedName()), + ), + const SizedBox(height: 10, width: 5), + ], + ); + } +} diff --git a/lib/pages/login/login.dart b/lib/pages/login/login.dart new file mode 100644 index 0000000..8dee4ba --- /dev/null +++ b/lib/pages/login/login.dart @@ -0,0 +1,248 @@ +import 'dart:async'; + +import 'package:flutter/material.dart'; + +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/localized_exception_extension.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_ok_cancel_alert_dialog.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_text_input_dialog.dart'; +import 'package:fluffychat/widgets/future_loading_dialog.dart'; +import 'package:fluffychat/widgets/matrix.dart'; +import '../../utils/platform_infos.dart'; +import 'login_view.dart'; + +class Login extends StatefulWidget { + final Client client; + const Login({required this.client, super.key}); + + @override + LoginController createState() => LoginController(); +} + +class LoginController extends State { + final TextEditingController usernameController = TextEditingController(); + final TextEditingController passwordController = TextEditingController(); + String? usernameError; + String? passwordError; + bool loading = false; + bool showPassword = false; + + void toggleShowPassword() => + setState(() => showPassword = !loading && !showPassword); + + void login() async { + final matrix = Matrix.of(context); + if (usernameController.text.isEmpty) { + setState(() => usernameError = L10n.of(context).pleaseEnterYourUsername); + } else { + setState(() => usernameError = null); + } + if (passwordController.text.isEmpty) { + setState(() => passwordError = L10n.of(context).pleaseEnterYourPassword); + } else { + setState(() => passwordError = null); + } + + if (usernameController.text.isEmpty || passwordController.text.isEmpty) { + return; + } + + setState(() => loading = true); + + _coolDown?.cancel(); + + try { + final username = usernameController.text; + AuthenticationIdentifier identifier; + if (username.isEmail) { + identifier = AuthenticationThirdPartyIdentifier( + medium: 'email', + address: username, + ); + } else if (username.isPhoneNumber) { + identifier = AuthenticationThirdPartyIdentifier( + medium: 'msisdn', + address: username, + ); + } else { + identifier = AuthenticationUserIdentifier(user: username); + } + final client = await matrix.getLoginClient(); + await client.login( + LoginType.mLoginPassword, + identifier: identifier, + // To stay compatible with older server versions + // ignore: deprecated_member_use + user: identifier.type == AuthenticationIdentifierTypes.userId + ? username + : null, + password: passwordController.text, + initialDeviceDisplayName: PlatformInfos.clientName, + ); + } on MatrixException catch (exception) { + setState(() => passwordError = exception.errorMessage); + return setState(() => loading = false); + } catch (exception) { + setState(() => passwordError = exception.toString()); + return setState(() => loading = false); + } + + if (mounted) setState(() => loading = false); + } + + Timer? _coolDown; + + void checkWellKnownWithCoolDown(String userId) async { + _coolDown?.cancel(); + _coolDown = Timer( + const Duration(seconds: 1), + () => _checkWellKnown(userId), + ); + } + + void _checkWellKnown(String userId) async { + if (mounted) setState(() => usernameError = null); + if (!userId.isValidMatrixId) return; + final oldHomeserver = widget.client.homeserver; + try { + var newDomain = Uri.https(userId.domain!, ''); + widget.client.homeserver = newDomain; + DiscoveryInformation? wellKnownInformation; + try { + wellKnownInformation = await widget.client.getWellknown(); + if (wellKnownInformation.mHomeserver.baseUrl.toString().isNotEmpty) { + newDomain = wellKnownInformation.mHomeserver.baseUrl; + } + } catch (_) { + // do nothing, newDomain is already set to a reasonable fallback + } + if (newDomain != oldHomeserver) { + await widget.client.checkHomeserver(newDomain); + + if (widget.client.homeserver == null) { + widget.client.homeserver = oldHomeserver; + // okay, the server we checked does not appear to be a matrix server + Logs().v( + '$newDomain is not running a homeserver, asking to use $oldHomeserver', + ); + final dialogResult = await showOkCancelAlertDialog( + context: context, + useRootNavigator: false, + title: L10n.of(context) + .noMatrixServer(newDomain.toString(), oldHomeserver.toString()), + okLabel: L10n.of(context).ok, + cancelLabel: L10n.of(context).cancel, + ); + if (dialogResult == OkCancelResult.ok) { + if (mounted) setState(() => usernameError = null); + } else { + Navigator.of(context, rootNavigator: false).pop(); + return; + } + } + usernameError = null; + if (mounted) setState(() {}); + } else { + widget.client.homeserver = oldHomeserver; + if (mounted) { + setState(() {}); + } + } + } catch (e) { + widget.client.homeserver = oldHomeserver; + usernameError = e.toLocalizedString(context); + if (mounted) setState(() {}); + } + } + + void passwordForgotten() async { + final input = await showTextInputDialog( + useRootNavigator: false, + context: context, + title: L10n.of(context).passwordForgotten, + message: L10n.of(context).enterAnEmailAddress, + okLabel: L10n.of(context).ok, + cancelLabel: L10n.of(context).cancel, + initialText: + usernameController.text.isEmail ? usernameController.text : '', + hintText: L10n.of(context).enterAnEmailAddress, + keyboardType: TextInputType.emailAddress, + ); + if (input == null) return; + final clientSecret = DateTime.now().millisecondsSinceEpoch.toString(); + final response = await showFutureLoadingDialog( + context: context, + future: () => widget.client.requestTokenToResetPasswordEmail( + clientSecret, + input, + sendAttempt++, + ), + ); + if (response.error != null) return; + final password = await showTextInputDialog( + useRootNavigator: false, + context: context, + title: L10n.of(context).passwordForgotten, + message: L10n.of(context).chooseAStrongPassword, + okLabel: L10n.of(context).ok, + cancelLabel: L10n.of(context).cancel, + hintText: '******', + obscureText: true, + minLines: 1, + maxLines: 1, + ); + if (password == null) return; + final ok = await showOkAlertDialog( + useRootNavigator: false, + context: context, + title: L10n.of(context).weSentYouAnEmail, + message: L10n.of(context).pleaseClickOnLink, + okLabel: L10n.of(context).iHaveClickedOnLink, + ); + if (ok != OkCancelResult.ok) return; + final data = { + 'new_password': password, + 'logout_devices': false, + "auth": AuthenticationThreePidCreds( + type: AuthenticationTypes.emailIdentity, + threepidCreds: ThreepidCreds( + sid: response.result!.sid, + clientSecret: clientSecret, + ), + ).toJson(), + }; + final success = await showFutureLoadingDialog( + context: context, + future: () => widget.client.request( + RequestType.POST, + '/client/v3/account/password', + data: data, + ), + ); + if (success.error == null) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text(L10n.of(context).passwordHasBeenChanged)), + ); + usernameController.text = input; + passwordController.text = password; + login(); + } + } + + static int sendAttempt = 0; + + @override + Widget build(BuildContext context) => LoginView(this); +} + +extension on String { + static final RegExp _phoneRegex = + RegExp(r'^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\s\./0-9]*$'); + static final RegExp _emailRegex = RegExp(r'(.+)@(.+)\.(.+)'); + + bool get isEmail => _emailRegex.hasMatch(this); + + bool get isPhoneNumber => _phoneRegex.hasMatch(this); +} diff --git a/lib/pages/login/login_view.dart b/lib/pages/login/login_view.dart new file mode 100644 index 0000000..a82b505 --- /dev/null +++ b/lib/pages/login/login_view.dart @@ -0,0 +1,141 @@ +import 'package:flutter/material.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/widgets/layouts/login_scaffold.dart'; +import 'package:fluffychat/widgets/matrix.dart'; +import 'login.dart'; + +class LoginView extends StatelessWidget { + final LoginController controller; + + const LoginView(this.controller, {super.key}); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + final homeserver = controller.widget.client.homeserver + .toString() + .replaceFirst('https://', ''); + final title = L10n.of(context).logInTo(homeserver); + final titleParts = title.split(homeserver); + + return LoginScaffold( + enforceMobileMode: + Matrix.of(context).widget.clients.any((client) => client.isLogged()), + appBar: AppBar( + leading: controller.loading ? null : const Center(child: BackButton()), + automaticallyImplyLeading: !controller.loading, + titleSpacing: !controller.loading ? 0 : null, + title: Text.rich( + TextSpan( + children: [ + TextSpan(text: titleParts.first), + TextSpan( + text: homeserver, + style: const TextStyle(fontWeight: FontWeight.bold), + ), + TextSpan(text: titleParts.last), + ], + ), + style: const TextStyle(fontSize: 18), + ), + ), + body: Builder( + builder: (context) { + return AutofillGroup( + child: ListView( + padding: const EdgeInsets.symmetric(horizontal: 8), + children: [ + Hero( + tag: 'info-logo', + child: Image.asset('assets/banner_transparent.png'), + ), + const SizedBox(height: 16), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 24.0), + child: TextField( + readOnly: controller.loading, + autocorrect: false, + autofocus: true, + onChanged: controller.checkWellKnownWithCoolDown, + controller: controller.usernameController, + textInputAction: TextInputAction.next, + keyboardType: TextInputType.emailAddress, + autofillHints: + controller.loading ? null : [AutofillHints.username], + decoration: InputDecoration( + prefixIcon: const Icon(Icons.account_box_outlined), + errorText: controller.usernameError, + errorStyle: const TextStyle(color: Colors.orange), + hintText: '@username:domain', + labelText: L10n.of(context).emailOrUsername, + ), + ), + ), + const SizedBox(height: 16), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 24.0), + child: TextField( + readOnly: controller.loading, + autocorrect: false, + autofillHints: + controller.loading ? null : [AutofillHints.password], + controller: controller.passwordController, + textInputAction: TextInputAction.go, + obscureText: !controller.showPassword, + onSubmitted: (_) => controller.login(), + decoration: InputDecoration( + prefixIcon: const Icon(Icons.lock_outlined), + errorText: controller.passwordError, + errorStyle: const TextStyle(color: Colors.orange), + suffixIcon: IconButton( + onPressed: controller.toggleShowPassword, + icon: Icon( + controller.showPassword + ? Icons.visibility_off_outlined + : Icons.visibility_outlined, + color: Colors.black, + ), + ), + hintText: '******', + labelText: L10n.of(context).password, + ), + ), + ), + const SizedBox(height: 16), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 24.0), + child: ElevatedButton( + style: ElevatedButton.styleFrom( + backgroundColor: theme.colorScheme.primary, + foregroundColor: theme.colorScheme.onPrimary, + ), + onPressed: controller.loading ? null : controller.login, + child: controller.loading + ? const LinearProgressIndicator() + : Text(L10n.of(context).login), + ), + ), + const SizedBox(height: 16), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 24.0), + child: TextButton( + onPressed: controller.loading + ? () {} + : controller.passwordForgotten, + style: TextButton.styleFrom( + foregroundColor: theme.colorScheme.error, + ), + child: Text(L10n.of(context).passwordForgotten), + ), + ), + const SizedBox(height: 16), + ], + ), + ); + }, + ), + ); + } +} diff --git a/lib/pages/new_group/new_group.dart b/lib/pages/new_group/new_group.dart new file mode 100644 index 0000000..03b9b64 --- /dev/null +++ b/lib/pages/new_group/new_group.dart @@ -0,0 +1,151 @@ +import 'dart:typed_data'; + +import 'package:flutter/material.dart'; + +import 'package:go_router/go_router.dart'; +import 'package:matrix/matrix.dart' as sdk; +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/new_group/new_group_view.dart'; +import 'package:fluffychat/utils/file_selector.dart'; +import 'package:fluffychat/widgets/matrix.dart'; + +class NewGroup extends StatefulWidget { + final CreateGroupType createGroupType; + const NewGroup({ + this.createGroupType = CreateGroupType.group, + super.key, + }); + + @override + NewGroupController createState() => NewGroupController(); +} + +class NewGroupController extends State { + TextEditingController nameController = TextEditingController(); + + bool publicGroup = false; + bool groupCanBeFound = false; + + Uint8List? avatar; + + Uri? avatarUrl; + + Object? error; + + bool loading = false; + + CreateGroupType get createGroupType => + _createGroupType ?? widget.createGroupType; + + CreateGroupType? _createGroupType; + + void setCreateGroupType(Set b) => + setState(() => _createGroupType = b.single); + + void setPublicGroup(bool b) => + setState(() => publicGroup = groupCanBeFound = b); + + void setGroupCanBeFound(bool b) => setState(() => groupCanBeFound = b); + + void selectPhoto() async { + final photo = await selectFiles( + context, + type: FileSelectorType.images, + allowMultiple: false, + ); + final bytes = await photo.singleOrNull?.readAsBytes(); + + setState(() { + avatarUrl = null; + avatar = bytes; + }); + } + + Future _createGroup() async { + if (!mounted) return; + final roomId = await Matrix.of(context).client.createGroupChat( + visibility: + groupCanBeFound ? sdk.Visibility.public : sdk.Visibility.private, + preset: publicGroup + ? sdk.CreateRoomPreset.publicChat + : sdk.CreateRoomPreset.privateChat, + groupName: nameController.text.isNotEmpty ? nameController.text : null, + initialState: [ + if (avatar != null) + sdk.StateEvent( + type: sdk.EventTypes.RoomAvatar, + content: {'url': avatarUrl.toString()}, + ), + ], + ); + if (!mounted) return; + context.go('/rooms/$roomId/invite'); + } + + Future _createSpace() async { + if (!mounted) return; + final spaceId = await Matrix.of(context).client.createRoom( + preset: publicGroup + ? sdk.CreateRoomPreset.publicChat + : sdk.CreateRoomPreset.privateChat, + creationContent: {'type': RoomCreationTypes.mSpace}, + visibility: publicGroup ? sdk.Visibility.public : null, + roomAliasName: publicGroup + ? nameController.text.trim().toLowerCase().replaceAll(' ', '_') + : null, + name: nameController.text.trim(), + powerLevelContentOverride: {'events_default': 100}, + initialState: [ + if (avatar != null) + sdk.StateEvent( + type: sdk.EventTypes.RoomAvatar, + content: {'url': avatarUrl.toString()}, + ), + ], + ); + if (!mounted) return; + context.pop(spaceId); + } + + void submitAction([_]) async { + final client = Matrix.of(context).client; + + try { + if (nameController.text.trim().isEmpty && + createGroupType == CreateGroupType.space) { + setState(() => error = L10n.of(context).pleaseFillOut); + return; + } + + setState(() { + loading = true; + error = null; + }); + + final avatar = this.avatar; + avatarUrl ??= avatar == null ? null : await client.uploadContent(avatar); + + if (!mounted) return; + + switch (createGroupType) { + case CreateGroupType.group: + await _createGroup(); + case CreateGroupType.space: + await _createSpace(); + } + } catch (e, s) { + sdk.Logs().d('Unable to create group', e, s); + setState(() { + error = e; + loading = false; + }); + } + } + + @override + Widget build(BuildContext context) => NewGroupView(this); +} + +enum CreateGroupType { group, space } diff --git a/lib/pages/new_group/new_group_view.dart b/lib/pages/new_group/new_group_view.dart new file mode 100644 index 0000000..82f572a --- /dev/null +++ b/lib/pages/new_group/new_group_view.dart @@ -0,0 +1,195 @@ +import 'package:flutter/material.dart'; + +import 'package:fluffychat/config/themes.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/new_group/new_group.dart'; +import 'package:fluffychat/utils/localized_exception_extension.dart'; +import 'package:fluffychat/widgets/avatar.dart'; +import 'package:fluffychat/widgets/layouts/max_width_body.dart'; + +class NewGroupView extends StatelessWidget { + final NewGroupController controller; + + const NewGroupView(this.controller, {super.key}); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + final avatar = controller.avatar; + final error = controller.error; + return Scaffold( + appBar: AppBar( + leading: Center( + child: BackButton( + onPressed: controller.loading ? null : Navigator.of(context).pop, + ), + ), + title: Text( + controller.createGroupType == CreateGroupType.space + ? L10n.of(context).newSpace + : L10n.of(context).createGroup, + ), + ), + body: MaxWidthBody( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Padding( + padding: const EdgeInsets.all(16.0), + child: SegmentedButton( + selected: {controller.createGroupType}, + onSelectionChanged: controller.setCreateGroupType, + segments: [ + ButtonSegment( + value: CreateGroupType.group, + label: Text(L10n.of(context).group), + ), + ButtonSegment( + value: CreateGroupType.space, + label: Text(L10n.of(context).space), + ), + ], + ), + ), + const SizedBox(height: 16), + 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 * 2, + height: Avatar.defaultSize * 2, + fit: BoxFit.cover, + ), + ), + ), + ), + const SizedBox(height: 32), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 24.0), + child: TextField( + autofocus: true, + controller: controller.nameController, + autocorrect: false, + readOnly: controller.loading, + decoration: InputDecoration( + prefixIcon: const Icon(Icons.people_outlined), + labelText: controller.createGroupType == CreateGroupType.space + ? L10n.of(context).spaceName + : L10n.of(context).groupName, + ), + ), + ), + const SizedBox(height: 16), + SwitchListTile.adaptive( + contentPadding: const EdgeInsets.symmetric(horizontal: 32), + secondary: const Icon(Icons.public_outlined), + title: Text( + controller.createGroupType == CreateGroupType.space + ? L10n.of(context).spaceIsPublic + : L10n.of(context).groupIsPublic, + ), + value: controller.publicGroup, + onChanged: controller.loading ? null : controller.setPublicGroup, + ), + AnimatedSize( + duration: FluffyThemes.animationDuration, + curve: FluffyThemes.animationCurve, + child: controller.publicGroup + ? SwitchListTile.adaptive( + contentPadding: + const EdgeInsets.symmetric(horizontal: 32), + secondary: const Icon(Icons.search_outlined), + title: Text(L10n.of(context).groupCanBeFoundViaSearch), + value: controller.groupCanBeFound, + onChanged: controller.loading + ? null + : controller.setGroupCanBeFound, + ) + : const SizedBox.shrink(), + ), + AnimatedSize( + duration: FluffyThemes.animationDuration, + curve: FluffyThemes.animationCurve, + child: controller.createGroupType == CreateGroupType.space + ? const SizedBox.shrink() + : SwitchListTile.adaptive( + contentPadding: + const EdgeInsets.symmetric(horizontal: 32), + secondary: Icon( + Icons.lock_outlined, + color: theme.colorScheme.onSurface, + ), + title: Text( + L10n.of(context).enableEncryption, + style: TextStyle( + color: theme.colorScheme.onSurface, + ), + ), + value: !controller.publicGroup, + onChanged: null, + ), + ), + AnimatedSize( + duration: FluffyThemes.animationDuration, + curve: FluffyThemes.animationCurve, + child: controller.createGroupType == CreateGroupType.space + ? ListTile( + contentPadding: + const EdgeInsets.symmetric(horizontal: 32), + trailing: const Padding( + padding: EdgeInsets.symmetric(horizontal: 16.0), + child: Icon(Icons.info_outlined), + ), + subtitle: Text(L10n.of(context).newSpaceDescription), + ) + : const SizedBox.shrink(), + ), + Padding( + padding: const EdgeInsets.all(16.0), + child: SizedBox( + width: double.infinity, + child: ElevatedButton( + onPressed: + controller.loading ? null : controller.submitAction, + child: controller.loading + ? const LinearProgressIndicator() + : Text( + controller.createGroupType == CreateGroupType.space + ? L10n.of(context).createNewSpace + : L10n.of(context).createGroupAndInviteUsers, + ), + ), + ), + ), + AnimatedSize( + duration: FluffyThemes.animationDuration, + curve: FluffyThemes.animationCurve, + child: error == null + ? const SizedBox.shrink() + : ListTile( + leading: Icon( + Icons.warning_outlined, + color: theme.colorScheme.error, + ), + title: Text( + error.toLocalizedString(context), + style: TextStyle( + color: theme.colorScheme.error, + ), + ), + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/pages/new_private_chat/new_private_chat.dart b/lib/pages/new_private_chat/new_private_chat.dart new file mode 100644 index 0000000..543031c --- /dev/null +++ b/lib/pages/new_private_chat/new_private_chat.dart @@ -0,0 +1,108 @@ +import 'dart:async'; + +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +import 'package:device_info_plus/device_info_plus.dart'; +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/new_private_chat/new_private_chat_view.dart'; +import 'package:fluffychat/pages/new_private_chat/qr_scanner_modal.dart'; +import 'package:fluffychat/utils/adaptive_bottom_sheet.dart'; +import 'package:fluffychat/utils/fluffy_share.dart'; +import 'package:fluffychat/utils/platform_infos.dart'; +import 'package:fluffychat/utils/url_launcher.dart'; +import 'package:fluffychat/widgets/matrix.dart'; +import '../../widgets/adaptive_dialogs/user_dialog.dart'; + +class NewPrivateChat extends StatefulWidget { + const NewPrivateChat({super.key}); + + @override + NewPrivateChatController createState() => NewPrivateChatController(); +} + +class NewPrivateChatController extends State { + final TextEditingController controller = TextEditingController(); + final FocusNode textFieldFocus = FocusNode(); + + Future>? searchResponse; + + Timer? _searchCoolDown; + + static const Duration _coolDown = Duration(milliseconds: 500); + + void searchUsers([String? input]) async { + final searchTerm = input ?? controller.text; + if (searchTerm.isEmpty) { + _searchCoolDown?.cancel(); + setState(() { + searchResponse = _searchCoolDown = null; + }); + return; + } + + _searchCoolDown?.cancel(); + _searchCoolDown = Timer(_coolDown, () { + setState(() { + searchResponse = _searchUser(searchTerm); + }); + }); + } + + Future> _searchUser(String searchTerm) async { + final result = + await Matrix.of(context).client.searchUserDirectory(searchTerm); + final profiles = result.results; + + if (searchTerm.isValidMatrixId && + searchTerm.sigil == '@' && + !profiles.any((profile) => profile.userId == searchTerm)) { + profiles.add(Profile(userId: searchTerm)); + } + + return profiles; + } + + void inviteAction() => FluffyShare.shareInviteLink(context); + + void openScannerAction() async { + if (PlatformInfos.isAndroid) { + final info = await DeviceInfoPlugin().androidInfo; + if (info.version.sdkInt < 21) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text( + L10n.of(context).unsupportedAndroidVersionLong, + ), + ), + ); + return; + } + } + await showAdaptiveBottomSheet( + context: context, + builder: (_) => QrScannerModal( + onScan: (link) => UrlLauncher(context, link).openMatrixToUrl(), + ), + ); + } + + void copyUserId() async { + await Clipboard.setData( + ClipboardData(text: Matrix.of(context).client.userID!), + ); + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text(L10n.of(context).copiedToClipboard)), + ); + } + + void openUserModal(Profile profile) => UserDialog.show( + context: context, + profile: profile, + ); + + @override + Widget build(BuildContext context) => NewPrivateChatView(this); +} diff --git a/lib/pages/new_private_chat/new_private_chat_view.dart b/lib/pages/new_private_chat/new_private_chat_view.dart new file mode 100644 index 0000000..5a5bdee --- /dev/null +++ b/lib/pages/new_private_chat/new_private_chat_view.dart @@ -0,0 +1,292 @@ +import 'package:flutter/material.dart'; + +import 'package:go_router/go_router.dart'; +import 'package:matrix/matrix.dart'; +import 'package:pretty_qr_code/pretty_qr_code.dart'; + +import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/config/themes.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/new_private_chat/new_private_chat.dart'; +import 'package:fluffychat/utils/localized_exception_extension.dart'; +import 'package:fluffychat/utils/platform_infos.dart'; +import 'package:fluffychat/utils/url_launcher.dart'; +import 'package:fluffychat/widgets/avatar.dart'; +import 'package:fluffychat/widgets/layouts/max_width_body.dart'; +import 'package:fluffychat/widgets/matrix.dart'; +import '../../widgets/qr_code_viewer.dart'; + +class NewPrivateChatView extends StatelessWidget { + final NewPrivateChatController controller; + + const NewPrivateChatView(this.controller, {super.key}); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + final searchResponse = controller.searchResponse; + final userId = Matrix.of(context).client.userID!; + return Scaffold( + appBar: AppBar( + scrolledUnderElevation: 0, + leading: const Center(child: BackButton()), + title: Text(L10n.of(context).newChat), + backgroundColor: theme.scaffoldBackgroundColor, + actions: [ + TextButton( + onPressed: + UrlLauncher(context, AppConfig.startChatTutorial).launchUrl, + child: Text(L10n.of(context).help), + ), + ], + ), + body: MaxWidthBody( + withScrolling: false, + innerPadding: const EdgeInsets.symmetric(vertical: 8), + child: Column( + children: [ + Padding( + padding: const EdgeInsets.symmetric( + horizontal: 16.0, + vertical: 8.0, + ), + child: TextField( + controller: controller.controller, + onChanged: controller.searchUsers, + decoration: InputDecoration( + hintText: L10n.of(context).searchForUsers, + filled: true, + fillColor: theme.colorScheme.secondaryContainer, + border: OutlineInputBorder( + borderSide: BorderSide.none, + borderRadius: BorderRadius.circular(99), + ), + hintStyle: TextStyle( + color: theme.colorScheme.onPrimaryContainer, + fontWeight: FontWeight.normal, + ), + prefixIcon: searchResponse == null + ? const Icon(Icons.search_outlined) + : FutureBuilder( + future: searchResponse, + builder: (context, snapshot) { + if (snapshot.connectionState != + ConnectionState.done) { + return const Padding( + padding: EdgeInsets.all(10.0), + child: SizedBox.square( + dimension: 24, + child: CircularProgressIndicator.adaptive( + strokeWidth: 1, + ), + ), + ); + } + return const Icon(Icons.search_outlined); + }, + ), + suffixIcon: controller.controller.text.isEmpty + ? null + : IconButton( + icon: const Icon(Icons.clear_outlined), + onPressed: () { + controller.controller.clear(); + controller.searchUsers(); + }, + ), + ), + ), + ), + Expanded( + child: AnimatedSwitcher( + duration: FluffyThemes.animationDuration, + child: searchResponse == null + ? ListView( + children: [ + Padding( + padding: + const EdgeInsets.symmetric(horizontal: 18.0), + child: SelectableText.rich( + TextSpan( + children: [ + TextSpan( + text: L10n.of(context).yourGlobalUserIdIs, + ), + TextSpan( + text: Matrix.of(context).client.userID, + style: const TextStyle( + fontWeight: FontWeight.w600, + ), + ), + ], + ), + style: TextStyle( + color: theme.colorScheme.onSurface, + fontSize: 12, + ), + ), + ), + const SizedBox(height: 8), + ListTile( + leading: CircleAvatar( + backgroundColor: + theme.colorScheme.secondaryContainer, + foregroundColor: + theme.colorScheme.onSecondaryContainer, + child: Icon(Icons.adaptive.share_outlined), + ), + title: Text(L10n.of(context).shareInviteLink), + onTap: controller.inviteAction, + ), + ListTile( + leading: CircleAvatar( + backgroundColor: + theme.colorScheme.tertiaryContainer, + foregroundColor: + theme.colorScheme.onTertiaryContainer, + child: const Icon(Icons.group_add_outlined), + ), + title: Text(L10n.of(context).createGroup), + onTap: () => context.go('/rooms/newgroup'), + ), + if (PlatformInfos.isMobile) + ListTile( + leading: CircleAvatar( + backgroundColor: + theme.colorScheme.primaryContainer, + foregroundColor: + theme.colorScheme.onPrimaryContainer, + child: + const Icon(Icons.qr_code_scanner_outlined), + ), + title: Text(L10n.of(context).scanQrCode), + onTap: controller.openScannerAction, + ), + Center( + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 64.0, + vertical: 24.0, + ), + child: Material( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular( + AppConfig.borderRadius, + ), + side: BorderSide( + width: 3, + color: theme.colorScheme.primary, + ), + ), + color: Colors.transparent, + clipBehavior: Clip.hardEdge, + child: InkWell( + borderRadius: BorderRadius.circular( + AppConfig.borderRadius, + ), + onTap: () => showQrCodeViewer( + context, + userId, + ), + child: Padding( + padding: const EdgeInsets.all(16.0), + child: ConstrainedBox( + constraints: + const BoxConstraints(maxWidth: 200), + child: PrettyQrView.data( + data: 'https://matrix.to/#/$userId', + decoration: PrettyQrDecoration( + shape: PrettyQrSmoothSymbol( + roundFactor: 1, + color: theme.colorScheme.primary, + ), + ), + ), + ), + ), + ), + ), + ), + ), + ], + ) + : FutureBuilder( + future: searchResponse, + builder: (context, snapshot) { + final result = snapshot.data; + final error = snapshot.error; + if (error != null) { + return Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + error.toLocalizedString(context), + textAlign: TextAlign.center, + style: TextStyle( + color: theme.colorScheme.error, + ), + ), + const SizedBox(height: 12), + OutlinedButton.icon( + onPressed: controller.searchUsers, + icon: const Icon(Icons.refresh_outlined), + label: Text(L10n.of(context).tryAgain), + ), + ], + ); + } + if (result == null) { + return const Center( + child: CircularProgressIndicator.adaptive(), + ); + } + if (result.isEmpty) { + return Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Icon(Icons.search_outlined, size: 86), + Padding( + padding: const EdgeInsets.all(16.0), + child: Text( + L10n.of(context).noUsersFoundWithQuery( + controller.controller.text, + ), + style: TextStyle( + color: theme.colorScheme.primary, + ), + textAlign: TextAlign.center, + ), + ), + ], + ); + } + return ListView.builder( + itemCount: result.length, + itemBuilder: (context, i) { + final contact = result[i]; + final displayname = contact.displayName ?? + contact.userId.localpart ?? + contact.userId; + return ListTile( + leading: Avatar( + name: displayname, + mxContent: contact.avatarUrl, + presenceUserId: contact.userId, + ), + title: Text(displayname), + subtitle: Text(contact.userId), + onTap: () => controller.openUserModal(contact), + ); + }, + ); + }, + ), + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/pages/new_private_chat/qr_scanner_modal.dart b/lib/pages/new_private_chat/qr_scanner_modal.dart new file mode 100644 index 0000000..b47dc56 --- /dev/null +++ b/lib/pages/new_private_chat/qr_scanner_modal.dart @@ -0,0 +1,76 @@ +import 'dart:async'; +import 'dart:io'; + +import 'package:flutter/material.dart'; + +import 'package:qr_code_scanner_plus/qr_code_scanner_plus.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; + +class QrScannerModal extends StatefulWidget { + final void Function(String) onScan; + const QrScannerModal({required this.onScan, super.key}); + + @override + QrScannerModalState createState() => QrScannerModalState(); +} + +class QrScannerModalState extends State { + final GlobalKey qrKey = GlobalKey(debugLabel: 'QR'); + QRViewController? controller; + + @override + void reassemble() { + super.reassemble(); + if (Platform.isAndroid) { + controller!.pauseCamera(); + } else if (Platform.isIOS) { + controller!.resumeCamera(); + } + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + leading: IconButton( + icon: const Icon(Icons.close_outlined), + onPressed: Navigator.of(context).pop, + tooltip: L10n.of(context).close, + ), + title: Text(L10n.of(context).scanQrCode), + ), + body: Stack( + children: [ + QRView( + key: qrKey, + onQRViewCreated: _onQRViewCreated, + overlay: QrScannerOverlayShape( + borderColor: Theme.of(context).colorScheme.primary, + borderRadius: 10, + borderLength: 30, + borderWidth: 8, + ), + ), + ], + ), + ); + } + + void _onQRViewCreated(QRViewController controller) { + this.controller = controller; + // Workaround for QR Scanner is started in Pause mode + // https://github.com/juliuscanute/qr_code_scanner/issues/538#issuecomment-1133883828 + if (Platform.isAndroid) { + controller.pauseCamera(); + } + controller.resumeCamera(); + late StreamSubscription sub; + sub = controller.scannedDataStream.listen((scanData) { + sub.cancel(); + Navigator.of(context).pop(); + final data = scanData.code; + if (data != null) widget.onScan(data); + }); + } +} diff --git a/lib/pages/settings/settings.dart b/lib/pages/settings/settings.dart new file mode 100644 index 0000000..bb8fa9a --- /dev/null +++ b/lib/pages/settings/settings.dart @@ -0,0 +1,216 @@ +import 'dart:async'; + +import 'package:flutter/material.dart'; + +import 'package:collection/collection.dart'; +import 'package:image_picker/image_picker.dart'; +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/file_selector.dart'; +import 'package:fluffychat/utils/platform_infos.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_modal_action_popup.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_ok_cancel_alert_dialog.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_text_input_dialog.dart'; +import 'package:fluffychat/widgets/future_loading_dialog.dart'; +import '../../widgets/matrix.dart'; +import '../bootstrap/bootstrap_dialog.dart'; +import 'settings_view.dart'; + +class Settings extends StatefulWidget { + const Settings({super.key}); + + @override + SettingsController createState() => SettingsController(); +} + +class SettingsController extends State { + Future? profileFuture; + bool profileUpdated = false; + + void updateProfile() => setState(() { + profileUpdated = true; + profileFuture = null; + }); + + void setDisplaynameAction() async { + final profile = await profileFuture; + final input = await showTextInputDialog( + useRootNavigator: false, + context: context, + title: L10n.of(context).editDisplayname, + okLabel: L10n.of(context).ok, + cancelLabel: L10n.of(context).cancel, + initialText: + profile?.displayName ?? Matrix.of(context).client.userID!.localpart, + ); + if (input == null) return; + final matrix = Matrix.of(context); + final success = await showFutureLoadingDialog( + context: context, + future: () => matrix.client.setProfileField( + matrix.client.userID!, + 'displayname', + {'displayname': input}, + ), + ); + if (success.error == null) { + updateProfile(); + } + } + + void logoutAction() async { + final noBackup = showChatBackupBanner == true; + if (await showOkCancelAlertDialog( + useRootNavigator: false, + context: context, + title: L10n.of(context).areYouSureYouWantToLogout, + message: L10n.of(context).noBackupWarning, + isDestructive: noBackup, + okLabel: L10n.of(context).logout, + cancelLabel: L10n.of(context).cancel, + ) == + OkCancelResult.cancel) { + return; + } + final matrix = Matrix.of(context); + await showFutureLoadingDialog( + context: context, + future: () => matrix.client.logout(), + ); + } + + void setAvatarAction() async { + final profile = await profileFuture; + final actions = [ + if (PlatformInfos.isMobile) + AdaptiveModalAction( + value: AvatarAction.camera, + label: L10n.of(context).openCamera, + isDefaultAction: true, + icon: const Icon(Icons.camera_alt_outlined), + ), + AdaptiveModalAction( + value: AvatarAction.file, + label: L10n.of(context).openGallery, + icon: const Icon(Icons.photo_outlined), + ), + if (profile?.avatarUrl != null) + AdaptiveModalAction( + value: AvatarAction.remove, + label: L10n.of(context).removeYourAvatar, + isDestructive: true, + icon: const Icon(Icons.delete_outlined), + ), + ]; + final action = actions.length == 1 + ? actions.single.value + : await showModalActionPopup( + context: context, + title: L10n.of(context).changeYourAvatar, + cancelLabel: L10n.of(context).cancel, + actions: actions, + ); + if (action == null) return; + final matrix = Matrix.of(context); + if (action == AvatarAction.remove) { + final success = await showFutureLoadingDialog( + context: context, + future: () => matrix.client.setAvatar(null), + ); + if (success.error == null) { + updateProfile(); + } + return; + } + MatrixFile file; + if (PlatformInfos.isMobile) { + final result = await ImagePicker().pickImage( + source: action == AvatarAction.camera + ? ImageSource.camera + : ImageSource.gallery, + imageQuality: 50, + ); + if (result == null) return; + file = MatrixFile( + bytes: await result.readAsBytes(), + name: result.path, + ); + } else { + final result = await selectFiles( + context, + type: FileSelectorType.images, + ); + final pickedFile = result.firstOrNull; + if (pickedFile == null) return; + file = MatrixFile( + bytes: await pickedFile.readAsBytes(), + name: pickedFile.name, + ); + } + final success = await showFutureLoadingDialog( + context: context, + future: () => matrix.client.setAvatar(file), + ); + if (success.error == null) { + updateProfile(); + } + } + + @override + void initState() { + WidgetsBinding.instance.addPostFrameCallback((_) => checkBootstrap()); + + super.initState(); + } + + void checkBootstrap() async { + final client = Matrix.of(context).client; + if (!client.encryptionEnabled) return; + await client.accountDataLoading; + await client.userDeviceKeysLoading; + if (client.prevBatch == null) { + await client.onSync.stream.first; + } + final crossSigning = + await client.encryption?.crossSigning.isCached() ?? false; + final needsBootstrap = + await client.encryption?.keyManager.isCached() == false || + client.encryption?.crossSigning.enabled == false || + crossSigning == false; + final isUnknownSession = client.isUnknownSession; + setState(() { + showChatBackupBanner = needsBootstrap || isUnknownSession; + }); + } + + bool? crossSigningCached; + bool? showChatBackupBanner; + + void firstRunBootstrapAction([_]) async { + if (showChatBackupBanner != true) { + showOkAlertDialog( + context: context, + title: L10n.of(context).chatBackup, + message: L10n.of(context).onlineKeyBackupEnabled, + okLabel: L10n.of(context).close, + ); + return; + } + await BootstrapDialog( + client: Matrix.of(context).client, + ).show(context); + checkBootstrap(); + } + + @override + Widget build(BuildContext context) { + final client = Matrix.of(context).client; + profileFuture ??= client.getProfileFromUserId( + client.userID!, + ); + return SettingsView(this); + } +} + +enum AvatarAction { camera, file, remove } diff --git a/lib/pages/settings/settings_view.dart b/lib/pages/settings/settings_view.dart new file mode 100644 index 0000000..a92ee6a --- /dev/null +++ b/lib/pages/settings/settings_view.dart @@ -0,0 +1,269 @@ +import 'package:flutter/material.dart'; + +import 'package:go_router/go_router.dart'; +import 'package:matrix/matrix.dart'; +import 'package:url_launcher/url_launcher.dart'; +import 'package:url_launcher/url_launcher_string.dart'; + +import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/config/themes.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/fluffy_share.dart'; +import 'package:fluffychat/utils/platform_infos.dart'; +import 'package:fluffychat/widgets/avatar.dart'; +import 'package:fluffychat/widgets/matrix.dart'; +import 'package:fluffychat/widgets/navigation_rail.dart'; +import '../../widgets/mxc_image_viewer.dart'; +import 'settings.dart'; + +class SettingsView extends StatelessWidget { + final SettingsController controller; + + const SettingsView(this.controller, {super.key}); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + final showChatBackupBanner = controller.showChatBackupBanner; + final activeRoute = + GoRouter.of(context).routeInformationProvider.value.uri.path; + final accountManageUrl = Matrix.of(context) + .client + .wellKnown + ?.additionalProperties + .tryGetMap('org.matrix.msc2965.authentication') + ?.tryGet('account'); + return Row( + children: [ + if (FluffyThemes.isColumnMode(context)) ...[ + SpacesNavigationRail( + activeSpaceId: null, + onGoToChats: () => context.go('/rooms'), + onGoToSpaceId: (spaceId) => context.go('/rooms?spaceId=$spaceId'), + ), + Container( + color: Theme.of(context).dividerColor, + width: 1, + ), + ], + Expanded( + child: Scaffold( + appBar: FluffyThemes.isColumnMode(context) + ? null + : AppBar( + title: Text(L10n.of(context).settings), + leading: Center( + child: BackButton( + onPressed: () => context.go('/rooms'), + ), + ), + ), + body: ListTileTheme( + iconColor: theme.colorScheme.onSurface, + child: ListView( + key: const Key('SettingsListViewContent'), + children: [ + FutureBuilder( + future: controller.profileFuture, + builder: (context, snapshot) { + final profile = snapshot.data; + final avatar = profile?.avatarUrl; + final mxid = Matrix.of(context).client.userID ?? + L10n.of(context).user; + final displayname = + profile?.displayName ?? mxid.localpart ?? mxid; + return Row( + children: [ + Padding( + padding: const EdgeInsets.all(32.0), + child: Stack( + children: [ + Avatar( + mxContent: avatar, + name: displayname, + size: Avatar.defaultSize * 2.5, + onTap: avatar != null + ? () => showDialog( + context: context, + builder: (_) => + MxcImageViewer(avatar), + ) + : null, + ), + 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, + ), + ), + ), + ], + ), + ), + Expanded( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + TextButton.icon( + onPressed: controller.setDisplaynameAction, + icon: const Icon( + Icons.edit_outlined, + size: 16, + ), + style: TextButton.styleFrom( + foregroundColor: + theme.colorScheme.onSurface, + iconColor: theme.colorScheme.onSurface, + ), + label: Text( + displayname, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: const TextStyle( + fontSize: 18, + ), + ), + ), + TextButton.icon( + onPressed: () => + FluffyShare.share(mxid, context), + icon: const Icon( + Icons.copy_outlined, + size: 14, + ), + style: TextButton.styleFrom( + foregroundColor: + theme.colorScheme.secondary, + iconColor: theme.colorScheme.secondary, + ), + label: Text( + mxid, + maxLines: 1, + overflow: TextOverflow.ellipsis, + // style: const TextStyle(fontSize: 12), + ), + ), + ], + ), + ), + ], + ); + }, + ), + if (accountManageUrl != null) + ListTile( + leading: const Icon(Icons.account_circle_outlined), + title: Text(L10n.of(context).manageAccount), + trailing: const Icon(Icons.open_in_new_outlined), + onTap: () => launchUrlString( + accountManageUrl, + mode: LaunchMode.inAppBrowserView, + ), + ), + Divider(color: theme.dividerColor), + if (showChatBackupBanner == null) + ListTile( + leading: const Icon(Icons.backup_outlined), + title: Text(L10n.of(context).chatBackup), + trailing: const CircularProgressIndicator.adaptive(), + ) + else + SwitchListTile.adaptive( + controlAffinity: ListTileControlAffinity.trailing, + value: controller.showChatBackupBanner == false, + secondary: const Icon(Icons.backup_outlined), + title: Text(L10n.of(context).chatBackup), + onChanged: controller.firstRunBootstrapAction, + ), + Divider( + color: theme.dividerColor, + ), + ListTile( + leading: const Icon(Icons.format_paint_outlined), + title: Text(L10n.of(context).changeTheme), + tileColor: activeRoute.startsWith('/rooms/settings/style') + ? theme.colorScheme.surfaceContainerHigh + : null, + onTap: () => context.go('/rooms/settings/style'), + ), + ListTile( + leading: const Icon(Icons.notifications_outlined), + title: Text(L10n.of(context).notifications), + tileColor: + activeRoute.startsWith('/rooms/settings/notifications') + ? theme.colorScheme.surfaceContainerHigh + : null, + onTap: () => context.go('/rooms/settings/notifications'), + ), + ListTile( + leading: const Icon(Icons.devices_outlined), + title: Text(L10n.of(context).devices), + onTap: () => context.go('/rooms/settings/devices'), + tileColor: activeRoute.startsWith('/rooms/settings/devices') + ? theme.colorScheme.surfaceContainerHigh + : null, + ), + ListTile( + leading: const Icon(Icons.forum_outlined), + title: Text(L10n.of(context).chat), + onTap: () => context.go('/rooms/settings/chat'), + tileColor: activeRoute.startsWith('/rooms/settings/chat') + ? theme.colorScheme.surfaceContainerHigh + : null, + ), + ListTile( + leading: const Icon(Icons.shield_outlined), + title: Text(L10n.of(context).security), + onTap: () => context.go('/rooms/settings/security'), + tileColor: + activeRoute.startsWith('/rooms/settings/security') + ? theme.colorScheme.surfaceContainerHigh + : null, + ), + Divider(color: theme.dividerColor), + ListTile( + leading: const Icon(Icons.dns_outlined), + title: Text( + L10n.of(context).aboutHomeserver( + Matrix.of(context).client.userID?.domain ?? + 'homeserver', + ), + ), + onTap: () => context.go('/rooms/settings/homeserver'), + tileColor: + activeRoute.startsWith('/rooms/settings/homeserver') + ? theme.colorScheme.surfaceContainerHigh + : null, + ), + ListTile( + leading: const Icon(Icons.privacy_tip_outlined), + title: Text(L10n.of(context).privacy), + onTap: () => launchUrl(AppConfig.privacyUrl), + ), + ListTile( + leading: const Icon(Icons.info_outline_rounded), + title: Text(L10n.of(context).about), + onTap: () => PlatformInfos.showDialog(context), + ), + Divider(color: theme.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.dart b/lib/pages/settings_3pid/settings_3pid.dart new file mode 100644 index 0000000..264cb93 --- /dev/null +++ b/lib/pages/settings_3pid/settings_3pid.dart @@ -0,0 +1,92 @@ +import 'package:flutter/material.dart'; + +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_ok_cancel_alert_dialog.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_text_input_dialog.dart'; +import 'package:fluffychat/widgets/future_loading_dialog.dart'; +import 'package:fluffychat/widgets/matrix.dart'; +import 'settings_3pid_view.dart'; + +class Settings3Pid extends StatefulWidget { + static int sendAttempt = 0; + + const Settings3Pid({super.key}); + + @override + Settings3PidController createState() => Settings3PidController(); +} + +class Settings3PidController extends State { + void add3PidAction() async { + final input = await showTextInputDialog( + useRootNavigator: false, + context: context, + title: L10n.of(context).enterAnEmailAddress, + okLabel: L10n.of(context).ok, + cancelLabel: L10n.of(context).cancel, + hintText: L10n.of(context).enterAnEmailAddress, + keyboardType: TextInputType.emailAddress, + ); + if (input == null) return; + final clientSecret = DateTime.now().millisecondsSinceEpoch.toString(); + final response = await showFutureLoadingDialog( + context: context, + future: () => Matrix.of(context).client.requestTokenToRegisterEmail( + clientSecret, + input, + Settings3Pid.sendAttempt++, + ), + ); + if (response.error != null) return; + final ok = await showOkAlertDialog( + useRootNavigator: false, + context: context, + title: L10n.of(context).weSentYouAnEmail, + message: L10n.of(context).pleaseClickOnLink, + okLabel: L10n.of(context).iHaveClickedOnLink, + ); + if (ok != OkCancelResult.ok) return; + final success = await showFutureLoadingDialog( + context: context, + delay: false, + future: () => Matrix.of(context).client.uiaRequestBackground( + (auth) => Matrix.of(context).client.add3PID( + clientSecret, + response.result!.sid, + auth: auth, + ), + ), + ); + if (success.error != null) return; + setState(() => request = null); + } + + Future?>? request; + + void delete3Pid(ThirdPartyIdentifier identifier) async { + if (await showOkCancelAlertDialog( + useRootNavigator: false, + context: context, + title: L10n.of(context).areYouSure, + okLabel: L10n.of(context).yes, + cancelLabel: L10n.of(context).cancel, + ) != + OkCancelResult.ok) { + return; + } + final success = await showFutureLoadingDialog( + context: context, + future: () => Matrix.of(context).client.delete3pidFromAccount( + identifier.address, + identifier.medium, + ), + ); + if (success.error != null) return; + setState(() => request = null); + } + + @override + Widget build(BuildContext context) => Settings3PidView(this); +} diff --git a/lib/pages/settings_3pid/settings_3pid_view.dart b/lib/pages/settings_3pid/settings_3pid_view.dart new file mode 100644 index 0000000..c466b0a --- /dev/null +++ b/lib/pages/settings_3pid/settings_3pid_view.dart @@ -0,0 +1,112 @@ +import 'package:flutter/material.dart'; + +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/settings_3pid/settings_3pid.dart'; +import 'package:fluffychat/widgets/layouts/max_width_body.dart'; +import 'package:fluffychat/widgets/matrix.dart'; + +class Settings3PidView extends StatelessWidget { + final Settings3PidController controller; + + const Settings3PidView(this.controller, {super.key}); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + controller.request ??= Matrix.of(context).client.getAccount3PIDs(); + return Scaffold( + appBar: AppBar( + leading: const Center(child: BackButton()), + title: Text(L10n.of(context).passwordRecovery), + actions: [ + IconButton( + icon: const Icon(Icons.add_outlined), + onPressed: controller.add3PidAction, + tooltip: L10n.of(context).addEmail, + ), + ], + ), + body: MaxWidthBody( + withScrolling: false, + child: FutureBuilder?>( + future: controller.request, + builder: ( + BuildContext context, + AsyncSnapshot?> snapshot, + ) { + if (snapshot.hasError) { + return Center( + child: Text( + snapshot.error.toString(), + textAlign: TextAlign.center, + ), + ); + } + if (!snapshot.hasData) { + return const Center( + child: CircularProgressIndicator.adaptive(strokeWidth: 2), + ); + } + final identifier = snapshot.data!; + return Column( + children: [ + ListTile( + leading: CircleAvatar( + backgroundColor: theme.scaffoldBackgroundColor, + foregroundColor: + identifier.isEmpty ? Colors.orange : Colors.grey, + child: Icon( + identifier.isEmpty + ? Icons.warning_outlined + : Icons.info_outlined, + ), + ), + title: Text( + identifier.isEmpty + ? L10n.of(context).noPasswordRecoveryDescription + : L10n.of(context) + .withTheseAddressesRecoveryDescription, + ), + ), + const Divider(), + Expanded( + child: ListView.builder( + itemCount: identifier.length, + itemBuilder: (BuildContext context, int i) => ListTile( + leading: CircleAvatar( + backgroundColor: theme.scaffoldBackgroundColor, + foregroundColor: Colors.grey, + child: Icon(identifier[i].iconData), + ), + title: Text(identifier[i].address), + trailing: IconButton( + tooltip: L10n.of(context).delete, + icon: const Icon(Icons.delete_forever_outlined), + color: Colors.red, + onPressed: () => controller.delete3Pid(identifier[i]), + ), + ), + ), + ), + ], + ); + }, + ), + ), + ); + } +} + +extension on ThirdPartyIdentifier { + IconData get iconData { + switch (medium) { + case ThirdPartyIdentifierMedium.email: + return Icons.mail_outline_rounded; + case ThirdPartyIdentifierMedium.msisdn: + return Icons.phone_android_outlined; + } + } +} diff --git a/lib/pages/settings_chat/settings_chat.dart b/lib/pages/settings_chat/settings_chat.dart new file mode 100644 index 0000000..1c10355 --- /dev/null +++ b/lib/pages/settings_chat/settings_chat.dart @@ -0,0 +1,15 @@ +import 'package:flutter/material.dart'; + +import 'settings_chat_view.dart'; + +class SettingsChat extends StatefulWidget { + const SettingsChat({super.key}); + + @override + SettingsChatController createState() => SettingsChatController(); +} + +class SettingsChatController extends State { + @override + Widget build(BuildContext context) => SettingsChatView(this); +} diff --git a/lib/pages/settings_chat/settings_chat_view.dart b/lib/pages/settings_chat/settings_chat_view.dart new file mode 100644 index 0000000..b125cf7 --- /dev/null +++ b/lib/pages/settings_chat/settings_chat_view.dart @@ -0,0 +1,103 @@ +import 'package:flutter/material.dart'; + +import 'package:go_router/go_router.dart'; + +import 'package:fluffychat/config/setting_keys.dart'; +import 'package:fluffychat/config/themes.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/platform_infos.dart'; +import 'package:fluffychat/widgets/layouts/max_width_body.dart'; +import 'package:fluffychat/widgets/matrix.dart'; +import 'package:fluffychat/widgets/settings_switch_list_tile.dart'; +import 'settings_chat.dart'; + +class SettingsChatView extends StatelessWidget { + final SettingsChatController controller; + const SettingsChatView(this.controller, {super.key}); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + return Scaffold( + appBar: AppBar( + title: Text(L10n.of(context).chat), + automaticallyImplyLeading: !FluffyThemes.isColumnMode(context), + centerTitle: FluffyThemes.isColumnMode(context), + ), + body: ListTileTheme( + iconColor: theme.textTheme.bodyLarge!.color, + child: MaxWidthBody( + child: Column( + children: [ + SettingsSwitchListTile.adaptive( + title: L10n.of(context).formattedMessages, + subtitle: L10n.of(context).formattedMessagesDescription, + setting: AppSettings.renderHtml, + ), + SettingsSwitchListTile.adaptive( + title: L10n.of(context).hideRedactedMessages, + subtitle: L10n.of(context).hideRedactedMessagesBody, + setting: AppSettings.hideRedactedEvents, + ), + SettingsSwitchListTile.adaptive( + title: L10n.of(context).hideInvalidOrUnknownMessageFormats, + setting: AppSettings.hideUnknownEvents, + ), + if (PlatformInfos.isMobile) + SettingsSwitchListTile.adaptive( + title: L10n.of(context).autoplayImages, + setting: AppSettings.autoplayImages, + ), + SettingsSwitchListTile.adaptive( + title: L10n.of(context).sendOnEnter, + setting: AppSettings.sendOnEnter, + ), + SettingsSwitchListTile.adaptive( + title: L10n.of(context).swipeRightToLeftToReply, + setting: AppSettings.swipeRightToLeftToReply, + ), + Divider(color: theme.dividerColor), + ListTile( + title: Text( + L10n.of(context).customEmojisAndStickers, + style: TextStyle( + color: theme.colorScheme.secondary, + fontWeight: FontWeight.bold, + ), + ), + ), + ListTile( + title: Text(L10n.of(context).customEmojisAndStickers), + subtitle: Text(L10n.of(context).customEmojisAndStickersBody), + onTap: () => context.go('/rooms/settings/chat/emotes'), + trailing: const Padding( + padding: EdgeInsets.all(16.0), + child: Icon(Icons.chevron_right_outlined), + ), + ), + Divider(color: theme.dividerColor), + ListTile( + title: Text( + L10n.of(context).calls, + style: TextStyle( + color: theme.colorScheme.secondary, + fontWeight: FontWeight.bold, + ), + ), + ), + SettingsSwitchListTile.adaptive( + title: L10n.of(context).experimentalVideoCalls, + onChanged: (b) { + Matrix.of(context).createVoipPlugin(); + return; + }, + setting: AppSettings.experimentalVoip, + ), + ], + ), + ), + ), + ); + } +} diff --git a/lib/pages/settings_emotes/import_archive_dialog.dart b/lib/pages/settings_emotes/import_archive_dialog.dart new file mode 100644 index 0000000..1e0c2e8 --- /dev/null +++ b/lib/pages/settings_emotes/import_archive_dialog.dart @@ -0,0 +1,360 @@ +import 'dart:async'; + +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +import 'package:archive/archive.dart'; +import 'package:collection/collection.dart'; +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/settings_emotes/settings_emotes.dart'; +import 'package:fluffychat/utils/client_manager.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_ok_cancel_alert_dialog.dart'; +import 'package:fluffychat/widgets/matrix.dart'; + +class ImportEmoteArchiveDialog extends StatefulWidget { + final EmotesSettingsController controller; + final Archive archive; + + const ImportEmoteArchiveDialog({ + super.key, + required this.controller, + required this.archive, + }); + + @override + State createState() => + _ImportEmoteArchiveDialogState(); +} + +class _ImportEmoteArchiveDialogState extends State { + Map _importMap = {}; + + bool _loading = false; + + double _progress = 0; + + @override + void initState() { + _importFileMap(); + super.initState(); + } + + @override + Widget build(BuildContext context) { + return AlertDialog( + title: Text(L10n.of(context).importEmojis), + content: _loading + ? Center( + child: CircularProgressIndicator( + value: _progress, + ), + ) + : SingleChildScrollView( + child: Wrap( + alignment: WrapAlignment.spaceEvenly, + crossAxisAlignment: WrapCrossAlignment.center, + runSpacing: 8, + spacing: 8, + children: _importMap.entries + .map( + (e) => _EmojiImportPreview( + key: ValueKey(e.key.name), + entry: e, + onNameChanged: (name) => _importMap[e.key] = name, + onRemove: () => + setState(() => _importMap.remove(e.key)), + ), + ) + .toList(), + ), + ), + actions: [ + TextButton( + onPressed: _loading ? null : Navigator.of(context).pop, + child: Text(L10n.of(context).cancel), + ), + TextButton( + onPressed: _loading + ? null + : _importMap.isNotEmpty + ? _addEmotePack + : null, + child: Text(L10n.of(context).importNow), + ), + ], + ); + } + + void _importFileMap() { + _importMap = Map.fromEntries( + widget.archive.files + .where((e) => e.isFile) + .map( + (e) => MapEntry(e, e.name.emoteNameFromPath), + ) + .sorted( + (a, b) => a.value.compareTo(b.value), + ), + ); + } + + Future _addEmotePack() async { + setState(() { + _loading = true; + _progress = 0; + }); + final imports = _importMap; + final successfulUploads = {}; + + // check for duplicates first + + final skipKeys = []; + + for (final entry in imports.entries) { + final imageCode = entry.value; + + if (widget.controller.pack!.images.containsKey(imageCode)) { + final completer = Completer(); + WidgetsBinding.instance.addPostFrameCallback((timeStamp) async { + final result = await showOkCancelAlertDialog( + useRootNavigator: false, + context: context, + title: L10n.of(context).emoteExists, + message: imageCode, + cancelLabel: L10n.of(context).replace, + okLabel: L10n.of(context).skip, + ); + completer.complete(result); + }); + + final result = await completer.future; + if (result == OkCancelResult.ok) { + skipKeys.add(entry.key); + } + } + } + + for (final key in skipKeys) { + imports.remove(key); + } + + for (final entry in imports.entries) { + setState(() { + _progress += 1 / imports.length; + }); + final file = entry.key; + final imageCode = entry.value; + + try { + var mxcFile = MatrixImageFile( + bytes: file.content, + name: file.name, + ); + + final thumbnail = (await mxcFile.generateThumbnail( + nativeImplementations: ClientManager.nativeImplementations, + )); + if (thumbnail == null) { + Logs().w('Unable to create thumbnail'); + } else { + mxcFile = thumbnail; + } + final uri = await Matrix.of(context).client.uploadContent( + mxcFile.bytes, + filename: mxcFile.name, + contentType: mxcFile.mimeType, + ); + + final info = { + ...mxcFile.info, + }; + + // normalize width / height to 256, required for stickers + if (info['w'] is int && info['h'] is int) { + final ratio = info['w'] / info['h']; + if (info['w'] > info['h']) { + info['w'] = 256; + info['h'] = (256.0 / ratio).round(); + } else { + info['h'] = 256; + info['w'] = (ratio * 256.0).round(); + } + } + widget.controller.pack!.images[imageCode] = + ImagePackImageContent.fromJson({ + 'url': uri.toString(), + 'info': info, + }); + successfulUploads.add(file.name); + } catch (e) { + Logs().d('Could not upload emote $imageCode'); + } + } + + await widget.controller.save(context); + _importMap.removeWhere( + (key, value) => successfulUploads.contains(key.name), + ); + + _loading = false; + _progress = 0; + + // in case we have unhandled / duplicated emotes left, don't pop + if (mounted) setState(() {}); + if (_importMap.isEmpty) { + WidgetsBinding.instance + .addPostFrameCallback((_) => Navigator.of(context).pop()); + } + } +} + +class _EmojiImportPreview extends StatefulWidget { + final MapEntry entry; + final ValueChanged onNameChanged; + final VoidCallback onRemove; + + const _EmojiImportPreview({ + super.key, + required this.entry, + required this.onNameChanged, + required this.onRemove, + }); + + @override + State<_EmojiImportPreview> createState() => _EmojiImportPreviewState(); +} + +class _EmojiImportPreviewState extends State<_EmojiImportPreview> { + final hasErrorNotifier = ValueNotifier(false); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + // TODO: support Lottie here as well ... + final controller = TextEditingController(text: widget.entry.value); + + return Stack( + alignment: Alignment.topRight, + children: [ + IconButton( + onPressed: widget.onRemove, + icon: const Icon(Icons.remove_circle), + tooltip: L10n.of(context).remove, + ), + ValueListenableBuilder( + valueListenable: hasErrorNotifier, + builder: (context, hasError, child) { + if (hasError) return _ImageFileError(name: widget.entry.key.name); + + return Column( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Image.memory( + widget.entry.key.content, + height: 64, + width: 64, + errorBuilder: (context, e, s) { + WidgetsBinding.instance + .addPostFrameCallback((_) => _setRenderError()); + + return _ImageFileError( + name: widget.entry.key.name, + ); + }, + ), + SizedBox( + width: 128, + child: TextField( + controller: controller, + inputFormatters: [ + FilteringTextInputFormatter.allow(RegExp(r'^[-\w]+$')), + ], + autocorrect: false, + minLines: 1, + maxLines: 1, + decoration: InputDecoration( + hintText: L10n.of(context).emoteShortcode, + prefixText: ': ', + suffixText: ':', + border: const OutlineInputBorder(), + prefixStyle: TextStyle( + color: theme.colorScheme.secondary, + fontWeight: FontWeight.bold, + ), + suffixStyle: TextStyle( + color: theme.colorScheme.secondary, + fontWeight: FontWeight.bold, + ), + ), + onChanged: widget.onNameChanged, + onSubmitted: widget.onNameChanged, + ), + ), + ], + ); + }, + ), + ], + ); + } + + _setRenderError() { + hasErrorNotifier.value = true; + widget.onRemove.call(); + } +} + +class _ImageFileError extends StatelessWidget { + final String name; + + const _ImageFileError({required this.name}); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + return SizedBox.square( + dimension: 64, + child: Tooltip( + message: name, + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + const Icon(Icons.error), + Text( + L10n.of(context).notAnImage, + textAlign: TextAlign.center, + style: theme.textTheme.labelSmall, + ), + ], + ), + ), + ); + } +} + +extension on String { + /// normalizes a file path into its name only replacing any special character + /// [^-\w] with an underscore and removing the extension + /// + /// Used to compute emote name proposal based on file name + String get emoteNameFromPath { + // ... removing leading path + return split(RegExp(r'[/\\]')) + .last + // ... removing file extension + .split('.') + .first + // ... lowering + .toLowerCase() + // ... replacing unexpected characters + .replaceAll(RegExp(r'[^-\w]'), '_'); + } +} diff --git a/lib/pages/settings_emotes/settings_emotes.dart b/lib/pages/settings_emotes/settings_emotes.dart new file mode 100644 index 0000000..56a96ff --- /dev/null +++ b/lib/pages/settings_emotes/settings_emotes.dart @@ -0,0 +1,338 @@ +import 'dart:async'; + +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; + +import 'package:collection/collection.dart'; +import 'package:go_router/go_router.dart'; +import 'package:http/http.dart' hide Client; +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/client_manager.dart'; +import 'package:fluffychat/utils/file_selector.dart'; +import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_file_extension.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_ok_cancel_alert_dialog.dart'; +import 'package:fluffychat/widgets/future_loading_dialog.dart'; +import '../../widgets/matrix.dart'; +import 'import_archive_dialog.dart'; +import 'settings_emotes_view.dart'; + +import 'package:archive/archive.dart' + if (dart.library.io) 'package:archive/archive_io.dart'; + +class EmotesSettings extends StatefulWidget { + const EmotesSettings({super.key}); + + @override + EmotesSettingsController createState() => EmotesSettingsController(); +} + +class EmotesSettingsController extends State { + String? get roomId => GoRouterState.of(context).pathParameters['roomid']; + + Room? get room => + roomId != null ? Matrix.of(context).client.getRoomById(roomId!) : null; + + String? get stateKey => GoRouterState.of(context).pathParameters['state_key']; + + bool showSave = false; + TextEditingController newImageCodeController = TextEditingController(); + ValueNotifier newImageController = + ValueNotifier(null); + + ImagePackContent _getPack() { + final client = Matrix.of(context).client; + final event = (room != null + ? room!.getState('im.ponies.room_emotes', stateKey ?? '') + : client.accountData['im.ponies.user_emotes']) ?? + BasicEvent( + type: 'm.dummy', + content: {}, + ); + // make sure we work on a *copy* of the event + return BasicEvent.fromJson(event.toJson()).parsedImagePackContent; + } + + ImagePackContent? _pack; + + ImagePackContent? get pack { + if (_pack != null) { + return _pack; + } + _pack = _getPack(); + return _pack; + } + + Future save(BuildContext context) async { + if (readonly) { + return; + } + final client = Matrix.of(context).client; + if (room != null) { + await showFutureLoadingDialog( + context: context, + future: () => client.setRoomStateWithKey( + room!.id, + 'im.ponies.room_emotes', + stateKey ?? '', + pack!.toJson(), + ), + ); + } else { + await showFutureLoadingDialog( + context: context, + future: () => client.setAccountData( + client.userID!, + 'im.ponies.user_emotes', + pack!.toJson(), + ), + ); + } + } + + Future setIsGloballyActive(bool active) async { + if (room == null) { + return; + } + final client = Matrix.of(context).client; + final content = client.accountData['im.ponies.emote_rooms']?.content ?? + {}; + if (active) { + if (content['rooms'] is! Map) { + content['rooms'] = {}; + } + if (content['rooms'][room!.id] is! Map) { + content['rooms'][room!.id] = {}; + } + if (content['rooms'][room!.id][stateKey ?? ''] is! Map) { + content['rooms'][room!.id][stateKey ?? ''] = {}; + } + } else if (content['rooms'] is Map && content['rooms'][room!.id] is Map) { + content['rooms'][room!.id].remove(stateKey ?? ''); + } + // and save + await showFutureLoadingDialog( + context: context, + future: () => client.setAccountData( + client.userID!, + 'im.ponies.emote_rooms', + content, + ), + ); + setState(() {}); + } + + void removeImageAction(String oldImageCode) => setState(() { + pack!.images.remove(oldImageCode); + showSave = true; + }); + + void submitImageAction( + String oldImageCode, + String imageCode, + ImagePackImageContent image, + TextEditingController controller, + ) { + if (pack!.images.keys.any((k) => k == imageCode && k != oldImageCode)) { + controller.text = oldImageCode; + showOkAlertDialog( + useRootNavigator: false, + context: context, + title: L10n.of(context).emoteExists, + okLabel: L10n.of(context).ok, + ); + return; + } + if (!RegExp(r'^[-\w]+$').hasMatch(imageCode)) { + controller.text = oldImageCode; + showOkAlertDialog( + useRootNavigator: false, + context: context, + title: L10n.of(context).emoteInvalid, + okLabel: L10n.of(context).ok, + ); + return; + } + setState(() { + pack!.images[imageCode] = image; + pack!.images.remove(oldImageCode); + showSave = true; + }); + } + + bool isGloballyActive(Client? client) => + room != null && + client!.accountData['im.ponies.emote_rooms']?.content + .tryGetMap('rooms') + ?.tryGetMap(room!.id) + ?.tryGetMap(stateKey ?? '') != + null; + + bool get readonly => + room == null ? false : !(room!.canSendEvent('im.ponies.room_emotes')); + + void saveAction() async { + await save(context); + setState(() { + showSave = false; + }); + } + + void addImageAction() async { + if (newImageCodeController.text.isEmpty || + newImageController.value == null) { + await showOkAlertDialog( + useRootNavigator: false, + context: context, + title: L10n.of(context).emoteWarnNeedToPick, + okLabel: L10n.of(context).ok, + ); + return; + } + final imageCode = newImageCodeController.text; + if (pack!.images.containsKey(imageCode)) { + await showOkAlertDialog( + useRootNavigator: false, + context: context, + title: L10n.of(context).emoteExists, + okLabel: L10n.of(context).ok, + ); + return; + } + if (!RegExp(r'^[-\w]+$').hasMatch(imageCode)) { + await showOkAlertDialog( + useRootNavigator: false, + context: context, + title: L10n.of(context).emoteInvalid, + okLabel: L10n.of(context).ok, + ); + return; + } + pack!.images[imageCode] = newImageController.value!; + await save(context); + setState(() { + newImageCodeController.text = ''; + newImageController.value = null; + showSave = false; + }); + } + + void imagePickerAction( + ValueNotifier controller, + ) async { + final result = await selectFiles( + context, + type: FileSelectorType.images, + ); + final pickedFile = result.firstOrNull; + if (pickedFile == null) return; + var file = MatrixImageFile( + bytes: await pickedFile.readAsBytes(), + name: pickedFile.name, + ); + try { + file = (await file.generateThumbnail( + nativeImplementations: ClientManager.nativeImplementations, + ))!; + } catch (e, s) { + Logs().w('Unable to create thumbnail', e, s); + } + final uploadResp = await showFutureLoadingDialog( + context: context, + future: () => Matrix.of(context).client.uploadContent( + file.bytes, + filename: file.name, + contentType: file.mimeType, + ), + ); + if (uploadResp.error == null) { + setState(() { + final info = { + ...file.info, + }; + // normalize width / height to 256, required for stickers + if (info['w'] is int && info['h'] is int) { + final ratio = info['w'] / info['h']; + if (info['w'] > info['h']) { + info['w'] = 256; + info['h'] = (256.0 / ratio).round(); + } else { + info['h'] = 256; + info['w'] = (ratio * 256.0).round(); + } + } + controller.value = ImagePackImageContent.fromJson({ + 'url': uploadResp.result.toString(), + 'info': info, + }); + }); + } + } + + @override + Widget build(BuildContext context) { + return EmotesSettingsView(this); + } + + Future importEmojiZip() async { + final result = await selectFiles( + context, + type: FileSelectorType.zip, + ); + + if (result.isEmpty) return; + + final buffer = InputMemoryStream(await result.single.readAsBytes()); + + final archive = ZipDecoder().decodeStream(buffer); + + await showDialog( + context: context, + // breaks [Matrix.of] calls otherwise + useRootNavigator: false, + builder: (context) => ImportEmoteArchiveDialog( + controller: this, + archive: archive, + ), + ); + setState(() {}); + } + + Future exportAsZip() async { + final client = Matrix.of(context).client; + + await showFutureLoadingDialog( + context: context, + future: () async { + final pack = _getPack(); + final archive = Archive(); + for (final entry in pack.images.entries) { + final emote = entry.value; + final name = entry.key; + final url = await emote.url.getDownloadUri(client); + final response = await get( + url, + headers: {'authorization': 'Bearer ${client.accessToken}'}, + ); + + archive.addFile( + ArchiveFile( + name, + response.bodyBytes.length, + response.bodyBytes, + ), + ); + } + final fileName = + '${pack.pack.displayName ?? client.userID?.localpart ?? 'emotes'}.zip'; + final output = ZipEncoder().encode(archive); + + MatrixFile( + name: fileName, + bytes: Uint8List.fromList(output), + ).save(context); + }, + ); + } +} diff --git a/lib/pages/settings_emotes/settings_emotes_view.dart b/lib/pages/settings_emotes/settings_emotes_view.dart new file mode 100644 index 0000000..3134cba --- /dev/null +++ b/lib/pages/settings_emotes/settings_emotes_view.dart @@ -0,0 +1,282 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/platform_infos.dart'; +import 'package:fluffychat/widgets/layouts/max_width_body.dart'; +import 'package:fluffychat/widgets/mxc_image.dart'; +import '../../widgets/matrix.dart'; +import 'settings_emotes.dart'; + +enum PopupMenuEmojiActions { import, export } + +class EmotesSettingsView extends StatelessWidget { + final EmotesSettingsController controller; + + const EmotesSettingsView(this.controller, {super.key}); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + final client = Matrix.of(context).client; + final imageKeys = controller.pack!.images.keys.toList(); + return Scaffold( + appBar: AppBar( + leading: const Center(child: BackButton()), + title: Text(L10n.of(context).customEmojisAndStickers), + actions: [ + PopupMenuButton( + useRootNavigator: true, + onSelected: (value) { + switch (value) { + case PopupMenuEmojiActions.export: + controller.exportAsZip(); + break; + case PopupMenuEmojiActions.import: + controller.importEmojiZip(); + break; + } + }, + enabled: !controller.readonly, + itemBuilder: (context) => [ + PopupMenuItem( + value: PopupMenuEmojiActions.import, + child: Text(L10n.of(context).importFromZipFile), + ), + PopupMenuItem( + value: PopupMenuEmojiActions.export, + child: Text(L10n.of(context).exportEmotePack), + ), + ], + ), + ], + ), + floatingActionButton: controller.showSave + ? FloatingActionButton( + onPressed: controller.saveAction, + child: const Icon(Icons.save_outlined, color: Colors.white), + ) + : null, + body: MaxWidthBody( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + if (!controller.readonly) + Container( + padding: const EdgeInsets.symmetric( + vertical: 8.0, + ), + child: ListTile( + leading: Container( + width: 180.0, + height: 38, + padding: const EdgeInsets.symmetric(horizontal: 8), + decoration: BoxDecoration( + borderRadius: const BorderRadius.all(Radius.circular(10)), + color: theme.secondaryHeaderColor, + ), + child: TextField( + controller: controller.newImageCodeController, + autocorrect: false, + minLines: 1, + maxLines: 1, + decoration: InputDecoration( + hintText: L10n.of(context).emoteShortcode, + prefixText: ': ', + suffixText: ':', + prefixStyle: TextStyle( + color: theme.colorScheme.secondary, + fontWeight: FontWeight.bold, + ), + suffixStyle: TextStyle( + color: theme.colorScheme.secondary, + fontWeight: FontWeight.bold, + ), + border: InputBorder.none, + ), + ), + ), + title: _ImagePicker( + controller: controller.newImageController, + onPressed: controller.imagePickerAction, + ), + trailing: InkWell( + onTap: controller.addImageAction, + child: const Icon( + Icons.add_outlined, + color: Colors.green, + size: 32.0, + ), + ), + ), + ), + if (controller.room != null) + SwitchListTile.adaptive( + title: Text(L10n.of(context).enableEmotesGlobally), + value: controller.isGloballyActive(client), + onChanged: controller.setIsGloballyActive, + ), + if (!controller.readonly || controller.room != null) + const Divider(), + imageKeys.isEmpty + ? Center( + child: Padding( + padding: const EdgeInsets.all(16), + child: Text( + L10n.of(context).noEmotesFound, + style: const TextStyle(fontSize: 20), + ), + ), + ) + : ListView.separated( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + separatorBuilder: (BuildContext context, int i) => + const SizedBox.shrink(), + itemCount: imageKeys.length + 1, + itemBuilder: (BuildContext context, int i) { + if (i >= imageKeys.length) { + return Container(height: 70); + } + final imageCode = imageKeys[i]; + final image = controller.pack!.images[imageCode]!; + final textEditingController = TextEditingController(); + textEditingController.text = imageCode; + final useShortCuts = + (PlatformInfos.isWeb || PlatformInfos.isDesktop); + return ListTile( + leading: Container( + width: 180.0, + height: 38, + padding: const EdgeInsets.symmetric(horizontal: 8), + decoration: BoxDecoration( + borderRadius: + const BorderRadius.all(Radius.circular(10)), + color: theme.secondaryHeaderColor, + ), + child: Shortcuts( + shortcuts: !useShortCuts + ? {} + : { + LogicalKeySet(LogicalKeyboardKey.enter): + SubmitLineIntent(), + }, + child: Actions( + actions: !useShortCuts + ? {} + : { + SubmitLineIntent: CallbackAction( + onInvoke: (i) { + controller.submitImageAction( + imageCode, + textEditingController.text, + image, + textEditingController, + ); + return null; + }, + ), + }, + child: TextField( + readOnly: controller.readonly, + controller: textEditingController, + autocorrect: false, + minLines: 1, + maxLines: 1, + decoration: InputDecoration( + hintText: L10n.of(context).emoteShortcode, + prefixText: ': ', + suffixText: ':', + prefixStyle: TextStyle( + color: theme.colorScheme.secondary, + fontWeight: FontWeight.bold, + ), + suffixStyle: TextStyle( + color: theme.colorScheme.secondary, + fontWeight: FontWeight.bold, + ), + border: InputBorder.none, + ), + onSubmitted: (s) => + controller.submitImageAction( + imageCode, + s, + image, + textEditingController, + ), + ), + ), + ), + ), + title: _EmoteImage(image.url), + trailing: controller.readonly + ? null + : InkWell( + onTap: () => + controller.removeImageAction(imageCode), + child: const Icon( + Icons.delete_outlined, + color: Colors.red, + size: 32.0, + ), + ), + ); + }, + ), + ], + ), + ), + ); + } +} + +class _EmoteImage extends StatelessWidget { + final Uri mxc; + + const _EmoteImage(this.mxc); + + @override + Widget build(BuildContext context) { + const size = 38.0; + return SizedBox.square( + dimension: size, + child: MxcImage( + uri: mxc, + fit: BoxFit.contain, + width: size, + height: size, + isThumbnail: false, + ), + ); + } +} + +class _ImagePicker extends StatefulWidget { + final ValueNotifier controller; + + final void Function(ValueNotifier) onPressed; + + const _ImagePicker({required this.controller, required this.onPressed}); + + @override + _ImagePickerState createState() => _ImagePickerState(); +} + +class _ImagePickerState extends State<_ImagePicker> { + @override + Widget build(BuildContext context) { + if (widget.controller.value == null) { + return ElevatedButton( + onPressed: () => widget.onPressed(widget.controller), + child: Text(L10n.of(context).pickImage), + ); + } else { + return _EmoteImage(widget.controller.value!.url); + } + } +} + +class SubmitLineIntent extends Intent {} diff --git a/lib/pages/settings_homeserver/settings_homeserver.dart b/lib/pages/settings_homeserver/settings_homeserver.dart new file mode 100644 index 0000000..76ca082 --- /dev/null +++ b/lib/pages/settings_homeserver/settings_homeserver.dart @@ -0,0 +1,58 @@ +import 'dart:convert'; + +import 'package:flutter/material.dart'; + +import 'package:http/http.dart' as http; +import 'package:matrix/matrix.dart'; + +import '../../widgets/matrix.dart'; +import 'settings_homeserver_view.dart'; + +class SettingsHomeserver extends StatefulWidget { + const SettingsHomeserver({super.key}); + + @override + SettingsHomeserverController createState() => SettingsHomeserverController(); +} + +class SettingsHomeserverController extends State { + Future<({String name, String version, Uri federationBaseUrl})> + fetchServerInfo() async { + final client = Matrix.of(context).client; + final domain = client.userID!.domain!; + final httpClient = client.httpClient; + var federationBaseUrl = Uri(host: domain, port: 8448, scheme: 'https'); + try { + final serverWellKnownResult = await httpClient.get( + Uri.https(domain, '/.well-known/matrix/server'), + ); + final serverWellKnown = jsonDecode(serverWellKnownResult.body); + federationBaseUrl = Uri.https(serverWellKnown['m.server']); + } catch (e, s) { + Logs().w( + 'Unable to fetch federation base uri. Use $federationBaseUrl', + e, + s, + ); + } + + final serverVersionResult = await http.get( + federationBaseUrl.resolveUri( + Uri(path: '/_matrix/federation/v1/version'), + ), + ); + final { + 'server': { + 'name': String name, + 'version': String version, + }, + } = Map>.from( + jsonDecode(serverVersionResult.body), + ); + + return (name: name, version: version, federationBaseUrl: federationBaseUrl); + } + + @override + Widget build(BuildContext context) => SettingsHomeserverView(this); +} diff --git a/lib/pages/settings_homeserver/settings_homeserver_view.dart b/lib/pages/settings_homeserver/settings_homeserver_view.dart new file mode 100644 index 0000000..ee02337 --- /dev/null +++ b/lib/pages/settings_homeserver/settings_homeserver_view.dart @@ -0,0 +1,303 @@ +import 'dart:convert'; + +import 'package:flutter/material.dart'; + +import 'package:flutter_linkify/flutter_linkify.dart'; +import 'package:matrix/matrix.dart'; +import 'package:url_launcher/url_launcher_string.dart'; + +import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/config/themes.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/localized_exception_extension.dart'; +import 'package:fluffychat/widgets/layouts/max_width_body.dart'; +import '../../widgets/matrix.dart'; +import 'settings_homeserver.dart'; + +class SettingsHomeserverView extends StatelessWidget { + final SettingsHomeserverController controller; + + const SettingsHomeserverView(this.controller, {super.key}); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + final client = Matrix.of(context).client; + + return Scaffold( + appBar: AppBar( + automaticallyImplyLeading: !FluffyThemes.isColumnMode(context), + centerTitle: FluffyThemes.isColumnMode(context), + title: Text( + L10n.of(context) + .aboutHomeserver(client.userID?.domain ?? 'Homeserver'), + ), + ), + body: MaxWidthBody( + withScrolling: true, + child: SelectionArea( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + ListTile( + title: Text( + L10n.of(context).serverInformation, + style: TextStyle( + color: theme.colorScheme.secondary, + fontWeight: FontWeight.bold, + ), + ), + ), + FutureBuilder( + future: client.getWellknownSupport(), + builder: (context, snapshot) { + final error = snapshot.error; + final data = snapshot.data; + if (error != null) { + return ListTile( + leading: const Icon(Icons.error_outlined), + title: Text( + error.toLocalizedString( + context, + ExceptionContext.checkServerSupportInfo, + ), + style: const TextStyle(fontSize: 14), + ), + ); + } + if (data == null) { + return const Center( + child: CircularProgressIndicator.adaptive( + strokeWidth: 2, + ), + ); + } + final supportPage = data.supportPage; + final contacts = data.contacts; + if (supportPage == null && contacts == null) { + return ListTile( + leading: const Icon(Icons.error_outlined), + title: Text( + L10n.of(context).noContactInformationProvided, + style: const TextStyle(fontSize: 14), + ), + ); + } + return Column( + mainAxisSize: MainAxisSize.min, + children: [ + if (supportPage != null) + ListTile( + title: Text(L10n.of(context).supportPage), + subtitle: Text(supportPage.toString()), + ), + if (contacts != null) + ...contacts.map( + (contact) { + return ListTile( + title: Text( + contact.role.localizedString( + L10n.of(context), + ), + ), + subtitle: Column( + mainAxisSize: MainAxisSize.min, + children: [ + if (contact.emailAddress != null) + TextButton( + onPressed: () {}, + child: Text(contact.emailAddress!), + ), + if (contact.matrixId != null) + TextButton( + onPressed: () {}, + child: Text(contact.matrixId!), + ), + ], + ), + ); + }, + ), + ], + ); + }, + ), + FutureBuilder( + future: controller.fetchServerInfo(), + builder: (context, snapshot) { + final error = snapshot.error; + if (error != null) { + return Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon( + Icons.error_outlined, + color: theme.colorScheme.error, + ), + const SizedBox(height: 12), + Text( + error.toLocalizedString(context), + textAlign: TextAlign.center, + style: TextStyle( + color: theme.colorScheme.error, + ), + ), + ], + ); + } + final data = snapshot.data; + if (data == null) { + return const Center( + child: CircularProgressIndicator.adaptive( + strokeWidth: 2, + ), + ); + } + return Column( + mainAxisSize: MainAxisSize.min, + children: [ + ListTile( + title: Text(L10n.of(context).name), + subtitle: Text(data.name), + ), + ListTile( + title: Text(L10n.of(context).version), + subtitle: Text(data.version), + ), + ListTile( + title: const Text('Federation Base URL'), + subtitle: Linkify( + text: data.federationBaseUrl.toString(), + textScaleFactor: + MediaQuery.textScalerOf(context).scale(1), + options: const LinkifyOptions(humanize: false), + linkStyle: TextStyle( + color: theme.colorScheme.primary, + decorationColor: theme.colorScheme.primary, + ), + onOpen: (link) => launchUrlString(link.url), + ), + ), + ], + ); + }, + ), + Divider(color: theme.dividerColor), + FutureBuilder( + future: client.getWellknown(), + initialData: client.wellKnown, + builder: (context, snapshot) { + final error = snapshot.error; + if (error != null) { + return Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon( + Icons.error_outlined, + color: theme.colorScheme.error, + ), + const SizedBox(height: 12), + Text( + error.toLocalizedString(context), + textAlign: TextAlign.center, + style: TextStyle( + color: theme.colorScheme.error, + ), + ), + ], + ); + } + final wellKnown = snapshot.data; + if (wellKnown == null) { + return const Center( + child: CircularProgressIndicator.adaptive( + strokeWidth: 2, + ), + ); + } + final identityServer = wellKnown.mIdentityServer; + return Column( + mainAxisSize: MainAxisSize.min, + children: [ + ListTile( + title: Text( + 'Client-Well-Known Information:', + style: TextStyle( + color: theme.colorScheme.secondary, + fontWeight: FontWeight.bold, + ), + ), + ), + ListTile( + title: const Text('Base URL'), + subtitle: Linkify( + text: wellKnown.mHomeserver.baseUrl.toString(), + textScaleFactor: + MediaQuery.textScalerOf(context).scale(1), + options: const LinkifyOptions(humanize: false), + linkStyle: TextStyle( + color: theme.colorScheme.primary, + decorationColor: theme.colorScheme.primary, + ), + onOpen: (link) => launchUrlString(link.url), + ), + ), + if (identityServer != null) + ListTile( + title: const Text('Identity Server:'), + subtitle: Linkify( + text: identityServer.baseUrl.toString(), + textScaleFactor: + MediaQuery.textScalerOf(context).scale(1), + options: const LinkifyOptions(humanize: false), + linkStyle: TextStyle( + color: theme.colorScheme.primary, + decorationColor: theme.colorScheme.primary, + ), + onOpen: (link) => launchUrlString(link.url), + ), + ), + ...wellKnown.additionalProperties.entries.map( + (entry) => ListTile( + title: Text(entry.key), + subtitle: Material( + borderRadius: + BorderRadius.circular(AppConfig.borderRadius), + color: theme.colorScheme.surfaceContainer, + child: SingleChildScrollView( + padding: const EdgeInsets.all(16), + scrollDirection: Axis.horizontal, + child: Text( + const JsonEncoder.withIndent(' ') + .convert(entry.value), + style: TextStyle( + color: theme.colorScheme.onSurface, + ), + ), + ), + ), + ), + ), + ], + ); + }, + ), + ], + ), + ), + ), + ); + } +} + +extension on Role { + String localizedString(L10n l10n) { + switch (this) { + case Role.mRoleAdmin: + return l10n.contactServerAdmin; + case Role.mRoleSecurity: + return l10n.contactServerSecurity; + } + } +} diff --git a/lib/pages/settings_ignore_list/settings_ignore_list.dart b/lib/pages/settings_ignore_list/settings_ignore_list.dart new file mode 100644 index 0000000..3bcea3d --- /dev/null +++ b/lib/pages/settings_ignore_list/settings_ignore_list.dart @@ -0,0 +1,57 @@ +import 'package:flutter/material.dart'; + +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/widgets/future_loading_dialog.dart'; +import '../../widgets/matrix.dart'; +import 'settings_ignore_list_view.dart'; + +class SettingsIgnoreList extends StatefulWidget { + final String? initialUserId; + + const SettingsIgnoreList({super.key, this.initialUserId}); + + @override + SettingsIgnoreListController createState() => SettingsIgnoreListController(); +} + +class SettingsIgnoreListController extends State { + final TextEditingController controller = TextEditingController(); + + @override + void initState() { + super.initState(); + final initialUserId = widget.initialUserId; + if (initialUserId != null) { + controller.text = initialUserId; + } + } + + String? errorText; + + void ignoreUser(BuildContext context) { + final userId = controller.text.trim(); + if (userId.isEmpty) return; + if (!userId.isValidMatrixId || userId.sigil != '@') { + setState(() { + errorText = L10n.of(context).invalidInput; + }); + return; + } + setState(() { + errorText = null; + }); + + final client = Matrix.of(context).client; + showFutureLoadingDialog( + context: context, + future: () => client.ignoreUser(userId), + ); + setState(() {}); + controller.clear(); + } + + @override + Widget build(BuildContext context) => SettingsIgnoreListView(this); +} diff --git a/lib/pages/settings_ignore_list/settings_ignore_list_view.dart b/lib/pages/settings_ignore_list/settings_ignore_list_view.dart new file mode 100644 index 0000000..19bd17c --- /dev/null +++ b/lib/pages/settings_ignore_list/settings_ignore_list_view.dart @@ -0,0 +1,98 @@ +import 'package:flutter/material.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/widgets/future_loading_dialog.dart'; +import 'package:fluffychat/widgets/layouts/max_width_body.dart'; +import '../../widgets/matrix.dart'; +import 'settings_ignore_list.dart'; + +class SettingsIgnoreListView extends StatelessWidget { + final SettingsIgnoreListController controller; + + const SettingsIgnoreListView(this.controller, {super.key}); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + final client = Matrix.of(context).client; + return Scaffold( + appBar: AppBar( + leading: const Center(child: BackButton()), + title: Text(L10n.of(context).blockedUsers), + ), + body: MaxWidthBody( + withScrolling: false, + child: StreamBuilder( + stream: client.onSync.stream.where( + (syncUpdate) => + syncUpdate.accountData?.any( + (accountData) => accountData.type == 'm.ignored_user_list', + ) ?? + false, + ), + builder: (context, asyncSnapshot) { + if (client.prevBatch == null) { + return const Center(child: CircularProgressIndicator.adaptive()); + } + return Column( + mainAxisSize: MainAxisSize.min, + children: [ + Padding( + padding: const EdgeInsets.all(16.0), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + TextField( + controller: controller.controller, + autocorrect: false, + textInputAction: TextInputAction.done, + onSubmitted: (_) => controller.ignoreUser(context), + decoration: InputDecoration( + errorText: controller.errorText, + hintText: '@bad_guy:domain.abc', + floatingLabelBehavior: FloatingLabelBehavior.always, + labelText: L10n.of(context).blockUsername, + suffixIcon: IconButton( + tooltip: L10n.of(context).block, + icon: const Icon(Icons.add), + onPressed: () => controller.ignoreUser(context), + ), + ), + ), + const SizedBox(height: 16), + Text( + L10n.of(context).blockListDescription, + style: const TextStyle(color: Colors.orange), + ), + ], + ), + ), + Divider( + color: theme.dividerColor, + ), + Expanded( + child: ListView.builder( + itemCount: client.ignoredUsers.length, + itemBuilder: (c, i) => ListTile( + title: Text(client.ignoredUsers[i]), + trailing: IconButton( + tooltip: L10n.of(context).delete, + icon: const Icon(Icons.delete_outlined), + onPressed: () => showFutureLoadingDialog( + context: context, + future: () => + client.unignoreUser(client.ignoredUsers[i]), + ), + ), + ), + ), + ), + ], + ); + }, + ), + ), + ); + } +} diff --git a/lib/pages/settings_multiple_emotes/settings_multiple_emotes.dart b/lib/pages/settings_multiple_emotes/settings_multiple_emotes.dart new file mode 100644 index 0000000..276bc08 --- /dev/null +++ b/lib/pages/settings_multiple_emotes/settings_multiple_emotes.dart @@ -0,0 +1,19 @@ +import 'package:flutter/material.dart'; + +import 'package:go_router/go_router.dart'; + +import 'settings_multiple_emotes_view.dart'; + +class MultipleEmotesSettings extends StatefulWidget { + const MultipleEmotesSettings({super.key}); + + @override + MultipleEmotesSettingsController createState() => + MultipleEmotesSettingsController(); +} + +class MultipleEmotesSettingsController extends State { + String? get roomId => GoRouterState.of(context).pathParameters['roomid']; + @override + Widget build(BuildContext context) => MultipleEmotesSettingsView(this); +} diff --git a/lib/pages/settings_multiple_emotes/settings_multiple_emotes_view.dart b/lib/pages/settings_multiple_emotes/settings_multiple_emotes_view.dart new file mode 100644 index 0000000..6559d0f --- /dev/null +++ b/lib/pages/settings_multiple_emotes/settings_multiple_emotes_view.dart @@ -0,0 +1,64 @@ +import 'package:flutter/material.dart'; + +import 'package:go_router/go_router.dart'; +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/settings_multiple_emotes/settings_multiple_emotes.dart'; +import 'package:fluffychat/widgets/matrix.dart'; + +class MultipleEmotesSettingsView extends StatelessWidget { + final MultipleEmotesSettingsController controller; + + const MultipleEmotesSettingsView(this.controller, {super.key}); + + @override + Widget build(BuildContext context) { + final room = Matrix.of(context).client.getRoomById(controller.roomId!)!; + return Scaffold( + appBar: AppBar( + leading: const Center(child: BackButton()), + title: Text(L10n.of(context).emotePacks), + ), + body: StreamBuilder( + stream: room.client.onRoomState.stream + .where((update) => update.roomId == room.id), + builder: (context, snapshot) { + final packStateEvents = room.states['im.ponies.room_emotes']; + // we need to manually convert the map using Map.of, otherwise assigning null will throw a type error. + final packs = packStateEvents != null + ? Map.of(packStateEvents) + : {}; + if (!packs.containsKey('')) { + packs[''] = null; + } + final keys = packs.keys.toList(); + keys.sort(); + return ListView.separated( + separatorBuilder: (BuildContext context, int i) => + const SizedBox.shrink(), + itemCount: keys.length, + itemBuilder: (BuildContext context, int i) { + final event = packs[keys[i]]; + final eventPack = + event?.content.tryGetMap('pack'); + final packName = eventPack?.tryGet('displayname') ?? + eventPack?.tryGet('name') ?? + (keys[i].isNotEmpty ? keys[i] : 'Default Pack'); + + return ListTile( + title: Text(packName), + onTap: () async { + context.go( + ['', 'rooms', room.id, 'details', 'emotes', keys[i]] + .join('/'), + ); + }, + ); + }, + ); + }, + ), + ); + } +} diff --git a/lib/pages/settings_notifications/push_rule_extensions.dart b/lib/pages/settings_notifications/push_rule_extensions.dart new file mode 100644 index 0000000..4cf53a9 --- /dev/null +++ b/lib/pages/settings_notifications/push_rule_extensions.dart @@ -0,0 +1,122 @@ +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; + +extension PushRuleExtension on PushRule { + String getPushRuleName(L10n l10n) { + switch (ruleId) { + case '.m.rule.contains_user_name': + return l10n.notificationRuleContainsUserName; + case '.m.rule.master': + return l10n.notificationRuleMaster; + case '.m.rule.suppress_notices': + return l10n.notificationRuleSuppressNotices; + case '.m.rule.invite_for_me': + return l10n.notificationRuleInviteForMe; + case '.m.rule.member_event': + return l10n.notificationRuleMemberEvent; + case '.m.rule.is_user_mention': + return l10n.notificationRuleIsUserMention; + case '.m.rule.contains_display_name': + return l10n.notificationRuleContainsDisplayName; + case '.m.rule.is_room_mention': + return l10n.notificationRuleIsRoomMention; + case '.m.rule.roomnotif': + return l10n.notificationRuleRoomnotif; + case '.m.rule.tombstone': + return l10n.notificationRuleTombstone; + case '.m.rule.reaction': + return l10n.notificationRuleReaction; + case '.m.rule.room_server_acl': + return l10n.notificationRuleRoomServerAcl; + case '.m.rule.suppress_edits': + return l10n.notificationRuleSuppressEdits; + case '.m.rule.call': + return l10n.notificationRuleCall; + case '.m.rule.encrypted_room_one_to_one': + return l10n.notificationRuleEncryptedRoomOneToOne; + case '.m.rule.room_one_to_one': + return l10n.notificationRuleRoomOneToOne; + case '.m.rule.message': + return l10n.notificationRuleMessage; + case '.m.rule.encrypted': + return l10n.notificationRuleEncrypted; + case '.m.rule.room.server_acl': + return l10n.notificationRuleServerAcl; + case '.im.vector.jitsi': + return l10n.notificationRuleJitsi; + default: + return ruleId.split('.').last.replaceAll('_', ' ').capitalize(); + } + } + + String getPushRuleDescription(L10n l10n) { + switch (ruleId) { + case '.m.rule.contains_user_name': + return l10n.notificationRuleContainsUserNameDescription; + case '.m.rule.master': + return l10n.notificationRuleMasterDescription; + case '.m.rule.suppress_notices': + return l10n.notificationRuleSuppressNoticesDescription; + case '.m.rule.invite_for_me': + return l10n.notificationRuleInviteForMeDescription; + case '.m.rule.member_event': + return l10n.notificationRuleMemberEventDescription; + case '.m.rule.is_user_mention': + return l10n.notificationRuleIsUserMentionDescription; + case '.m.rule.contains_display_name': + return l10n.notificationRuleContainsDisplayNameDescription; + case '.m.rule.is_room_mention': + return l10n.notificationRuleIsRoomMentionDescription; + case '.m.rule.roomnotif': + return l10n.notificationRuleRoomnotifDescription; + case '.m.rule.tombstone': + return l10n.notificationRuleTombstoneDescription; + case '.m.rule.reaction': + return l10n.notificationRuleReactionDescription; + case '.m.rule.room_server_acl': + return l10n.notificationRuleRoomServerAclDescription; + case '.m.rule.suppress_edits': + return l10n.notificationRuleSuppressEditsDescription; + case '.m.rule.call': + return l10n.notificationRuleCallDescription; + case '.m.rule.encrypted_room_one_to_one': + return l10n.notificationRuleEncryptedRoomOneToOneDescription; + case '.m.rule.room_one_to_one': + return l10n.notificationRuleRoomOneToOneDescription; + case '.m.rule.message': + return l10n.notificationRuleMessageDescription; + case '.m.rule.encrypted': + return l10n.notificationRuleEncryptedDescription; + case '.m.rule.room.server_acl': + return l10n.notificationRuleServerAclDescription; + case '.im.vector.jitsi': + return l10n.notificationRuleJitsiDescription; + default: + return l10n.unknownPushRule(ruleId); + } + } +} + +extension PushRuleKindLocal on PushRuleKind { + String localized(L10n l10n) { + switch (this) { + case PushRuleKind.content: + return l10n.contentNotificationSettings; + case PushRuleKind.override: + return l10n.generalNotificationSettings; + case PushRuleKind.room: + return l10n.roomNotificationSettings; + case PushRuleKind.sender: + return l10n.userSpecificNotificationSettings; + case PushRuleKind.underride: + return l10n.otherNotificationSettings; + } + } +} + +extension on String { + String capitalize() { + return "${this[0].toUpperCase()}${substring(1).toLowerCase()}"; + } +} diff --git a/lib/pages/settings_notifications/settings_notifications.dart b/lib/pages/settings_notifications/settings_notifications.dart new file mode 100644 index 0000000..9ba74e9 --- /dev/null +++ b/lib/pages/settings_notifications/settings_notifications.dart @@ -0,0 +1,206 @@ +import 'dart:convert'; + +import 'package:flutter/material.dart'; + +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/settings_notifications/push_rule_extensions.dart'; +import 'package:fluffychat/utils/localized_exception_extension.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/adaptive_dialog_action.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_modal_action_popup.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_ok_cancel_alert_dialog.dart'; +import 'package:fluffychat/widgets/future_loading_dialog.dart'; +import '../../widgets/matrix.dart'; +import 'settings_notifications_view.dart'; + +class SettingsNotifications extends StatefulWidget { + const SettingsNotifications({super.key}); + + @override + SettingsNotificationsController createState() => + SettingsNotificationsController(); +} + +class SettingsNotificationsController extends State { + bool isLoading = false; + + void onPusherTap(Pusher pusher) async { + final delete = await showModalActionPopup( + context: context, + title: pusher.deviceDisplayName, + message: '${pusher.appDisplayName} (${pusher.appId})', + cancelLabel: L10n.of(context).cancel, + actions: [ + AdaptiveModalAction( + label: L10n.of(context).delete, + isDestructive: true, + value: true, + ), + ], + ); + if (delete != true) return; + + final success = await showFutureLoadingDialog( + context: context, + future: () => Matrix.of(context).client.deletePusher( + PusherId( + appId: pusher.appId, + pushkey: pusher.pushkey, + ), + ), + ); + + if (success.error != null) return; + + setState(() { + pusherFuture = null; + }); + } + + Future?>? pusherFuture; + + void togglePushRule(PushRuleKind kind, PushRule pushRule) async { + setState(() { + isLoading = true; + }); + try { + final updateFromSync = Matrix.of(context) + .client + .onSync + .stream + .where( + (syncUpdate) => + syncUpdate.accountData?.any( + (accountData) => accountData.type == 'm.push_rules', + ) ?? + false, + ) + .first; + await Matrix.of(context).client.setPushRuleEnabled( + kind, + pushRule.ruleId, + !pushRule.enabled, + ); + await updateFromSync; + } catch (e, s) { + Logs().w('Unable to toggle push rule', e, s); + if (!mounted) return; + ScaffoldMessenger.of(context) + .showSnackBar(SnackBar(content: Text(e.toLocalizedString(context)))); + } finally { + if (mounted) { + setState(() { + isLoading = false; + }); + } + } + } + + void editPushRule(PushRule rule, PushRuleKind kind) async { + final theme = Theme.of(context); + final action = await showAdaptiveDialog( + context: context, + builder: (context) => ConstrainedBox( + constraints: const BoxConstraints(maxWidth: 256), + child: AlertDialog.adaptive( + title: Text(rule.getPushRuleName(L10n.of(context))), + content: Padding( + padding: const EdgeInsets.only(top: 16.0), + child: Material( + borderRadius: BorderRadius.circular(AppConfig.borderRadius), + color: theme.colorScheme.surfaceContainer, + child: SingleChildScrollView( + padding: const EdgeInsets.all(16), + scrollDirection: Axis.horizontal, + child: SelectableText( + prettyJson(rule.toJson()), + style: TextStyle( + color: theme.colorScheme.onSurface, + ), + ), + ), + ), + ), + actions: [ + AdaptiveDialogAction( + onPressed: Navigator.of(context).pop, + child: Text(L10n.of(context).close), + ), + if (!rule.ruleId.startsWith('.m.')) + AdaptiveDialogAction( + onPressed: () => + Navigator.of(context).pop(PushRuleDialogAction.delete), + child: Text( + L10n.of(context).delete, + style: TextStyle(color: theme.colorScheme.error), + ), + ), + ], + ), + ), + ); + if (action == null) return; + if (!mounted) return; + switch (action) { + case PushRuleDialogAction.delete: + final consent = await showOkCancelAlertDialog( + context: context, + title: L10n.of(context).areYouSure, + message: L10n.of(context).deletePushRuleCanNotBeUndone, + okLabel: L10n.of(context).delete, + isDestructive: true, + ); + if (consent != OkCancelResult.ok) return; + if (!mounted) return; + setState(() { + isLoading = true; + }); + try { + final updateFromSync = Matrix.of(context) + .client + .onSync + .stream + .where( + (syncUpdate) => + syncUpdate.accountData?.any( + (accountData) => accountData.type == 'm.push_rules', + ) ?? + false, + ) + .first; + await Matrix.of(context).client.deletePushRule( + kind, + rule.ruleId, + ); + await updateFromSync; + } catch (e, s) { + Logs().w('Unable to delete push rule', e, s); + if (!mounted) return; + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text(e.toLocalizedString(context))), + ); + } finally { + if (mounted) { + setState(() { + isLoading = false; + }); + } + } + return; + } + } + + @override + Widget build(BuildContext context) => SettingsNotificationsView(this); +} + +enum PushRuleDialogAction { delete } + +String prettyJson(Map json) { + const decoder = JsonDecoder(); + const encoder = JsonEncoder.withIndent(' '); + final object = decoder.convert(jsonEncode(json)); + return encoder.convert(object); +} diff --git a/lib/pages/settings_notifications/settings_notifications_view.dart b/lib/pages/settings_notifications/settings_notifications_view.dart new file mode 100644 index 0000000..548aa59 --- /dev/null +++ b/lib/pages/settings_notifications/settings_notifications_view.dart @@ -0,0 +1,169 @@ +import 'package:flutter/material.dart'; + +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/config/themes.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/settings_notifications/push_rule_extensions.dart'; +import 'package:fluffychat/widgets/layouts/max_width_body.dart'; +import '../../utils/localized_exception_extension.dart'; +import '../../widgets/matrix.dart'; +import 'settings_notifications.dart'; + +class SettingsNotificationsView extends StatelessWidget { + final SettingsNotificationsController controller; + + const SettingsNotificationsView(this.controller, {super.key}); + + @override + Widget build(BuildContext context) { + final pushRules = Matrix.of(context).client.globalPushRules; + final pushCategories = [ + if (pushRules?.override?.isNotEmpty ?? false) + (rules: pushRules?.override ?? [], kind: PushRuleKind.override), + if (pushRules?.content?.isNotEmpty ?? false) + (rules: pushRules?.content ?? [], kind: PushRuleKind.content), + if (pushRules?.sender?.isNotEmpty ?? false) + (rules: pushRules?.sender ?? [], kind: PushRuleKind.sender), + if (pushRules?.underride?.isNotEmpty ?? false) + (rules: pushRules?.underride ?? [], kind: PushRuleKind.underride), + ]; + return Scaffold( + appBar: AppBar( + automaticallyImplyLeading: !FluffyThemes.isColumnMode(context), + centerTitle: FluffyThemes.isColumnMode(context), + title: Text(L10n.of(context).notifications), + ), + body: MaxWidthBody( + child: StreamBuilder( + stream: Matrix.of(context).client.onSync.stream.where( + (syncUpdate) => + syncUpdate.accountData?.any( + (accountData) => accountData.type == 'm.push_rules', + ) ?? + false, + ), + builder: (BuildContext context, _) { + final theme = Theme.of(context); + return SelectionArea( + child: Column( + children: [ + if (pushRules != null) + for (final category in pushCategories) ...[ + ListTile( + title: Text( + category.kind.localized(L10n.of(context)), + style: TextStyle( + color: theme.colorScheme.secondary, + fontWeight: FontWeight.bold, + ), + ), + ), + for (final rule in category.rules) + ListTile( + title: Text(rule.getPushRuleName(L10n.of(context))), + subtitle: Text.rich( + TextSpan( + children: [ + TextSpan( + text: rule.getPushRuleDescription( + L10n.of(context), + ), + ), + const TextSpan(text: ' '), + WidgetSpan( + child: InkWell( + onTap: () => controller.editPushRule( + rule, + category.kind, + ), + child: Text( + L10n.of(context).more, + style: TextStyle( + color: theme.colorScheme.primary, + decoration: TextDecoration.underline, + decorationColor: + theme.colorScheme.primary, + ), + ), + ), + ), + ], + ), + ), + trailing: Switch.adaptive( + value: rule.enabled, + onChanged: controller.isLoading + ? null + : rule.ruleId != '.m.rule.master' && + Matrix.of(context) + .client + .allPushNotificationsMuted + ? null + : (_) => controller.togglePushRule( + category.kind, + rule, + ), + ), + ), + Divider(color: theme.dividerColor), + ], + ListTile( + title: Text( + L10n.of(context).devices, + style: TextStyle( + color: theme.colorScheme.secondary, + fontWeight: FontWeight.bold, + ), + ), + ), + FutureBuilder?>( + future: controller.pusherFuture ??= + Matrix.of(context).client.getPushers(), + builder: (context, snapshot) { + if (snapshot.hasError) { + Center( + child: Text( + snapshot.error!.toLocalizedString(context), + ), + ); + } + if (snapshot.connectionState != ConnectionState.done) { + const Center( + child: CircularProgressIndicator.adaptive( + strokeWidth: 2, + ), + ); + } + final pushers = snapshot.data ?? []; + if (pushers.isEmpty) { + return Center( + child: Padding( + padding: const EdgeInsets.only(bottom: 16.0), + child: Text(L10n.of(context).noOtherDevicesFound), + ), + ); + } + return ListView.builder( + physics: const NeverScrollableScrollPhysics(), + shrinkWrap: true, + itemCount: pushers.length, + itemBuilder: (_, i) => ListTile( + title: Text( + '${pushers[i].appDisplayName} - ${pushers[i].appId}', + ), + subtitle: Text(pushers[i].data.url.toString()), + onTap: () => controller.onPusherTap(pushers[i]), + ), + ); + }, + ), + ], + ), + ); + }, + ), + ), + ); + } +} diff --git a/lib/pages/settings_password/settings_password.dart b/lib/pages/settings_password/settings_password.dart new file mode 100644 index 0000000..bc2400c --- /dev/null +++ b/lib/pages/settings_password/settings_password.dart @@ -0,0 +1,83 @@ +import 'package:flutter/material.dart'; + +import 'package:go_router/go_router.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/settings_password/settings_password_view.dart'; +import 'package:fluffychat/utils/localized_exception_extension.dart'; +import 'package:fluffychat/widgets/matrix.dart'; + +class SettingsPassword extends StatefulWidget { + const SettingsPassword({super.key}); + + @override + SettingsPasswordController createState() => SettingsPasswordController(); +} + +class SettingsPasswordController extends State { + final TextEditingController oldPasswordController = TextEditingController(); + final TextEditingController newPassword1Controller = TextEditingController(); + final TextEditingController newPassword2Controller = TextEditingController(); + + String? oldPasswordError; + String? newPassword1Error; + String? newPassword2Error; + + bool loading = false; + + void changePassword() async { + setState(() { + oldPasswordError = newPassword1Error = newPassword2Error = null; + }); + if (oldPasswordController.text.isEmpty) { + setState(() { + oldPasswordError = L10n.of(context).pleaseEnterYourPassword; + }); + return; + } + if (newPassword1Controller.text.isEmpty || + newPassword1Controller.text.length < 6) { + setState(() { + newPassword1Error = L10n.of(context).pleaseChooseAStrongPassword; + }); + return; + } + if (newPassword1Controller.text != newPassword2Controller.text) { + setState(() { + newPassword2Error = L10n.of(context).passwordsDoNotMatch; + }); + return; + } + + setState(() { + loading = true; + }); + try { + final scaffoldMessenger = ScaffoldMessenger.of(context); + await Matrix.of(context).client.changePassword( + newPassword1Controller.text, + oldPassword: oldPasswordController.text, + ); + scaffoldMessenger.showSnackBar( + SnackBar( + content: Text(L10n.of(context).passwordHasBeenChanged), + ), + ); + if (mounted) context.pop(); + } catch (e) { + setState(() { + newPassword2Error = e.toLocalizedString( + context, + ExceptionContext.changePassword, + ); + }); + } finally { + setState(() { + loading = false; + }); + } + } + + @override + Widget build(BuildContext context) => SettingsPasswordView(this); +} diff --git a/lib/pages/settings_password/settings_password_view.dart b/lib/pages/settings_password/settings_password_view.dart new file mode 100644 index 0000000..b52a223 --- /dev/null +++ b/lib/pages/settings_password/settings_password_view.dart @@ -0,0 +1,91 @@ +import 'package:flutter/material.dart'; + +import 'package:go_router/go_router.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/settings_password/settings_password.dart'; +import 'package:fluffychat/widgets/layouts/max_width_body.dart'; + +class SettingsPasswordView extends StatelessWidget { + final SettingsPasswordController controller; + const SettingsPasswordView(this.controller, {super.key}); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + return Scaffold( + appBar: AppBar( + title: Text(L10n.of(context).changePassword), + ), + body: ListTileTheme( + iconColor: theme.colorScheme.onSurface, + child: MaxWidthBody( + child: Padding( + padding: const EdgeInsets.all(16.0), + child: Column( + children: [ + const SizedBox(height: 16), + TextField( + controller: controller.oldPasswordController, + obscureText: true, + autocorrect: false, + autofocus: true, + readOnly: controller.loading, + decoration: InputDecoration( + prefixIcon: const Icon(Icons.lock_outlined), + hintText: '********', + labelText: L10n.of(context).pleaseEnterYourCurrentPassword, + errorText: controller.oldPasswordError, + ), + ), + const Divider(height: 64), + TextField( + controller: controller.newPassword1Controller, + obscureText: true, + autocorrect: false, + readOnly: controller.loading, + decoration: InputDecoration( + prefixIcon: const Icon(Icons.lock_reset_outlined), + hintText: '********', + labelText: L10n.of(context).newPassword, + errorText: controller.newPassword1Error, + ), + ), + const SizedBox(height: 16), + TextField( + controller: controller.newPassword2Controller, + obscureText: true, + autocorrect: false, + readOnly: controller.loading, + decoration: InputDecoration( + prefixIcon: const Icon(Icons.repeat_outlined), + hintText: '********', + labelText: L10n.of(context).repeatPassword, + errorText: controller.newPassword2Error, + ), + ), + const SizedBox(height: 32), + SizedBox( + width: double.infinity, + child: ElevatedButton( + onPressed: + controller.loading ? null : controller.changePassword, + child: controller.loading + ? const LinearProgressIndicator() + : Text(L10n.of(context).changePassword), + ), + ), + const SizedBox(height: 16), + TextButton( + child: Text(L10n.of(context).passwordRecoverySettings), + onPressed: () => context.go('/rooms/settings/security/3pid'), + ), + ], + ), + ), + ), + ), + ); + } +} diff --git a/lib/pages/settings_security/settings_security.dart b/lib/pages/settings_security/settings_security.dart new file mode 100644 index 0000000..2ec3747 --- /dev/null +++ b/lib/pages/settings_security/settings_security.dart @@ -0,0 +1,123 @@ +import 'package:flutter/material.dart'; + +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/config/setting_keys.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_ok_cancel_alert_dialog.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_text_input_dialog.dart'; +import 'package:fluffychat/widgets/app_lock.dart'; +import 'package:fluffychat/widgets/future_loading_dialog.dart'; +import 'package:fluffychat/widgets/matrix.dart'; +import '../bootstrap/bootstrap_dialog.dart'; +import 'settings_security_view.dart'; + +class SettingsSecurity extends StatefulWidget { + const SettingsSecurity({super.key}); + + @override + SettingsSecurityController createState() => SettingsSecurityController(); +} + +class SettingsSecurityController extends State { + void setAppLockAction() async { + if (AppLock.of(context).isActive) { + AppLock.of(context).showLockScreen(); + } + final newLock = await showTextInputDialog( + useRootNavigator: false, + context: context, + title: L10n.of(context).pleaseChooseAPasscode, + message: L10n.of(context).pleaseEnter4Digits, + cancelLabel: L10n.of(context).cancel, + validator: (text) { + if (text.isEmpty || (text.length == 4 && int.tryParse(text)! >= 0)) { + return null; + } + return L10n.of(context).pleaseEnter4Digits; + }, + keyboardType: TextInputType.number, + obscureText: true, + maxLines: 1, + minLines: 1, + maxLength: 4, + ); + if (newLock != null) { + await AppLock.of(context).changePincode(newLock); + } + } + + void deleteAccountAction() async { + if (await showOkCancelAlertDialog( + useRootNavigator: false, + context: context, + title: L10n.of(context).warning, + message: L10n.of(context).deactivateAccountWarning, + okLabel: L10n.of(context).ok, + cancelLabel: L10n.of(context).cancel, + isDestructive: true, + ) == + OkCancelResult.cancel) { + return; + } + final supposedMxid = Matrix.of(context).client.userID!; + final mxid = await showTextInputDialog( + useRootNavigator: false, + context: context, + title: L10n.of(context).confirmMatrixId, + validator: (text) => text == supposedMxid + ? null + : L10n.of(context).supposedMxid(supposedMxid), + isDestructive: true, + okLabel: L10n.of(context).delete, + cancelLabel: L10n.of(context).cancel, + ); + if (mxid == null || mxid.isEmpty || mxid != supposedMxid) { + return; + } + final input = await showTextInputDialog( + useRootNavigator: false, + context: context, + title: L10n.of(context).pleaseEnterYourPassword, + okLabel: L10n.of(context).ok, + cancelLabel: L10n.of(context).cancel, + isDestructive: true, + obscureText: true, + hintText: '******', + minLines: 1, + maxLines: 1, + ); + if (input == null) return; + await showFutureLoadingDialog( + context: context, + future: () => Matrix.of(context).client.deactivateAccount( + auth: AuthenticationPassword( + password: input, + identifier: AuthenticationUserIdentifier( + user: Matrix.of(context).client.userID!, + ), + ), + ), + ); + } + + void showBootstrapDialog(BuildContext context) async { + await BootstrapDialog( + client: Matrix.of(context).client, + ).show(context); + } + + Future dehydrateAction() => Matrix.of(context).dehydrateAction(context); + + void changeShareKeysWith(ShareKeysWith? shareKeysWith) async { + if (shareKeysWith == null) return; + AppSettings.shareKeysWith.setItem( + shareKeysWith.name, + ); + Matrix.of(context).client.shareKeysWith = shareKeysWith; + setState(() {}); + } + + @override + Widget build(BuildContext context) => SettingsSecurityView(this); +} diff --git a/lib/pages/settings_security/settings_security_view.dart b/lib/pages/settings_security/settings_security_view.dart new file mode 100644 index 0000000..039fd97 --- /dev/null +++ b/lib/pages/settings_security/settings_security_view.dart @@ -0,0 +1,197 @@ +import 'package:flutter/material.dart'; + +import 'package:go_router/go_router.dart'; +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/config/setting_keys.dart'; +import 'package:fluffychat/config/themes.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/beautify_string_extension.dart'; +import 'package:fluffychat/utils/platform_infos.dart'; +import 'package:fluffychat/widgets/layouts/max_width_body.dart'; +import 'package:fluffychat/widgets/matrix.dart'; +import 'package:fluffychat/widgets/settings_switch_list_tile.dart'; +import 'settings_security.dart'; + +class SettingsSecurityView extends StatelessWidget { + final SettingsSecurityController controller; + + const SettingsSecurityView(this.controller, {super.key}); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + return Scaffold( + appBar: AppBar( + title: Text(L10n.of(context).security), + automaticallyImplyLeading: !FluffyThemes.isColumnMode(context), + centerTitle: FluffyThemes.isColumnMode(context), + ), + body: ListTileTheme( + iconColor: theme.colorScheme.onSurface, + child: MaxWidthBody( + child: FutureBuilder( + future: Matrix.of(context) + .client + .getCapabilities() + .timeout(const Duration(seconds: 10)), + builder: (context, snapshot) { + final capabilities = snapshot.data; + final error = snapshot.error; + if (error == null && capabilities == null) { + return const Center( + child: Padding( + padding: EdgeInsets.all(16.0), + child: CircularProgressIndicator.adaptive(strokeWidth: 2), + ), + ); + } + return Column( + children: [ + ListTile( + title: Text( + L10n.of(context).privacy, + style: TextStyle( + color: theme.colorScheme.secondary, + fontWeight: FontWeight.bold, + ), + ), + ), + SettingsSwitchListTile.adaptive( + title: L10n.of(context).sendTypingNotifications, + subtitle: + L10n.of(context).sendTypingNotificationsDescription, + setting: AppSettings.sendTypingNotifications, + ), + SettingsSwitchListTile.adaptive( + title: L10n.of(context).sendReadReceipts, + subtitle: L10n.of(context).sendReadReceiptsDescription, + setting: AppSettings.sendPublicReadReceipts, + ), + ListTile( + trailing: const Icon(Icons.chevron_right_outlined), + title: Text(L10n.of(context).blockedUsers), + subtitle: Text( + L10n.of(context).thereAreCountUsersBlocked( + Matrix.of(context).client.ignoredUsers.length, + ), + ), + onTap: () => + context.go('/rooms/settings/security/ignorelist'), + ), + if (Matrix.of(context).client.encryption != null) ...{ + if (PlatformInfos.isMobile) + ListTile( + trailing: const Icon(Icons.chevron_right_outlined), + title: Text(L10n.of(context).appLock), + subtitle: Text(L10n.of(context).appLockDescription), + onTap: controller.setAppLockAction, + ), + }, + Divider(color: theme.dividerColor), + ListTile( + title: Text( + L10n.of(context).shareKeysWith, + style: TextStyle( + color: theme.colorScheme.secondary, + fontWeight: FontWeight.bold, + ), + ), + subtitle: Text(L10n.of(context).shareKeysWithDescription), + ), + ListTile( + title: Material( + borderRadius: + BorderRadius.circular(AppConfig.borderRadius / 2), + color: theme.colorScheme.onInverseSurface, + child: DropdownButton( + isExpanded: true, + padding: const EdgeInsets.symmetric(horizontal: 8.0), + borderRadius: + BorderRadius.circular(AppConfig.borderRadius / 2), + underline: const SizedBox.shrink(), + value: Matrix.of(context).client.shareKeysWith, + items: ShareKeysWith.values + .map( + (share) => DropdownMenuItem( + value: share, + child: Text(share.localized(L10n.of(context))), + ), + ) + .toList(), + onChanged: controller.changeShareKeysWith, + ), + ), + ), + Divider(color: theme.dividerColor), + ListTile( + title: Text( + L10n.of(context).account, + style: TextStyle( + color: theme.colorScheme.secondary, + fontWeight: FontWeight.bold, + ), + ), + ), + ListTile( + title: Text(L10n.of(context).yourPublicKey), + leading: const Icon(Icons.vpn_key_outlined), + subtitle: SelectableText( + Matrix.of(context).client.fingerprintKey.beautified, + style: const TextStyle(fontFamily: 'RobotoMono'), + ), + ), + if (capabilities?.mChangePassword?.enabled != false || + error != null) + ListTile( + leading: const Icon(Icons.password_outlined), + trailing: const Icon(Icons.chevron_right_outlined), + title: Text(L10n.of(context).changePassword), + onTap: () => + context.go('/rooms/settings/security/password'), + ), + ListTile( + iconColor: Colors.orange, + leading: const Icon(Icons.delete_sweep_outlined), + title: Text( + L10n.of(context).dehydrate, + style: const TextStyle(color: Colors.orange), + ), + onTap: controller.dehydrateAction, + ), + Divider(color: theme.dividerColor), + ListTile( + iconColor: Colors.red, + leading: const Icon(Icons.delete_outlined), + title: Text( + L10n.of(context).deleteAccount, + style: const TextStyle(color: Colors.red), + ), + onTap: controller.deleteAccountAction, + ), + ], + ); + }, + ), + ), + ), + ); + } +} + +extension on ShareKeysWith { + String localized(L10n l10n) { + switch (this) { + case ShareKeysWith.all: + return l10n.allDevices; + case ShareKeysWith.crossVerifiedIfEnabled: + return l10n.crossVerifiedDevicesIfEnabled; + case ShareKeysWith.crossVerified: + return l10n.crossVerifiedDevices; + case ShareKeysWith.directlyVerifiedOnly: + return l10n.verifiedDevicesOnly; + } + } +} diff --git a/lib/pages/settings_style/settings_style.dart b/lib/pages/settings_style/settings_style.dart new file mode 100644 index 0000000..a05e95f --- /dev/null +++ b/lib/pages/settings_style/settings_style.dart @@ -0,0 +1,172 @@ +import 'package:flutter/material.dart'; + +import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/config/setting_keys.dart'; +import 'package:fluffychat/utils/account_config.dart'; +import 'package:fluffychat/utils/file_selector.dart'; +import 'package:fluffychat/widgets/future_loading_dialog.dart'; +import 'package:fluffychat/widgets/theme_builder.dart'; +import '../../widgets/matrix.dart'; +import 'settings_style_view.dart'; + +class SettingsStyle extends StatefulWidget { + const SettingsStyle({super.key}); + + @override + SettingsStyleController createState() => SettingsStyleController(); +} + +class SettingsStyleController extends State { + void setChatColor(Color? color) async { + AppSettings.colorSchemeSeedInt.setItem( + color?.toARGB32() ?? AppSettings.colorSchemeSeedInt.defaultValue, + ); + ThemeController.of(context).setPrimaryColor(color); + } + + void setWallpaper() async { + final client = Matrix.of(context).client; + final picked = await selectFiles( + context, + type: FileSelectorType.images, + ); + final pickedFile = picked.firstOrNull; + if (pickedFile == null) return; + + await showFutureLoadingDialog( + context: context, + future: () async { + final url = await client.uploadContent( + await pickedFile.readAsBytes(), + filename: pickedFile.name, + ); + await client.updateApplicationAccountConfig( + ApplicationAccountConfig(wallpaperUrl: url), + ); + }, + ); + } + + double get wallpaperOpacity => + _wallpaperOpacity ?? + Matrix.of(context).client.applicationAccountConfig.wallpaperOpacity ?? + 0.5; + + double? _wallpaperOpacity; + + void saveWallpaperOpacity(double opacity) async { + final client = Matrix.of(context).client; + final result = await showFutureLoadingDialog( + context: context, + future: () => client.updateApplicationAccountConfig( + ApplicationAccountConfig(wallpaperOpacity: opacity), + ), + ); + if (result.isValue) return; + + setState(() { + _wallpaperOpacity = client.applicationAccountConfig.wallpaperOpacity; + }); + } + + void updateWallpaperOpacity(double opacity) { + setState(() { + _wallpaperOpacity = opacity; + }); + } + + double get wallpaperBlur => + _wallpaperBlur ?? + Matrix.of(context).client.applicationAccountConfig.wallpaperBlur ?? + 0.5; + double? _wallpaperBlur; + + void saveWallpaperBlur(double blur) async { + final client = Matrix.of(context).client; + final result = await showFutureLoadingDialog( + context: context, + future: () => client.updateApplicationAccountConfig( + ApplicationAccountConfig(wallpaperBlur: blur), + ), + ); + if (result.isValue) return; + + setState(() { + _wallpaperBlur = client.applicationAccountConfig.wallpaperBlur; + }); + } + + void updateWallpaperBlur(double blur) { + setState(() { + _wallpaperBlur = blur; + }); + } + + void deleteChatWallpaper() => showFutureLoadingDialog( + context: context, + future: () => Matrix.of(context).client.setApplicationAccountConfig( + const ApplicationAccountConfig( + wallpaperUrl: null, + wallpaperBlur: null, + ), + ), + ); + + ThemeMode get currentTheme => ThemeController.of(context).themeMode; + Color? get currentColor => ThemeController.of(context).primaryColor; + + static final List customColors = [ + null, + AppConfig.chatColor, + Colors.indigo, + Colors.indigoAccent, + Colors.blue, + Colors.blueAccent, + Colors.teal, + Colors.tealAccent, + Colors.green, + Colors.greenAccent, + Colors.yellow, + Colors.yellowAccent, + Colors.amber, + Colors.amberAccent, + Colors.cyan, + Colors.cyanAccent, + Colors.orange, + Colors.orangeAccent, + Colors.red, + Colors.redAccent, + Colors.pink, + Colors.pinkAccent, + Colors.purple, + Colors.purpleAccent, + Colors.blueGrey, + Colors.grey, + Colors.white, + Colors.black, + ]; + + void switchTheme(ThemeMode? newTheme) { + if (newTheme == null) return; + switch (newTheme) { + case ThemeMode.light: + ThemeController.of(context).setThemeMode(ThemeMode.light); + break; + case ThemeMode.dark: + ThemeController.of(context).setThemeMode(ThemeMode.dark); + break; + case ThemeMode.system: + ThemeController.of(context).setThemeMode(ThemeMode.system); + break; + } + setState(() {}); + } + + void changeFontSizeFactor(double d) async { + await AppSettings.fontSizeFactor.setItem(d); + setState(() {}); + } + + @override + Widget build(BuildContext context) => SettingsStyleView(this); +} diff --git a/lib/pages/settings_style/settings_style_view.dart b/lib/pages/settings_style/settings_style_view.dart new file mode 100644 index 0000000..23dbe68 --- /dev/null +++ b/lib/pages/settings_style/settings_style_view.dart @@ -0,0 +1,369 @@ +import 'dart:ui'; + +import 'package:flutter/material.dart'; + +import 'package:dynamic_color/dynamic_color.dart'; +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/config/setting_keys.dart'; +import 'package:fluffychat/config/themes.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/pages/chat/events/state_message.dart'; +import 'package:fluffychat/utils/account_config.dart'; +import 'package:fluffychat/utils/color_value.dart'; +import 'package:fluffychat/widgets/avatar.dart'; +import 'package:fluffychat/widgets/layouts/max_width_body.dart'; +import 'package:fluffychat/widgets/matrix.dart'; +import 'package:fluffychat/widgets/mxc_image.dart'; +import '../../config/app_config.dart'; +import '../../widgets/settings_switch_list_tile.dart'; +import 'settings_style.dart'; + +class SettingsStyleView extends StatelessWidget { + final SettingsStyleController controller; + + const SettingsStyleView(this.controller, {super.key}); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + const colorPickerSize = 32.0; + final client = Matrix.of(context).client; + return Scaffold( + appBar: AppBar( + automaticallyImplyLeading: !FluffyThemes.isColumnMode(context), + centerTitle: FluffyThemes.isColumnMode(context), + title: Text(L10n.of(context).changeTheme), + ), + backgroundColor: theme.colorScheme.surface, + body: MaxWidthBody( + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + Padding( + padding: const EdgeInsets.all(12.0), + child: SegmentedButton( + selected: {controller.currentTheme}, + onSelectionChanged: (selected) => + controller.switchTheme(selected.single), + segments: [ + ButtonSegment( + value: ThemeMode.light, + label: Text(L10n.of(context).lightTheme), + icon: const Icon(Icons.light_mode_outlined), + ), + ButtonSegment( + value: ThemeMode.dark, + label: Text(L10n.of(context).darkTheme), + icon: const Icon(Icons.dark_mode_outlined), + ), + ButtonSegment( + value: ThemeMode.system, + label: Text(L10n.of(context).systemTheme), + icon: const Icon(Icons.auto_mode_outlined), + ), + ], + ), + ), + Divider( + color: theme.dividerColor, + ), + ListTile( + title: Text( + L10n.of(context).setColorTheme, + style: TextStyle( + color: theme.colorScheme.secondary, + fontWeight: FontWeight.bold, + ), + ), + ), + DynamicColorBuilder( + builder: (light, dark) { + final systemColor = + Theme.of(context).brightness == Brightness.light + ? light?.primary + : dark?.primary; + final colors = + List.from(SettingsStyleController.customColors); + if (systemColor == null) { + colors.remove(null); + } + return GridView.builder( + shrinkWrap: true, + gridDelegate: const SliverGridDelegateWithMaxCrossAxisExtent( + maxCrossAxisExtent: 64, + ), + itemCount: colors.length, + itemBuilder: (context, i) { + final color = colors[i]; + return Padding( + padding: const EdgeInsets.all(12.0), + child: Tooltip( + message: color == null + ? L10n.of(context).systemTheme + : '#${color.hexValue.toRadixString(16).toUpperCase()}', + child: InkWell( + borderRadius: BorderRadius.circular(colorPickerSize), + onTap: () => controller.setChatColor(color), + child: Material( + color: color ?? systemColor, + elevation: 6, + borderRadius: + BorderRadius.circular(colorPickerSize), + child: SizedBox( + width: colorPickerSize, + height: colorPickerSize, + child: controller.currentColor == color + ? Center( + child: Icon( + Icons.check, + size: 16, + color: Theme.of(context) + .colorScheme + .onPrimary, + ), + ) + : null, + ), + ), + ), + ), + ); + }, + ); + }, + ), + Divider( + color: theme.dividerColor, + ), + ListTile( + title: Text( + L10n.of(context).messagesStyle, + style: TextStyle( + color: theme.colorScheme.secondary, + fontWeight: FontWeight.bold, + ), + ), + ), + StreamBuilder( + stream: client.onSync.stream.where( + (syncUpdate) => + syncUpdate.accountData?.any( + (accountData) => + accountData.type == + ApplicationAccountConfigExtension.accountDataKey, + ) ?? + false, + ), + builder: (context, snapshot) { + final accountConfig = client.applicationAccountConfig; + + return Column( + mainAxisSize: MainAxisSize.min, + children: [ + AnimatedContainer( + duration: FluffyThemes.animationDuration, + curve: FluffyThemes.animationCurve, + decoration: const BoxDecoration(), + clipBehavior: Clip.hardEdge, + child: Stack( + alignment: Alignment.center, + children: [ + if (accountConfig.wallpaperUrl != null) + Opacity( + opacity: controller.wallpaperOpacity, + child: ImageFiltered( + imageFilter: ImageFilter.blur( + sigmaX: controller.wallpaperBlur, + sigmaY: controller.wallpaperBlur, + ), + child: MxcImage( + key: ValueKey(accountConfig.wallpaperUrl), + uri: accountConfig.wallpaperUrl, + fit: BoxFit.cover, + isThumbnail: true, + width: FluffyThemes.columnWidth * 2, + height: 212, + ), + ), + ), + Column( + mainAxisSize: MainAxisSize.min, + children: [ + const SizedBox(height: 16), + StateMessage( + Event( + eventId: 'style_dummy', + room: + Room(id: '!style_dummy', client: client), + content: {'membership': 'join'}, + type: EventTypes.RoomMember, + senderId: client.userID!, + originServerTs: DateTime.now(), + stateKey: client.userID!, + ), + ), + Padding( + padding: EdgeInsets.only( + left: 12 + 12 + Avatar.defaultSize, + right: 12, + top: accountConfig.wallpaperUrl == null + ? 0 + : 12, + bottom: 12, + ), + child: DecoratedBox( + decoration: BoxDecoration( + color: theme.bubbleColor, + borderRadius: BorderRadius.circular( + AppConfig.borderRadius, + ), + ), + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 16, + vertical: 8, + ), + child: Text( + 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor', + style: TextStyle( + color: theme.onBubbleColor, + fontSize: AppConfig.messageFontSize * + AppSettings.fontSizeFactor.value, + ), + ), + ), + ), + ), + Align( + alignment: Alignment.centerLeft, + child: Padding( + padding: EdgeInsets.only( + right: 12, + left: 12, + top: accountConfig.wallpaperUrl == null + ? 0 + : 12, + bottom: 12, + ), + child: Material( + color: + theme.colorScheme.surfaceContainerHigh, + borderRadius: BorderRadius.circular( + AppConfig.borderRadius, + ), + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 16, + vertical: 8, + ), + child: Text( + 'Lorem ipsum dolor sit amet', + style: TextStyle( + color: theme.colorScheme.onSurface, + fontSize: AppConfig.messageFontSize * + AppSettings.fontSizeFactor.value, + ), + ), + ), + ), + ), + ), + ], + ), + ], + ), + ), + Divider( + color: theme.dividerColor, + ), + ListTile( + title: TextButton.icon( + style: TextButton.styleFrom( + backgroundColor: theme.colorScheme.secondaryContainer, + foregroundColor: + theme.colorScheme.onSecondaryContainer, + ), + onPressed: controller.setWallpaper, + icon: const Icon(Icons.edit_outlined), + label: Text(L10n.of(context).setWallpaper), + ), + trailing: accountConfig.wallpaperUrl == null + ? null + : IconButton( + icon: const Icon(Icons.delete_outlined), + color: theme.colorScheme.error, + onPressed: controller.deleteChatWallpaper, + ), + ), + if (accountConfig.wallpaperUrl != null) ...[ + ListTile(title: Text(L10n.of(context).opacity)), + Slider.adaptive( + min: 0.1, + max: 1.0, + divisions: 9, + semanticFormatterCallback: (d) => d.toString(), + value: controller.wallpaperOpacity, + onChanged: controller.updateWallpaperOpacity, + onChangeEnd: controller.saveWallpaperOpacity, + ), + ListTile(title: Text(L10n.of(context).blur)), + Slider.adaptive( + min: 0.0, + max: 10.0, + divisions: 10, + semanticFormatterCallback: (d) => d.toString(), + value: controller.wallpaperBlur, + onChanged: controller.updateWallpaperBlur, + onChangeEnd: controller.saveWallpaperBlur, + ), + ], + ], + ); + }, + ), + ListTile( + title: Text(L10n.of(context).fontSize), + trailing: Text( + '× ${AppSettings.fontSizeFactor.value}', + ), + ), + Slider.adaptive( + min: 0.5, + max: 2.5, + divisions: 20, + value: AppSettings.fontSizeFactor.value, + semanticFormatterCallback: (d) => d.toString(), + onChanged: controller.changeFontSizeFactor, + ), + Divider( + color: theme.dividerColor, + ), + ListTile( + title: Text( + L10n.of(context).overview, + style: TextStyle( + color: theme.colorScheme.secondary, + fontWeight: FontWeight.bold, + ), + ), + ), + SettingsSwitchListTile.adaptive( + title: L10n.of(context).presencesToggle, + setting: AppSettings.showPresences, + ), + SettingsSwitchListTile.adaptive( + title: L10n.of(context).separateChatTypes, + setting: AppSettings.separateChatTypes, + ), + SettingsSwitchListTile.adaptive( + title: L10n.of(context).displayNavigationRail, + setting: AppSettings.displayNavigationRail, + ), + ], + ), + ), + ); + } +} diff --git a/lib/utils/account_bundles.dart b/lib/utils/account_bundles.dart new file mode 100644 index 0000000..8bd296e --- /dev/null +++ b/lib/utils/account_bundles.dart @@ -0,0 +1,102 @@ +import 'package:matrix/matrix.dart'; + +class AccountBundles { + String? prefix; + List? bundles; + + AccountBundles({this.prefix, this.bundles}); + + AccountBundles.fromJson(Map json) + : prefix = json.tryGet('prefix'), + bundles = json['bundles'] is List + ? json['bundles'] + .map((b) { + try { + return AccountBundle.fromJson(b); + } catch (_) { + return null; + } + }) + .whereType() + .toList() + : null; + + Map toJson() => { + if (prefix != null) 'prefix': prefix, + if (bundles != null) + 'bundles': bundles!.map((v) => v.toJson()).toList(), + }; +} + +class AccountBundle { + String? name; + int? priority; + + AccountBundle({this.name, this.priority}); + + AccountBundle.fromJson(Map json) + : name = json.tryGet('name'), + priority = json.tryGet('priority'); + + Map toJson() => { + if (name != null) 'name': name, + if (priority != null) 'priority': priority, + }; +} + +const accountBundlesType = 'im.fluffychat.account_bundles'; + +extension AccountBundlesExtension on Client { + List get accountBundles { + List? ret; + if (accountData.containsKey(accountBundlesType)) { + ret = AccountBundles.fromJson(accountData[accountBundlesType]!.content) + .bundles; + } + ret ??= []; + if (ret.isEmpty) { + ret.add( + AccountBundle( + name: userID, + priority: 0, + ), + ); + } + return ret; + } + + Future setAccountBundle(String name, [int? priority]) async { + final data = + AccountBundles.fromJson(accountData[accountBundlesType]?.content ?? {}); + var foundBundle = false; + final bundles = data.bundles ??= []; + for (final bundle in bundles) { + if (bundle.name == name) { + bundle.priority = priority; + foundBundle = true; + break; + } + } + if (!foundBundle) { + bundles.add(AccountBundle(name: name, priority: priority)); + } + await setAccountData(userID!, accountBundlesType, data.toJson()); + } + + Future removeFromAccountBundle(String name) async { + if (!accountData.containsKey(accountBundlesType)) { + return; // nothing to do + } + final data = + AccountBundles.fromJson(accountData[accountBundlesType]!.content); + if (data.bundles == null) return; + data.bundles!.removeWhere((b) => b.name == name); + await setAccountData(userID!, accountBundlesType, data.toJson()); + } + + String get sendPrefix { + final data = + AccountBundles.fromJson(accountData[accountBundlesType]?.content ?? {}); + return data.prefix!; + } +} diff --git a/lib/utils/account_config.dart b/lib/utils/account_config.dart new file mode 100644 index 0000000..a5e2dfd --- /dev/null +++ b/lib/utils/account_config.dart @@ -0,0 +1,70 @@ +import 'package:matrix/matrix.dart'; + +extension ApplicationAccountConfigExtension on Client { + static const String accountDataKey = 'im.fluffychat.account_config'; + + ApplicationAccountConfig get applicationAccountConfig => + ApplicationAccountConfig.fromJson( + accountData[accountDataKey]?.content ?? {}, + ); + + Future setApplicationAccountConfig( + ApplicationAccountConfig config, + ) => + setAccountData( + userID!, + accountDataKey, + config.toJson(), + ); + + /// Only updates the specified values in ApplicationAccountConfig + Future updateApplicationAccountConfig( + ApplicationAccountConfig config, + ) { + final currentConfig = applicationAccountConfig; + return setAccountData( + userID!, + accountDataKey, + ApplicationAccountConfig( + wallpaperUrl: config.wallpaperUrl ?? currentConfig.wallpaperUrl, + wallpaperOpacity: + config.wallpaperOpacity ?? currentConfig.wallpaperOpacity, + wallpaperBlur: config.wallpaperBlur ?? currentConfig.wallpaperBlur, + ).toJson(), + ); + } +} + +class ApplicationAccountConfig { + final Uri? wallpaperUrl; + final double? wallpaperOpacity; + final double? wallpaperBlur; + + const ApplicationAccountConfig({ + this.wallpaperUrl, + this.wallpaperOpacity, + this.wallpaperBlur, + }); + + static double _sanitizedOpacity(double? opacity) { + if (opacity == null) return 1; + if (opacity > 1 || opacity < 0) return 1; + return opacity; + } + + factory ApplicationAccountConfig.fromJson(Map json) => + ApplicationAccountConfig( + wallpaperUrl: json['wallpaper_url'] is String + ? Uri.tryParse(json['wallpaper_url']) + : null, + wallpaperOpacity: + _sanitizedOpacity(json.tryGet('wallpaper_opacity')), + wallpaperBlur: json.tryGet('wallpaper_blur'), + ); + + Map toJson() => { + 'wallpaper_url': wallpaperUrl?.toString(), + 'wallpaper_opacity': wallpaperOpacity, + 'wallpaper_blur': wallpaperBlur, + }; +} diff --git a/lib/utils/adaptive_bottom_sheet.dart b/lib/utils/adaptive_bottom_sheet.dart new file mode 100644 index 0000000..b39535f --- /dev/null +++ b/lib/utils/adaptive_bottom_sheet.dart @@ -0,0 +1,64 @@ +import 'dart:math'; + +import 'package:flutter/material.dart'; + +import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/config/themes.dart'; + +Future showAdaptiveBottomSheet({ + required BuildContext context, + required Widget Function(BuildContext) builder, + bool isDismissible = true, + bool isScrollControlled = true, + bool useRootNavigator = true, +}) { + if (FluffyThemes.isColumnMode(context)) { + return showDialog( + context: context, + useRootNavigator: useRootNavigator, + barrierDismissible: isDismissible, + useSafeArea: true, + builder: (context) => Center( + child: Container( + margin: const EdgeInsets.all(16), + constraints: const BoxConstraints( + maxWidth: 480, + maxHeight: 720, + ), + child: Material( + elevation: Theme.of(context).dialogTheme.elevation ?? 4, + shadowColor: Theme.of(context).dialogTheme.shadowColor, + borderRadius: BorderRadius.circular(AppConfig.borderRadius), + color: Theme.of(context).scaffoldBackgroundColor, + clipBehavior: Clip.hardEdge, + child: builder(context), + ), + ), + ), + ); + } + + return showModalBottomSheet( + context: context, + useSafeArea: true, + builder: (context) => Padding( + padding: EdgeInsets.zero, + child: ClipRRect( + borderRadius: const BorderRadius.only( + topLeft: Radius.circular(AppConfig.borderRadius / 2), + topRight: Radius.circular(AppConfig.borderRadius / 2), + ), + child: builder(context), + ), + ), + useRootNavigator: useRootNavigator, + isDismissible: isDismissible, + isScrollControlled: isScrollControlled, + constraints: BoxConstraints( + maxHeight: min(MediaQuery.sizeOf(context).height - 32, 600), + maxWidth: FluffyThemes.columnWidth * 1.25, + ), + backgroundColor: Colors.transparent, + clipBehavior: Clip.hardEdge, + ); +} diff --git a/lib/utils/background_push.dart b/lib/utils/background_push.dart new file mode 100644 index 0000000..3bec33e --- /dev/null +++ b/lib/utils/background_push.dart @@ -0,0 +1,495 @@ +/* + * Famedly + * Copyright (C) 2020, 2021 Famedly GmbH + * Copyright (C) 2021 Fluffychat + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +import 'dart:async'; +import 'dart:convert'; +import 'dart:io'; +import 'dart:isolate'; +import 'dart:ui'; + +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; + +import 'package:flutter_local_notifications/flutter_local_notifications.dart'; +import 'package:flutter_new_badger/flutter_new_badger.dart'; +import 'package:http/http.dart' as http; +import 'package:matrix/matrix.dart'; +import 'package:unifiedpush/unifiedpush.dart'; +import 'package:unifiedpush_ui/unifiedpush_ui.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/main.dart'; +import 'package:fluffychat/utils/notification_background_handler.dart'; +import 'package:fluffychat/utils/push_helper.dart'; +import 'package:fluffychat/widgets/fluffy_chat_app.dart'; +import '../config/app_config.dart'; +import '../config/setting_keys.dart'; +import '../widgets/matrix.dart'; +import 'platform_infos.dart'; + +import 'package:fcm_shared_isolate/fcm_shared_isolate.dart'; + +class NoTokenException implements Exception { + String get cause => 'Cannot get firebase token'; +} + +class BackgroundPush { + static BackgroundPush? _instance; + final FlutterLocalNotificationsPlugin _flutterLocalNotificationsPlugin = + FlutterLocalNotificationsPlugin(); + Client client; + MatrixState? matrix; + String? _fcmToken; + void Function(String errorMsg, {Uri? link})? onFcmError; + L10n? l10n; + + Future loadLocale() async { + final context = matrix?.context; + // inspired by _lookupL10n in .dart_tool/flutter_gen/gen_l10n/l10n.dart + l10n ??= (context != null ? L10n.of(context) : null) ?? + (await L10n.delegate.load(PlatformDispatcher.instance.locale)); + } + + final pendingTests = >{}; + bool firebaseEnabled = false; + + final firebase = FcmSharedIsolate(); + + DateTime? lastReceivedPush; + + bool upAction = false; + + void _init() async { + firebaseEnabled = true; + try { + mainIsolateReceivePort?.listen( + (message) async { + try { + await notificationTap( + NotificationResponseJson.fromJsonString(message), + client: client, + router: FluffyChatApp.router, + l10n: l10n, + ); + } catch (e, s) { + Logs().wtf('Main Notification Tap crashed', e, s); + } + }, + ); + if (PlatformInfos.isAndroid) { + final port = ReceivePort(); + IsolateNameServer.removePortNameMapping('background_tab_port'); + IsolateNameServer.registerPortWithName( + port.sendPort, + 'background_tab_port', + ); + port.listen( + (message) async { + try { + await notificationTap( + NotificationResponseJson.fromJsonString(message), + client: client, + router: FluffyChatApp.router, + l10n: l10n, + ); + } catch (e, s) { + Logs().wtf('Main Notification Tap crashed', e, s); + } + }, + ); + } + await _flutterLocalNotificationsPlugin.initialize( + const InitializationSettings( + android: AndroidInitializationSettings('notifications_icon'), + iOS: DarwinInitializationSettings(), + ), + onDidReceiveNotificationResponse: (response) => notificationTap( + response, + client: client, + router: FluffyChatApp.router, + l10n: l10n, + ), + onDidReceiveBackgroundNotificationResponse: notificationTapBackground, + ); + Logs().v('Flutter Local Notifications initialized'); + firebase.setListeners( + onMessage: (message) => pushHelper( + PushNotification.fromJson( + Map.from(message['data'] ?? message), + ), + client: client, + l10n: l10n, + activeRoomId: matrix?.activeRoomId, + flutterLocalNotificationsPlugin: _flutterLocalNotificationsPlugin, + ), + ); + if (Platform.isAndroid) { + await UnifiedPush.initialize( + onNewEndpoint: _newUpEndpoint, + onRegistrationFailed: (_, i) => _upUnregistered(i), + onUnregistered: _upUnregistered, + onMessage: _onUpMessage, + ); + } + } catch (e, s) { + Logs().e('Unable to initialize Flutter local notifications', e, s); + } + } + + BackgroundPush._(this.client) { + _init(); + } + + factory BackgroundPush.clientOnly(Client client) { + return _instance ??= BackgroundPush._(client); + } + + factory BackgroundPush( + MatrixState matrix, { + final void Function(String errorMsg, {Uri? link})? onFcmError, + }) { + final instance = BackgroundPush.clientOnly(matrix.client); + instance.matrix = matrix; + // ignore: prefer_initializing_formals + instance.onFcmError = onFcmError; + return instance; + } + + Future cancelNotification(String roomId) async { + Logs().v('Cancel notification for room', roomId); + await _flutterLocalNotificationsPlugin.cancel(roomId.hashCode); + + // Workaround for app icon badge not updating + if (Platform.isIOS) { + final unreadCount = client.rooms + .where((room) => room.isUnreadOrInvited && room.id != roomId) + .length; + if (unreadCount == 0) { + FlutterNewBadger.removeBadge(); + } else { + FlutterNewBadger.setBadge(unreadCount); + } + return; + } + } + + Future setupPusher({ + String? gatewayUrl, + String? token, + Set? oldTokens, + bool useDeviceSpecificAppId = false, + }) async { + if (PlatformInfos.isIOS) { + await firebase.requestPermission(); + } + if (PlatformInfos.isAndroid) { + _flutterLocalNotificationsPlugin + .resolvePlatformSpecificImplementation< + AndroidFlutterLocalNotificationsPlugin>() + ?.requestNotificationsPermission(); + } + final clientName = PlatformInfos.clientName; + oldTokens ??= {}; + final pushers = await (client.getPushers().catchError((e) { + Logs().w('[Push] Unable to request pushers', e); + return []; + })) ?? + []; + var setNewPusher = false; + // Just the plain app id, we add the .data_message suffix later + var appId = AppConfig.pushNotificationsAppId; + // we need the deviceAppId to remove potential legacy UP pusher + var deviceAppId = '$appId.${client.deviceID}'; + // appId may only be up to 64 chars as per spec + if (deviceAppId.length > 64) { + deviceAppId = deviceAppId.substring(0, 64); + } + if (!useDeviceSpecificAppId && PlatformInfos.isAndroid) { + appId += '.data_message'; + } + final thisAppId = useDeviceSpecificAppId ? deviceAppId : appId; + if (gatewayUrl != null && token != null) { + final currentPushers = pushers.where((pusher) => pusher.pushkey == token); + if (currentPushers.length == 1 && + currentPushers.first.kind == 'http' && + currentPushers.first.appId == thisAppId && + currentPushers.first.appDisplayName == clientName && + currentPushers.first.deviceDisplayName == client.deviceName && + currentPushers.first.lang == 'en' && + currentPushers.first.data.url.toString() == gatewayUrl && + currentPushers.first.data.format == + AppSettings.pushNotificationsPusherFormat.value && + mapEquals( + currentPushers.single.data.additionalProperties, + {"data_message": pusherDataMessageFormat}, + )) { + Logs().i('[Push] Pusher already set'); + } else { + Logs().i('Need to set new pusher'); + oldTokens.add(token); + if (client.isLogged()) { + setNewPusher = true; + } + } + } else { + Logs().w('[Push] Missing required push credentials'); + } + for (final pusher in pushers) { + if ((token != null && + pusher.pushkey != token && + deviceAppId == pusher.appId) || + oldTokens.contains(pusher.pushkey)) { + try { + await client.deletePusher(pusher); + Logs().i('[Push] Removed legacy pusher for this device'); + } catch (err) { + Logs().w('[Push] Failed to remove old pusher', err); + } + } + } + if (setNewPusher) { + try { + await client.postPusher( + Pusher( + pushkey: token!, + appId: thisAppId, + appDisplayName: clientName, + deviceDisplayName: client.deviceName!, + lang: 'en', + data: PusherData( + url: Uri.parse(gatewayUrl!), + format: AppSettings.pushNotificationsPusherFormat.value, + additionalProperties: {"data_message": pusherDataMessageFormat}, + ), + kind: 'http', + ), + append: false, + ); + } catch (e, s) { + Logs().e('[Push] Unable to set pushers', e, s); + } + } + } + + final pusherDataMessageFormat = Platform.isAndroid + ? 'android' + : Platform.isIOS + ? 'ios' + : null; + + static bool _wentToRoomOnStartup = false; + + Future setupPush() async { + Logs().d("SetupPush"); + if (client.onLoginStateChanged.value != LoginState.loggedIn || + !PlatformInfos.isMobile || + matrix == null) { + return; + } + // Do not setup unifiedpush if this has been initialized by + // an unifiedpush action + if (upAction) { + return; + } + if (!PlatformInfos.isIOS && + (await UnifiedPush.getDistributors()).isNotEmpty) { + await setupUp(); + } else { + await setupFirebase(); + } + + // ignore: unawaited_futures + _flutterLocalNotificationsPlugin + .getNotificationAppLaunchDetails() + .then((details) { + if (details == null || + !details.didNotificationLaunchApp || + _wentToRoomOnStartup) { + return; + } + _wentToRoomOnStartup = true; + final response = details.notificationResponse; + if (response != null) { + notificationTap( + response, + client: client, + router: FluffyChatApp.router, + l10n: l10n, + ); + } + }); + } + + Future _noFcmWarning() async { + if (matrix == null) { + return; + } + if (!AppSettings.showNoGoogle.value) { + return; + } + await loadLocale(); + WidgetsBinding.instance.addPostFrameCallback((_) { + if (PlatformInfos.isAndroid) { + onFcmError?.call( + l10n!.noGoogleServicesWarning, + link: Uri.parse( + AppConfig.enablePushTutorial, + ), + ); + return; + } + onFcmError?.call(l10n!.oopsPushError); + }); + } + + Future setupFirebase() async { + Logs().v('Setup firebase'); + if (_fcmToken?.isEmpty ?? true) { + try { + _fcmToken = await firebase.getToken(); + if (_fcmToken == null) throw ('PushToken is null'); + } catch (e, s) { + Logs().w('[Push] cannot get token', e, e is String ? null : s); + await _noFcmWarning(); + return; + } + } + await setupPusher( + gatewayUrl: AppSettings.pushNotificationsGatewayUrl.value, + token: _fcmToken, + ); + } + + Future setupUp() async { + await UnifiedPushUi( + context: matrix!.context, + instances: ["default"], + unifiedPushFunctions: UPFunctions(), + showNoDistribDialog: false, + onNoDistribDialogDismissed: () {}, // TODO: Implement me + ).registerAppWithDialog(); + } + + Future _newUpEndpoint(PushEndpoint newPushEndpoint, String i) async { + final newEndpoint = newPushEndpoint.url; + upAction = true; + if (newEndpoint.isEmpty) { + await _upUnregistered(i); + return; + } + var endpoint = + 'https://matrix.gateway.unifiedpush.org/_matrix/push/v1/notify'; + try { + final url = Uri.parse(newEndpoint) + .replace( + path: '/_matrix/push/v1/notify', + query: '', + ) + .toString() + .split('?') + .first; + final res = + json.decode(utf8.decode((await http.get(Uri.parse(url))).bodyBytes)); + if (res['gateway'] == 'matrix' || + (res['unifiedpush'] is Map && + res['unifiedpush']['gateway'] == 'matrix')) { + endpoint = url; + } + } catch (e) { + Logs().i( + '[Push] No self-hosted unified push gateway present: $newEndpoint', + ); + } + Logs().i('[Push] UnifiedPush using endpoint $endpoint'); + final oldTokens = {}; + try { + final fcmToken = await firebase.getToken(); + oldTokens.add(fcmToken); + } catch (_) {} + await setupPusher( + gatewayUrl: endpoint, + token: newEndpoint, + oldTokens: oldTokens, + useDeviceSpecificAppId: true, + ); + await AppSettings.unifiedPushEndpoint.setItem(newEndpoint); + await AppSettings.unifiedPushRegistered.setItem(true); + } + + Future _upUnregistered(String i) async { + upAction = true; + Logs().i('[Push] Removing UnifiedPush endpoint...'); + final oldEndpoint = AppSettings.unifiedPushEndpoint.value; + await AppSettings.unifiedPushEndpoint + .setItem(AppSettings.unifiedPushEndpoint.defaultValue); + await AppSettings.unifiedPushRegistered.setItem(false); + if (oldEndpoint.isNotEmpty) { + // remove the old pusher + await setupPusher( + oldTokens: {oldEndpoint}, + ); + } + } + + Future _onUpMessage(PushMessage pushMessage, String i) async { + Logs().wtf('Push Notification from UP received', pushMessage); + final message = pushMessage.content; + upAction = true; + final data = Map.from( + json.decode(utf8.decode(message))['notification'], + ); + // UP may strip the devices list + data['devices'] ??= []; + await pushHelper( + PushNotification.fromJson(data), + client: client, + l10n: l10n, + activeRoomId: matrix?.activeRoomId, + flutterLocalNotificationsPlugin: _flutterLocalNotificationsPlugin, + useNotificationActions: + false, // Buggy with UP: https://codeberg.org/UnifiedPush/flutter-connector/issues/34 + ); + } +} + +class UPFunctions extends UnifiedPushFunctions { + final List features = [ + /*list of features*/ + ]; + + @override + Future getDistributor() async { + return await UnifiedPush.getDistributor(); + } + + @override + Future> getDistributors() async { + return await UnifiedPush.getDistributors(features); + } + + @override + Future registerApp(String instance) async { + await UnifiedPush.register(instance: instance, features: features); + } + + @override + Future saveDistributor(String distributor) async { + await UnifiedPush.saveDistributor(distributor); + } +} diff --git a/lib/utils/beautify_string_extension.dart b/lib/utils/beautify_string_extension.dart new file mode 100644 index 0000000..3e01fb7 --- /dev/null +++ b/lib/utils/beautify_string_extension.dart @@ -0,0 +1,15 @@ +extension BeautifyStringExtension on String { + String get beautified { + var beautifiedStr = ''; + for (var i = 0; i < length; i++) { + beautifiedStr += substring(i, i + 1); + if (i % 4 == 3) { + beautifiedStr += ' '; + } + if (i % 16 == 15) { + beautifiedStr += '\n'; + } + } + return beautifiedStr; + } +} diff --git a/lib/utils/client_download_content_extension.dart b/lib/utils/client_download_content_extension.dart new file mode 100644 index 0000000..3da8a1c --- /dev/null +++ b/lib/utils/client_download_content_extension.dart @@ -0,0 +1,103 @@ +import 'dart:math' show min; +import 'dart:typed_data'; +import 'dart:ui'; + +import 'package:matrix/matrix.dart'; + +extension ClientDownloadContentExtension on Client { + Future downloadMxcCached( + Uri mxc, { + num? width, + num? height, + bool isThumbnail = false, + bool? animated, + ThumbnailMethod? thumbnailMethod, + bool rounded = false, + }) async { + // To stay compatible with previous storeKeys: + final cacheKey = isThumbnail + // ignore: deprecated_member_use + ? mxc.getThumbnail( + this, + width: width, + height: height, + animated: animated, + method: thumbnailMethod!, + ) + : mxc; + + final cachedData = await database.getFile(cacheKey); + if (cachedData != null) return cachedData; + + final httpUri = isThumbnail + ? await mxc.getThumbnailUri( + this, + width: width, + height: height, + animated: animated, + method: thumbnailMethod, + ) + : await mxc.getDownloadUri(this); + + final response = await httpClient.get( + httpUri, + headers: + accessToken == null ? null : {'authorization': 'Bearer $accessToken'}, + ); + if (response.statusCode != 200) { + throw Exception(); + } + var imageData = response.bodyBytes; + + if (rounded) { + imageData = await _convertToCircularImage( + imageData, + min(width ?? 64, height ?? 64).round(), + ); + } + + await database.storeFile(cacheKey, imageData, 0); + + return imageData; + } +} + +Future _convertToCircularImage( + Uint8List imageBytes, + int size, +) async { + final codec = await instantiateImageCodec(imageBytes); + final frame = await codec.getNextFrame(); + final originalImage = frame.image; + + final recorder = PictureRecorder(); + final canvas = Canvas(recorder); + + final paint = Paint(); + final rect = Rect.fromLTWH(0, 0, size.toDouble(), size.toDouble()); + + final clipPath = Path() + ..addOval( + Rect.fromCircle(center: Offset(size / 2, size / 2), radius: size / 2), + ); + + canvas.clipPath(clipPath); + + canvas.drawImageRect( + originalImage, + Rect.fromLTWH( + 0, + 0, + originalImage.width.toDouble(), + originalImage.height.toDouble(), + ), + rect, + paint, + ); + + final picture = recorder.endRecording(); + final circularImage = await picture.toImage(size, size); + + final byteData = await circularImage.toByteData(format: ImageByteFormat.png); + return byteData!.buffer.asUint8List(); +} diff --git a/lib/utils/client_manager.dart b/lib/utils/client_manager.dart new file mode 100644 index 0000000..716abd8 --- /dev/null +++ b/lib/utils/client_manager.dart @@ -0,0 +1,182 @@ +import 'dart:io'; + +import 'package:flutter/foundation.dart'; + +import 'package:collection/collection.dart'; +import 'package:desktop_notifications/desktop_notifications.dart'; +import 'package:flutter_local_notifications/flutter_local_notifications.dart'; +import 'package:flutter_vodozemac/flutter_vodozemac.dart' as vod; +import 'package:matrix/encryption/utils/key_verification.dart'; +import 'package:matrix/matrix.dart'; +import 'package:shared_preferences/shared_preferences.dart'; +import 'package:universal_html/html.dart' as html; + +import 'package:fluffychat/config/setting_keys.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/custom_http_client.dart'; +import 'package:fluffychat/utils/custom_image_resizer.dart'; +import 'package:fluffychat/utils/init_with_restore.dart'; +import 'package:fluffychat/utils/platform_infos.dart'; +import 'matrix_sdk_extensions/flutter_matrix_dart_sdk_database/builder.dart'; + +abstract class ClientManager { + static const String clientNamespace = 'im.fluffychat.store.clients'; + + static Future> getClients({ + bool initialize = true, + required SharedPreferences store, + }) async { + final clientNames = {}; + try { + final clientNamesList = store.getStringList(clientNamespace) ?? []; + clientNames.addAll(clientNamesList); + } catch (e, s) { + Logs().w('Client names in store are corrupted', e, s); + await store.remove(clientNamespace); + } + if (clientNames.isEmpty) { + clientNames.add(PlatformInfos.clientName); + await store.setStringList(clientNamespace, clientNames.toList()); + } + final clients = + await Future.wait(clientNames.map((name) => createClient(name, store))); + if (initialize) { + await Future.wait( + clients.map( + (client) => client.initWithRestore( + onMigration: () async { + final l10n = await lookupL10n(PlatformDispatcher.instance.locale); + sendInitNotification( + l10n.databaseMigrationTitle, + l10n.databaseMigrationBody, + ); + }, + ).catchError( + (e, s) => Logs().e('Unable to initialize client', e, s), + ), + ), + ); + } + if (clients.length > 1 && clients.any((c) => !c.isLogged())) { + final loggedOutClients = clients.where((c) => !c.isLogged()).toList(); + for (final client in loggedOutClients) { + Logs().w( + 'Multi account is enabled but client ${client.userID} is not logged in. Removing...', + ); + clientNames.remove(client.clientName); + clients.remove(client); + } + await store.setStringList(clientNamespace, clientNames.toList()); + } + return clients; + } + + static Future addClientNameToStore( + String clientName, + SharedPreferences store, + ) async { + final clientNamesList = store.getStringList(clientNamespace) ?? []; + clientNamesList.add(clientName); + await store.setStringList(clientNamespace, clientNamesList); + } + + static Future removeClientNameFromStore( + String clientName, + SharedPreferences store, + ) async { + final clientNamesList = store.getStringList(clientNamespace) ?? []; + clientNamesList.remove(clientName); + await store.setStringList(clientNamespace, clientNamesList); + } + + static NativeImplementations get nativeImplementations => kIsWeb + ? const NativeImplementationsDummy() + : NativeImplementationsIsolate( + compute, + vodozemacInit: () => vod.init(wasmPath: './assets/assets/vodozemac/'), + ); + + static Future createClient( + String clientName, + SharedPreferences store, + ) async { + final shareKeysWith = AppSettings.shareKeysWith.value; + final enableSoftLogout = AppSettings.enableSoftLogout.value; + + return Client( + clientName, + httpClient: CustomHttpClient.createHTTPClient(), + verificationMethods: { + KeyVerificationMethod.numbers, + if (kIsWeb || PlatformInfos.isMobile || PlatformInfos.isLinux) + KeyVerificationMethod.emoji, + }, + importantStateEvents: { + // To make room emotes work + 'im.ponies.room_emotes', + }, + logLevel: kReleaseMode ? Level.warning : Level.verbose, + database: await flutterMatrixSdkDatabaseBuilder(clientName), + supportedLoginTypes: { + AuthenticationTypes.password, + AuthenticationTypes.sso, + }, + nativeImplementations: nativeImplementations, + customImageResizer: + PlatformInfos.isMobile || kIsWeb ? customImageResizer : null, + defaultNetworkRequestTimeout: const Duration(minutes: 30), + enableDehydratedDevices: true, + shareKeysWith: ShareKeysWith.values + .singleWhereOrNull((share) => share.name == shareKeysWith) ?? + ShareKeysWith.all, + convertLinebreaksInFormatting: false, + onSoftLogout: + enableSoftLogout ? (client) => client.refreshAccessToken() : null, + ); + } + + static void sendInitNotification(String title, String body) async { + if (kIsWeb) { + html.Notification( + title, + body: body, + ); + return; + } + if (Platform.isLinux) { + await NotificationsClient().notify( + title, + body: body, + appName: AppSettings.applicationName.value, + hints: [ + NotificationHint.soundName('message-new-instant'), + ], + ); + return; + } + + final flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin(); + + await flutterLocalNotificationsPlugin.initialize( + const InitializationSettings( + android: AndroidInitializationSettings('notifications_icon'), + iOS: DarwinInitializationSettings(), + ), + ); + + flutterLocalNotificationsPlugin.show( + 0, + title, + body, + const NotificationDetails( + android: AndroidNotificationDetails( + 'error_message', + 'Error Messages', + importance: Importance.high, + priority: Priority.max, + ), + iOS: DarwinNotificationDetails(sound: 'notification.caf'), + ), + ); + } +} diff --git a/lib/utils/color_value.dart b/lib/utils/color_value.dart new file mode 100644 index 0000000..4919577 --- /dev/null +++ b/lib/utils/color_value.dart @@ -0,0 +1,14 @@ +import 'package:flutter/widgets.dart'; + +extension ColorValue on Color { + int get hexValue { + return _floatToInt8(a) << 24 | + _floatToInt8(r) << 16 | + _floatToInt8(g) << 8 | + _floatToInt8(b) << 0; + } + + static int _floatToInt8(double x) { + return (x * 255.0).round() & 0xff; + } +} diff --git a/lib/utils/custom_http_client.dart b/lib/utils/custom_http_client.dart new file mode 100644 index 0000000..b0a3dcb --- /dev/null +++ b/lib/utils/custom_http_client.dart @@ -0,0 +1,40 @@ +import 'dart:convert'; +import 'dart:io'; + +import 'package:http/http.dart' as http; +import 'package:http/io_client.dart'; +import 'package:http/retry.dart' as retry; + +import 'package:fluffychat/config/isrg_x1.dart'; +import 'package:fluffychat/utils/platform_infos.dart'; + +/// Custom Client to add an additional certificate. This is for the isrg X1 +/// certificate which is needed for LetsEncrypt certificates. It is shipped +/// on Android since OS version 7.1. As long as we support older versions we +/// still have to ship this certificate by ourself. +class CustomHttpClient { + static HttpClient customHttpClient(String? cert) { + final context = SecurityContext.defaultContext; + + try { + if (cert != null) { + final bytes = utf8.encode(cert); + context.setTrustedCertificatesBytes(bytes); + } + } on TlsException catch (e) { + if (e.osError != null && + e.osError!.message.contains('CERT_ALREADY_IN_HASH_TABLE')) { + } else { + rethrow; + } + } + + return HttpClient(context: context); + } + + static http.Client createHTTPClient() => retry.RetryClient( + PlatformInfos.isAndroid + ? IOClient(customHttpClient(ISRG_X1)) + : http.Client(), + ); +} diff --git a/lib/utils/custom_image_resizer.dart b/lib/utils/custom_image_resizer.dart new file mode 100644 index 0000000..3431bfc --- /dev/null +++ b/lib/utils/custom_image_resizer.dart @@ -0,0 +1,97 @@ +import 'dart:ui'; + +import 'package:flutter/foundation.dart'; +import 'package:flutter/painting.dart'; + +import 'package:matrix/matrix.dart'; +import 'package:native_imaging/native_imaging.dart' as native; + +(int, int) _scaleToBox(int width, int height, {required int boxSize}) { + final fit = applyBoxFit( + BoxFit.scaleDown, + Size(width.toDouble(), height.toDouble()), + Size(boxSize.toDouble(), boxSize.toDouble()), + ).destination; + return (fit.width.round(), fit.height.round()); +} + +Future customImageResizer( + MatrixImageFileResizeArguments arguments, +) async { + await native.init(); + + var imageBytes = arguments.bytes; + String? blurhash; + + var originalWidth = 0; + var originalHeight = 0; + var width = 0; + var height = 0; + + try { + // for the other platforms + final dartCodec = await instantiateImageCodec(arguments.bytes); + final frameCount = dartCodec.frameCount; + final dartFrame = await dartCodec.getNextFrame(); + final rgbaData = await dartFrame.image.toByteData(); + if (rgbaData == null) { + return null; + } + final rgba = Uint8List.view( + rgbaData.buffer, + rgbaData.offsetInBytes, + rgbaData.lengthInBytes, + ); + + width = originalWidth = dartFrame.image.width; + height = originalHeight = dartFrame.image.height; + + var nativeImg = native.Image.fromRGBA(width, height, rgba); + + dartFrame.image.dispose(); + dartCodec.dispose(); + + if (arguments.calcBlurhash) { + // scale down image for blurhashing to speed it up + final (blurW, blurH) = _scaleToBox(width, height, boxSize: 100); + final blurhashImg = nativeImg.resample( + blurW, blurH, + // nearest is unsupported... + native.Transform.bilinear, + ); + + blurhash = blurhashImg.toBlurhash(3, 3); + + blurhashImg.free(); + } + + if (frameCount > 1) { + // Don't scale down animated images, since those would lose frames. + nativeImg.free(); + } else { + final max = arguments.maxDimension; + if (width > max || height > max) { + (width, height) = _scaleToBox(width, height, boxSize: max); + + final scaledImg = + nativeImg.resample(width, height, native.Transform.lanczos); + nativeImg.free(); + nativeImg = scaledImg; + } + + imageBytes = await nativeImg.toJpeg(75); + nativeImg.free(); + } + } catch (e, s) { + Logs().e("Could not generate preview", e, s); + } + + return MatrixImageFileResizedResponse( + bytes: imageBytes, + width: width, + height: height, + originalWidth: originalWidth, + originalHeight: originalHeight, + blurhash: blurhash, + ); +} diff --git a/lib/utils/custom_scroll_behaviour.dart b/lib/utils/custom_scroll_behaviour.dart new file mode 100644 index 0000000..ba25e95 --- /dev/null +++ b/lib/utils/custom_scroll_behaviour.dart @@ -0,0 +1,10 @@ +import 'package:flutter/gestures.dart'; +import 'package:flutter/material.dart'; + +class CustomScrollBehavior extends MaterialScrollBehavior { + @override + Set get dragDevices => { + PointerDeviceKind.touch, + PointerDeviceKind.trackpad, + }; +} diff --git a/lib/utils/date_time_extension.dart b/lib/utils/date_time_extension.dart new file mode 100644 index 0000000..ece0a5c --- /dev/null +++ b/lib/utils/date_time_extension.dart @@ -0,0 +1,95 @@ +import 'package:flutter/material.dart'; + +import 'package:intl/intl.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/platform_infos.dart'; + +/// Provides extra functionality for formatting the time. +extension DateTimeExtension on DateTime { + bool operator <(DateTime other) { + return millisecondsSinceEpoch < other.millisecondsSinceEpoch; + } + + bool operator >(DateTime other) { + return millisecondsSinceEpoch > other.millisecondsSinceEpoch; + } + + bool operator >=(DateTime other) { + return millisecondsSinceEpoch >= other.millisecondsSinceEpoch; + } + + bool operator <=(DateTime other) { + return millisecondsSinceEpoch <= other.millisecondsSinceEpoch; + } + + /// Checks if two DateTimes are close enough to belong to the same + /// environment. + bool sameEnvironment(DateTime prevTime) => + difference(prevTime) < const Duration(hours: 1); + + /// Returns a simple time String. + String localizedTimeOfDay(BuildContext context) => use24HourFormat(context) + ? DateFormat('HH:mm', L10n.of(context).localeName).format(this) + : DateFormat('h:mm a', L10n.of(context).localeName).format(this); + + /// Returns [localizedTimeOfDay()] if the ChatTime is today, the name of the week + /// day if the ChatTime is this week and a date string else. + String localizedTimeShort(BuildContext context) { + final now = DateTime.now(); + + final sameYear = now.year == year; + + final sameDay = sameYear && now.month == month && now.day == day; + + final sameWeek = sameYear && + !sameDay && + now.millisecondsSinceEpoch - millisecondsSinceEpoch < + 1000 * 60 * 60 * 24 * 7; + + if (sameDay) { + return localizedTimeOfDay(context); + } else if (sameWeek) { + return DateFormat.E(Localizations.localeOf(context).languageCode) + .format(this); + } else if (sameYear) { + return DateFormat.MMMd(Localizations.localeOf(context).languageCode) + .format(this); + } + return DateFormat.yMMMd(Localizations.localeOf(context).languageCode) + .format(this); + } + + /// If the DateTime is today, this returns [localizedTimeOfDay()], if not it also + /// shows the date. + /// TODO: Add localization + String localizedTime(BuildContext context) { + final now = DateTime.now(); + + final sameYear = now.year == year; + + final sameDay = sameYear && now.month == month && now.day == day; + + if (sameDay) return localizedTimeOfDay(context); + return L10n.of(context).dateAndTimeOfDay( + localizedTimeShort(context), + localizedTimeOfDay(context), + ); + } + + /// Check if time needs to be in 24h format + bool use24HourFormat(BuildContext context) { + final mediaQuery24h = MediaQuery.alwaysUse24HourFormatOf(context); + + final l10n24h = L10n.of(context).alwaysUse24HourFormat == 'true'; + + // https://github.com/krille-chan/fluffychat/pull/1457#discussion_r1836817914 + if (PlatformInfos.isAndroid) { + return mediaQuery24h; + } else if (PlatformInfos.isIOS) { + return mediaQuery24h || l10n24h; + } + + return l10n24h; + } +} diff --git a/lib/utils/error_reporter.dart b/lib/utils/error_reporter.dart new file mode 100644 index 0000000..9f3e7e8 --- /dev/null +++ b/lib/utils/error_reporter.dart @@ -0,0 +1,74 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +import 'package:flutter_highlighter/flutter_highlighter.dart'; +import 'package:flutter_highlighter/themes/shades-of-purple.dart'; +import 'package:matrix/matrix.dart'; +import 'package:url_launcher/url_launcher.dart'; + +import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/adaptive_dialog_action.dart'; + +class ErrorReporter { + final BuildContext? context; + final String? message; + + const ErrorReporter(this.context, [this.message]); + + static const Set ingoredTypes = { + "IOException", + "ClientException", + "SocketException", + "TlsException", + "HandshakeException", + }; + + void onErrorCallback(Object error, [StackTrace? stackTrace]) { + if (ingoredTypes.contains(error.runtimeType.toString())) return; + Logs().e(message ?? 'Error caught', error, stackTrace); + final text = '$error\n${stackTrace ?? ''}'; + return _onErrorCallback(text); + } + + void _onErrorCallback(String text) async { + await showAdaptiveDialog( + context: context!, + builder: (context) => AlertDialog.adaptive( + title: Text(L10n.of(context).reportErrorDescription), + content: SizedBox( + height: 256, + width: 256, + child: SingleChildScrollView( + child: HighlightView( + text, + language: 'sh', + theme: shadesOfPurpleTheme, + ), + ), + ), + actions: [ + AdaptiveDialogAction( + onPressed: () => Navigator.of(context).pop(), + child: Text(L10n.of(context).close), + ), + AdaptiveDialogAction( + onPressed: () => Clipboard.setData( + ClipboardData(text: text), + ), + child: Text(L10n.of(context).copy), + ), + AdaptiveDialogAction( + onPressed: () => launchUrl( + AppConfig.newIssueUrl.resolveUri( + Uri(queryParameters: {'template': 'bug_report.yaml'}), + ), + mode: LaunchMode.externalApplication, + ), + child: Text(L10n.of(context).report), + ), + ], + ), + ); + } +} diff --git a/lib/utils/event_checkbox_extension.dart b/lib/utils/event_checkbox_extension.dart new file mode 100644 index 0000000..cf3832b --- /dev/null +++ b/lib/utils/event_checkbox_extension.dart @@ -0,0 +1,27 @@ +import 'package:matrix/matrix.dart'; + +extension EventCheckboxRoomExtension on Room { + static const String relationshipType = 'im.fluffychat.checkboxes'; + Future checkCheckbox( + String eventId, + int checkboxId, { + String? txid, + }) => + sendEvent( + { + 'm.relates_to': { + 'rel_type': relationshipType, + 'event_id': eventId, + 'checkbox_id': checkboxId, + }, + }, + type: EventTypes.Reaction, + txid: txid, + ); +} + +extension EventCheckboxExtension on Event { + int? get checkedCheckboxId => content + .tryGetMap('m.relates_to') + ?.tryGet('checkbox_id'); +} diff --git a/lib/utils/file_description.dart b/lib/utils/file_description.dart new file mode 100644 index 0000000..a1d766a --- /dev/null +++ b/lib/utils/file_description.dart @@ -0,0 +1,19 @@ +import 'package:matrix/matrix.dart'; + +extension FileDescriptionExtension on Event { + String? get fileDescription { + if (!{ + MessageTypes.File, + MessageTypes.Image, + }.contains(messageType)) { + return null; + } + final formattedBody = content.tryGet('formatted_body'); + if (formattedBody != null) return formattedBody; + + final filename = content.tryGet('filename'); + final body = content.tryGet('body'); + if (filename != body && body != null && filename != null) return body; + return null; + } +} diff --git a/lib/utils/file_selector.dart b/lib/utils/file_selector.dart new file mode 100644 index 0000000..2e09b49 --- /dev/null +++ b/lib/utils/file_selector.dart @@ -0,0 +1,131 @@ +import 'package:flutter/widgets.dart'; + +import 'package:file_picker/file_picker.dart'; +import 'package:file_selector/file_selector.dart'; + +import 'package:fluffychat/widgets/app_lock.dart'; +import 'package:fluffychat/widgets/future_loading_dialog.dart'; + +Future> selectFiles( + BuildContext context, { + String? title, + FileSelectorType type = FileSelectorType.any, + bool allowMultiple = false, +}) async { + final result = await AppLock.of(context).pauseWhile( + showFutureLoadingDialog( + context: context, + future: () => FilePicker.platform.pickFiles( + compressionQuality: 0, + allowMultiple: allowMultiple, + type: type.filePickerType, + allowedExtensions: type.extensions, + ), + ), + ); + return result.result?.xFiles ?? []; +} + +enum FileSelectorType { + any([], FileType.any, null), + images( + [ + XTypeGroup( + label: 'Images', + extensions: [ + 'jpg', + 'JPG', + 'jpeg', + 'JPEG', + 'png', + 'PNG', + 'webp', + 'WebP', + 'WEBP', + 'gif', + 'GIF', + 'bmp', + 'BMP', + 'tiff', + 'TIFF', + 'tif', + 'TIF', + 'heic', + 'HEIC', + 'svg', + 'SVG', + ], + ), + XTypeGroup( + label: 'JPG', + extensions: ['jpg', 'JPG', 'jpeg', 'JPEG'], + ), + XTypeGroup(label: 'PNG', extensions: ['png', 'PNG']), + XTypeGroup(label: 'WebP', extensions: ['webp', 'WebP', 'WEBP']), + XTypeGroup(label: 'GIF', extensions: ['gif', 'GIF']), + XTypeGroup(label: 'BMP', extensions: ['bmp', 'BMP']), + XTypeGroup( + label: 'TIFF', + extensions: ['tiff', 'TIFF', 'tif', 'TIF'], + ), + XTypeGroup(label: 'HEIC', extensions: ['heic', 'HEIC']), + XTypeGroup(label: 'SVG', extensions: ['svg', 'SVG']), + ], + FileType.image, + null, + ), + videos( + [ + XTypeGroup( + label: 'Videos', + extensions: [ + 'mp4', + 'MP4', + 'avi', + 'AVI', + 'webm', + 'WebM', + 'WEBM', + 'mov', + 'MOV', + 'mkv', + 'MKV', + 'wmv', + 'WMV', + 'flv', + 'FLV', + 'mpeg', + 'MPEG', + '3gp', + '3GP', + 'ogg', + 'OGG', + ], + ), + XTypeGroup(label: 'MP4', extensions: ['mp4', 'MP4']), + XTypeGroup(label: 'WebM', extensions: ['webm', 'WebM', 'WEBM']), + XTypeGroup(label: 'AVI', extensions: ['avi', 'AVI']), + XTypeGroup(label: 'MOV', extensions: ['mov', 'MOV']), + XTypeGroup(label: 'MKV', extensions: ['mkv', 'MKV']), + XTypeGroup(label: 'WMV', extensions: ['wmv', 'WMV']), + XTypeGroup(label: 'FLV', extensions: ['flv', 'FLV']), + XTypeGroup(label: 'MPEG', extensions: ['mpeg', 'MPEG']), + XTypeGroup(label: '3GP', extensions: ['3gp', '3GP']), + XTypeGroup(label: 'OGG', extensions: ['ogg', 'OGG']), + ], + FileType.video, + null, + ), + zip( + [ + XTypeGroup(label: 'ZIP', extensions: ['zip', 'ZIP']), + ], + FileType.custom, + ['zip', 'ZIP'], + ); + + const FileSelectorType(this.groups, this.filePickerType, this.extensions); + final List groups; + final FileType filePickerType; + final List? extensions; +} diff --git a/lib/utils/fluffy_share.dart b/lib/utils/fluffy_share.dart new file mode 100644 index 0000000..d87fbf6 --- /dev/null +++ b/lib/utils/fluffy_share.dart @@ -0,0 +1,46 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +import 'package:share_plus/share_plus.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/platform_infos.dart'; +import '../widgets/matrix.dart'; + +abstract class FluffyShare { + static Future share( + String text, + BuildContext context, { + bool copyOnly = false, + }) async { + if (PlatformInfos.isMobile && !copyOnly) { + final box = context.findRenderObject() as RenderBox; + await SharePlus.instance.share( + ShareParams( + text: text, + sharePositionOrigin: box.localToGlobal(Offset.zero) & box.size, + ), + ); + return; + } + await Clipboard.setData( + ClipboardData(text: text), + ); + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text(L10n.of(context).copiedToClipboard)), + ); + return; + } + + static Future shareInviteLink(BuildContext context) async { + final client = Matrix.of(context).client; + final ownProfile = await client.fetchOwnProfile(); + await FluffyShare.share( + L10n.of(context).inviteText( + ownProfile.displayName ?? client.userID!, + 'https://matrix.to/#/${client.userID}?client=chat.smithtech', + ), + context, + ); + } +} diff --git a/lib/utils/init_with_restore.dart b/lib/utils/init_with_restore.dart new file mode 100644 index 0000000..feb95e0 --- /dev/null +++ b/lib/utils/init_with_restore.dart @@ -0,0 +1,149 @@ +import 'dart:convert'; +import 'dart:ui'; + +import 'package:flutter_secure_storage/flutter_secure_storage.dart'; +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/config/setting_keys.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/client_manager.dart'; +import 'package:fluffychat/utils/platform_infos.dart'; + +class SessionBackup { + final String? olmAccount; + final String accessToken; + final String userId; + final String homeserver; + final String? deviceId; + final String? deviceName; + + const SessionBackup({ + required this.olmAccount, + required this.accessToken, + required this.userId, + required this.homeserver, + required this.deviceId, + this.deviceName, + }); + + factory SessionBackup.fromJsonString(String json) => + SessionBackup.fromJson(jsonDecode(json)); + + factory SessionBackup.fromJson(Map json) => SessionBackup( + olmAccount: json['olm_account'], + accessToken: json['access_token'], + userId: json['user_id'], + homeserver: json['homeserver'], + deviceId: json['device_id'], + deviceName: json['device_name'], + ); + + Map toJson() => { + 'olm_account': olmAccount, + 'access_token': accessToken, + 'user_id': userId, + 'homeserver': homeserver, + 'device_id': deviceId, + if (deviceName != null) 'device_name': deviceName, + }; + + @override + String toString() => jsonEncode(toJson()); +} + +extension InitWithRestoreExtension on Client { + static Future deleteSessionBackup(String clientName) async { + final storage = PlatformInfos.isMobile || PlatformInfos.isLinux + ? const FlutterSecureStorage() + : null; + await storage?.delete( + key: '${AppSettings.applicationName.value}_session_backup_$clientName', + ); + } + + Future initWithRestore({void Function()? onMigration}) async { + final storageKey = + '${AppSettings.applicationName.value}_session_backup_$clientName'; + final storage = PlatformInfos.isMobile || PlatformInfos.isLinux + ? const FlutterSecureStorage() + : null; + + try { + await init( + onInitStateChanged: (state) { + if (state == InitState.migratingDatabase) onMigration?.call(); + }, + waitForFirstSync: false, + waitUntilLoadCompletedLoaded: false, + ); + if (isLogged()) { + final accessToken = this.accessToken; + final homeserver = this.homeserver?.toString(); + final deviceId = deviceID; + final userId = userID; + final hasBackup = accessToken != null && + homeserver != null && + deviceId != null && + userId != null; + assert(hasBackup); + if (hasBackup) { + Logs().v('Store session in backup'); + storage?.write( + key: storageKey, + value: SessionBackup( + olmAccount: encryption?.pickledOlmAccount, + accessToken: accessToken, + deviceId: deviceId, + homeserver: homeserver, + deviceName: deviceName, + userId: userId, + ).toString(), + ); + } + } + } catch (e, s) { + Logs().wtf('Client init failed!', e, s); + final l10n = await lookupL10n(PlatformDispatcher.instance.locale); + final sessionBackupString = await storage?.read(key: storageKey); + if (sessionBackupString == null) { + ClientManager.sendInitNotification( + l10n.initAppError, + l10n.sessionLostBody(AppConfig.newIssueUrl.toString(), e.toString()), + ); + rethrow; + } + + try { + final sessionBackup = SessionBackup.fromJsonString(sessionBackupString); + await init( + newToken: sessionBackup.accessToken, + newOlmAccount: sessionBackup.olmAccount, + newDeviceID: sessionBackup.deviceId, + newDeviceName: sessionBackup.deviceName, + newHomeserver: Uri.tryParse(sessionBackup.homeserver), + newUserID: sessionBackup.userId, + waitForFirstSync: false, + waitUntilLoadCompletedLoaded: false, + onInitStateChanged: (state) { + if (state == InitState.migratingDatabase) onMigration?.call(); + }, + ); + ClientManager.sendInitNotification( + l10n.initAppError, + l10n.restoreSessionBody( + AppConfig.newIssueUrl.toString(), + e.toString(), + ), + ); + } catch (e, s) { + Logs().wtf('Restore client failed!', e, s); + ClientManager.sendInitNotification( + l10n.initAppError, + l10n.sessionLostBody(AppConfig.newIssueUrl.toString(), e.toString()), + ); + rethrow; + } + } + } +} diff --git a/lib/utils/localized_exception_extension.dart b/lib/utils/localized_exception_extension.dart new file mode 100644 index 0000000..838d7ed --- /dev/null +++ b/lib/utils/localized_exception_extension.dart @@ -0,0 +1,108 @@ +import 'dart:io'; +import 'dart:math'; + +import 'package:flutter/material.dart'; + +import 'package:http/http.dart'; +import 'package:matrix/encryption.dart'; +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/other_party_can_receive.dart'; +import 'uia_request_manager.dart'; + +extension LocalizedExceptionExtension on Object { + static String _formatFileSize(int size) { + if (size < 1000) return '$size B'; + final i = (log(size) / log(1000)).floor(); + final num = (size / pow(1000, i)); + final round = num.round(); + final numString = round < 10 + ? num.toStringAsFixed(2) + : round < 100 + ? num.toStringAsFixed(1) + : round.toString(); + return '$numString ${'kMGTPEZY'[i - 1]}B'; + } + + String toLocalizedString( + BuildContext context, [ + ExceptionContext? exceptionContext, + ]) { + if (this is FileTooBigMatrixException) { + final exception = this as FileTooBigMatrixException; + return L10n.of(context).fileIsTooBigForServer( + _formatFileSize(exception.maxFileSize), + ); + } + if (this is OtherPartyCanNotReceiveMessages) { + return L10n.of(context).otherPartyNotLoggedIn; + } + if (this is MatrixException) { + switch ((this as MatrixException).error) { + case MatrixError.M_FORBIDDEN: + if (exceptionContext == ExceptionContext.changePassword) { + return L10n.of(context).passwordIsWrong; + } + return L10n.of(context).noPermission; + case MatrixError.M_LIMIT_EXCEEDED: + return L10n.of(context).tooManyRequestsWarning; + default: + if (exceptionContext == ExceptionContext.joinRoom) { + return L10n.of(context).unableToJoinChat; + } + return (this as MatrixException).errorMessage; + } + } + if (this is InvalidPassphraseException) { + return L10n.of(context).wrongRecoveryKey; + } + if (this is BadServerLoginTypesException) { + final serverVersions = (this as BadServerLoginTypesException) + .serverLoginTypes + .toString() + .replaceAll('{', '"') + .replaceAll('}', '"'); + final supportedVersions = (this as BadServerLoginTypesException) + .supportedLoginTypes + .toString() + .replaceAll('{', '"') + .replaceAll('}', '"'); + return L10n.of(context).badServerLoginTypesException( + serverVersions, + supportedVersions, + supportedVersions, + ); + } + if (this is IOException || + this is SocketException || + this is SyncConnectionException || + this is ClientException) { + return L10n.of(context).noConnectionToTheServer; + } + if (this is FormatException && + exceptionContext == ExceptionContext.checkHomeserver) { + return L10n.of(context).doesNotSeemToBeAValidHomeserver; + } + if (this is FormatException && + exceptionContext == ExceptionContext.checkServerSupportInfo) { + return L10n.of(context).noContactInformationProvided; + } + if (this is String) return toString(); + if (this is UiaException) return toString(); + + if (exceptionContext == ExceptionContext.joinRoom) { + return L10n.of(context).unableToJoinChat; + } + + Logs().w('Something went wrong: ', this); + return L10n.of(context).oopsSomethingWentWrong; + } +} + +enum ExceptionContext { + changePassword, + checkHomeserver, + checkServerSupportInfo, + joinRoom, +} diff --git a/lib/utils/markdown_context_builder.dart b/lib/utils/markdown_context_builder.dart new file mode 100644 index 0000000..9404d35 --- /dev/null +++ b/lib/utils/markdown_context_builder.dart @@ -0,0 +1,125 @@ +import 'package:flutter/material.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_text_input_dialog.dart'; + +Widget markdownContextBuilder( + BuildContext context, + EditableTextState editableTextState, + TextEditingController controller, +) { + final value = editableTextState.textEditingValue; + final selectedText = value.selection.textInside(value.text); + final buttonItems = editableTextState.contextMenuButtonItems; + final l10n = L10n.of(context); + + return AdaptiveTextSelectionToolbar.buttonItems( + anchors: editableTextState.contextMenuAnchors, + buttonItems: [ + ...buttonItems, + if (selectedText.isNotEmpty) ...[ + ContextMenuButtonItem( + label: l10n.link, + onPressed: () async { + final input = await showTextInputDialog( + context: context, + title: l10n.addLink, + okLabel: l10n.ok, + cancelLabel: l10n.cancel, + validator: (text) { + if (text.isEmpty) { + return l10n.pleaseFillOut; + } + try { + text.startsWith('http') ? Uri.parse(text) : Uri.https(text); + } catch (_) { + return l10n.invalidUrl; + } + return null; + }, + hintText: 'www...', + keyboardType: TextInputType.url, + ); + final urlString = input; + if (urlString == null) return; + final url = urlString.startsWith('http') + ? Uri.parse(urlString) + : Uri.https(urlString); + final selection = controller.selection; + controller.text = controller.text.replaceRange( + selection.start, + selection.end, + '[$selectedText](${url.toString()})', + ); + ContextMenuController.removeAny(); + }, + ), + ContextMenuButtonItem( + label: l10n.checkList, + onPressed: () { + final text = controller.text; + final selection = controller.selection; + + var start = selection.textBefore(text).lastIndexOf('\n'); + if (start == -1) start = 0; + final end = selection.end; + + final fullLineSelection = + TextSelection(baseOffset: start, extentOffset: end); + + const checkBox = '- [ ]'; + + final replacedRange = fullLineSelection + .textInside(text) + .split('\n') + .map( + (line) => line.startsWith(checkBox) || line.isEmpty + ? line + : '$checkBox $line', + ) + .join('\n'); + controller.text = + controller.text.replaceRange(start, end, replacedRange); + ContextMenuController.removeAny(); + }, + ), + ContextMenuButtonItem( + label: l10n.boldText, + onPressed: () { + final selection = controller.selection; + controller.text = controller.text.replaceRange( + selection.start, + selection.end, + '**$selectedText**', + ); + ContextMenuController.removeAny(); + }, + ), + ContextMenuButtonItem( + label: l10n.italicText, + onPressed: () { + final selection = controller.selection; + controller.text = controller.text.replaceRange( + selection.start, + selection.end, + '*$selectedText*', + ); + ContextMenuController.removeAny(); + }, + ), + ContextMenuButtonItem( + label: l10n.strikeThrough, + onPressed: () { + final selection = controller.selection; + controller.text = controller.text.replaceRange( + selection.start, + selection.end, + '~~$selectedText~~', + ); + ContextMenuController.removeAny(); + }, + ), + ], + ], + ); +} diff --git a/lib/utils/matrix_sdk_extensions/device_extension.dart b/lib/utils/matrix_sdk_extensions/device_extension.dart new file mode 100644 index 0000000..55f3ebf --- /dev/null +++ b/lib/utils/matrix_sdk_extensions/device_extension.dart @@ -0,0 +1,45 @@ +import 'package:flutter/material.dart'; + +import 'package:matrix/matrix.dart'; + +IconData _getIconFromName(String displayname) { + final name = displayname.toLowerCase(); + if ({'android'}.any((s) => name.contains(s))) { + return Icons.phone_android_outlined; + } + if ({'ios', 'ipad', 'iphone', 'ipod'}.any((s) => name.contains(s))) { + return Icons.phone_iphone_outlined; + } + if ({ + 'web', + 'http://', + 'https://', + 'firefox', + 'chrome', + '/_matrix', + 'safari', + 'opera', + }.any((s) => name.contains(s))) { + return Icons.web_outlined; + } + if ({'desktop', 'windows', 'macos', 'linux', 'ubuntu'} + .any((s) => name.contains(s))) { + return Icons.desktop_mac_outlined; + } + return Icons.device_unknown_outlined; +} + +extension DeviceExtension on Device { + String get displayname => + (displayName?.isNotEmpty ?? false) ? displayName! : 'Unknown device'; + + IconData get icon => _getIconFromName(displayname); +} + +extension DeviceKeysExtension on DeviceKeys { + String get displayname => (deviceDisplayName?.isNotEmpty ?? false) + ? deviceDisplayName! + : 'Unknown device'; + + IconData get icon => _getIconFromName(displayname); +} diff --git a/lib/utils/matrix_sdk_extensions/event_extension.dart b/lib/utils/matrix_sdk_extensions/event_extension.dart new file mode 100644 index 0000000..046df25 --- /dev/null +++ b/lib/utils/matrix_sdk_extensions/event_extension.dart @@ -0,0 +1,61 @@ +import 'dart:developer'; + +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; + +import 'package:async/async.dart' as async; +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/utils/size_string.dart'; +import 'package:fluffychat/widgets/future_loading_dialog.dart'; +import 'matrix_file_extension.dart'; + +extension LocalizedBody on Event { + Future> _getFile(BuildContext context) => + showFutureLoadingDialog( + context: context, + futureWithProgress: (onProgress) { + final fileSize = + infoMap['size'] is int ? infoMap['size'] as int : null; + return downloadAndDecryptAttachment( + onDownloadProgress: fileSize == null + ? null + : (bytes) => onProgress(bytes / fileSize), + ); + }, + ); + + void saveFile(BuildContext context) async { + final matrixFile = await _getFile(context); + + matrixFile.result?.save(context); + } + + void shareFile(BuildContext context) async { + final matrixFile = await _getFile(context); + inspect(matrixFile); + + matrixFile.result?.share(context); + } + + bool get isAttachmentSmallEnough => + infoMap['size'] is int && + infoMap['size'] < room.client.database.maxFileSize; + + bool get isThumbnailSmallEnough => + thumbnailInfoMap['size'] is int && + thumbnailInfoMap['size'] < room.client.database.maxFileSize; + + bool get showThumbnail => + [MessageTypes.Image, MessageTypes.Sticker, MessageTypes.Video] + .contains(messageType) && + (kIsWeb || + isAttachmentSmallEnough || + isThumbnailSmallEnough || + (content['url'] is String)); + + String? get sizeString => content + .tryGetMap('info') + ?.tryGet('size') + ?.sizeString; +} diff --git a/lib/utils/matrix_sdk_extensions/filtered_timeline_extension.dart b/lib/utils/matrix_sdk_extensions/filtered_timeline_extension.dart new file mode 100644 index 0000000..1ab3070 --- /dev/null +++ b/lib/utils/matrix_sdk_extensions/filtered_timeline_extension.dart @@ -0,0 +1,61 @@ +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/config/setting_keys.dart'; + +extension VisibleInGuiExtension on List { + List filterByVisibleInGui({ + String? exceptionEventId, + String? threadId, + }) => + where( + (event) { + if (threadId != null && + event.relationshipType != RelationshipTypes.reaction) { + if ((event.relationshipType != RelationshipTypes.thread || + event.relationshipEventId != threadId) && + event.eventId != threadId) { + return false; + } + } else if (event.relationshipType == RelationshipTypes.thread) { + return false; + } + return event.isVisibleInGui || event.eventId == exceptionEventId; + }, + ).toList(); +} + +extension IsStateExtension on Event { + bool get isVisibleInGui => + // always filter out edit and reaction relationships + !{RelationshipTypes.edit, RelationshipTypes.reaction} + .contains(relationshipType) && + // always filter out m.key.* and other known but unimportant events + !isKnownHiddenStates && + // event types to hide: redaction and reaction events + // if a reaction has been redacted we also want it to be hidden in the timeline + !{EventTypes.Reaction, EventTypes.Redaction}.contains(type) && + // if we enabled to hide all redacted events, don't show those + (!AppSettings.hideRedactedEvents.value || !redacted) && + // if we enabled to hide all unknown events, don't show those + (!AppSettings.hideUnknownEvents.value || isEventTypeKnown); + + bool get isState => !{ + EventTypes.Message, + EventTypes.Sticker, + EventTypes.Encrypted, + }.contains(type); + + bool get isCollapsedState => !{ + EventTypes.Message, + EventTypes.Sticker, + EventTypes.Encrypted, + EventTypes.RoomCreate, + EventTypes.RoomTombstone, + }.contains(type); + + bool get isKnownHiddenStates => + { + PollEventContent.responseType, + }.contains(type) || + type.startsWith('m.key.verification.'); +} diff --git a/lib/utils/matrix_sdk_extensions/flutter_matrix_dart_sdk_database/builder.dart b/lib/utils/matrix_sdk_extensions/flutter_matrix_dart_sdk_database/builder.dart new file mode 100644 index 0000000..3387fdf --- /dev/null +++ b/lib/utils/matrix_sdk_extensions/flutter_matrix_dart_sdk_database/builder.dart @@ -0,0 +1,147 @@ +import 'dart:io'; + +import 'package:flutter/foundation.dart'; + +import 'package:matrix/matrix.dart'; +import 'package:path/path.dart'; +import 'package:path_provider/path_provider.dart'; +import 'package:sqflite_common_ffi/sqflite_ffi.dart'; +import 'package:universal_html/html.dart' as html; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/client_manager.dart'; +import 'package:fluffychat/utils/platform_infos.dart'; +import 'cipher.dart'; + +import 'sqlcipher_stub.dart' + if (dart.library.io) 'package:sqlcipher_flutter_libs/sqlcipher_flutter_libs.dart'; + +Future flutterMatrixSdkDatabaseBuilder(String clientName) async { + MatrixSdkDatabase? database; + try { + database = await _constructDatabase(clientName); + await database.open(); + return database; + } catch (e, s) { + Logs().wtf('Unable to construct database!', e, s); + + try { + // Send error notification: + final l10n = await lookupL10n(PlatformDispatcher.instance.locale); + ClientManager.sendInitNotification( + l10n.initAppError, + e.toString(), + ); + } catch (e, s) { + Logs().e('Unable to send error notification', e, s); + } + + // Try to delete database so that it can created again on next init: + database?.delete().catchError( + (e, s) => Logs().wtf( + 'Unable to delete database, after failed construction', + e, + s, + ), + ); + + // Delete database file: + if (!kIsWeb) { + final dbFile = File(await _getDatabasePath(clientName)); + if (await dbFile.exists()) await dbFile.delete(); + } + + rethrow; + } +} + +Future _constructDatabase(String clientName) async { + if (kIsWeb) { + html.window.navigator.storage?.persist(); + return await MatrixSdkDatabase.init(clientName); + } + + final cipher = await getDatabaseCipher(); + + Directory? fileStorageLocation; + try { + fileStorageLocation = await getTemporaryDirectory(); + } on MissingPlatformDirectoryException catch (_) { + Logs().w( + 'No temporary directory for file cache available on this platform.', + ); + } + + final path = await _getDatabasePath(clientName); + + // fix dlopen for old Android + await applyWorkaroundToOpenSqlCipherOnOldAndroidVersions(); + // import the SQLite / SQLCipher shared objects / dynamic libraries + final factory = + createDatabaseFactoryFfi(ffiInit: SQfLiteEncryptionHelper.ffiInit); + + // required for [getDatabasesPath] + databaseFactory = factory; + + // migrate from potential previous SQLite database path to current one + await _migrateLegacyLocation(path, clientName); + + // in case we got a cipher, we use the encryption helper + // to manage SQLite encryption + final helper = cipher == null + ? null + : SQfLiteEncryptionHelper( + factory: factory, + path: path, + cipher: cipher, + ); + + // check whether the DB is already encrypted and otherwise do so + await helper?.ensureDatabaseFileEncrypted(); + + final database = await factory.openDatabase( + path, + options: OpenDatabaseOptions( + version: 1, + // most important : apply encryption when opening the DB + onConfigure: helper?.applyPragmaKey, + ), + ); + + return await MatrixSdkDatabase.init( + clientName, + database: database, + maxFileSize: 1000 * 1000 * 10, + fileStorageLocation: fileStorageLocation?.uri, + deleteFilesAfterDuration: const Duration(days: 30), + ); +} + +Future _getDatabasePath(String clientName) async { + final databaseDirectory = PlatformInfos.isIOS || PlatformInfos.isMacOS + ? await getLibraryDirectory() + : await getApplicationSupportDirectory(); + + return join(databaseDirectory.path, '$clientName.sqlite'); +} + +Future _migrateLegacyLocation( + String sqlFilePath, + String clientName, +) async { + final oldPath = PlatformInfos.isDesktop + ? (await getApplicationSupportDirectory()).path + : await getDatabasesPath(); + + final oldFilePath = join(oldPath, clientName); + if (oldFilePath == sqlFilePath) return; + + final maybeOldFile = File(oldFilePath); + if (await maybeOldFile.exists()) { + Logs().i( + 'Migrate legacy location for database from "$oldFilePath" to "$sqlFilePath"', + ); + await maybeOldFile.copy(sqlFilePath); + await maybeOldFile.delete(); + } +} diff --git a/lib/utils/matrix_sdk_extensions/flutter_matrix_dart_sdk_database/cipher.dart b/lib/utils/matrix_sdk_extensions/flutter_matrix_dart_sdk_database/cipher.dart new file mode 100644 index 0000000..2930537 --- /dev/null +++ b/lib/utils/matrix_sdk_extensions/flutter_matrix_dart_sdk_database/cipher.dart @@ -0,0 +1,65 @@ +import 'dart:convert'; +import 'dart:math'; + +import 'package:flutter/foundation.dart'; +import 'package:flutter/services.dart'; + +import 'package:flutter_secure_storage/flutter_secure_storage.dart'; +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/config/setting_keys.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/client_manager.dart'; + +const _passwordStorageKey = 'database_password'; + +Future getDatabaseCipher() async { + String? password; + + try { + const secureStorage = FlutterSecureStorage(); + final containsEncryptionKey = + await secureStorage.read(key: _passwordStorageKey) != null; + if (!containsEncryptionKey) { + final rng = Random.secure(); + final list = Uint8List(32); + list.setAll(0, Iterable.generate(list.length, (i) => rng.nextInt(256))); + final newPassword = base64UrlEncode(list); + await secureStorage.write( + key: _passwordStorageKey, + value: newPassword, + ); + } + // workaround for if we just wrote to the key and it still doesn't exist + password = await secureStorage.read(key: _passwordStorageKey); + if (password == null) throw MissingPluginException(); + } on MissingPluginException catch (e) { + const FlutterSecureStorage() + .delete(key: _passwordStorageKey) + .catchError((_) {}); + Logs().w('Database encryption is not supported on this platform', e); + _sendNoEncryptionWarning(e); + } catch (e, s) { + const FlutterSecureStorage() + .delete(key: _passwordStorageKey) + .catchError((_) {}); + Logs().w('Unable to init database encryption', e, s); + _sendNoEncryptionWarning(e); + } + + return password; +} + +void _sendNoEncryptionWarning(Object exception) async { + final isStored = AppSettings.noEncryptionWarningShown.value; + + if (isStored == true) return; + + final l10n = await lookupL10n(PlatformDispatcher.instance.locale); + ClientManager.sendInitNotification( + l10n.noDatabaseEncryption, + exception.toString(), + ); + + await AppSettings.noEncryptionWarningShown.setItem(true); +} diff --git a/lib/utils/matrix_sdk_extensions/flutter_matrix_dart_sdk_database/sqlcipher_stub.dart b/lib/utils/matrix_sdk_extensions/flutter_matrix_dart_sdk_database/sqlcipher_stub.dart new file mode 100644 index 0000000..b0f8b43 --- /dev/null +++ b/lib/utils/matrix_sdk_extensions/flutter_matrix_dart_sdk_database/sqlcipher_stub.dart @@ -0,0 +1 @@ +Future applyWorkaroundToOpenSqlCipherOnOldAndroidVersions() async {} diff --git a/lib/utils/matrix_sdk_extensions/matrix_file_extension.dart b/lib/utils/matrix_sdk_extensions/matrix_file_extension.dart new file mode 100644 index 0000000..f84f219 --- /dev/null +++ b/lib/utils/matrix_sdk_extensions/matrix_file_extension.dart @@ -0,0 +1,96 @@ +import 'dart:io'; + +import 'package:flutter/material.dart'; + +import 'package:file_picker/file_picker.dart'; +import 'package:matrix/matrix.dart'; +import 'package:share_plus/share_plus.dart'; +import 'package:universal_html/html.dart' as html; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/platform_infos.dart'; +import 'package:fluffychat/utils/size_string.dart'; +import 'package:fluffychat/widgets/future_loading_dialog.dart'; + +extension MatrixFileExtension on MatrixFile { + void save(BuildContext context) async { + if (PlatformInfos.isWeb) { + _webDownload(); + return; + } + + final downloadPath = await FilePicker.platform.saveFile( + dialogTitle: L10n.of(context).saveFile, + fileName: name, + type: filePickerFileType, + bytes: bytes, + ); + if (downloadPath == null) return; + + if (PlatformInfos.isDesktop) { + final result = await showFutureLoadingDialog( + context: context, + future: () => File(downloadPath).writeAsBytes(bytes), + ); + if (result.error != null) return; + } + + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text( + L10n.of(context).fileHasBeenSavedAt(downloadPath), + ), + ), + ); + } + + FileType get filePickerFileType { + if (this is MatrixImageFile) return FileType.image; + if (this is MatrixAudioFile) return FileType.audio; + if (this is MatrixVideoFile) return FileType.video; + return FileType.any; + } + + void _webDownload() { + html.AnchorElement( + href: html.Url.createObjectUrlFromBlob( + html.Blob( + [bytes], + mimeType, + ), + ), + ) + ..download = name + ..click(); + } + + void share(BuildContext context) async { + // Workaround for iPad from + // https://github.com/fluttercommunity/plus_plugins/tree/main/packages/share_plus/share_plus#ipad + final box = context.findRenderObject() as RenderBox?; + + await SharePlus.instance.share( + ShareParams( + files: [XFile.fromData(bytes, name: name, mimeType: mimeType)], + sharePositionOrigin: + box == null ? null : box.localToGlobal(Offset.zero) & box.size, + ), + ); + return; + } + + MatrixFile get detectFileType { + if (msgType == MessageTypes.Image) { + return MatrixImageFile(bytes: bytes, name: name); + } + if (msgType == MessageTypes.Video) { + return MatrixVideoFile(bytes: bytes, name: name); + } + if (msgType == MessageTypes.Audio) { + return MatrixAudioFile(bytes: bytes, name: name); + } + return this; + } + + String get sizeString => size.sizeString; +} diff --git a/lib/utils/matrix_sdk_extensions/matrix_locals.dart b/lib/utils/matrix_sdk_extensions/matrix_locals.dart new file mode 100644 index 0000000..11f09a9 --- /dev/null +++ b/lib/utils/matrix_sdk_extensions/matrix_locals.dart @@ -0,0 +1,372 @@ +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; + +/// This is a temporary helper class until there is a proper solution to this with the new system +class MatrixLocals extends MatrixLocalizations { + final L10n l10n; + + MatrixLocals(this.l10n); + + @override + String acceptedTheInvitation(String targetName) { + return l10n.acceptedTheInvitation(targetName); + } + + @override + String activatedEndToEndEncryption(String senderName) { + return l10n.activatedEndToEndEncryption(senderName); + } + + @override + String answeredTheCall(String senderName) { + return l10n.answeredTheCall(senderName); + } + + @override + String get anyoneCanJoin => l10n.anyoneCanJoin; + + @override + String bannedUser(String senderName, String targetName) { + return l10n.bannedUser(senderName, targetName); + } + + @override + String changedTheChatAvatar(String senderName) { + return l10n.changedTheChatAvatar(senderName); + } + + @override + String changedTheChatDescriptionTo(String senderName, String content) { + return l10n.changedTheChatDescriptionTo(senderName, content); + } + + @override + String changedTheChatNameTo(String senderName, String content) { + return l10n.changedTheChatNameTo(senderName, content); + } + + @override + String changedTheChatPermissions(String senderName) { + return l10n.changedTheChatPermissions(senderName); + } + + @override + String changedTheDisplaynameTo(String targetName, String newDisplayname) { + return l10n.changedTheDisplaynameTo(targetName, newDisplayname); + } + + @override + String changedTheGuestAccessRules(String senderName) { + return l10n.changedTheGuestAccessRules(senderName); + } + + @override + String changedTheGuestAccessRulesTo( + String senderName, + String localizedString, + ) { + return l10n.changedTheGuestAccessRulesTo(senderName, localizedString); + } + + @override + String changedTheHistoryVisibility(String senderName) { + return l10n.changedTheHistoryVisibility(senderName); + } + + @override + String changedTheHistoryVisibilityTo( + String senderName, + String localizedString, + ) { + return l10n.changedTheHistoryVisibilityTo(senderName, localizedString); + } + + @override + String changedTheJoinRules(String senderName) { + return l10n.changedTheJoinRules(senderName); + } + + @override + String changedTheJoinRulesTo(String senderName, String localizedString) { + return l10n.changedTheJoinRulesTo(senderName, localizedString); + } + + @override + String changedTheProfileAvatar(String targetName) { + return l10n.changedTheProfileAvatar(targetName); + } + + @override + String changedTheRoomAliases(String senderName) { + return l10n.changedTheRoomAliases(senderName); + } + + @override + String changedTheRoomInvitationLink(String senderName) { + return l10n.changedTheRoomInvitationLink(senderName); + } + + @override + String get channelCorruptedDecryptError => l10n.channelCorruptedDecryptError; + + @override + String couldNotDecryptMessage(String errorText) { + return l10n.couldNotDecryptMessage(errorText); + } + + @override + String createdTheChat(String senderName) { + return l10n.createdTheChat(senderName); + } + + @override + String get emptyChat => l10n.emptyChat; + + @override + String get encryptionNotEnabled => l10n.encryptionNotEnabled; + + @override + String endedTheCall(String senderName) { + return l10n.endedTheCall(senderName); + } + + @override + String get fromJoining => l10n.fromJoining; + + @override + String get fromTheInvitation => l10n.fromTheInvitation; + + @override + String groupWith(String displayname) { + return l10n.groupWith(displayname); + } + + @override + String get guestsAreForbidden => l10n.guestsAreForbidden; + + @override + String get guestsCanJoin => l10n.guestsCanJoin; + + @override + String hasWithdrawnTheInvitationFor(String senderName, String targetName) { + return l10n.hasWithdrawnTheInvitationFor(senderName, targetName); + } + + @override + String invitedUser(String senderName, String targetName) { + return l10n.invitedUser(senderName, targetName); + } + + @override + String get invitedUsersOnly => l10n.invitedUsersOnly; + + @override + String joinedTheChat(String targetName) { + return l10n.joinedTheChat(targetName); + } + + @override + String kicked(String senderName, String targetName) { + return l10n.kicked(senderName, targetName); + } + + @override + String kickedAndBanned(String senderName, String targetName) { + return l10n.kickedAndBanned(senderName, targetName); + } + + @override + String get needPantalaimonWarning => l10n.oopsSomethingWentWrong; + + @override + String get noPermission => l10n.noKeyForThisMessage; + + @override + String redactedAnEvent(Event redactedEvent) { + return l10n.redactedAnEvent( + redactedEvent.redactedBecause?.senderFromMemoryOrFallback + .calcDisplayname() ?? + l10n.user, + ); + } + + @override + String rejectedTheInvitation(String targetName) { + return l10n.rejectedTheInvitation(targetName); + } + + @override + String removedBy(Event redactedEvent) { + return l10n.redactedBy( + redactedEvent.senderFromMemoryOrFallback.calcDisplayname(), + ); + } + + @override + String get roomHasBeenUpgraded => l10n.roomHasBeenUpgraded; + + @override + String sentAFile(String senderName) { + return l10n.sentAFile(senderName); + } + + @override + String sentAPicture(String senderName) { + return l10n.sentAPicture(senderName); + } + + @override + String sentASticker(String senderName) { + return l10n.sentASticker(senderName); + } + + @override + String sentAVideo(String senderName) { + return l10n.sentAVideo(senderName); + } + + @override + String sentAnAudio(String senderName) { + return l10n.sentAnAudio(senderName); + } + + @override + String sentCallInformations(String senderName) { + return l10n.sentCallInformations(senderName); + } + + @override + String sharedTheLocation(String senderName) { + return l10n.sharedTheLocation(senderName); + } + + @override + String startedACall(String senderName) { + return l10n.startedACall(senderName); + } + + @override + String unbannedUser(String senderName, String targetName) { + return l10n.unbannedUser(senderName, targetName); + } + + @override + String get unknownEncryptionAlgorithm => l10n.unknownEncryptionAlgorithm; + + @override + String unknownEvent(String typeKey) { + return l10n.userSentUnknownEvent('User', typeKey); + } + + @override + String userLeftTheChat(String targetName) { + return l10n.userLeftTheChat(targetName); + } + + @override + String get visibleForAllParticipants => l10n.visibleForAllParticipants; + + @override + String get visibleForEveryone => l10n.visibleForEveryone; + + @override + String get you => l10n.you; + + @override + String sentReaction(String senderName, String reactionKey) => + l10n.reactedWith(senderName, reactionKey); + + @override + // TODO: implement youAcceptedTheInvitation + String get youAcceptedTheInvitation => l10n.youAcceptedTheInvitation; + + @override + String youBannedUser(String targetName) => l10n.youBannedUser(targetName); + + @override + String youHaveWithdrawnTheInvitationFor(String targetName) => + l10n.youHaveWithdrawnTheInvitationFor(targetName); + + @override + String youInvitedBy(String senderName) => l10n.youInvitedBy(senderName); + + @override + String youInvitedUser(String targetName) => l10n.youInvitedUser(targetName); + + @override + // TODO: implement youJoinedTheChat + String get youJoinedTheChat => l10n.youJoinedTheChat; + + @override + String youKicked(String targetName) => l10n.youKicked(targetName); + + @override + String youKickedAndBanned(String targetName) => + l10n.youKickedAndBanned(targetName); + + @override + // TODO: implement youRejectedTheInvitation + String get youRejectedTheInvitation => l10n.youRejectedTheInvitation; + + @override + String youUnbannedUser(String targetName) => l10n.youUnbannedUser(targetName); + + @override + String wasDirectChatDisplayName(String oldDisplayName) => + l10n.wasDirectChatDisplayName(oldDisplayName); + + @override + String get unknownUser => l10n.user; + + @override + String hasKnocked(String targetName) => l10n.hasKnocked(targetName); + + @override + String acceptedKeyVerification(String senderName) => + l10n.acceptedKeyVerification(senderName); + + @override + String canceledKeyVerification(String senderName) => + l10n.canceledKeyVerification(senderName); + + @override + String completedKeyVerification(String senderName) => + l10n.completedKeyVerification(senderName); + + @override + String isReadyForKeyVerification(String senderName) => + l10n.isReadyForKeyVerification(senderName); + + @override + String requestedKeyVerification(String senderName) => + l10n.requestedKeyVerification(senderName); + + @override + String startedKeyVerification(String senderName) => + l10n.startedKeyVerification(senderName); + + @override + String invitedBy(String senderName) => senderName; + + @override + String get cancelledSend => l10n.sendCanceled; + + @override + String voiceMessage(String senderName, Duration? duration) => + l10n.sentVoiceMessage( + senderName, + duration == null + ? '' + : '${duration.inMinutes.toString().padLeft(2, '0')}:${(duration.inSeconds % 60).toString().padLeft(2, '0')}', + ); + + @override + String get refreshingLastEvent => l10n.loadingPleaseWait; + + @override + String startedAPoll(String senderName) => '$senderName started a poll'; + + @override + String get pollHasBeenEnded => l10n.pollHasBeenEnded; +} diff --git a/lib/utils/notification_background_handler.dart b/lib/utils/notification_background_handler.dart new file mode 100644 index 0000000..1a69461 --- /dev/null +++ b/lib/utils/notification_background_handler.dart @@ -0,0 +1,260 @@ +import 'dart:convert'; +import 'dart:isolate'; +import 'dart:ui'; + +import 'package:collection/collection.dart'; +import 'package:flutter_local_notifications/flutter_local_notifications.dart'; +import 'package:flutter_vodozemac/flutter_vodozemac.dart' as vod; +import 'package:go_router/go_router.dart'; +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/client_download_content_extension.dart'; +import 'package:fluffychat/utils/client_manager.dart'; +import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; +import 'package:fluffychat/utils/platform_infos.dart'; +import 'package:fluffychat/utils/push_helper.dart'; +import '../config/app_config.dart'; +import '../config/setting_keys.dart'; + +bool _vodInitialized = false; + +extension NotificationResponseJson on NotificationResponse { + String toJsonString() => jsonEncode({ + 'type': notificationResponseType.name, + 'id': id, + 'actionId': actionId, + 'input': input, + 'payload': payload, + 'data': data, + }); + + static NotificationResponse fromJsonString(String jsonString) { + final json = jsonDecode(jsonString) as Map; + return NotificationResponse( + notificationResponseType: NotificationResponseType.values + .singleWhere((t) => t.name == json['type']), + id: json['id'] as int?, + actionId: json['actionId'] as String?, + input: json['input'] as String?, + payload: json['payload'] as String?, + data: json['data'] as Map, + ); + } +} + +Future waitForPushIsolateDone() async { + if (IsolateNameServer.lookupPortByName(AppConfig.pushIsolatePortName) != + null) { + Logs().i('Wait for Push Isolate to be done...'); + await Future.delayed(const Duration(milliseconds: 300)); + } +} + +@pragma('vm:entry-point') +void notificationTapBackground( + NotificationResponse notificationResponse, +) async { + final sendPort = + IsolateNameServer.lookupPortByName(AppConfig.mainIsolatePortName); + if (sendPort != null) { + sendPort.send(notificationResponse.toJsonString()); + Logs().i('Notification tap sent to main isolate!'); + return; + } + Logs().i( + 'Main isolate no up - Create temporary client for notification tap intend!', + ); + + final pushIsolateReceivePort = ReceivePort(); + IsolateNameServer.registerPortWithName( + pushIsolateReceivePort.sendPort, + AppConfig.pushIsolatePortName, + ); + + if (!_vodInitialized) { + await vod.init(); + _vodInitialized = true; + } + final store = await AppSettings.init(); + final client = (await ClientManager.getClients( + initialize: false, + store: store, + )) + .first; + await client.abortSync(); + await client.init( + waitForFirstSync: false, + waitUntilLoadCompletedLoaded: false, + ); + + if (!client.isLogged()) { + throw Exception('Notification tab in background but not logged in!'); + } + try { + await notificationTap(notificationResponse, client: client); + } finally { + await client.dispose(closeDatabase: false); + pushIsolateReceivePort.sendPort.send('DONE'); + IsolateNameServer.removePortNameMapping(AppConfig.pushIsolatePortName); + } + return; +} + +Future notificationTap( + NotificationResponse notificationResponse, { + GoRouter? router, + required Client client, + L10n? l10n, +}) async { + Logs().d( + 'Notification action handler started', + notificationResponse.notificationResponseType.name, + ); + final payload = + FluffyChatPushPayload.fromString(notificationResponse.payload ?? ''); + switch (notificationResponse.notificationResponseType) { + case NotificationResponseType.selectedNotification: + final roomId = payload.roomId; + if (roomId == null) return; + + if (router == null) { + Logs().v('Ignore select notification action in background mode'); + return; + } + Logs().v('Open room from notification tap', roomId); + await client.roomsLoading; + await client.accountDataLoading; + if (client.getRoomById(roomId) == null) { + await client + .waitForRoomInSync(roomId) + .timeout(const Duration(seconds: 30)); + } + router.go( + client.getRoomById(roomId)?.membership == Membership.invite + ? '/rooms' + : '/rooms/$roomId', + ); + case NotificationResponseType.selectedNotificationAction: + final actionType = FluffyChatNotificationActions.values.singleWhereOrNull( + (action) => action.name == notificationResponse.actionId, + ); + if (actionType == null) { + throw Exception('Selected notification with action but no action ID'); + } + final roomId = payload.roomId; + if (roomId == null) { + throw Exception('Selected notification with action but no payload'); + } + await client.roomsLoading; + await client.accountDataLoading; + await client.userDeviceKeysLoading; + final room = client.getRoomById(roomId); + if (room == null) { + throw Exception( + 'Selected notification with action but unknown room $roomId', + ); + } + switch (actionType) { + case FluffyChatNotificationActions.markAsRead: + await room.setReadMarker( + payload.eventId ?? room.lastEvent!.eventId, + mRead: payload.eventId ?? room.lastEvent!.eventId, + public: AppSettings.sendPublicReadReceipts.value, + ); + case FluffyChatNotificationActions.reply: + final input = notificationResponse.input; + if (input == null || input.isEmpty) { + throw Exception( + 'Selected notification with reply action but without input', + ); + } + + final eventId = await room.sendTextEvent( + input, + parseCommands: false, + displayPendingEvent: false, + ); + + if (PlatformInfos.isAndroid) { + final ownProfile = await room.client.fetchOwnProfile(); + final avatar = ownProfile.avatarUrl; + final avatarFile = avatar == null + ? null + : await client + .downloadMxcCached( + avatar, + thumbnailMethod: ThumbnailMethod.crop, + width: notificationAvatarDimension, + height: notificationAvatarDimension, + animated: false, + isThumbnail: true, + rounded: true, + ) + .timeout(const Duration(seconds: 3)); + final messagingStyleInformation = + await AndroidFlutterLocalNotificationsPlugin() + .getActiveNotificationMessagingStyle(room.id.hashCode); + if (messagingStyleInformation == null) return; + l10n ??= await lookupL10n(PlatformDispatcher.instance.locale); + messagingStyleInformation.messages?.add( + Message( + input, + DateTime.now(), + Person( + key: room.client.userID, + name: l10n.you, + icon: avatarFile == null + ? null + : ByteArrayAndroidIcon(avatarFile), + ), + ), + ); + + await FlutterLocalNotificationsPlugin().show( + room.id.hashCode, + room.getLocalizedDisplayname(MatrixLocals(l10n)), + input, + NotificationDetails( + android: AndroidNotificationDetails( + AppConfig.pushNotificationsChannelId, + l10n.incomingMessages, + category: AndroidNotificationCategory.message, + shortcutId: room.id, + styleInformation: messagingStyleInformation, + groupKey: room.id, + playSound: false, + enableVibration: false, + actions: [ + AndroidNotificationAction( + FluffyChatNotificationActions.reply.name, + l10n.reply, + inputs: [ + AndroidNotificationActionInput( + label: l10n.writeAMessage, + ), + ], + cancelNotification: false, + allowGeneratedReplies: true, + semanticAction: SemanticAction.reply, + ), + AndroidNotificationAction( + FluffyChatNotificationActions.markAsRead.name, + l10n.markAsRead, + semanticAction: SemanticAction.markAsRead, + ), + ], + ), + ), + payload: FluffyChatPushPayload( + client.clientName, + room.id, + eventId, + ).toString(), + ); + } + } + } +} + +enum FluffyChatNotificationActions { markAsRead, reply } diff --git a/lib/utils/other_party_can_receive.dart b/lib/utils/other_party_can_receive.dart new file mode 100644 index 0000000..1738785 --- /dev/null +++ b/lib/utils/other_party_can_receive.dart @@ -0,0 +1,21 @@ +import 'package:matrix/matrix.dart'; + +extension OtherPartyCanReceiveExtension on Room { + bool get otherPartyCanReceiveMessages { + if (!encrypted) return true; + final users = getParticipants() + .map((u) => u.id) + .where((userId) => userId != client.userID) + .toSet(); + if (users.isEmpty) return true; + + for (final userId in users) { + if (client.userDeviceKeys[userId]?.deviceKeys.values.isNotEmpty == true) { + return true; + } + } + return false; + } +} + +class OtherPartyCanNotReceiveMessages implements Exception {} diff --git a/lib/utils/platform_infos.dart b/lib/utils/platform_infos.dart new file mode 100644 index 0000000..bf6589d --- /dev/null +++ b/lib/utils/platform_infos.dart @@ -0,0 +1,95 @@ +import 'dart:io'; + +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; + +import 'package:go_router/go_router.dart'; +import 'package:package_info_plus/package_info_plus.dart'; +import 'package:url_launcher/url_launcher_string.dart'; + +import 'package:fluffychat/config/setting_keys.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import '../config/app_config.dart'; + +abstract class PlatformInfos { + static bool get isWeb => kIsWeb; + static bool get isLinux => !kIsWeb && Platform.isLinux; + static bool get isWindows => !kIsWeb && Platform.isWindows; + static bool get isMacOS => !kIsWeb && Platform.isMacOS; + static bool get isIOS => !kIsWeb && Platform.isIOS; + static bool get isAndroid => !kIsWeb && Platform.isAndroid; + + static bool get isCupertinoStyle => isIOS || isMacOS; + + static bool get isMobile => isAndroid || isIOS; + + /// For desktops which don't support ChachedNetworkImage yet + static bool get isBetaDesktop => isWindows || isLinux; + + static bool get isDesktop => isLinux || isWindows || isMacOS; + + static bool get usesTouchscreen => !isMobile; + + static bool get supportsVideoPlayer => + !PlatformInfos.isWindows && !PlatformInfos.isLinux; + + /// Web could also record in theory but currently only wav which is too large + static bool get platformCanRecord => (isMobile || isMacOS); + + static String get clientName => + '${AppSettings.applicationName.value} ${isWeb ? 'web' : Platform.operatingSystem}${kReleaseMode ? '' : 'Debug'}'; + + static Future getVersion() async { + var version = kIsWeb ? 'Web' : 'Unknown'; + try { + version = (await PackageInfo.fromPlatform()).version; + } catch (_) {} + return version; + } + + static void showDialog(BuildContext context) async { + final version = await PlatformInfos.getVersion(); + showAboutDialog( + context: context, + children: [ + Text('Version: $version'), + TextButton.icon( + onPressed: () => launchUrlString(AppConfig.sourceCodeUrl), + icon: const Icon(Icons.source_outlined), + label: Text(L10n.of(context).sourceCode), + ), + Builder( + builder: (innerContext) { + return TextButton.icon( + onPressed: () { + context.go('/logs'); + Navigator.of(innerContext).pop(); + }, + icon: const Icon(Icons.list_outlined), + label: const Text('Logs'), + ); + }, + ), + Builder( + builder: (innerContext) { + return TextButton.icon( + onPressed: () { + context.go('/configs'); + Navigator.of(innerContext).pop(); + }, + icon: const Icon(Icons.settings_applications_outlined), + label: const Text('Advanced Configs'), + ); + }, + ), + ], + applicationIcon: Image.asset( + 'assets/logo.png', + width: 64, + height: 64, + filterQuality: FilterQuality.medium, + ), + applicationName: AppSettings.applicationName.value, + ); + } +} diff --git a/lib/utils/push_helper.dart b/lib/utils/push_helper.dart new file mode 100644 index 0000000..0aa6041 --- /dev/null +++ b/lib/utils/push_helper.dart @@ -0,0 +1,371 @@ +import 'dart:convert'; +import 'dart:ui'; + +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; + +import 'package:collection/collection.dart'; +import 'package:flutter_local_notifications/flutter_local_notifications.dart'; +import 'package:flutter_shortcuts_new/flutter_shortcuts_new.dart'; +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/config/setting_keys.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/client_download_content_extension.dart'; +import 'package:fluffychat/utils/client_manager.dart'; +import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; +import 'package:fluffychat/utils/notification_background_handler.dart'; +import 'package:fluffychat/utils/platform_infos.dart'; + +const notificationAvatarDimension = 128; + +Future pushHelper( + PushNotification notification, { + Client? client, + L10n? l10n, + String? activeRoomId, + required FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin, + bool useNotificationActions = true, +}) async { + try { + await _tryPushHelper( + notification, + client: client, + l10n: l10n, + activeRoomId: activeRoomId, + flutterLocalNotificationsPlugin: flutterLocalNotificationsPlugin, + useNotificationActions: useNotificationActions, + ); + } catch (e, s) { + Logs().e('Push Helper has crashed! Writing into temporary file', e, s); + + l10n ??= await lookupL10n(PlatformDispatcher.instance.locale); + 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( + AppSettings.applicationName.value, + (notification.counts?.unread ?? 0).toString(), + ), + importance: Importance.high, + priority: Priority.max, + shortcutId: notification.roomId, + ), + ), + ); + rethrow; + } +} + +Future _tryPushHelper( + PushNotification notification, { + Client? client, + L10n? l10n, + String? activeRoomId, + required FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin, + bool useNotificationActions = true, +}) 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; + } + + client ??= (await ClientManager.getClients( + initialize: false, + store: await AppSettings.init(), + )) + .first; + final event = await client.getEventByPushNotification( + notification, + storeInDatabase: false, + ); + + 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.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; + final senderAvatar = event.room.isDirectChat + ? avatar + : event.senderFromMemoryOrFallback.avatarUrl; + + Uint8List? roomAvatarFile, senderAvatarFile; + try { + roomAvatarFile = avatar == null + ? null + : await client + .downloadMxcCached( + avatar, + thumbnailMethod: ThumbnailMethod.crop, + width: notificationAvatarDimension, + height: notificationAvatarDimension, + animated: false, + isThumbnail: true, + rounded: true, + ) + .timeout(const Duration(seconds: 3)); + } catch (e, s) { + Logs().e('Unable to get avatar picture', e, s); + } + try { + senderAvatarFile = event.room.isDirectChat + ? roomAvatarFile + : senderAvatar == null + ? null + : await client + .downloadMxcCached( + senderAvatar, + thumbnailMethod: ThumbnailMethod.crop, + width: notificationAvatarDimension, + height: notificationAvatarDimension, + animated: false, + isThumbnail: true, + rounded: true, + ) + .timeout(const Duration(seconds: 3)); + } catch (e, s) { + Logs().e('Unable to get avatar picture', e, s); + } + + final id = notification.roomId.hashCode; + + final senderName = event.senderFromMemoryOrFallback.calcDisplayname(); + // Show notification + + final newMessage = Message( + body, + event.originServerTs, + Person( + bot: event.messageType == MessageTypes.Notice, + key: event.senderId, + name: senderName, + icon: senderAvatarFile == null + ? null + : ByteArrayAndroidIcon(senderAvatarFile), + ), + ); + + 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: senderName, + icon: roomAvatarFile == null + ? null + : ByteArrayAndroidIcon(roomAvatarFile), + key: event.roomId, + important: event.room.isFavourite, + ), + conversationTitle: event.room.isDirectChat ? null : roomName, + groupConversation: !event.room.isDirectChat, + messages: [newMessage], + ), + ticker: event.calcLocalizedBodyFallback( + matrixLocals, + plaintextBody: true, + withSenderNamePrefix: !event.room.isDirectChat, + hideReply: true, + hideEdit: true, + removeMarkdown: true, + ), + importance: Importance.high, + priority: Priority.max, + groupKey: event.room.spaceParents.firstOrNull?.roomId ?? 'rooms', + actions: event.type == EventTypes.RoomMember || !useNotificationActions + ? null + : [ + AndroidNotificationAction( + FluffyChatNotificationActions.reply.name, + l10n.reply, + inputs: [ + AndroidNotificationActionInput( + label: l10n.writeAMessage, + ), + ], + cancelNotification: false, + allowGeneratedReplies: true, + semanticAction: SemanticAction.reply, + ), + AndroidNotificationAction( + FluffyChatNotificationActions.markAsRead.name, + l10n.markAsRead, + semanticAction: SemanticAction.markAsRead, + ), + ], + ); + 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: + FluffyChatPushPayload(client.clientName, event.room.id, event.eventId) + .toString(), + ); + Logs().v('Push helper has been completed!'); +} + +class FluffyChatPushPayload { + final String? clientName, roomId, eventId; + + FluffyChatPushPayload(this.clientName, this.roomId, this.eventId); + + factory FluffyChatPushPayload.fromString(String payload) { + final parts = payload.split('|'); + if (parts.length != 3) { + return FluffyChatPushPayload(null, null, null); + } + return FluffyChatPushPayload(parts[0], parts[1], parts[2]); + } + + @override + String toString() => '$clientName|$roomId|$eventId'; +} + +/// 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, + Uint8List? 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 : base64Encode(avatarFile), + shortcutIconAsset: avatarFile == null + ? ShortcutIconAsset.androidAsset + : ShortcutIconAsset.memoryAsset, + isImportant: event.room.isFavourite, + ), + ); +} diff --git a/lib/utils/resize_video.dart b/lib/utils/resize_video.dart new file mode 100644 index 0000000..99a4c6b --- /dev/null +++ b/lib/utils/resize_video.dart @@ -0,0 +1,51 @@ +import 'package:cross_file/cross_file.dart'; +import 'package:matrix/matrix.dart'; +import 'package:video_compress/video_compress.dart'; + +import 'package:fluffychat/utils/platform_infos.dart'; + +extension ResizeImage on XFile { + static const int max = 1200; + static const int quality = 40; + + Future getVideoInfo({bool compress = true}) async { + MediaInfo? mediaInfo; + try { + if (PlatformInfos.isMobile) { + // will throw an error e.g. on Android SDK < 18 + mediaInfo = compress + ? await VideoCompress.compressVideo(path, deleteOrigin: true) + : await VideoCompress.getMediaInfo(path); + } + } catch (e, s) { + Logs().w('Error while fetching video media info', e, s); + } + + return MatrixVideoFile( + bytes: (await mediaInfo?.file?.readAsBytes()) ?? await readAsBytes(), + name: name, + mimeType: mimeType, + // on Android width and height is reversed: + // https://github.com/jonataslaw/VideoCompress/issues/172 + width: PlatformInfos.isAndroid ? mediaInfo?.height : mediaInfo?.width, + height: PlatformInfos.isAndroid ? mediaInfo?.width : mediaInfo?.height, + duration: mediaInfo?.duration?.round(), + ); + } + + Future getVideoThumbnail() async { + if (!PlatformInfos.isMobile) return null; + + try { + final bytes = await VideoCompress.getByteThumbnail(path); + if (bytes == null) return null; + return MatrixImageFile( + bytes: bytes, + name: name, + ); + } catch (e, s) { + Logs().w('Error while compressing video', e, s); + } + return null; + } +} diff --git a/lib/utils/room_status_extension.dart b/lib/utils/room_status_extension.dart new file mode 100644 index 0000000..7c97806 --- /dev/null +++ b/lib/utils/room_status_extension.dart @@ -0,0 +1,57 @@ +import 'package:flutter/widgets.dart'; + +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import '../config/app_config.dart'; + +extension RoomStatusExtension on Room { + String getLocalizedTypingText(BuildContext context) { + var typingText = ''; + final typingUsers = this.typingUsers; + typingUsers.removeWhere((User u) => u.id == client.userID); + + if (AppConfig.hideTypingUsernames) { + typingText = L10n.of(context).isTyping; + if (typingUsers.first.id != directChatMatrixID) { + typingText = L10n.of(context).numUsersTyping(typingUsers.length); + } + } else if (typingUsers.length == 1) { + typingText = L10n.of(context).isTyping; + if (typingUsers.first.id != directChatMatrixID) { + typingText = + L10n.of(context).userIsTyping(typingUsers.first.calcDisplayname()); + } + } else if (typingUsers.length == 2) { + typingText = L10n.of(context).userAndUserAreTyping( + typingUsers.first.calcDisplayname(), + typingUsers[1].calcDisplayname(), + ); + } else if (typingUsers.length > 2) { + typingText = L10n.of(context).userAndOthersAreTyping( + typingUsers.first.calcDisplayname(), + (typingUsers.length - 1), + ); + } + return typingText; + } + + List getSeenByUsers(Timeline timeline, {String? eventId}) { + if (timeline.events.isEmpty) return []; + eventId ??= timeline.events.first.eventId; + + final lastReceipts = {}; + // now we iterate the timeline events until we hit the first rendered event + for (final event in timeline.events) { + lastReceipts.addAll(event.receipts.map((r) => r.user)); + if (event.eventId == eventId) { + break; + } + } + lastReceipts.removeWhere( + (user) => + user.id == client.userID || user.id == timeline.events.first.senderId, + ); + return lastReceipts.toList(); + } +} diff --git a/lib/utils/show_scaffold_dialog.dart b/lib/utils/show_scaffold_dialog.dart new file mode 100644 index 0000000..9a0a0c6 --- /dev/null +++ b/lib/utils/show_scaffold_dialog.dart @@ -0,0 +1,37 @@ +import 'package:flutter/material.dart'; + +import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/config/themes.dart'; + +Future showScaffoldDialog({ + required BuildContext context, + Color? barrierColor, + Color? containerColor, + double maxWidth = 480, + double maxHeight = 720, + required Widget Function(BuildContext context) builder, +}) => + showDialog( + context: context, + useSafeArea: false, + builder: FluffyThemes.isColumnMode(context) + ? (context) => Center( + child: Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular( + AppConfig.borderRadius, + ), + color: containerColor ?? + Theme.of(context).scaffoldBackgroundColor, + ), + clipBehavior: Clip.hardEdge, + margin: const EdgeInsets.all(16), + constraints: BoxConstraints( + maxWidth: maxWidth, + maxHeight: maxHeight, + ), + child: builder(context), + ), + ) + : builder, + ); diff --git a/lib/utils/show_update_snackbar.dart b/lib/utils/show_update_snackbar.dart new file mode 100644 index 0000000..2707894 --- /dev/null +++ b/lib/utils/show_update_snackbar.dart @@ -0,0 +1,36 @@ +import 'package:flutter/material.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/l10n/l10n.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) { + scaffoldMessenger.showSnackBar( + SnackBar( + duration: const Duration(seconds: 30), + showCloseIcon: true, + content: Text(L10n.of(context).updateInstalled(currentVersion)), + action: SnackBarAction( + label: L10n.of(context).changelog, + onPressed: () => launchUrlString(AppConfig.changelogUrl), + ), + ), + ); + } + await store.setString(versionStoreKey, currentVersion); + } + } +} diff --git a/lib/utils/size_string.dart b/lib/utils/size_string.dart new file mode 100644 index 0000000..3150330 --- /dev/null +++ b/lib/utils/size_string.dart @@ -0,0 +1,21 @@ +extension SizeString on num { + String get sizeString { + var size = toDouble(); + if (size < 1000) { + return '${size.round()} Bytes'; + } + if (size < 1000 * 1000) { + size = size / 1000; + size = (size * 10).round() / 10; + return '${size.toString()} KB'; + } + if (size < 1000 * 1000 * 1000) { + size = size / 1000000; + size = (size * 10).round() / 10; + return '${size.toString()} MB'; + } + size = size / 1000 * 1000 * 1000 * 1000; + size = (size * 10).round() / 10; + return '${size.toString()} GB'; + } +} diff --git a/lib/utils/stream_extension.dart b/lib/utils/stream_extension.dart new file mode 100644 index 0000000..66e840f --- /dev/null +++ b/lib/utils/stream_extension.dart @@ -0,0 +1,48 @@ +import 'dart:async'; + +extension StreamExtension on Stream { + /// Returns a new Stream which outputs only `true` for every update of the original + /// stream, ratelimited by the Duration t + Stream rateLimit(Duration t) { + final controller = StreamController(); + Timer? timer; + var gotMessage = false; + // as we call our inline-defined function recursively we need to make sure that the + // variable exists prior of creating the function. Silly dart. + Function? onMessage; + // callback to determine if we should send out an update + onMessage = () { + // do nothing if it is already closed + if (controller.isClosed) { + return; + } + if (timer == null) { + // if we don't have a timer yet, send out the update and start a timer + gotMessage = false; + controller.add(true); + timer = Timer(t, () { + // the timer has ended...delete it and, if we got a message, re-run the + // method to send out an update! + timer = null; + if (gotMessage) { + onMessage?.call(); + } + }); + } else { + // set that we got a message + gotMessage = true; + } + }; + final subscription = listen( + (_) => onMessage?.call(), + onDone: () => controller.close(), + onError: (e, s) => controller.addError(e, s), + ); + // add proper cleanup to the subscription and the controller, to not memory leak + controller.onCancel = () { + subscription.cancel(); + controller.close(); + }; + return controller.stream; + } +} diff --git a/lib/utils/string_color.dart b/lib/utils/string_color.dart new file mode 100644 index 0000000..a0dfbf5 --- /dev/null +++ b/lib/utils/string_color.dart @@ -0,0 +1,34 @@ +import 'package:flutter/material.dart'; + +extension StringColor on String { + static final _colorCache = >{}; + + Color _getColorLight(double light) { + var number = 0.0; + for (var i = 0; i < length; i++) { + number += codeUnitAt(i); + } + number = (number % 12) * 25.5; + return HSLColor.fromAHSL(0.75, number, 1, light).toColor(); + } + + Color get color { + _colorCache[this] ??= {}; + return _colorCache[this]![0.3] ??= _getColorLight(0.3); + } + + Color get darkColor { + _colorCache[this] ??= {}; + return _colorCache[this]![0.2] ??= _getColorLight(0.2); + } + + Color get lightColorText { + _colorCache[this] ??= {}; + return _colorCache[this]![0.7] ??= _getColorLight(0.7); + } + + Color get lightColorAvatar { + _colorCache[this] ??= {}; + return _colorCache[this]![0.45] ??= _getColorLight(0.45); + } +} diff --git a/lib/utils/sync_status_localization.dart b/lib/utils/sync_status_localization.dart new file mode 100644 index 0000000..6d3a103 --- /dev/null +++ b/lib/utils/sync_status_localization.dart @@ -0,0 +1,27 @@ +import 'package:flutter/material.dart'; + +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/localized_exception_extension.dart'; + +extension SyncStatusLocalization on SyncStatusUpdate { + String calcLocalizedString(BuildContext context) { + final progress = this.progress; + switch (status) { + case SyncStatus.waitingForResponse: + return L10n.of(context).waitingForServer; + case SyncStatus.error: + return ((error?.exception ?? Object()) as Object) + .toLocalizedString(context); + case SyncStatus.processing: + case SyncStatus.cleaningUp: + case SyncStatus.finished: + return progress == null + ? L10n.of(context).synchronizingPleaseWait + : L10n.of(context).synchronizingPleaseWaitCounter( + (progress * 100).round().toString(), + ); + } + } +} diff --git a/lib/utils/uia_request_manager.dart b/lib/utils/uia_request_manager.dart new file mode 100644 index 0000000..4a2736e --- /dev/null +++ b/lib/utils/uia_request_manager.dart @@ -0,0 +1,132 @@ +import 'dart:async'; + +import 'package:flutter/material.dart'; + +import 'package:matrix/matrix.dart'; +import 'package:url_launcher/url_launcher.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_ok_cancel_alert_dialog.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_text_input_dialog.dart'; +import 'package:fluffychat/widgets/fluffy_chat_app.dart'; +import 'package:fluffychat/widgets/matrix.dart'; + +extension UiaRequestManager on MatrixState { + Future uiaRequestHandler(UiaRequest uiaRequest) async { + final l10n = L10n.of(context); + final navigatorContext = + FluffyChatApp.router.routerDelegate.navigatorKey.currentContext ?? + context; + try { + if (uiaRequest.state != UiaRequestState.waitForUser || + uiaRequest.nextStages.isEmpty) { + Logs().d('Uia Request Stage: ${uiaRequest.state}'); + return; + } + final stage = uiaRequest.nextStages.first; + Logs().d('Uia Request Stage: $stage'); + switch (stage) { + case AuthenticationTypes.password: + final input = cachedPassword ?? + (await showTextInputDialog( + context: navigatorContext, + title: l10n.pleaseEnterYourPassword, + okLabel: l10n.ok, + cancelLabel: l10n.cancel, + minLines: 1, + maxLines: 1, + obscureText: true, + hintText: '******', + )); + if (input == null || input.isEmpty) { + return uiaRequest.cancel(); + } + return uiaRequest.completeStage( + AuthenticationPassword( + session: uiaRequest.session, + password: input, + identifier: AuthenticationUserIdentifier(user: client.userID!), + ), + ); + case AuthenticationTypes.emailIdentity: + if (currentThreepidCreds == null) { + return uiaRequest.cancel( + UiaException(L10n.of(context).serverRequiresEmail), + ); + } + final auth = AuthenticationThreePidCreds( + session: uiaRequest.session, + type: AuthenticationTypes.emailIdentity, + threepidCreds: ThreepidCreds( + sid: currentThreepidCreds!.sid, + clientSecret: currentClientSecret, + ), + ); + if (OkCancelResult.ok == + await showOkCancelAlertDialog( + useRootNavigator: false, + context: navigatorContext, + title: l10n.weSentYouAnEmail, + message: l10n.pleaseClickOnLink, + okLabel: l10n.iHaveClickedOnLink, + cancelLabel: l10n.cancel, + )) { + return uiaRequest.completeStage(auth); + } + return uiaRequest.cancel(); + case AuthenticationTypes.dummy: + return uiaRequest.completeStage( + AuthenticationData( + type: AuthenticationTypes.dummy, + session: uiaRequest.session, + ), + ); + default: + final stageUrl = uiaRequest.params + .tryGetMap(stage) + ?.tryGet('url'); + final fallbackUrl = client.homeserver!.replace( + path: '/_matrix/client/v3/auth/$stage/fallback/web', + queryParameters: { + 'session': uiaRequest.session, + }, + ); + final url = stageUrl != null + ? (Uri.tryParse(stageUrl) ?? fallbackUrl) + : fallbackUrl; + + final consent = await showOkCancelAlertDialog( + useRootNavigator: false, + title: l10n.pleaseFollowInstructionsOnWeb, + context: navigatorContext, + okLabel: l10n.open, + cancelLabel: l10n.cancel, + ); + if (consent != OkCancelResult.ok) return uiaRequest.cancel(); + + launchUrl(url, mode: LaunchMode.inAppBrowserView); + final completer = Completer(); + final listener = + AppLifecycleListener(onResume: () => completer.complete()); + await completer.future; + listener.dispose(); + + return uiaRequest.completeStage( + AuthenticationData(session: uiaRequest.session), + ); + } + } catch (e, s) { + Logs().e('Error while background UIA', e, s); + return uiaRequest.cancel(e is Exception ? e : Exception(e)); + } + } +} + +class UiaException implements Exception { + final String reason; + + UiaException(this.reason); + + @override + String toString() => reason; +} diff --git a/lib/utils/url_launcher.dart b/lib/utils/url_launcher.dart new file mode 100644 index 0000000..e4e9b1b --- /dev/null +++ b/lib/utils/url_launcher.dart @@ -0,0 +1,240 @@ +import 'package:flutter/material.dart'; + +import 'package:collection/collection.dart' show IterableExtension; +import 'package:go_router/go_router.dart'; +import 'package:matrix/matrix.dart'; +import 'package:punycode/punycode.dart'; +import 'package:url_launcher/url_launcher_string.dart'; + +import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_ok_cancel_alert_dialog.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/user_dialog.dart'; +import 'package:fluffychat/widgets/future_loading_dialog.dart'; +import 'package:fluffychat/widgets/matrix.dart'; +import '../widgets/adaptive_dialogs/public_room_dialog.dart'; +import 'platform_infos.dart'; + +class UrlLauncher { + /// The url to open. + final String? url; + + /// The visible name in the GUI. For example the name of a markdown link + /// which may differ from the actual url to open. + final String? name; + + final BuildContext context; + + const UrlLauncher(this.context, this.url, [this.name]); + + void launchUrl() async { + if (url!.toLowerCase().startsWith(AppConfig.deepLinkPrefix) || + url!.toLowerCase().startsWith(AppConfig.inviteLinkPrefix) || + {'#', '@', '!', '+', '\$'}.contains(url![0]) || + url!.toLowerCase().startsWith(AppConfig.schemePrefix)) { + return openMatrixToUrl(); + } + final uri = Uri.tryParse(url!); + if (uri == null) { + // we can't open this thing + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text(L10n.of(context).cantOpenUri(url!))), + ); + return; + } + + if (name != null && url != name) { + // If there is a name which differs from the url, we need to make sure + // that the user can see the actual url before opening the browser. + final consent = await showOkCancelAlertDialog( + context: context, + title: L10n.of(context).openLinkInBrowser, + message: url, + okLabel: L10n.of(context).open, + cancelLabel: L10n.of(context).cancel, + ); + if (consent != OkCancelResult.ok) return; + } + + if (!{'https', 'http'}.contains(uri.scheme)) { + // just launch non-https / non-http uris directly + + // we need to transmute geo URIs on desktop and on iOS + if ((!PlatformInfos.isMobile || PlatformInfos.isIOS) && + uri.scheme == 'geo') { + final latlong = uri.path + .split(';') + .first + .split(',') + .map((s) => double.tryParse(s)) + .toList(); + if (latlong.length == 2 && + latlong.first != null && + latlong.last != null) { + if (PlatformInfos.isIOS) { + // iOS is great at not following standards, so we need to transmute the geo URI + // to an apple maps thingy + // https://developer.apple.com/library/archive/featuredarticles/iPhoneURLScheme_Reference/MapLinks/MapLinks.html + final ll = '${latlong.first},${latlong.last}'; + launchUrlString('https://maps.apple.com/?q=$ll&sll=$ll'); + } else { + // transmute geo URIs on desktop to openstreetmap links, as those usually can't handle + // geo URIs + launchUrlString( + 'https://www.openstreetmap.org/?mlat=${latlong.first}&mlon=${latlong.last}#map=16/${latlong.first}/${latlong.last}', + ); + } + return; + } + } + launchUrlString(url!); + return; + } + if (uri.host.isEmpty) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text(L10n.of(context).cantOpenUri(url!))), + ); + return; + } + // okay, we have either an http or an https URI. + // As some platforms have issues with opening unicode URLs, we are going to help + // them out by punycode-encoding them for them ourself. + final newHost = uri.host.split('.').map((hostPartEncoded) { + final hostPart = Uri.decodeComponent(hostPartEncoded); + final hostPartPunycode = punycodeEncode(hostPart); + return hostPartPunycode != '$hostPart-' + ? 'xn--$hostPartPunycode' + : hostPart; + }).join('.'); + // Force LaunchMode.externalApplication, otherwise url_launcher will default + // to opening links in a webview on mobile platforms. + launchUrlString( + uri.replace(host: newHost).toString(), + mode: LaunchMode.externalApplication, + ); + } + + void openMatrixToUrl() async { + final matrix = Matrix.of(context); + final url = this.url!.replaceFirst( + AppConfig.deepLinkPrefix, + AppConfig.inviteLinkPrefix, + ); + + // The identifier might be a matrix.to url and needs escaping. Or, it might have multiple + // identifiers (room id & event id), or it might also have a query part. + // All this needs parsing. + final identityParts = url.parseIdentifierIntoParts() ?? + Uri.tryParse(url)?.host.parseIdentifierIntoParts() ?? + Uri.tryParse(url) + ?.pathSegments + .lastWhereOrNull((_) => true) + ?.parseIdentifierIntoParts(); + if (identityParts == null) { + return; // no match, nothing to do + } + if (identityParts.primaryIdentifier.sigil == '#' || + identityParts.primaryIdentifier.sigil == '!') { + // we got a room! Let's open that one + final roomIdOrAlias = identityParts.primaryIdentifier; + final event = identityParts.secondaryIdentifier; + var room = matrix.client.getRoomByAlias(roomIdOrAlias) ?? + matrix.client.getRoomById(roomIdOrAlias); + var roomId = room?.id; + // we make the servers a set and later on convert to a list, so that we can easily + // deduplicate servers added via alias lookup and query parameter + final servers = {}; + if (room == null && roomIdOrAlias.sigil == '#') { + // we were unable to find the room locally...so resolve it + final response = await showFutureLoadingDialog( + context: context, + future: () => matrix.client.getRoomIdByAlias(roomIdOrAlias), + ); + if (response.error != null) { + return; // nothing to do, the alias doesn't exist + } + roomId = response.result!.roomId; + servers.addAll(response.result!.servers!); + room = matrix.client.getRoomById(roomId!); + } + servers.addAll(identityParts.via); + if (room != null) { + if (room.isSpace) { + // TODO: Implement navigate to space + context.go('/rooms/${room.id}'); + + return; + } + // we have the room, so....just open it + if (event != null) { + context.go( + '/${Uri( + pathSegments: ['rooms', room.id], + queryParameters: {'event': event}, + )}', + ); + } else { + context.go('/rooms/${room.id}'); + } + return; + } else { + await showAdaptiveDialog( + context: context, + builder: (c) => PublicRoomDialog( + roomAlias: identityParts.primaryIdentifier, + ), + ); + } + if (roomIdOrAlias.sigil == '!') { + if (await showOkCancelAlertDialog( + useRootNavigator: false, + context: context, + title: 'Join room $roomIdOrAlias', + ) == + OkCancelResult.ok) { + roomId = roomIdOrAlias; + final response = await showFutureLoadingDialog( + context: context, + future: () => matrix.client.joinRoom( + roomIdOrAlias, + serverName: servers.isNotEmpty ? servers.toList() : null, + ), + ); + if (response.error != null) return; + // wait for two seconds so that it probably came down /sync + await showFutureLoadingDialog( + context: context, + future: () => Future.delayed(const Duration(seconds: 2)), + ); + if (event != null) { + context.go( + Uri( + pathSegments: ['rooms', response.result!], + queryParameters: {'event': event}, + ).toString(), + ); + } else { + context.go('/rooms/${response.result!}'); + } + } + } + } else if (identityParts.primaryIdentifier.sigil == '@') { + final userId = identityParts.primaryIdentifier; + var noProfileWarning = false; + final profileResult = await showFutureLoadingDialog( + context: context, + future: () => matrix.client.getProfileFromUserId(userId).catchError( + (_) { + noProfileWarning = true; + return Profile(userId: userId); + }, + ), + ); + await UserDialog.show( + context: context, + profile: profileResult.result!, + noProfileWarning: noProfileWarning, + ); + } + } +} diff --git a/lib/utils/voip/user_media_manager.dart b/lib/utils/voip/user_media_manager.dart new file mode 100644 index 0000000..e1677f8 --- /dev/null +++ b/lib/utils/voip/user_media_manager.dart @@ -0,0 +1,28 @@ +import 'package:just_audio/just_audio.dart'; + +class UserMediaManager { + factory UserMediaManager() { + return _instance; + } + + UserMediaManager._internal(); + + static final UserMediaManager _instance = UserMediaManager._internal(); + + AudioPlayer? _assetsAudioPlayer; + + Future startRingingTone() async { + const path = 'assets/sounds/phone.ogg'; + final player = _assetsAudioPlayer = AudioPlayer(); + player.setAsset(path); + player.play(); + + return; + } + + Future stopRingingTone() async { + await _assetsAudioPlayer?.stop(); + _assetsAudioPlayer = null; + return; + } +} diff --git a/lib/utils/voip/video_renderer.dart b/lib/utils/voip/video_renderer.dart new file mode 100644 index 0000000..afdd9be --- /dev/null +++ b/lib/utils/voip/video_renderer.dart @@ -0,0 +1,86 @@ +import 'dart:async'; + +import 'package:flutter/material.dart'; + +import 'package:flutter_webrtc/flutter_webrtc.dart'; +import 'package:matrix/matrix.dart'; + +class VideoRenderer extends StatefulWidget { + final WrappedMediaStream? stream; + final bool mirror; + final RTCVideoViewObjectFit fit; + + const VideoRenderer( + this.stream, { + this.mirror = false, + this.fit = RTCVideoViewObjectFit.RTCVideoViewObjectFitContain, + super.key, + }); + + @override + State createState() => _VideoRendererState(); +} + +class _VideoRendererState extends State { + RTCVideoRenderer? _renderer; + bool _rendererReady = false; + MediaStream? get mediaStream => widget.stream?.stream; + StreamSubscription? _streamChangeSubscription; + + Future _initializeRenderer() async { + _renderer ??= RTCVideoRenderer(); + await _renderer!.initialize(); + _renderer!.srcObject = mediaStream; + return _renderer!; + } + + void disposeRenderer() { + try { + _renderer?.srcObject = null; + _renderer?.dispose(); + _renderer = null; + // ignore: empty_catches + } catch (e) {} + } + + @override + void initState() { + _streamChangeSubscription = + widget.stream?.onStreamChanged.stream.listen((stream) { + setState(() { + _renderer?.srcObject = stream; + }); + }); + setupRenderer(); + super.initState(); + } + + Future setupRenderer() async { + await _initializeRenderer(); + setState(() => _rendererReady = true); + } + + @override + void dispose() { + _streamChangeSubscription?.cancel(); + disposeRenderer(); + super.dispose(); + } + + @override + Widget build(BuildContext context) => !_rendererReady + ? Container() + : Builder( + key: widget.key, + builder: (ctx) { + return RTCVideoView( + _renderer!, + mirror: widget.mirror, + filterQuality: FilterQuality.medium, + objectFit: widget.fit, + placeholderBuilder: (_) => + Container(color: Colors.white.withAlpha(45)), + ); + }, + ); +} diff --git a/lib/utils/voip_plugin.dart b/lib/utils/voip_plugin.dart new file mode 100644 index 0000000..c5120d6 --- /dev/null +++ b/lib/utils/voip_plugin.dart @@ -0,0 +1,177 @@ +import 'dart:core'; + +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; + +import 'package:flutter_foreground_task/flutter_foreground_task.dart'; +import 'package:flutter_webrtc/flutter_webrtc.dart' as webrtc_impl; +import 'package:matrix/matrix.dart'; +import 'package:webrtc_interface/webrtc_interface.dart' hide Navigator; + +import 'package:fluffychat/pages/chat_list/chat_list.dart'; +import 'package:fluffychat/pages/dialer/dialer.dart'; +import 'package:fluffychat/utils/platform_infos.dart'; +import '../../utils/voip/user_media_manager.dart'; +import '../widgets/matrix.dart'; + +class VoipPlugin with WidgetsBindingObserver implements WebRTCDelegate { + final MatrixState matrix; + Client get client => matrix.client; + VoipPlugin(this.matrix) { + voip = VoIP(client, this); + if (!kIsWeb) { + final wb = WidgetsBinding.instance; + wb.addObserver(this); + didChangeAppLifecycleState(wb.lifecycleState); + } + } + bool background = false; + bool speakerOn = false; + late VoIP voip; + OverlayEntry? overlayEntry; + BuildContext get context => matrix.context; + + @override + void didChangeAppLifecycleState(AppLifecycleState? state) { + background = (state == AppLifecycleState.detached || + state == AppLifecycleState.paused); + } + + void addCallingOverlay(String callId, CallSession call) { + final context = + kIsWeb ? ChatList.contextForVoip! : this.context; // web is weird + + if (overlayEntry != null) { + Logs().e('[VOIP] addCallingOverlay: The call session already exists?'); + overlayEntry!.remove(); + } + // Overlay.of(context) is broken on web + // falling back on a dialog + if (kIsWeb) { + showDialog( + context: context, + builder: (context) => Calling( + context: context, + client: client, + callId: callId, + call: call, + onClear: () => Navigator.of(context).pop(), + ), + ); + } else { + overlayEntry = OverlayEntry( + builder: (_) => Calling( + context: context, + client: client, + callId: callId, + call: call, + onClear: () { + overlayEntry?.remove(); + overlayEntry = null; + }, + ), + ); + Overlay.of(context).insert(overlayEntry!); + } + } + + @override + MediaDevices get mediaDevices => webrtc_impl.navigator.mediaDevices; + + @override + bool get isWeb => kIsWeb; + + @override + Future createPeerConnection( + Map configuration, [ + Map constraints = const {}, + ]) => + webrtc_impl.createPeerConnection(configuration, constraints); + + Future get hasCallingAccount async => false; + + @override + Future playRingtone() async { + if (!background && !await hasCallingAccount) { + try { + await UserMediaManager().startRingingTone(); + } catch (_) {} + } + } + + @override + Future stopRingtone() async { + if (!background && !await hasCallingAccount) { + try { + await UserMediaManager().stopRingingTone(); + } catch (_) {} + } + } + + @override + Future handleNewCall(CallSession call) async { + if (PlatformInfos.isAndroid) { + try { + final wasForeground = await FlutterForegroundTask.isAppOnForeground; + + await matrix.store.setString( + 'wasForeground', + wasForeground == true ? 'true' : 'false', + ); + FlutterForegroundTask.setOnLockScreenVisibility(true); + FlutterForegroundTask.wakeUpScreen(); + FlutterForegroundTask.launchApp(); + } catch (e) { + Logs().e('VOIP foreground failed $e'); + } + // use fallback flutter call pages for outgoing and video calls. + addCallingOverlay(call.callId, call); + } else { + addCallingOverlay(call.callId, call); + } + } + + @override + Future handleCallEnded(CallSession session) async { + if (overlayEntry != null) { + overlayEntry!.remove(); + overlayEntry = null; + if (PlatformInfos.isAndroid) { + FlutterForegroundTask.setOnLockScreenVisibility(false); + FlutterForegroundTask.stopService(); + final wasForeground = matrix.store.getString('wasForeground'); + wasForeground == 'false' ? FlutterForegroundTask.minimizeApp() : null; + } + } + } + + @override + Future handleGroupCallEnded(GroupCallSession groupCall) async { + // TODO: implement handleGroupCallEnded + } + + @override + Future handleNewGroupCall(GroupCallSession groupCall) async { + // TODO: implement handleNewGroupCall + } + + @override + // TODO: implement canHandleNewCall + bool get canHandleNewCall => + voip.currentCID == null && voip.currentGroupCID == null; + + @override + Future handleMissedCall(CallSession session) async { + // TODO: implement handleMissedCall + } + + @override + // TODO: implement keyProvider + EncryptionKeyProvider? get keyProvider => throw UnimplementedError(); + + @override + Future registerListeners(CallSession session) { + // TODO: implement registerListeners + throw UnimplementedError(); + } +} diff --git a/lib/widgets/adaptive_dialogs/adaptive_dialog_action.dart b/lib/widgets/adaptive_dialogs/adaptive_dialog_action.dart new file mode 100644 index 0000000..4a1929d --- /dev/null +++ b/lib/widgets/adaptive_dialogs/adaptive_dialog_action.dart @@ -0,0 +1,83 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; + +import 'package:fluffychat/config/app_config.dart'; + +class AdaptiveDialogAction extends StatelessWidget { + final VoidCallback? onPressed; + final bool autofocus; + final Widget child; + final bool bigButtons; + final BorderRadius? borderRadius; + + static const BorderRadius topRadius = BorderRadius.only( + topLeft: Radius.circular(AppConfig.borderRadius), + topRight: Radius.circular(AppConfig.borderRadius), + bottomLeft: Radius.circular(2), + bottomRight: Radius.circular(2), + ); + static const BorderRadius centerRadius = BorderRadius.all(Radius.circular(2)); + static const BorderRadius bottomRadius = BorderRadius.only( + bottomLeft: Radius.circular(AppConfig.borderRadius), + bottomRight: Radius.circular(AppConfig.borderRadius), + topLeft: Radius.circular(2), + topRight: Radius.circular(2), + ); + + const AdaptiveDialogAction({ + super.key, + required this.onPressed, + required this.child, + this.autofocus = false, + this.bigButtons = false, + this.borderRadius, + }); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + switch (theme.platform) { + case TargetPlatform.android: + case TargetPlatform.fuchsia: + case TargetPlatform.linux: + case TargetPlatform.windows: + if (bigButtons) { + return Padding( + padding: const EdgeInsets.symmetric(vertical: 2.0), + child: SizedBox( + width: double.infinity, + child: ElevatedButton( + style: ElevatedButton.styleFrom( + shape: RoundedRectangleBorder( + borderRadius: borderRadius ?? + BorderRadius.circular(AppConfig.borderRadius), + ), + backgroundColor: autofocus + ? theme.colorScheme.primary + : theme.colorScheme.surfaceBright, + foregroundColor: autofocus + ? theme.colorScheme.onPrimary + : theme.colorScheme.primary, + ), + onPressed: onPressed, + autofocus: autofocus, + child: child, + ), + ), + ); + } + return TextButton( + onPressed: onPressed, + autofocus: autofocus, + child: child, + ); + case TargetPlatform.iOS: + case TargetPlatform.macOS: + return CupertinoDialogAction( + onPressed: onPressed, + isDefaultAction: autofocus, + child: child, + ); + } + } +} diff --git a/lib/widgets/adaptive_dialogs/dialog_text_field.dart b/lib/widgets/adaptive_dialogs/dialog_text_field.dart new file mode 100644 index 0000000..73d96ed --- /dev/null +++ b/lib/widgets/adaptive_dialogs/dialog_text_field.dart @@ -0,0 +1,99 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; + +class DialogTextField extends StatelessWidget { + final TextEditingController? controller; + final String? hintText; + final String? labelText; + final String? initialText; + final String? counterText; + final String? prefixText; + final String? suffixText; + final String? errorText; + final bool obscureText; + final bool isDestructive = false; + final int? minLines; + final int? maxLines; + final TextInputType? keyboardType; + final int? maxLength; + final bool autocorrect = true; + + const DialogTextField({ + super.key, + this.hintText, + this.labelText, + this.initialText, + this.prefixText, + this.suffixText, + this.minLines, + this.maxLines, + this.keyboardType, + this.maxLength, + this.controller, + this.counterText, + this.errorText, + this.obscureText = false, + }); + + @override + Widget build(BuildContext context) { + final prefixText = this.prefixText; + final suffixText = this.suffixText; + final errorText = this.errorText; + final theme = Theme.of(context); + switch (theme.platform) { + case TargetPlatform.android: + case TargetPlatform.fuchsia: + case TargetPlatform.linux: + case TargetPlatform.windows: + return TextField( + controller: controller, + obscureText: obscureText, + minLines: minLines, + maxLines: maxLines, + maxLength: maxLength, + keyboardType: keyboardType, + autocorrect: autocorrect, + decoration: InputDecoration( + errorText: errorText, + hintText: hintText, + labelText: labelText, + prefixText: prefixText, + suffixText: suffixText, + counterText: counterText, + ), + ); + case TargetPlatform.iOS: + case TargetPlatform.macOS: + final placeholder = labelText ?? hintText; + return Column( + children: [ + SizedBox( + height: placeholder == null ? null : ((maxLines ?? 1) + 1) * 20, + child: CupertinoTextField( + controller: controller, + obscureText: obscureText, + minLines: minLines, + maxLines: maxLines, + maxLength: maxLength, + keyboardType: keyboardType, + autocorrect: autocorrect, + prefix: prefixText != null ? Text(prefixText) : null, + suffix: suffixText != null ? Text(suffixText) : null, + placeholder: placeholder, + ), + ), + if (errorText != null) + Text( + errorText, + style: TextStyle( + fontSize: 11, + color: theme.colorScheme.error, + ), + textAlign: TextAlign.left, + ), + ], + ); + } + } +} diff --git a/lib/widgets/adaptive_dialogs/public_room_dialog.dart b/lib/widgets/adaptive_dialogs/public_room_dialog.dart new file mode 100644 index 0000000..6b11d45 --- /dev/null +++ b/lib/widgets/adaptive_dialogs/public_room_dialog.dart @@ -0,0 +1,237 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +import 'package:flutter_linkify/flutter_linkify.dart'; +import 'package:go_router/go_router.dart'; +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_ok_cancel_alert_dialog.dart'; +import '../../config/themes.dart'; +import '../../utils/url_launcher.dart'; +import '../avatar.dart'; +import '../future_loading_dialog.dart'; +import '../hover_builder.dart'; +import '../matrix.dart'; +import '../mxc_image_viewer.dart'; +import 'adaptive_dialog_action.dart'; + +class PublicRoomDialog extends StatelessWidget { + final String? roomAlias; + final PublishedRoomsChunk? chunk; + final List? via; + + const PublicRoomDialog({super.key, this.roomAlias, this.chunk, this.via}); + + void _joinRoom(BuildContext context) async { + final client = Matrix.of(context).client; + final chunk = this.chunk; + final knock = chunk?.joinRule == 'knock'; + final result = await showFutureLoadingDialog( + context: context, + future: () async { + if (chunk != null && + client.getRoomById(chunk.roomId) != null && + client.getRoomById(chunk.roomId)?.membership != Membership.leave) { + return chunk.roomId; + } + final roomId = chunk != null && knock + ? await client.knockRoom(chunk.roomId, via: via) + : await client.joinRoom( + roomAlias ?? chunk!.roomId, + via: via, + ); + + if (!knock && client.getRoomById(roomId) == null) { + await client.waitForRoomInSync(roomId); + } + return roomId; + }, + ); + final roomId = result.result; + if (roomId == null) return; + if (knock && client.getRoomById(roomId) == null) { + Navigator.of(context).pop(true); + await showOkAlertDialog( + context: context, + title: L10n.of(context).youHaveKnocked, + message: L10n.of(context).pleaseWaitUntilInvited, + ); + return; + } + if (result.error != null) return; + if (!context.mounted) return; + 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) { + context.go('/rooms/$roomId'); + } else { + context.go('/rooms?spaceId=$roomId'); + } + return; + } + + bool _testRoom(PublishedRoomsChunk r) => r.canonicalAlias == roomAlias; + + Future _search(BuildContext context) async { + final chunk = this.chunk; + if (chunk != null) return chunk; + final query = await Matrix.of(context).client.queryPublicRooms( + server: roomAlias!.domain, + filter: PublicRoomQueryFilter( + genericSearchTerm: roomAlias, + ), + ); + if (!query.chunk.any(_testRoom)) { + throw (L10n.of(context).noRoomsFound); + } + return query.chunk.firstWhere(_testRoom); + } + + @override + Widget build(BuildContext context) { + final roomAlias = this.roomAlias ?? chunk?.canonicalAlias; + final roomLink = roomAlias ?? chunk?.roomId; + var copied = false; + return AlertDialog.adaptive( + title: ConstrainedBox( + constraints: const BoxConstraints(maxWidth: 256), + child: Text( + chunk?.name ?? roomAlias?.localpart ?? chunk?.roomId ?? 'Unknown', + textAlign: TextAlign.center, + ), + ), + content: ConstrainedBox( + constraints: const BoxConstraints(maxWidth: 256, maxHeight: 256), + child: FutureBuilder( + future: _search(context), + builder: (context, snapshot) { + final theme = Theme.of(context); + + final profile = snapshot.data; + final avatar = profile?.avatarUrl; + final topic = profile?.topic; + return SingleChildScrollView( + child: Column( + spacing: 8, + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + if (roomLink != null) + HoverBuilder( + builder: (context, hovered) => StatefulBuilder( + builder: (context, setState) => MouseRegion( + cursor: SystemMouseCursors.click, + child: GestureDetector( + onTap: () { + Clipboard.setData( + ClipboardData(text: roomLink), + ); + setState(() { + copied = true; + }); + }, + child: RichText( + text: TextSpan( + children: [ + WidgetSpan( + child: Padding( + padding: + const EdgeInsets.only(right: 4.0), + child: AnimatedScale( + duration: + FluffyThemes.animationDuration, + curve: FluffyThemes.animationCurve, + scale: hovered + ? 1.33 + : copied + ? 1.25 + : 1.0, + child: Icon( + copied + ? Icons.check_circle + : Icons.copy, + size: 12, + color: copied ? Colors.green : null, + ), + ), + ), + ), + TextSpan(text: roomLink), + ], + style: theme.textTheme.bodyMedium + ?.copyWith(fontSize: 10), + ), + textAlign: TextAlign.center, + ), + ), + ), + ), + ), + Center( + child: Avatar( + mxContent: avatar, + name: profile?.name ?? roomLink, + size: Avatar.defaultSize * 2, + onTap: avatar != null + ? () => showDialog( + context: context, + builder: (_) => MxcImageViewer(avatar), + ) + : null, + ), + ), + if (profile?.numJoinedMembers != null) + Text( + L10n.of(context).countParticipants( + profile?.numJoinedMembers ?? 0, + ), + style: const TextStyle(fontSize: 10), + textAlign: TextAlign.center, + ), + if (topic != null && topic.isNotEmpty) + SelectableLinkify( + text: topic, + textScaleFactor: + MediaQuery.textScalerOf(context).scale(1), + textAlign: TextAlign.center, + options: const LinkifyOptions(humanize: false), + linkStyle: TextStyle( + color: theme.colorScheme.primary, + decoration: TextDecoration.underline, + decorationColor: theme.colorScheme.primary, + ), + onOpen: (url) => + UrlLauncher(context, url.url).launchUrl(), + ), + ], + ), + ); + }, + ), + ), + actions: [ + AdaptiveDialogAction( + bigButtons: true, + borderRadius: AdaptiveDialogAction.topRadius, + onPressed: () => _joinRoom(context), + child: Text( + chunk?.joinRule == 'knock' && + Matrix.of(context).client.getRoomById(chunk!.roomId) == null + ? L10n.of(context).knock + : chunk?.roomType == 'm.space' + ? L10n.of(context).joinSpace + : L10n.of(context).joinRoom, + ), + ), + AdaptiveDialogAction( + bigButtons: true, + borderRadius: AdaptiveDialogAction.bottomRadius, + onPressed: Navigator.of(context).pop, + child: Text(L10n.of(context).close), + ), + ], + ); + } +} diff --git a/lib/widgets/adaptive_dialogs/show_modal_action_popup.dart b/lib/widgets/adaptive_dialogs/show_modal_action_popup.dart new file mode 100644 index 0000000..47db330 --- /dev/null +++ b/lib/widgets/adaptive_dialogs/show_modal_action_popup.dart @@ -0,0 +1,116 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; + +Future showModalActionPopup({ + required BuildContext context, + required List> actions, + String? title, + String? message, + String? cancelLabel, + bool useRootNavigator = true, +}) { + final theme = Theme.of(context); + + switch (theme.platform) { + case TargetPlatform.android: + case TargetPlatform.fuchsia: + case TargetPlatform.windows: + case TargetPlatform.linux: + return showModalBottomSheet( + isScrollControlled: true, + useRootNavigator: useRootNavigator, + context: context, + clipBehavior: Clip.hardEdge, + constraints: BoxConstraints( + maxWidth: 512, + maxHeight: MediaQuery.sizeOf(context).height - 32, + ), + builder: (context) => ListView( + shrinkWrap: true, + children: [ + if (title != null || message != null) ...[ + ListTile( + title: title == null + ? null + : Text( + title, + style: theme.textTheme.labelSmall, + ), + subtitle: message == null ? null : Text(message), + ), + const Divider(height: 1), + ], + ...actions.map( + (action) => ListTile( + leading: action.icon, + title: Text( + action.label, + maxLines: 1, + style: action.isDestructive + ? TextStyle( + color: theme.colorScheme.error, + fontWeight: + action.isDefaultAction ? FontWeight.bold : null, + ) + : null, + ), + onTap: () => Navigator.of(context).pop(action.value), + ), + ), + if (cancelLabel != null) ...[ + const Divider(height: 1), + ListTile( + title: Text(cancelLabel), + onTap: () => Navigator.of(context).pop(null), + ), + ], + ], + ), + ); + case TargetPlatform.iOS: + case TargetPlatform.macOS: + return showCupertinoModalPopup( + context: context, + useRootNavigator: useRootNavigator, + builder: (context) => ConstrainedBox( + constraints: const BoxConstraints(maxWidth: 512), + child: CupertinoActionSheet( + title: title == null ? null : Text(title), + message: message == null ? null : Text(message), + cancelButton: cancelLabel == null + ? null + : CupertinoActionSheetAction( + onPressed: () => Navigator.of(context).pop(null), + child: Text(cancelLabel), + ), + actions: actions + .map( + (action) => CupertinoActionSheetAction( + isDestructiveAction: action.isDestructive, + isDefaultAction: action.isDefaultAction, + onPressed: () => Navigator.of(context).pop(action.value), + child: Text(action.label, maxLines: 1), + ), + ) + .toList(), + ), + ), + ); + } +} + +class AdaptiveModalAction { + final String label; + final T value; + Icon? icon; + final bool isDefaultAction; + final bool isDestructive; + + AdaptiveModalAction({ + required this.label, + required this.value, + this.icon, + this.isDefaultAction = false, + this.isDestructive = false, + }); +} diff --git a/lib/widgets/adaptive_dialogs/show_ok_cancel_alert_dialog.dart b/lib/widgets/adaptive_dialogs/show_ok_cancel_alert_dialog.dart new file mode 100644 index 0000000..542bdb7 --- /dev/null +++ b/lib/widgets/adaptive_dialogs/show_ok_cancel_alert_dialog.dart @@ -0,0 +1,103 @@ +import 'package:flutter/material.dart'; + +import 'package:flutter_linkify/flutter_linkify.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/url_launcher.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/adaptive_dialog_action.dart'; + +enum OkCancelResult { ok, cancel } + +Future showOkCancelAlertDialog({ + required BuildContext context, + required String title, + String? message, + String? okLabel, + String? cancelLabel, + bool isDestructive = false, + bool useRootNavigator = true, +}) => + showAdaptiveDialog( + context: context, + useRootNavigator: useRootNavigator, + builder: (context) => AlertDialog.adaptive( + title: ConstrainedBox( + constraints: const BoxConstraints(maxWidth: 256), + child: Text(title), + ), + content: ConstrainedBox( + constraints: const BoxConstraints(maxWidth: 256), + child: message == null + ? null + : SelectableLinkify( + text: message, + textScaleFactor: MediaQuery.textScalerOf(context).scale(1), + linkStyle: TextStyle( + color: Theme.of(context).colorScheme.primary, + decorationColor: Theme.of(context).colorScheme.primary, + ), + options: const LinkifyOptions(humanize: false), + onOpen: (url) => UrlLauncher(context, url.url).launchUrl(), + ), + ), + actions: [ + AdaptiveDialogAction( + onPressed: () => Navigator.of(context) + .pop(OkCancelResult.cancel), + child: Text(cancelLabel ?? L10n.of(context).cancel), + ), + AdaptiveDialogAction( + onPressed: () => + Navigator.of(context).pop(OkCancelResult.ok), + autofocus: true, + child: Text( + okLabel ?? L10n.of(context).ok, + style: isDestructive + ? TextStyle(color: Theme.of(context).colorScheme.error) + : null, + ), + ), + ], + ), + ); + +Future showOkAlertDialog({ + required BuildContext context, + required String title, + String? message, + String? okLabel, + bool useRootNavigator = true, +}) => + showAdaptiveDialog( + context: context, + useRootNavigator: useRootNavigator, + builder: (context) => AlertDialog.adaptive( + title: ConstrainedBox( + constraints: const BoxConstraints(maxWidth: 256), + child: Text(title), + ), + content: ConstrainedBox( + constraints: const BoxConstraints(maxWidth: 256), + child: message == null + ? null + : SelectableLinkify( + text: message, + textScaleFactor: MediaQuery.textScalerOf(context).scale(1), + linkStyle: TextStyle( + color: Theme.of(context).colorScheme.primary, + decorationColor: Theme.of(context).colorScheme.primary, + ), + options: const LinkifyOptions(humanize: false), + onOpen: (url) => UrlLauncher(context, url.url).launchUrl(), + ), + ), + actions: [ + AdaptiveDialogAction( + onPressed: () => + Navigator.of(context).pop(OkCancelResult.ok), + autofocus: true, + child: Text(okLabel ?? L10n.of(context).close), + ), + ], + ), + ); diff --git a/lib/widgets/adaptive_dialogs/show_text_input_dialog.dart b/lib/widgets/adaptive_dialogs/show_text_input_dialog.dart new file mode 100644 index 0000000..77806ab --- /dev/null +++ b/lib/widgets/adaptive_dialogs/show_text_input_dialog.dart @@ -0,0 +1,108 @@ +import 'package:flutter/material.dart'; + +import 'package:flutter_linkify/flutter_linkify.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/url_launcher.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/adaptive_dialog_action.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/dialog_text_field.dart'; + +Future showTextInputDialog({ + required BuildContext context, + required String title, + String? message, + String? okLabel, + String? cancelLabel, + bool useRootNavigator = true, + String? hintText, + String? labelText, + String? initialText, + String? prefixText, + String? suffixText, + bool obscureText = false, + bool isDestructive = false, + int? minLines, + int? maxLines, + String? Function(String input)? validator, + TextInputType? keyboardType, + int? maxLength, + bool autocorrect = true, +}) { + final controller = TextEditingController(text: initialText); + return showAdaptiveDialog( + context: context, + useRootNavigator: useRootNavigator, + builder: (context) { + final error = ValueNotifier(null); + return AlertDialog.adaptive( + title: ConstrainedBox( + constraints: const BoxConstraints(maxWidth: 256), + child: Text(title), + ), + content: ConstrainedBox( + constraints: const BoxConstraints(maxWidth: 256), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + if (message != null) + SelectableLinkify( + text: message, + textScaleFactor: MediaQuery.textScalerOf(context).scale(1), + linkStyle: TextStyle( + color: Theme.of(context).colorScheme.primary, + decorationColor: Theme.of(context).colorScheme.primary, + ), + options: const LinkifyOptions(humanize: false), + onOpen: (url) => UrlLauncher(context, url.url).launchUrl(), + ), + const SizedBox(height: 16), + ValueListenableBuilder( + valueListenable: error, + builder: (context, error, _) { + return DialogTextField( + hintText: hintText, + errorText: error, + labelText: labelText, + controller: controller, + initialText: initialText, + prefixText: prefixText, + suffixText: suffixText, + minLines: minLines, + maxLines: maxLines, + maxLength: maxLength, + keyboardType: keyboardType, + obscureText: obscureText, + ); + }, + ), + ], + ), + ), + actions: [ + AdaptiveDialogAction( + onPressed: () => Navigator.of(context).pop(null), + child: Text(cancelLabel ?? L10n.of(context).cancel), + ), + AdaptiveDialogAction( + onPressed: () { + final input = controller.text; + final errorText = validator?.call(input); + if (errorText != null) { + error.value = errorText; + return; + } + Navigator.of(context).pop(input); + }, + autofocus: true, + child: Text( + okLabel ?? L10n.of(context).ok, + style: isDestructive + ? TextStyle(color: Theme.of(context).colorScheme.error) + : null, + ), + ), + ], + ); + }, + ); +} diff --git a/lib/widgets/adaptive_dialogs/user_dialog.dart b/lib/widgets/adaptive_dialogs/user_dialog.dart new file mode 100644 index 0000000..e3a07c7 --- /dev/null +++ b/lib/widgets/adaptive_dialogs/user_dialog.dart @@ -0,0 +1,213 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +import 'package:flutter_linkify/flutter_linkify.dart'; +import 'package:go_router/go_router.dart'; +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/config/themes.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/date_time_extension.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/adaptive_dialog_action.dart'; +import 'package:fluffychat/widgets/avatar.dart'; +import 'package:fluffychat/widgets/presence_builder.dart'; +import '../../utils/url_launcher.dart'; +import '../future_loading_dialog.dart'; +import '../hover_builder.dart'; +import '../matrix.dart'; +import '../mxc_image_viewer.dart'; + +class UserDialog extends StatelessWidget { + static Future show({ + required BuildContext context, + required Profile profile, + bool noProfileWarning = false, + }) => + showAdaptiveDialog( + context: context, + barrierDismissible: true, + builder: (context) => UserDialog( + profile, + noProfileWarning: noProfileWarning, + ), + ); + + final Profile profile; + final bool noProfileWarning; + + const UserDialog(this.profile, {this.noProfileWarning = false, super.key}); + + @override + Widget build(BuildContext context) { + final client = Matrix.of(context).client; + final dmRoomId = client.getDirectChatFromUserId(profile.userId); + final displayname = profile.displayName ?? + profile.userId.localpart ?? + L10n.of(context).user; + var copied = false; + final theme = Theme.of(context); + final avatar = profile.avatarUrl; + return AlertDialog.adaptive( + title: ConstrainedBox( + constraints: const BoxConstraints(maxWidth: 256), + child: Center(child: Text(displayname, textAlign: TextAlign.center)), + ), + content: ConstrainedBox( + constraints: const BoxConstraints(maxWidth: 256, maxHeight: 256), + child: PresenceBuilder( + userId: profile.userId, + client: Matrix.of(context).client, + builder: (context, presence) { + if (presence == null) return const SizedBox.shrink(); + final statusMsg = presence.statusMsg; + final lastActiveTimestamp = presence.lastActiveTimestamp; + final presenceText = presence.currentlyActive == true + ? L10n.of(context).currentlyActive + : lastActiveTimestamp != null + ? L10n.of(context).lastActiveAgo( + lastActiveTimestamp.localizedTimeShort(context), + ) + : null; + return SingleChildScrollView( + child: Column( + spacing: 8, + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + Center( + child: Avatar( + mxContent: avatar, + name: displayname, + size: Avatar.defaultSize * 2, + onTap: avatar != null + ? () => showDialog( + context: context, + builder: (_) => MxcImageViewer(avatar), + ) + : null, + ), + ), + HoverBuilder( + builder: (context, hovered) => StatefulBuilder( + builder: (context, setState) => MouseRegion( + cursor: SystemMouseCursors.click, + child: GestureDetector( + onTap: () { + Clipboard.setData( + ClipboardData(text: profile.userId), + ); + setState(() { + copied = true; + }); + }, + child: RichText( + text: TextSpan( + children: [ + WidgetSpan( + child: Padding( + padding: const EdgeInsets.only(right: 4.0), + child: AnimatedScale( + duration: FluffyThemes.animationDuration, + curve: FluffyThemes.animationCurve, + scale: hovered + ? 1.33 + : copied + ? 1.25 + : 1.0, + child: Icon( + copied + ? Icons.check_circle + : Icons.copy, + size: 12, + color: copied ? Colors.green : null, + ), + ), + ), + ), + TextSpan(text: profile.userId), + ], + style: theme.textTheme.bodyMedium + ?.copyWith(fontSize: 10), + ), + textAlign: TextAlign.center, + ), + ), + ), + ), + ), + if (presenceText != null) + Text( + presenceText, + style: const TextStyle(fontSize: 10), + textAlign: TextAlign.center, + ), + if (statusMsg != null) + SelectableLinkify( + text: statusMsg, + textScaleFactor: + MediaQuery.textScalerOf(context).scale(1), + textAlign: TextAlign.center, + options: const LinkifyOptions(humanize: false), + linkStyle: TextStyle( + color: theme.colorScheme.primary, + decoration: TextDecoration.underline, + decorationColor: theme.colorScheme.primary, + ), + onOpen: (url) => + UrlLauncher(context, url.url).launchUrl(), + ), + ], + ), + ); + }, + ), + ), + actions: [ + if (client.userID != profile.userId) ...[ + AdaptiveDialogAction( + borderRadius: AdaptiveDialogAction.topRadius, + bigButtons: true, + onPressed: () async { + final router = GoRouter.of(context); + final roomIdResult = await showFutureLoadingDialog( + context: context, + future: () => client.startDirectChat(profile.userId), + ); + final roomId = roomIdResult.result; + if (roomId == null) return; + if (context.mounted) Navigator.of(context).pop(); + router.go('/rooms/$roomId'); + }, + child: Text( + dmRoomId == null + ? L10n.of(context).startConversation + : L10n.of(context).sendAMessage, + ), + ), + AdaptiveDialogAction( + bigButtons: true, + borderRadius: AdaptiveDialogAction.centerRadius, + onPressed: () { + final router = GoRouter.of(context); + Navigator.of(context).pop(); + router.go( + '/rooms/settings/security/ignorelist', + extra: profile.userId, + ); + }, + child: Text( + L10n.of(context).ignoreUser, + style: TextStyle(color: theme.colorScheme.error), + ), + ), + ], + AdaptiveDialogAction( + bigButtons: true, + borderRadius: AdaptiveDialogAction.bottomRadius, + onPressed: Navigator.of(context).pop, + child: Text(L10n.of(context).close), + ), + ], + ); + } +} diff --git a/lib/widgets/app_lock.dart b/lib/widgets/app_lock.dart new file mode 100644 index 0000000..e2a9fc8 --- /dev/null +++ b/lib/widgets/app_lock.dart @@ -0,0 +1,113 @@ +import 'package:flutter/material.dart'; + +import 'package:flutter_secure_storage/flutter_secure_storage.dart'; +import 'package:matrix/matrix.dart'; +import 'package:provider/provider.dart'; + +import 'package:fluffychat/widgets/lock_screen.dart'; + +class AppLockWidget extends StatefulWidget { + const AppLockWidget({ + required this.child, + required this.pincode, + required this.clients, + super.key, + }); + + final List clients; + final String? pincode; + final Widget child; + + @override + State createState() => AppLock(); +} + +class AppLock extends State with WidgetsBindingObserver { + String? _pincode; + bool _isLocked = false; + bool _paused = false; + bool get isActive => + _pincode != null && + int.tryParse(_pincode!) != null && + _pincode!.length == 4 && + !_paused; + + @override + void initState() { + _pincode = widget.pincode; + _isLocked = isActive; + super.initState(); + WidgetsBinding.instance.addObserver(this); + WidgetsBinding.instance.addPostFrameCallback(_checkLoggedIn); + } + + void _checkLoggedIn(_) async { + if (widget.clients.any((client) => client.isLogged())) return; + + await changePincode(null); + setState(() { + _isLocked = false; + }); + } + + @override + void didChangeAppLifecycleState(AppLifecycleState state) { + if (isActive && + state == AppLifecycleState.hidden && + !_isLocked && + isActive) { + showLockScreen(); + } + } + + bool get isLocked => _isLocked; + + Future changePincode(String? pincode) async { + await const FlutterSecureStorage().write( + key: 'chat.hunni.app_lock', + value: pincode, + ); + _pincode = pincode; + return; + } + + bool unlock(String pincode) { + final isCorrect = pincode == _pincode; + if (isCorrect) { + setState(() { + _isLocked = false; + }); + } + return isCorrect; + } + + void showLockScreen() => setState(() { + _isLocked = true; + }); + + Future pauseWhile(Future future) async { + _paused = true; + try { + return await future; + } finally { + _paused = false; + } + } + + static AppLock of(BuildContext context) => Provider.of( + context, + listen: false, + ); + + @override + Widget build(BuildContext context) => Provider( + create: (_) => this, + child: Stack( + fit: StackFit.expand, + children: [ + widget.child, + if (isLocked) const LockScreen(), + ], + ), + ); +} diff --git a/lib/widgets/avatar.dart b/lib/widgets/avatar.dart new file mode 100644 index 0000000..fdecdb5 --- /dev/null +++ b/lib/widgets/avatar.dart @@ -0,0 +1,156 @@ +import 'package:flutter/material.dart'; + +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/utils/string_color.dart'; +import 'package:fluffychat/widgets/mxc_image.dart'; +import 'package:fluffychat/widgets/presence_builder.dart'; + +class Avatar extends StatelessWidget { + final Uri? mxContent; + final String? name; + final double size; + final void Function()? onTap; + static const double defaultSize = 44; + final Client? client; + final String? presenceUserId; + final Color? presenceBackgroundColor; + final BorderRadius? borderRadius; + final IconData? icon; + final BorderSide? border; + final Color? backgroundColor; + final Color? textColor; + + const Avatar({ + this.mxContent, + this.name, + this.size = defaultSize, + this.onTap, + this.client, + this.presenceUserId, + this.presenceBackgroundColor, + this.borderRadius, + this.border, + this.icon, + this.backgroundColor, + this.textColor, + super.key, + }); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + final name = this.name; + final fallbackLetters = + name == null || name.isEmpty ? '@' : name.substring(0, 1); + + final noPic = mxContent == null || + mxContent.toString().isEmpty || + mxContent.toString() == 'null'; + final borderRadius = this.borderRadius ?? BorderRadius.circular(size / 2); + final presenceUserId = this.presenceUserId; + final container = Stack( + children: [ + SizedBox( + width: size, + height: size, + child: Material( + color: theme.brightness == Brightness.light + ? Colors.white + : Colors.black, + shape: RoundedRectangleBorder( + borderRadius: borderRadius, + side: border ?? BorderSide.none, + ), + clipBehavior: Clip.antiAlias, + child: MxcImage( + client: client, + borderRadius: borderRadius, + key: ValueKey(mxContent.toString()), + cacheKey: '${mxContent}_$size', + uri: mxContent, + fit: BoxFit.cover, + width: size, + height: size, + placeholder: (_) => noPic + ? Container( + decoration: BoxDecoration( + color: backgroundColor ?? name?.lightColorAvatar, + ), + alignment: Alignment.center, + child: Text( + fallbackLetters, + textAlign: TextAlign.center, + style: TextStyle( + fontFamily: 'RobotoMono', + color: textColor ?? Colors.white, + fontWeight: FontWeight.bold, + fontSize: (size / 2.5).roundToDouble(), + ), + ), + ) + : Center( + child: Icon( + Icons.person_2, + color: theme.colorScheme.tertiary, + size: size / 1.5, + ), + ), + ), + ), + ), + 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: 16, + height: 16, + decoration: BoxDecoration( + color: presenceBackgroundColor ?? theme.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.colorScheme.surface, + ), + ), + ), + ), + ); + }, + ), + ], + ); + if (onTap == null) return container; + return MouseRegion( + cursor: SystemMouseCursors.click, + child: GestureDetector( + onTap: onTap, + child: container, + ), + ); + } +} diff --git a/lib/widgets/avatar_page_header.dart b/lib/widgets/avatar_page_header.dart new file mode 100644 index 0000000..e00eca9 --- /dev/null +++ b/lib/widgets/avatar_page_header.dart @@ -0,0 +1,100 @@ +import 'package:flutter/material.dart'; + +import 'package:fluffychat/config/themes.dart'; + +class AvatarPageHeader extends StatelessWidget { + final Widget avatar; + final void Function()? onAvatarEdit; + final Widget? textButtonLeft, textButtonRight; + final List iconButtons; + + const AvatarPageHeader({ + super.key, + required this.avatar, + this.onAvatarEdit, + this.iconButtons = const [], + this.textButtonLeft, + this.textButtonRight, + }); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + final onAvatarEdit = this.onAvatarEdit; + return Center( + child: ConstrainedBox( + constraints: const BoxConstraints(maxWidth: FluffyThemes.columnWidth), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.center, + spacing: 8.0, + children: [ + Stack( + children: [ + avatar, + if (onAvatarEdit != null) + Positioned( + bottom: 0, + right: 0, + child: FloatingActionButton.small( + elevation: 2, + onPressed: onAvatarEdit, + heroTag: null, + child: const Icon(Icons.camera_alt_outlined), + ), + ), + ], + ), + TextButtonTheme( + data: TextButtonThemeData( + style: TextButton.styleFrom( + disabledForegroundColor: theme.colorScheme.onSurface, + foregroundColor: theme.colorScheme.onSurface, + textStyle: const TextStyle(fontWeight: FontWeight.normal), + ), + ), + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 16.0), + child: LayoutBuilder( + builder: (context, constraints) { + return Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + ConstrainedBox( + constraints: BoxConstraints( + maxWidth: constraints.maxWidth / 2, + ), + child: textButtonLeft, + ), + ConstrainedBox( + constraints: BoxConstraints( + maxWidth: constraints.maxWidth / 2, + ), + child: textButtonRight, + ), + ], + ); + }, + ), + ), + ), + IconButtonTheme( + data: IconButtonThemeData( + style: IconButton.styleFrom( + backgroundColor: theme.colorScheme.surfaceContainer, + iconSize: 24, + padding: const EdgeInsets.all(16), + ), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: iconButtons, + ), + ), + const SizedBox(height: 0.0), + ], + ), + ), + ); + } +} diff --git a/lib/widgets/blur_hash.dart b/lib/widgets/blur_hash.dart new file mode 100644 index 0000000..d4ad1dd --- /dev/null +++ b/lib/widgets/blur_hash.dart @@ -0,0 +1,104 @@ +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; + +import 'package:blurhash_dart/blurhash_dart.dart' as b; +import 'package:image/image.dart' as image; + +class BlurHash extends StatefulWidget { + final double width; + final double height; + final String blurhash; + final BoxFit fit; + + const BlurHash({ + super.key, + String? blurhash, + required this.width, + required this.height, + this.fit = BoxFit.cover, + }) : blurhash = blurhash ?? 'LEHV6nWB2yk8pyo0adR*.7kCMdnj'; + + @override + State createState() => _BlurHashState(); +} + +class _BlurHashState extends State { + Uint8List? _data; + + static Future getBlurhashData( + BlurhashData blurhashData, + ) async { + final blurhash = b.BlurHash.decode(blurhashData.hsh); + final img = blurhash.toImage(blurhashData.w, blurhashData.h); + return Uint8List.fromList(image.encodePng(img)); + } + + Future _computeBlurhashData() async { + if (_data != null) return _data!; + final ratio = widget.width / widget.height; + var width = 32; + var height = 32; + if (ratio > 1.0) { + height = (width / ratio).round(); + } else { + width = (height * ratio).round(); + } + + return _data ??= await compute( + getBlurhashData, + BlurhashData( + hsh: widget.blurhash, + w: width, + h: height, + ), + ); + } + + @override + Widget build(BuildContext context) { + return FutureBuilder( + future: _computeBlurhashData(), + initialData: _data, + builder: (context, snapshot) { + final data = snapshot.data; + if (data == null) { + return Container( + width: widget.width, + height: widget.height, + color: Theme.of(context).colorScheme.onInverseSurface, + ); + } + return Image.memory( + data, + fit: widget.fit, + width: widget.width, + height: widget.height, + ); + }, + ); + } +} + +class BlurhashData { + final String hsh; + final int w; + final int h; + + const BlurhashData({ + required this.hsh, + required this.w, + required this.h, + }); + + factory BlurhashData.fromJson(Map json) => BlurhashData( + hsh: json['hsh'], + w: json['w'], + h: json['h'], + ); + + Map toJson() => { + 'hsh': hsh, + 'w': w, + 'h': h, + }; +} diff --git a/lib/widgets/chat_settings_popup_menu.dart b/lib/widgets/chat_settings_popup_menu.dart new file mode 100644 index 0000000..6969fd9 --- /dev/null +++ b/lib/widgets/chat_settings_popup_menu.dart @@ -0,0 +1,193 @@ +import 'dart:async'; + +import 'package:flutter/material.dart'; + +import 'package:go_router/go_router.dart'; +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_ok_cancel_alert_dialog.dart'; +import 'package:fluffychat/widgets/future_loading_dialog.dart'; +import 'matrix.dart'; + +enum ChatPopupMenuActions { details, mute, unmute, emote, leave, search } + +class ChatSettingsPopupMenu extends StatefulWidget { + final Room room; + final bool displayChatDetails; + + const ChatSettingsPopupMenu(this.room, this.displayChatDetails, {super.key}); + + @override + ChatSettingsPopupMenuState createState() => ChatSettingsPopupMenuState(); +} + +class ChatSettingsPopupMenuState extends State { + StreamSubscription? notificationChangeSub; + + @override + void dispose() { + notificationChangeSub?.cancel(); + super.dispose(); + } + + void goToEmoteSettings() async { + final room = widget.room; + // okay, we need to test if there are any emote state events other than the default one + // if so, we need to be directed to a selection screen for which pack we want to look at + // otherwise, we just open the normal one. + if ((room.states['im.ponies.room_emotes'] ?? {}) + .keys + .any((String s) => s.isNotEmpty)) { + context.push('/rooms/${room.id}/details/multiple_emotes'); + } else { + context.push('/rooms/${room.id}/details/emotes'); + } + } + + @override + Widget build(BuildContext context) { + notificationChangeSub ??= Matrix.of(context) + .client + .onSync + .stream + .where( + (syncUpdate) => + syncUpdate.accountData?.any( + (accountData) => accountData.type == 'm.push_rules', + ) ?? + false, + ) + .listen( + (u) => setState(() {}), + ); + return Stack( + alignment: Alignment.center, + children: [ + const SizedBox.shrink(), + PopupMenuButton( + useRootNavigator: true, + onSelected: (choice) async { + switch (choice) { + case ChatPopupMenuActions.leave: + final router = GoRouter.of(context); + final confirmed = await showOkCancelAlertDialog( + context: context, + title: L10n.of(context).areYouSure, + message: L10n.of(context).archiveRoomDescription, + okLabel: L10n.of(context).leave, + cancelLabel: L10n.of(context).cancel, + isDestructive: true, + ); + if (confirmed != OkCancelResult.ok) return; + final result = await showFutureLoadingDialog( + context: context, + future: () => widget.room.leave(), + ); + if (result.error == null) { + router.go('/rooms'); + } + + break; + case ChatPopupMenuActions.mute: + await showFutureLoadingDialog( + context: context, + future: () => + widget.room.setPushRuleState(PushRuleState.mentionsOnly), + ); + break; + case ChatPopupMenuActions.unmute: + await showFutureLoadingDialog( + context: context, + future: () => + widget.room.setPushRuleState(PushRuleState.notify), + ); + break; + case ChatPopupMenuActions.details: + _showChatDetails(); + break; + case ChatPopupMenuActions.search: + context.go('/rooms/${widget.room.id}/search'); + break; + case ChatPopupMenuActions.emote: + goToEmoteSettings(); + } + }, + itemBuilder: (BuildContext context) => [ + if (widget.displayChatDetails) + PopupMenuItem( + value: ChatPopupMenuActions.details, + child: Row( + children: [ + const Icon(Icons.info_outline_rounded), + const SizedBox(width: 12), + Text(L10n.of(context).chatDetails), + ], + ), + ), + if (widget.room.pushRuleState == PushRuleState.notify) + PopupMenuItem( + value: ChatPopupMenuActions.mute, + child: Row( + children: [ + const Icon(Icons.notifications_off_outlined), + const SizedBox(width: 12), + Text(L10n.of(context).muteChat), + ], + ), + ) + else + PopupMenuItem( + value: ChatPopupMenuActions.unmute, + child: Row( + children: [ + const Icon(Icons.notifications_on_outlined), + const SizedBox(width: 12), + Text(L10n.of(context).unmuteChat), + ], + ), + ), + PopupMenuItem( + value: ChatPopupMenuActions.search, + child: Row( + children: [ + const Icon(Icons.search_outlined), + const SizedBox(width: 12), + Text(L10n.of(context).search), + ], + ), + ), + PopupMenuItem( + value: ChatPopupMenuActions.emote, + child: Row( + children: [ + const Icon(Icons.emoji_emotions_outlined), + const SizedBox(width: 12), + Text(L10n.of(context).emoteSettings), + ], + ), + ), + PopupMenuItem( + value: ChatPopupMenuActions.leave, + child: Row( + children: [ + const Icon(Icons.delete_outlined), + const SizedBox(width: 12), + Text(L10n.of(context).leave), + ], + ), + ), + ], + ), + ], + ); + } + + void _showChatDetails() { + if (GoRouterState.of(context).uri.path.endsWith('/details')) { + context.go('/rooms/${widget.room.id}'); + } else { + context.go('/rooms/${widget.room.id}/details'); + } + } +} diff --git a/lib/widgets/config_viewer.dart b/lib/widgets/config_viewer.dart new file mode 100644 index 0000000..b053731 --- /dev/null +++ b/lib/widgets/config_viewer.dart @@ -0,0 +1,104 @@ +import 'package:flutter/material.dart'; + +import 'package:go_router/go_router.dart'; +import 'package:shared_preferences/shared_preferences.dart'; + +import 'package:fluffychat/config/setting_keys.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_text_input_dialog.dart'; +import 'package:fluffychat/widgets/matrix.dart'; + +class ConfigViewer extends StatefulWidget { + const ConfigViewer({super.key}); + + @override + State createState() => _ConfigViewerState(); +} + +class _ConfigViewerState extends State { + void _changeSetting( + AppSettings appSetting, + SharedPreferences store, + String initialValue, + ) async { + if (appSetting is AppSettings) { + await appSetting.setItem(!(initialValue == 'true')); + setState(() {}); + return; + } + + final value = await showTextInputDialog( + context: context, + title: appSetting.name, + hintText: appSetting.defaultValue.toString(), + initialText: initialValue, + ); + if (value == null) return; + + if (appSetting is AppSettings) { + await appSetting.setItem(value); + } + if (appSetting is AppSettings) { + await appSetting.setItem(int.parse(value)); + } + if (appSetting is AppSettings) { + await appSetting.setItem(double.parse(value)); + } + + setState(() {}); + } + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + return Scaffold( + appBar: AppBar( + title: const Text('Advanced configurations'), + leading: BackButton( + onPressed: () => context.go('/'), + ), + ), + body: Column( + children: [ + Container( + margin: const EdgeInsets.all(16), + padding: const EdgeInsets.all(16), + color: theme.colorScheme.errorContainer, + child: Text( + 'Changing configs by hand is untested! Use without any warranty!', + style: TextStyle( + color: theme.colorScheme.onErrorContainer, + ), + ), + ), + Expanded( + child: ListView.builder( + itemCount: AppSettings.values.length, + itemBuilder: (context, i) { + final store = Matrix.of(context).store; + final appSetting = AppSettings.values[i]; + var value = ''; + if (appSetting is AppSettings) { + value = appSetting.value; + } + if (appSetting is AppSettings) { + value = appSetting.value.toString(); + } + if (appSetting is AppSettings) { + value = appSetting.value.toString(); + } + if (appSetting is AppSettings) { + value = appSetting.value.toString(); + } + return ListTile( + title: Text(appSetting.name), + subtitle: Text(value), + onTap: () => _changeSetting(appSetting, store, value), + ); + }, + ), + ), + ], + ), + ); + } +} diff --git a/lib/widgets/error_widget.dart b/lib/widgets/error_widget.dart new file mode 100644 index 0000000..b14a18b --- /dev/null +++ b/lib/widgets/error_widget.dart @@ -0,0 +1,45 @@ +import 'package:flutter/material.dart'; + +import 'package:fluffychat/utils/error_reporter.dart'; + +class FluffyChatErrorWidget extends StatefulWidget { + final FlutterErrorDetails details; + const FluffyChatErrorWidget(this.details, {super.key}); + + @override + State createState() => _FluffyChatErrorWidgetState(); +} + +class _FluffyChatErrorWidgetState extends State { + static final Set knownExceptions = {}; + @override + void initState() { + super.initState(); + + if (knownExceptions.contains(widget.details.exception.toString())) { + return; + } + knownExceptions.add(widget.details.exception.toString()); + WidgetsBinding.instance.addPostFrameCallback((_) { + ErrorReporter(context, 'Error Widget').onErrorCallback( + widget.details.exception, + widget.details.stack, + ); + }); + } + + @override + Widget build(BuildContext context) { + return Material( + color: Colors.orange, + child: Placeholder( + child: Center( + child: Material( + color: Colors.white.withAlpha(230), + borderRadius: BorderRadius.circular(8), + ), + ), + ), + ); + } +} diff --git a/lib/widgets/fluffy_chat_app.dart b/lib/widgets/fluffy_chat_app.dart new file mode 100644 index 0000000..8c37c81 --- /dev/null +++ b/lib/widgets/fluffy_chat_app.dart @@ -0,0 +1,69 @@ +import 'package:flutter/material.dart'; + +import 'package:go_router/go_router.dart'; +import 'package:matrix/matrix.dart'; +import 'package:shared_preferences/shared_preferences.dart'; + +import 'package:fluffychat/config/routes.dart'; +import 'package:fluffychat/config/setting_keys.dart'; +import 'package:fluffychat/config/themes.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/widgets/app_lock.dart'; +import 'package:fluffychat/widgets/theme_builder.dart'; +import '../utils/custom_scroll_behaviour.dart'; +import 'matrix.dart'; + +class FluffyChatApp extends StatelessWidget { + final Widget? testWidget; + final List clients; + final String? pincode; + final SharedPreferences store; + + const FluffyChatApp({ + super.key, + this.testWidget, + required this.clients, + required this.store, + this.pincode, + }); + + /// getInitialLink may rereturn the value multiple times if this view is + /// opened multiple times for example if the user logs out after they logged + /// in with qr code or magic link. + static bool gotInitialLink = false; + + // Router must be outside of build method so that hot reload does not reset + // the current path. + static final GoRouter router = GoRouter( + routes: AppRoutes.routes, + debugLogDiagnostics: true, + ); + + @override + Widget build(BuildContext context) { + return ThemeBuilder( + builder: (context, themeMode, primaryColor) => MaterialApp.router( + title: AppSettings.applicationName.value, + themeMode: themeMode, + theme: FluffyThemes.buildTheme(context, Brightness.light, primaryColor), + darkTheme: + FluffyThemes.buildTheme(context, Brightness.dark, primaryColor), + scrollBehavior: CustomScrollBehavior(), + localizationsDelegates: L10n.localizationsDelegates, + supportedLocales: L10n.supportedLocales, + routerConfig: router, + builder: (context, child) => AppLockWidget( + pincode: pincode, + clients: clients, + // Need a navigator above the Matrix widget for + // displaying dialogs + child: Matrix( + clients: clients, + store: store, + child: testWidget ?? child, + ), + ), + ), + ); + } +} diff --git a/lib/widgets/future_loading_dialog.dart b/lib/widgets/future_loading_dialog.dart new file mode 100644 index 0000000..7fde990 --- /dev/null +++ b/lib/widgets/future_loading_dialog.dart @@ -0,0 +1,161 @@ +import 'dart:async'; + +import 'package:flutter/material.dart'; + +import 'package:async/async.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/localized_exception_extension.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/adaptive_dialog_action.dart'; + +/// Displays a loading dialog which reacts to the given [future]. The dialog +/// will be dismissed and the value will be returned when the future completes. +/// If an error occured, then [onError] will be called and this method returns +/// null. +Future> showFutureLoadingDialog({ + required BuildContext context, + Future Function()? future, + Future Function(void Function(double?) setProgress)? futureWithProgress, + String? title, + String? backLabel, + bool barrierDismissible = false, + bool delay = true, + ExceptionContext? exceptionContext, + bool ignoreError = false, +}) async { + assert(future != null || futureWithProgress != null); + final onProgressStream = StreamController(); + final futureExec = + futureWithProgress?.call(onProgressStream.add) ?? future!(); + final resultFuture = ResultFuture(futureExec); + + if (delay) { + var i = 3; + while (i > 0) { + final result = resultFuture.result; + if (result != null) { + if (result.isError) break; + return result; + } + await Future.delayed(const Duration(milliseconds: 100)); + i--; + } + } + + final result = await showAdaptiveDialog>( + context: context, + barrierDismissible: barrierDismissible, + builder: (BuildContext context) => LoadingDialog( + future: futureExec, + title: title, + backLabel: backLabel, + exceptionContext: exceptionContext, + onProgressStream: onProgressStream.stream, + ), + ); + return result ?? + Result.error( + Exception('FutureDialog canceled'), + StackTrace.current, + ); +} + +class LoadingDialog extends StatefulWidget { + final String? title; + final String? backLabel; + final Future future; + final ExceptionContext? exceptionContext; + final Stream onProgressStream; + + const LoadingDialog({ + super.key, + required this.future, + this.title, + this.backLabel, + this.exceptionContext, + required this.onProgressStream, + }); + + @override + LoadingDialogState createState() => LoadingDialogState(); +} + +class LoadingDialogState extends State { + Object? exception; + StackTrace? stackTrace; + + @override + void initState() { + super.initState(); + widget.future.then( + (result) => Navigator.of(context).pop>(Result.value(result)), + onError: (e, s) => setState(() { + exception = e; + stackTrace = s; + }), + ); + } + + @override + Widget build(BuildContext context) { + final exception = this.exception; + final titleLabel = exception != null + ? exception.toLocalizedString(context, widget.exceptionContext) + : widget.title ?? L10n.of(context).loadingPleaseWait; + + return AlertDialog.adaptive( + title: exception == null + ? null + : Icon( + Icons.error_outline_outlined, + color: Theme.of(context).colorScheme.error, + size: 48, + ), + content: ConstrainedBox( + constraints: const BoxConstraints(maxWidth: 256), + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + if (exception == null) ...[ + StreamBuilder( + stream: widget.onProgressStream, + builder: (context, snapshot) => + CircularProgressIndicator.adaptive( + value: snapshot.data, + ), + ), + const SizedBox(width: 20), + ], + Expanded( + child: Text( + titleLabel, + maxLines: 4, + textAlign: exception == null ? TextAlign.left : null, + overflow: TextOverflow.ellipsis, + ), + ), + ], + ), + ), + actions: exception == null + ? null + : [ + AdaptiveDialogAction( + onPressed: () => Navigator.of(context).pop>( + Result.error( + exception, + stackTrace, + ), + ), + child: Text(widget.backLabel ?? L10n.of(context).close), + ), + ], + ); + } +} + +extension DeprecatedApiAccessExtension on Result { + T? get result => asValue?.value; + + Object? get error => asError?.error; +} diff --git a/lib/widgets/hover_builder.dart b/lib/widgets/hover_builder.dart new file mode 100644 index 0000000..f895d85 --- /dev/null +++ b/lib/widgets/hover_builder.dart @@ -0,0 +1,29 @@ +import 'package:flutter/material.dart'; + +class HoverBuilder extends StatefulWidget { + final Widget Function(BuildContext context, bool hovered) builder; + const HoverBuilder({required this.builder, super.key}); + + @override + State createState() => _HoverBuilderState(); +} + +class _HoverBuilderState extends State { + bool hovered = false; + @override + Widget build(BuildContext context) { + return MouseRegion( + onEnter: (_) => hovered + ? null + : setState(() { + hovered = true; + }), + onExit: (_) => !hovered + ? null + : setState(() { + hovered = false; + }), + child: widget.builder(context, hovered), + ); + } +} diff --git a/lib/widgets/layouts/empty_page.dart b/lib/widgets/layouts/empty_page.dart new file mode 100644 index 0000000..5a0be78 --- /dev/null +++ b/lib/widgets/layouts/empty_page.dart @@ -0,0 +1,32 @@ +import 'dart:math'; + +import 'package:flutter/material.dart'; + +class EmptyPage extends StatelessWidget { + static const double _width = 400; + const EmptyPage({super.key}); + @override + Widget build(BuildContext context) { + final width = min(MediaQuery.sizeOf(context).width, EmptyPage._width) / 2; + final theme = Theme.of(context); + return Scaffold( + // Add invisible appbar to make status bar on Android tablets bright. + appBar: AppBar( + automaticallyImplyLeading: false, + elevation: 0, + backgroundColor: Colors.transparent, + ), + extendBodyBehindAppBar: true, + body: Container( + alignment: Alignment.center, + child: Image.asset( + 'assets/logo_transparent.png', + color: theme.colorScheme.surfaceContainerHigh, + width: width, + height: width, + filterQuality: FilterQuality.medium, + ), + ), + ); + } +} diff --git a/lib/widgets/layouts/login_scaffold.dart b/lib/widgets/layouts/login_scaffold.dart new file mode 100644 index 0000000..6559fad --- /dev/null +++ b/lib/widgets/layouts/login_scaffold.dart @@ -0,0 +1,129 @@ +import 'package:flutter/material.dart'; + +import 'package:url_launcher/url_launcher.dart'; +import 'package:url_launcher/url_launcher_string.dart'; + +import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/config/themes.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/platform_infos.dart'; + +class LoginScaffold extends StatelessWidget { + final Widget body; + final AppBar? appBar; + final bool enforceMobileMode; + + const LoginScaffold({ + super.key, + required this.body, + this.appBar, + this.enforceMobileMode = false, + }); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + final isMobileMode = + enforceMobileMode || !FluffyThemes.isColumnMode(context); + if (isMobileMode) { + return Scaffold( + key: const Key('LoginScaffold'), + appBar: appBar, + body: SafeArea(child: body), + ); + } + return Container( + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + theme.colorScheme.surfaceContainerLow, + theme.colorScheme.surfaceContainer, + theme.colorScheme.surfaceContainerHighest, + ], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + ), + child: Column( + children: [ + const SizedBox(height: 16), + Expanded( + child: Center( + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 16.0), + child: Material( + borderRadius: BorderRadius.circular(AppConfig.borderRadius), + clipBehavior: Clip.hardEdge, + elevation: theme.appBarTheme.scrolledUnderElevation ?? 4, + shadowColor: theme.appBarTheme.shadowColor, + child: ConstrainedBox( + constraints: isMobileMode + ? const BoxConstraints() + : const BoxConstraints(maxWidth: 480, maxHeight: 640), + child: Scaffold( + key: const Key('LoginScaffold'), + appBar: appBar, + body: SafeArea(child: body), + ), + ), + ), + ), + ), + ), + const _PrivacyButtons(mainAxisAlignment: MainAxisAlignment.center), + ], + ), + ); + } +} + +class _PrivacyButtons extends StatelessWidget { + final MainAxisAlignment mainAxisAlignment; + const _PrivacyButtons({required this.mainAxisAlignment}); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + final shadowTextStyle = TextStyle(color: theme.colorScheme.secondary); + return SizedBox( + height: 64, + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Row( + mainAxisAlignment: mainAxisAlignment, + children: [ + TextButton( + onPressed: () => launchUrlString(AppConfig.website), + child: Text( + L10n.of(context).website, + style: shadowTextStyle, + ), + ), + TextButton( + onPressed: () => launchUrlString(AppConfig.supportUrl), + child: Text( + L10n.of(context).help, + style: shadowTextStyle, + ), + ), + TextButton( + onPressed: () => launchUrl(AppConfig.privacyUrl), + child: Text( + L10n.of(context).privacy, + style: shadowTextStyle, + ), + ), + TextButton( + onPressed: () => PlatformInfos.showDialog(context), + child: Text( + L10n.of(context).about, + style: shadowTextStyle, + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/widgets/layouts/max_width_body.dart b/lib/widgets/layouts/max_width_body.dart new file mode 100644 index 0000000..5720d94 --- /dev/null +++ b/lib/widgets/layouts/max_width_body.dart @@ -0,0 +1,63 @@ +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 double maxWidth; + final bool withScrolling; + final EdgeInsets? innerPadding; + + const MaxWidthBody({ + required this.child, + this.maxWidth = 600, + this.withScrolling = true, + this.innerPadding, + super.key, + }); + @override + Widget build(BuildContext context) { + return SafeArea( + child: LayoutBuilder( + builder: (context, constraints) { + final theme = Theme.of(context); + + 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( + shape: RoundedRectangleBorder( + borderRadius: + BorderRadius.circular(AppConfig.borderRadius), + side: BorderSide( + color: theme.dividerColor, + ), + ), + clipBehavior: Clip.hardEdge, + child: Padding( + padding: const EdgeInsets.symmetric(vertical: 16.0), + child: child, + ), + ), + ), + ); + if (!withScrolling) return body; + + return SingleChildScrollView( + padding: innerPadding, + physics: const ScrollPhysics(), + child: body, + ); + }, + ), + ); + } +} diff --git a/lib/widgets/layouts/two_column_layout.dart b/lib/widgets/layouts/two_column_layout.dart new file mode 100644 index 0000000..86a6f56 --- /dev/null +++ b/lib/widgets/layouts/two_column_layout.dart @@ -0,0 +1,42 @@ +import 'package:flutter/material.dart'; + +import 'package:fluffychat/config/themes.dart'; + +class TwoColumnLayout extends StatelessWidget { + final Widget mainView; + final Widget sideView; + + const TwoColumnLayout({ + super.key, + required this.mainView, + required this.sideView, + }); + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + + return ScaffoldMessenger( + child: Scaffold( + body: Row( + children: [ + Container( + clipBehavior: Clip.antiAlias, + decoration: const BoxDecoration(), + width: FluffyThemes.columnWidth + FluffyThemes.navRailWidth, + child: mainView, + ), + Container( + width: 1.0, + color: theme.dividerColor, + ), + Expanded( + child: ClipRRect( + child: sideView, + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/widgets/local_notifications_extension.dart b/lib/widgets/local_notifications_extension.dart new file mode 100644 index 0000000..c074776 --- /dev/null +++ b/lib/widgets/local_notifications_extension.dart @@ -0,0 +1,159 @@ +import 'dart:io'; + +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; + +import 'package:collection/collection.dart'; +import 'package:desktop_notifications/desktop_notifications.dart'; +import 'package:image/image.dart'; +import 'package:matrix/matrix.dart'; +import 'package:universal_html/html.dart' as html; + +import 'package:fluffychat/config/setting_keys.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/client_download_content_extension.dart'; +import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; +import 'package:fluffychat/utils/platform_infos.dart'; +import 'package:fluffychat/utils/push_helper.dart'; +import 'package:fluffychat/widgets/fluffy_chat_app.dart'; +import 'package:fluffychat/widgets/matrix.dart'; + +extension LocalNotificationsExtension on MatrixState { + static final html.AudioElement _audioPlayer = html.AudioElement() + ..src = 'assets/assets/sounds/notification.ogg' + ..load(); + + void showLocalNotification(Event event) async { + final roomId = event.room.id; + if (activeRoomId == roomId) { + if (kIsWeb && webHasFocus) return; + if (PlatformInfos.isDesktop && + WidgetsBinding.instance.lifecycleState == AppLifecycleState.resumed) { + return; + } + } + + final title = + event.room.getLocalizedDisplayname(MatrixLocals(L10n.of(context))); + final body = await event.calcLocalizedBody( + MatrixLocals(L10n.of(context)), + withSenderNamePrefix: !event.room.isDirectChat || + event.room.lastEvent?.senderId == client.userID, + plaintextBody: true, + hideReply: true, + hideEdit: true, + removeMarkdown: true, + ); + + if (kIsWeb) { + final avatarUrl = event.senderFromMemoryOrFallback.avatarUrl; + Uri? thumbnailUri; + + if (avatarUrl != null) { + const size = 128; + const thumbnailMethod = ThumbnailMethod.crop; + // Pre-cache so that we can later just set the thumbnail uri as icon: + try { + await client.downloadMxcCached( + avatarUrl, + width: size, + height: size, + thumbnailMethod: thumbnailMethod, + isThumbnail: true, + rounded: true, + ); + } catch (e, s) { + Logs().d('Unable to pre-download avatar for web notification', e, s); + } + + thumbnailUri = + await event.senderFromMemoryOrFallback.avatarUrl?.getThumbnailUri( + client, + width: size, + height: size, + method: thumbnailMethod, + ); + } + + _audioPlayer.play(); + + html.Notification( + title, + body: body, + icon: thumbnailUri?.toString(), + tag: event.room.id, + ); + } else if (Platform.isLinux) { + final avatarUrl = event.room.avatar; + final hints = [NotificationHint.soundName('message-new-instant')]; + + if (avatarUrl != null) { + const size = notificationAvatarDimension; + const thumbnailMethod = ThumbnailMethod.crop; + // Pre-cache so that we can later just set the thumbnail uri as icon: + final data = await client.downloadMxcCached( + avatarUrl, + width: size, + height: size, + thumbnailMethod: thumbnailMethod, + isThumbnail: true, + rounded: true, + ); + + final image = decodeImage(data); + if (image != null) { + final realData = image.getBytes(order: ChannelOrder.rgba); + hints.add( + NotificationHint.imageData( + image.width, + image.height, + realData, + hasAlpha: true, + channels: 4, + ), + ); + } + } + final notification = await linuxNotifications!.notify( + title, + body: body, + replacesId: linuxNotificationIds[roomId] ?? 0, + appName: AppSettings.applicationName.value, + appIcon: 'HunniChat', + actions: [ + NotificationAction( + DesktopNotificationActions.openChat.name, + L10n.of(context).openChat, + ), + NotificationAction( + DesktopNotificationActions.seen.name, + L10n.of(context).markAsRead, + ), + ], + hints: hints, + ); + notification.action.then((actionStr) { + var action = DesktopNotificationActions.values + .singleWhereOrNull((a) => a.name == actionStr); + if (action == null && actionStr == "default") { + action = DesktopNotificationActions.openChat; + } + switch (action!) { + case DesktopNotificationActions.seen: + event.room.setReadMarker( + event.eventId, + mRead: event.eventId, + public: AppSettings.sendPublicReadReceipts.value, + ); + break; + case DesktopNotificationActions.openChat: + FluffyChatApp.router.go('/rooms/${event.room.id}'); + break; + } + }); + linuxNotificationIds[roomId] = notification.id; + } + } +} + +enum DesktopNotificationActions { seen, openChat } diff --git a/lib/widgets/lock_screen.dart b/lib/widgets/lock_screen.dart new file mode 100644 index 0000000..8524554 --- /dev/null +++ b/lib/widgets/lock_screen.dart @@ -0,0 +1,120 @@ +import 'dart:async'; + +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +import 'package:fluffychat/config/themes.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/widgets/app_lock.dart'; + +class LockScreen extends StatefulWidget { + const LockScreen({super.key}); + + @override + State createState() => _LockScreenState(); +} + +class _LockScreenState extends State { + String? _errorText; + int _coolDownSeconds = 5; + bool _inputBlocked = false; + final TextEditingController _textEditingController = TextEditingController(); + + void tryUnlock(String text) async { + setState(() { + _errorText = null; + }); + if (text.length < 4) return; + + final enteredPin = int.tryParse(text); + if (enteredPin == null || text.length != 4) { + setState(() { + _errorText = L10n.of(context).invalidInput; + }); + _textEditingController.clear(); + return; + } + + if (AppLock.of(context).unlock(enteredPin.toString())) { + setState(() { + _inputBlocked = false; + _errorText = null; + }); + _textEditingController.clear(); + return; + } + + setState(() { + _errorText = L10n.of(context).wrongPinEntered(_coolDownSeconds); + _inputBlocked = true; + }); + Future.delayed(Duration(seconds: _coolDownSeconds)).then((_) { + setState(() { + _inputBlocked = false; + _coolDownSeconds *= 2; + _errorText = null; + }); + }); + _textEditingController.clear(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text(L10n.of(context).pleaseEnterYourPin), + centerTitle: true, + ), + extendBodyBehindAppBar: true, + body: Center( + child: Padding( + padding: const EdgeInsets.all(16.0), + child: ConstrainedBox( + constraints: const BoxConstraints( + maxWidth: FluffyThemes.columnWidth, + ), + child: ListView( + shrinkWrap: true, + children: [ + Center( + child: Image.asset( + 'assets/info-logo.png', + width: 256, + ), + ), + TextField( + controller: _textEditingController, + textInputAction: TextInputAction.done, + keyboardType: TextInputType.number, + obscureText: true, + autofocus: true, + textAlign: TextAlign.center, + readOnly: _inputBlocked, + onChanged: tryUnlock, + onSubmitted: tryUnlock, + style: const TextStyle(fontSize: 40), + inputFormatters: [ + LengthLimitingTextInputFormatter(4), + ], + decoration: InputDecoration( + errorText: _errorText, + hintText: '****', + suffix: IconButton( + icon: const Icon(Icons.lock_open_outlined), + onPressed: () => tryUnlock(_textEditingController.text), + ), + ), + ), + if (_inputBlocked) + const Padding( + padding: EdgeInsets.all(8.0), + child: LinearProgressIndicator(), + ), + ], + ), + ), + ), + ), + ); + } +} diff --git a/lib/widgets/log_view.dart b/lib/widgets/log_view.dart new file mode 100644 index 0000000..0779af6 --- /dev/null +++ b/lib/widgets/log_view.dart @@ -0,0 +1,96 @@ +import 'package:flutter/material.dart'; + +import 'package:go_router/go_router.dart'; +import 'package:matrix/matrix.dart'; + +class LogViewer extends StatefulWidget { + const LogViewer({super.key}); + + @override + LogViewerState createState() => LogViewerState(); +} + +class LogViewerState extends State { + Level logLevel = Level.debug; + double fontSize = 14; + @override + Widget build(BuildContext context) { + final outputEvents = Logs() + .outputEvents + .where((e) => e.level.index <= logLevel.index) + .toList(); + return Scaffold( + backgroundColor: Colors.black, + appBar: AppBar( + title: Text(logLevel.toString()), + leading: BackButton( + onPressed: () => context.go('/'), + ), + actions: [ + IconButton( + icon: const Icon(Icons.zoom_in_outlined), + onPressed: () => setState(() => fontSize++), + ), + IconButton( + icon: const Icon(Icons.zoom_out_outlined), + onPressed: () => setState(() => fontSize--), + ), + PopupMenuButton( + useRootNavigator: true, + itemBuilder: (context) => Level.values + .map( + (level) => PopupMenuItem( + value: level, + child: Text(level.toString()), + ), + ) + .toList(), + onSelected: (Level level) => setState(() => logLevel = level), + ), + ], + ), + body: ListView.builder( + itemCount: outputEvents.length, + itemBuilder: (context, i) => SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: SelectableText( + outputEvents[i].toDisplayString(), + style: TextStyle( + color: outputEvents[i].color, + ), + ), + ), + ), + ); + } +} + +extension on LogEvent { + Color get color { + switch (level) { + case Level.wtf: + return Colors.purple; + case Level.error: + return Colors.red; + case Level.warning: + return Colors.orange; + case Level.info: + return Colors.green; + case Level.debug: + return Colors.white; + case Level.verbose: + return Colors.grey; + } + } + + String toDisplayString() { + var str = '# [${level.toString().split('.').last.toUpperCase()}] $title'; + if (exception != null) { + str += ' - ${exception.toString()}'; + } + if (stackTrace != null) { + str += '\n${stackTrace.toString()}'; + } + return str; + } +} diff --git a/lib/widgets/matrix.dart b/lib/widgets/matrix.dart new file mode 100644 index 0000000..6a0aa6b --- /dev/null +++ b/lib/widgets/matrix.dart @@ -0,0 +1,432 @@ +import 'dart:async'; +import 'dart:convert'; + +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; + +import 'package:collection/collection.dart'; +import 'package:desktop_notifications/desktop_notifications.dart'; +import 'package:image_picker/image_picker.dart'; +import 'package:intl/intl.dart'; +import 'package:just_audio/just_audio.dart'; +import 'package:matrix/encryption.dart'; +import 'package:matrix/matrix.dart'; +import 'package:provider/provider.dart'; +import 'package:shared_preferences/shared_preferences.dart'; +import 'package:universal_html/html.dart' as html; +import 'package:url_launcher/url_launcher_string.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/client_manager.dart'; +import 'package:fluffychat/utils/init_with_restore.dart'; +import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_file_extension.dart'; +import 'package:fluffychat/utils/platform_infos.dart'; +import 'package:fluffychat/utils/uia_request_manager.dart'; +import 'package:fluffychat/utils/voip_plugin.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/show_ok_cancel_alert_dialog.dart'; +import 'package:fluffychat/widgets/fluffy_chat_app.dart'; +import 'package:fluffychat/widgets/future_loading_dialog.dart'; +import '../config/setting_keys.dart'; +import '../pages/key_verification/key_verification_dialog.dart'; +import '../utils/account_bundles.dart'; +import '../utils/background_push.dart'; +import 'local_notifications_extension.dart'; + +// import 'package:flutter_secure_storage/flutter_secure_storage.dart'; + +class Matrix extends StatefulWidget { + final Widget? child; + + final List clients; + + final Map? queryParameters; + + final SharedPreferences store; + + const Matrix({ + this.child, + required this.clients, + required this.store, + this.queryParameters, + super.key, + }); + + @override + MatrixState createState() => MatrixState(); + + /// Returns the (nearest) Client instance of your application. + static MatrixState of(BuildContext context) => + Provider.of(context, listen: false); +} + +class MatrixState extends State with WidgetsBindingObserver { + int _activeClient = -1; + String? activeBundle; + + SharedPreferences get store => widget.store; + + XFile? loginAvatar; + String? loginUsername; + bool? loginRegistrationSupported; + + BackgroundPush? backgroundPush; + + Client get client { + if (_activeClient < 0 || _activeClient >= widget.clients.length) { + return currentBundle!.first!; + } + return widget.clients[_activeClient]; + } + + VoipPlugin? voipPlugin; + + bool get isMultiAccount => widget.clients.length > 1; + + int getClientIndexByMatrixId(String matrixId) => + widget.clients.indexWhere((client) => client.userID == matrixId); + + late String currentClientSecret; + RequestTokenResponse? currentThreepidCreds; + + void setActiveClient(Client? cl) { + final i = widget.clients.indexWhere((c) => c == cl); + if (i != -1) { + _activeClient = i; + // TODO: Multi-client VoiP support + createVoipPlugin(); + } else { + Logs().w('Tried to set an unknown client ${cl!.userID} as active'); + } + } + + List? get currentBundle { + if (!hasComplexBundles) { + return List.from(widget.clients); + } + final bundles = accountBundles; + if (bundles.containsKey(activeBundle)) { + return bundles[activeBundle]; + } + return bundles.values.first; + } + + Map> get accountBundles { + final resBundles = >{}; + for (var i = 0; i < widget.clients.length; i++) { + final bundles = widget.clients[i].accountBundles; + for (final bundle in bundles) { + if (bundle.name == null) { + continue; + } + resBundles[bundle.name] ??= []; + resBundles[bundle.name]!.add( + _AccountBundleWithClient( + client: widget.clients[i], + bundle: bundle, + ), + ); + } + } + for (final b in resBundles.values) { + b.sort( + (a, b) => a.bundle!.priority == null + ? 1 + : b.bundle!.priority == null + ? -1 + : a.bundle!.priority!.compareTo(b.bundle!.priority!), + ); + } + return resBundles + .map((k, v) => MapEntry(k, v.map((vv) => vv.client).toList())); + } + + bool get hasComplexBundles => accountBundles.values.any((v) => v.length > 1); + + Client? _loginClientCandidate; + + AudioPlayer? audioPlayer; + final ValueNotifier voiceMessageEventId = ValueNotifier(null); + + Future getLoginClient() async { + if (widget.clients.isNotEmpty && !client.isLogged()) { + return client; + } + final candidate = + _loginClientCandidate ??= await ClientManager.createClient( + '${AppSettings.applicationName.value}-${DateTime.now().millisecondsSinceEpoch}', + store, + ) + ..onLoginStateChanged + .stream + .where((l) => l == LoginState.loggedIn) + .first + .then((_) { + if (!widget.clients.contains(_loginClientCandidate)) { + widget.clients.add(_loginClientCandidate!); + } + ClientManager.addClientNameToStore( + _loginClientCandidate!.clientName, + store, + ); + _registerSubs(_loginClientCandidate!.clientName); + _loginClientCandidate = null; + FluffyChatApp.router.go('/rooms'); + }); + if (widget.clients.isEmpty) widget.clients.add(candidate); + return candidate; + } + + Client? getClientByName(String name) => + widget.clients.firstWhereOrNull((c) => c.clientName == name); + + final onRoomKeyRequestSub = {}; + final onKeyVerificationRequestSub = {}; + final onNotification = {}; + final onLoginStateChanged = >{}; + final onUiaRequest = >{}; + StreamSubscription? onFocusSub; + StreamSubscription? onBlurSub; + + String? _cachedPassword; + Timer? _cachedPasswordClearTimer; + + String? get cachedPassword => _cachedPassword; + + set cachedPassword(String? p) { + Logs().d('Password cached'); + _cachedPasswordClearTimer?.cancel(); + _cachedPassword = p; + _cachedPasswordClearTimer = Timer(const Duration(minutes: 10), () { + _cachedPassword = null; + Logs().d('Cached Password cleared'); + }); + } + + bool webHasFocus = true; + + String? get activeRoomId { + final route = FluffyChatApp.router.routeInformationProvider.value.uri.path; + if (!route.startsWith('/rooms/')) return null; + return route.split('/')[2]; + } + + final linuxNotifications = + PlatformInfos.isLinux ? NotificationsClient() : null; + final Map linuxNotificationIds = {}; + + @override + void initState() { + super.initState(); + WidgetsBinding.instance.addObserver(this); + initMatrix(); + } + + void _registerSubs(String name) { + final c = getClientByName(name); + if (c == null) { + Logs().w( + 'Attempted to register subscriptions for non-existing client $name', + ); + return; + } + onRoomKeyRequestSub[name] ??= + c.onRoomKeyRequest.stream.listen((RoomKeyRequest request) async { + if (widget.clients.any( + ((cl) => + cl.userID == request.requestingDevice.userId && + cl.identityKey == request.requestingDevice.curve25519Key), + )) { + Logs().i( + '[Key Request] Request is from one of our own clients, forwarding the key...', + ); + await request.forwardKey(); + } + }); + onKeyVerificationRequestSub[name] ??= c.onKeyVerificationRequest.stream + .listen((KeyVerification request) async { + var hidPopup = false; + request.onUpdate = () { + if (!hidPopup && + {KeyVerificationState.done, KeyVerificationState.error} + .contains(request.state)) { + FluffyChatApp.router.pop('dialog'); + } + hidPopup = true; + }; + request.onUpdate = null; + hidPopup = true; + await KeyVerificationDialog(request: request).show( + FluffyChatApp.router.routerDelegate.navigatorKey.currentContext ?? + context, + ); + }); + onLoginStateChanged[name] ??= c.onLoginStateChanged.stream.listen((state) { + final loggedInWithMultipleClients = widget.clients.length > 1; + if (state == LoginState.loggedOut) { + _cancelSubs(c.clientName); + widget.clients.remove(c); + ClientManager.removeClientNameFromStore(c.clientName, store); + InitWithRestoreExtension.deleteSessionBackup(name); + } + if (loggedInWithMultipleClients && state != LoginState.loggedIn) { + ScaffoldMessenger.of( + FluffyChatApp.router.routerDelegate.navigatorKey.currentContext ?? + context, + ).showSnackBar( + SnackBar( + content: Text(L10n.of(context).oneClientLoggedOut), + ), + ); + + if (state != LoginState.loggedIn) { + FluffyChatApp.router.go('/rooms'); + } + } else { + FluffyChatApp.router + .go(state == LoginState.loggedIn ? '/rooms' : '/home'); + } + }); + onUiaRequest[name] ??= c.onUiaRequest.stream.listen(uiaRequestHandler); + if (PlatformInfos.isWeb || PlatformInfos.isLinux) { + c.onSync.stream.first.then((s) { + html.Notification.requestPermission(); + onNotification[name] ??= + c.onNotification.stream.listen(showLocalNotification); + }); + } + } + + void _cancelSubs(String name) { + onRoomKeyRequestSub[name]?.cancel(); + onRoomKeyRequestSub.remove(name); + onKeyVerificationRequestSub[name]?.cancel(); + onKeyVerificationRequestSub.remove(name); + onLoginStateChanged[name]?.cancel(); + onLoginStateChanged.remove(name); + onNotification[name]?.cancel(); + onNotification.remove(name); + } + + void initMatrix() { + for (final c in widget.clients) { + _registerSubs(c.clientName); + } + + if (kIsWeb) { + onFocusSub = html.window.onFocus.listen((_) => webHasFocus = true); + onBlurSub = html.window.onBlur.listen((_) => webHasFocus = false); + } + + if (PlatformInfos.isMobile) { + backgroundPush = BackgroundPush( + this, + onFcmError: (errorMsg, {Uri? link}) async { + final result = await showOkCancelAlertDialog( + context: FluffyChatApp + .router.routerDelegate.navigatorKey.currentContext ?? + context, + title: L10n.of(context).pushNotificationsNotAvailable, + message: errorMsg, + okLabel: + link == null ? L10n.of(context).ok : L10n.of(context).learnMore, + cancelLabel: L10n.of(context).doNotShowAgain, + ); + if (result == OkCancelResult.ok && link != null) { + launchUrlString( + link.toString(), + mode: LaunchMode.externalApplication, + ); + } + if (result == OkCancelResult.cancel) { + await AppSettings.showNoGoogle.setItem(true); + } + }, + ); + } + + createVoipPlugin(); + } + + void createVoipPlugin() async { + if (AppSettings.experimentalVoip.value) { + voipPlugin = null; + return; + } + voipPlugin = VoipPlugin(this); + } + + @override + void didChangeAppLifecycleState(AppLifecycleState state) { + final foreground = state != AppLifecycleState.inactive && + state != AppLifecycleState.paused; + for (final client in widget.clients) { + client.syncPresence = + state == AppLifecycleState.resumed ? null : PresenceType.unavailable; + if (PlatformInfos.isMobile) { + client.backgroundSync = foreground; + client.requestHistoryOnLimitedTimeline = !foreground; + Logs().v('Set background sync to', foreground); + } + } + } + + @override + void dispose() { + WidgetsBinding.instance.removeObserver(this); + + onRoomKeyRequestSub.values.map((s) => s.cancel()); + onKeyVerificationRequestSub.values.map((s) => s.cancel()); + onLoginStateChanged.values.map((s) => s.cancel()); + onNotification.values.map((s) => s.cancel()); + client.httpClient.close(); + onFocusSub?.cancel(); + onBlurSub?.cancel(); + + linuxNotifications?.close(); + + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Provider( + create: (_) => this, + child: widget.child, + ); + } + + Future dehydrateAction(BuildContext context) async { + final response = await showOkCancelAlertDialog( + context: context, + isDestructive: true, + title: L10n.of(context).dehydrate, + message: L10n.of(context).dehydrateWarning, + ); + if (response != OkCancelResult.ok) { + return; + } + final result = await showFutureLoadingDialog( + context: context, + future: client.exportDump, + ); + final export = result.result; + if (export == null) return; + + final exportBytes = Uint8List.fromList( + const Utf8Codec().encode(export), + ); + + final exportFileName = + 'hunnichat-export-${DateFormat(DateFormat.YEAR_MONTH_DAY).format(DateTime.now())}.hunnichatbackup'; + + final file = MatrixFile(bytes: exportBytes, name: exportFileName); + file.save(context); + } +} + +class _AccountBundleWithClient { + final Client? client; + final AccountBundle? bundle; + + _AccountBundleWithClient({this.client, this.bundle}); +} diff --git a/lib/widgets/member_actions_popup_menu_button.dart b/lib/widgets/member_actions_popup_menu_button.dart new file mode 100644 index 0000000..a116420 --- /dev/null +++ b/lib/widgets/member_actions_popup_menu_button.dart @@ -0,0 +1,316 @@ +import 'package:flutter/material.dart'; + +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/widgets/permission_slider_dialog.dart'; +import 'adaptive_dialogs/show_ok_cancel_alert_dialog.dart'; +import 'adaptive_dialogs/show_text_input_dialog.dart'; +import 'adaptive_dialogs/user_dialog.dart'; +import 'avatar.dart'; +import 'future_loading_dialog.dart'; + +void showMemberActionsPopupMenu({ + required BuildContext context, + required User user, + void Function()? onMention, +}) async { + final theme = Theme.of(context); + final displayname = user.calcDisplayname(); + final isMe = user.room.client.userID == user.id; + + final overlay = Overlay.of(context).context.findRenderObject() as RenderBox; + + final button = context.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 action = await showMenu<_MemberActions>( + context: context, + position: position, + items: >[ + PopupMenuItem( + value: _MemberActions.info, + child: Row( + spacing: 12.0, + children: [ + Avatar( + name: displayname, + mxContent: user.avatarUrl, + presenceUserId: user.id, + presenceBackgroundColor: theme.colorScheme.surfaceContainer, + ), + Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + ConstrainedBox( + constraints: const BoxConstraints(maxWidth: 128), + child: Text( + displayname, + textAlign: TextAlign.center, + style: theme.textTheme.labelLarge, + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + ), + ConstrainedBox( + constraints: const BoxConstraints(maxWidth: 128), + child: Text( + user.id, + textAlign: TextAlign.center, + style: const TextStyle(fontSize: 10), + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + ), + ], + ), + ], + ), + ), + const PopupMenuDivider(), + if (onMention != null) + PopupMenuItem( + value: _MemberActions.mention, + child: Row( + children: [ + const Icon(Icons.alternate_email_outlined), + const SizedBox(width: 18), + Text(L10n.of(context).mention), + ], + ), + ), + if (user.membership == Membership.knock) + PopupMenuItem( + value: _MemberActions.approve, + child: Row( + children: [ + const Icon(Icons.how_to_reg_outlined), + const SizedBox(width: 18), + Text(L10n.of(context).approve), + ], + ), + ), + PopupMenuItem( + enabled: user.room.canChangePowerLevel && user.canChangeUserPowerLevel, + value: _MemberActions.setRole, + child: Row( + children: [ + const Icon(Icons.admin_panel_settings_outlined), + const SizedBox(width: 18), + Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(L10n.of(context).chatPermissions), + Text( + user.powerLevel < 50 + ? L10n.of(context).userLevel(user.powerLevel) + : user.powerLevel < 100 + ? L10n.of(context).moderatorLevel(user.powerLevel) + : L10n.of(context).adminLevel(user.powerLevel), + style: const TextStyle(fontSize: 10), + ), + ], + ), + ], + ), + ), + if (user.canKick) + PopupMenuItem( + value: _MemberActions.kick, + child: Row( + children: [ + Icon( + Icons.person_remove_outlined, + color: theme.colorScheme.onErrorContainer, + ), + const SizedBox(width: 18), + Text( + L10n.of(context).kickFromChat, + style: TextStyle(color: theme.colorScheme.onErrorContainer), + ), + ], + ), + ), + if (user.canBan && user.membership != Membership.ban) + PopupMenuItem( + value: _MemberActions.ban, + child: Row( + children: [ + Icon( + Icons.block_outlined, + color: theme.colorScheme.onErrorContainer, + ), + const SizedBox(width: 18), + Text( + L10n.of(context).banFromChat, + style: TextStyle(color: theme.colorScheme.onErrorContainer), + ), + ], + ), + ), + if (user.canBan && user.membership == Membership.ban) + PopupMenuItem( + value: _MemberActions.unban, + child: Row( + children: [ + const Icon(Icons.warning), + const SizedBox(width: 18), + Text(L10n.of(context).unbanFromChat), + ], + ), + ), + if (!isMe) + PopupMenuItem( + value: _MemberActions.report, + child: Row( + children: [ + Icon( + Icons.gavel_outlined, + color: theme.colorScheme.onErrorContainer, + ), + const SizedBox(width: 18), + Text( + L10n.of(context).reportUser, + style: TextStyle(color: theme.colorScheme.onErrorContainer), + ), + ], + ), + ), + ], + ); + if (action == null) return; + if (!context.mounted) return; + + switch (action) { + case _MemberActions.mention: + onMention?.call(); + return; + case _MemberActions.setRole: + final power = await showPermissionChooser( + context, + currentLevel: user.powerLevel, + maxLevel: user.room.ownPowerLevel, + ); + if (power == null) return; + if (!context.mounted) return; + if (power >= 100) { + final consent = await showOkCancelAlertDialog( + context: context, + title: L10n.of(context).areYouSure, + message: L10n.of(context).makeAdminDescription, + ); + if (consent != OkCancelResult.ok) return; + if (!context.mounted) return; + } + await showFutureLoadingDialog( + context: context, + future: () => user.setPower(power), + ); + return; + case _MemberActions.approve: + await showFutureLoadingDialog( + context: context, + future: () => user.room.invite(user.id), + ); + return; + case _MemberActions.kick: + if (await showOkCancelAlertDialog( + context: context, + title: L10n.of(context).areYouSure, + okLabel: L10n.of(context).yes, + cancelLabel: L10n.of(context).no, + message: L10n.of(context).kickUserDescription, + ) == + OkCancelResult.ok) { + await showFutureLoadingDialog( + context: context, + future: () => user.kick(), + ); + } + return; + case _MemberActions.ban: + if (await showOkCancelAlertDialog( + context: context, + title: L10n.of(context).areYouSure, + okLabel: L10n.of(context).yes, + cancelLabel: L10n.of(context).no, + message: L10n.of(context).banUserDescription, + ) == + OkCancelResult.ok) { + await showFutureLoadingDialog( + context: context, + future: () => user.ban(), + ); + } + return; + case _MemberActions.report: + final reason = await showTextInputDialog( + context: context, + title: L10n.of(context).whyDoYouWantToReportThis, + okLabel: L10n.of(context).report, + cancelLabel: L10n.of(context).cancel, + hintText: L10n.of(context).reason, + ); + if (reason == null || reason.isEmpty) return; + + final result = await showFutureLoadingDialog( + context: context, + future: () => user.room.client.reportUser( + user.id, + reason, + ), + ); + if (result.error != null) return; + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text(L10n.of(context).contentHasBeenReported)), + ); + return; + case _MemberActions.info: + await UserDialog.show( + context: context, + profile: Profile( + userId: user.id, + displayName: user.displayName, + avatarUrl: user.avatarUrl, + ), + ); + return; + case _MemberActions.unban: + if (await showOkCancelAlertDialog( + context: context, + title: L10n.of(context).areYouSure, + okLabel: L10n.of(context).yes, + cancelLabel: L10n.of(context).no, + message: L10n.of(context).unbanUserDescription, + ) == + OkCancelResult.ok) { + await showFutureLoadingDialog( + context: context, + future: () => user.unban(), + ); + } + } +} + +enum _MemberActions { + info, + mention, + setRole, + kick, + ban, + approve, + unban, + report, +} diff --git a/lib/widgets/mxc_image.dart b/lib/widgets/mxc_image.dart new file mode 100644 index 0000000..1572fa6 --- /dev/null +++ b/lib/widgets/mxc_image.dart @@ -0,0 +1,178 @@ +import 'dart:io'; +import 'dart:math'; +import 'dart:typed_data'; + +import 'package:flutter/material.dart'; + +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/config/themes.dart'; +import 'package:fluffychat/utils/client_download_content_extension.dart'; +import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_file_extension.dart'; +import 'package:fluffychat/widgets/matrix.dart'; + +class MxcImage extends StatefulWidget { + final Uri? uri; + final Event? event; + final double? width; + final double? height; + final BoxFit? fit; + 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; + final Client? client; + final BorderRadius borderRadius; + + const MxcImage({ + this.uri, + this.event, + this.width, + this.height, + this.fit, + 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, + this.client, + this.borderRadius = BorderRadius.zero, + super.key, + }); + + @override + State createState() => _MxcImageState(); +} + +class _MxcImageState extends State { + 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; + } + + Future _load() async { + if (!mounted) return; + final client = + widget.client ?? widget.event?.room.client ?? Matrix.of(context).client; + final uri = widget.uri; + final event = widget.event; + + if (uri != null) { + final devicePixelRatio = MediaQuery.devicePixelRatioOf(context); + final width = widget.width; + final realWidth = width == null ? null : width * devicePixelRatio; + final height = widget.height; + final realHeight = height == null ? null : height * devicePixelRatio; + + final remoteData = await client.downloadMxcCached( + uri, + width: realWidth, + height: realHeight, + thumbnailMethod: widget.thumbnailMethod, + isThumbnail: widget.isThumbnail, + animated: widget.animated, + ); + if (!mounted) return; + setState(() { + _imageData = remoteData; + }); + } + + if (event != null) { + final data = await event.downloadAndDecryptAttachment( + getThumbnail: widget.isThumbnail, + ); + if (data.detectFileType is MatrixImageFile || widget.isThumbnail) { + if (!mounted) return; + setState(() { + _imageData = data.bytes; + }); + return; + } + } + } + + void _tryLoad() async { + if (_imageData != null) { + return; + } + try { + await _load(); + } on IOException catch (_) { + if (!mounted) return; + await Future.delayed(widget.retryDuration); + _tryLoad(); + } + } + + @override + void initState() { + super.initState(); + WidgetsBinding.instance.addPostFrameCallback((_) => _tryLoad()); + } + + Widget placeholder(BuildContext context) => + widget.placeholder?.call(context) ?? + Container( + width: widget.width, + height: widget.height, + alignment: Alignment.center, + child: const CircularProgressIndicator.adaptive(strokeWidth: 2), + ); + + @override + Widget build(BuildContext context) { + final data = _imageData; + final hasData = data != null && data.isNotEmpty; + + return AnimatedSwitcher( + duration: FluffyThemes.animationDuration, + child: hasData + ? ClipRRect( + borderRadius: widget.borderRadius, + child: Image.memory( + data, + width: widget.width, + height: widget.height, + fit: widget.fit, + filterQuality: widget.isThumbnail + ? FilterQuality.low + : FilterQuality.medium, + errorBuilder: (context, e, s) { + Logs().d('Unable to render mxc image', e, s); + return SizedBox( + width: widget.width, + height: widget.height, + child: Material( + color: Theme.of(context).colorScheme.surfaceContainer, + child: Icon( + Icons.broken_image_outlined, + size: min(widget.height ?? 64, 64), + color: Theme.of(context).colorScheme.onSurface, + ), + ), + ); + }, + ), + ) + : placeholder(context), + ); + } +} diff --git a/lib/widgets/mxc_image_viewer.dart b/lib/widgets/mxc_image_viewer.dart new file mode 100644 index 0000000..be075d7 --- /dev/null +++ b/lib/widgets/mxc_image_viewer.dart @@ -0,0 +1,59 @@ +import 'package:flutter/material.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'mxc_image.dart'; + +class MxcImageViewer extends StatelessWidget { + final Uri mxContent; + + const MxcImageViewer(this.mxContent, {super.key}); + + @override + Widget build(BuildContext context) { + final iconButtonStyle = IconButton.styleFrom( + backgroundColor: Colors.black.withAlpha(200), + foregroundColor: Colors.white, + ); + return GestureDetector( + onTap: () => Navigator.of(context).pop(), + child: Scaffold( + backgroundColor: Colors.black.withAlpha(128), + extendBodyBehindAppBar: true, + appBar: AppBar( + elevation: 0, + leading: IconButton( + style: iconButtonStyle, + icon: const Icon(Icons.close), + onPressed: Navigator.of(context).pop, + color: Colors.white, + tooltip: L10n.of(context).close, + ), + backgroundColor: Colors.transparent, + ), + body: InteractiveViewer( + minScale: 1.0, + maxScale: 10.0, + onInteractionEnd: (endDetails) { + if (endDetails.velocity.pixelsPerSecond.dy > + MediaQuery.sizeOf(context).height * 1.5) { + Navigator.of(context, rootNavigator: false).pop(); + } + }, + child: Center( + child: GestureDetector( + // Ignore taps to not go back here: + onTap: () {}, + child: MxcImage( + key: ValueKey(mxContent.toString()), + uri: mxContent, + fit: BoxFit.contain, + isThumbnail: false, + animated: true, + ), + ), + ), + ), + ), + ); + } +} diff --git a/lib/widgets/navigation_rail.dart b/lib/widgets/navigation_rail.dart new file mode 100644 index 0000000..7cb4be4 --- /dev/null +++ b/lib/widgets/navigation_rail.dart @@ -0,0 +1,137 @@ +import 'package:flutter/material.dart'; + +import 'package:go_router/go_router.dart'; +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/config/themes.dart'; +import 'package:fluffychat/l10n/l10n.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 'package:fluffychat/widgets/matrix.dart'; + +class SpacesNavigationRail extends StatelessWidget { + final String? activeSpaceId; + final void Function() onGoToChats; + final void Function(String) onGoToSpaceId; + + const SpacesNavigationRail({ + required this.activeSpaceId, + required this.onGoToChats, + required this.onGoToSpaceId, + super.key, + }); + + @override + Widget build(BuildContext context) { + final client = Matrix.of(context).client; + final isSettings = GoRouter.of(context) + .routeInformationProvider + .value + .uri + .path + .startsWith('/rooms/settings'); + return Material( + child: SafeArea( + child: StreamBuilder( + key: ValueKey( + client.userID.toString(), + ), + stream: client.onSync.stream + .where((s) => s.hasRoomUpdate) + .rateLimit(const Duration(seconds: 1)), + builder: (context, _) { + final allSpaces = + client.rooms.where((room) => room.isSpace).toList(); + + return SizedBox( + width: FluffyThemes.isColumnMode(context) + ? FluffyThemes.navRailWidth + : FluffyThemes.navRailWidth * 0.75, + child: Column( + children: [ + Expanded( + child: ListView.builder( + scrollDirection: Axis.vertical, + itemCount: allSpaces.length + 2, + itemBuilder: (context, i) { + if (i == 0) { + return NaviRailItem( + isSelected: activeSpaceId == null && !isSettings, + onTap: onGoToChats, + icon: const Padding( + padding: EdgeInsets.all(10.0), + child: Icon(Icons.forum_outlined), + ), + selectedIcon: const Padding( + padding: EdgeInsets.all(10.0), + child: Icon(Icons.forum), + ), + toolTip: L10n.of(context).chats, + unreadBadgeFilter: (room) => true, + ); + } + i--; + if (i == allSpaces.length) { + return NaviRailItem( + isSelected: false, + onTap: () => context.go('/rooms/newspace'), + icon: const Padding( + padding: EdgeInsets.all(8.0), + child: Icon(Icons.add), + ), + toolTip: L10n.of(context).createNewSpace, + ); + } + final space = allSpaces[i]; + final displayname = + allSpaces[i].getLocalizedDisplayname( + MatrixLocals(L10n.of(context)), + ); + final spaceChildrenIds = + space.spaceChildren.map((c) => c.roomId).toSet(); + return NaviRailItem( + toolTip: displayname, + isSelected: activeSpaceId == space.id, + onTap: () => onGoToSpaceId(allSpaces[i].id), + unreadBadgeFilter: (room) => + spaceChildrenIds.contains(room.id), + icon: Avatar( + mxContent: allSpaces[i].avatar, + name: displayname, + border: BorderSide( + width: 1, + color: Theme.of(context).dividerColor, + ), + borderRadius: BorderRadius.circular( + AppConfig.borderRadius / 2, + ), + ), + ); + }, + ), + ), + NaviRailItem( + isSelected: isSettings, + onTap: () => context.go('/rooms/settings'), + icon: const Padding( + padding: EdgeInsets.all(10.0), + child: Icon(Icons.settings_outlined), + ), + selectedIcon: const Padding( + padding: EdgeInsets.all(10.0), + child: Icon(Icons.settings), + ), + toolTip: L10n.of(context).settings, + ), + ], + ), + ); + }, + ), + ), + ); + } +} diff --git a/lib/widgets/permission_slider_dialog.dart b/lib/widgets/permission_slider_dialog.dart new file mode 100644 index 0000000..d02b43e --- /dev/null +++ b/lib/widgets/permission_slider_dialog.dart @@ -0,0 +1,83 @@ +import 'package:flutter/material.dart'; + +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/adaptive_dialog_action.dart'; +import 'package:fluffychat/widgets/adaptive_dialogs/dialog_text_field.dart'; + +Future showPermissionChooser( + BuildContext context, { + int currentLevel = 0, + int maxLevel = 100, +}) async { + final controller = TextEditingController(); + final error = ValueNotifier(null); + return await showAdaptiveDialog( + context: context, + builder: (context) => AlertDialog.adaptive( + title: Center(child: Text(L10n.of(context).chatPermissions)), + content: ConstrainedBox( + constraints: const BoxConstraints(maxWidth: 256, maxHeight: 256), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.stretch, + spacing: 12.0, + children: [ + Text(L10n.of(context).setPermissionsLevelDescription), + ValueListenableBuilder( + valueListenable: error, + builder: (context, errorText, _) => DialogTextField( + controller: controller, + hintText: currentLevel.toString(), + keyboardType: TextInputType.number, + labelText: L10n.of(context).custom, + errorText: errorText, + ), + ), + ], + ), + ), + actions: [ + AdaptiveDialogAction( + bigButtons: true, + borderRadius: AdaptiveDialogAction.topRadius, + onPressed: () { + final level = int.tryParse(controller.text.trim()); + if (level == null) { + error.value = L10n.of(context).pleaseEnterANumber; + return; + } + if (level > maxLevel) { + error.value = L10n.of(context).noPermission; + return; + } + Navigator.of(context).pop(level); + }, + child: Text(L10n.of(context).setCustomPermissionLevel), + ), + if (maxLevel >= 100 && currentLevel != 100) + AdaptiveDialogAction( + borderRadius: AdaptiveDialogAction.centerRadius, + bigButtons: true, + onPressed: () => Navigator.of(context).pop(100), + child: Text(L10n.of(context).admin), + ), + if (maxLevel >= 50 && currentLevel != 50) + AdaptiveDialogAction( + borderRadius: maxLevel != 0 + ? AdaptiveDialogAction.centerRadius + : AdaptiveDialogAction.bottomRadius, + bigButtons: true, + onPressed: () => Navigator.of(context).pop(50), + child: Text(L10n.of(context).moderator), + ), + if (currentLevel != 0) + AdaptiveDialogAction( + borderRadius: AdaptiveDialogAction.bottomRadius, + bigButtons: true, + onPressed: () => Navigator.of(context).pop(0), + child: Text(L10n.of(context).normalUser), + ), + ], + ), + ); +} diff --git a/lib/widgets/presence_builder.dart b/lib/widgets/presence_builder.dart new file mode 100644 index 0000000..33f5b05 --- /dev/null +++ b/lib/widgets/presence_builder.dart @@ -0,0 +1,57 @@ +import 'dart:async'; + +import 'package:flutter/material.dart'; + +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/widgets/matrix.dart'; + +class PresenceBuilder extends StatefulWidget { + final Widget Function(BuildContext context, CachedPresence? presence) builder; + final String? userId; + final Client? client; + + const PresenceBuilder({ + required this.builder, + this.userId, + this.client, + super.key, + }); + + @override + State createState() => _PresenceBuilderState(); +} + +class _PresenceBuilderState extends State { + CachedPresence? _presence; + StreamSubscription? _sub; + + void _updatePresence(CachedPresence? presence) { + if (!mounted) return; + setState(() { + _presence = presence; + }); + } + + @override + void initState() { + super.initState(); + final client = widget.client ?? Matrix.of(context).client; + final userId = widget.userId; + if (userId != null) { + client.fetchCurrentPresence(userId).then(_updatePresence); + _sub = client.onPresenceChanged.stream + .where((presence) => presence.userid == userId) + .listen(_updatePresence); + } + } + + @override + void dispose() { + _sub?.cancel(); + super.dispose(); + } + + @override + Widget build(BuildContext context) => widget.builder(context, _presence); +} diff --git a/lib/widgets/qr_code_viewer.dart b/lib/widgets/qr_code_viewer.dart new file mode 100644 index 0000000..769380d --- /dev/null +++ b/lib/widgets/qr_code_viewer.dart @@ -0,0 +1,138 @@ +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; + +import 'package:image/image.dart'; +import 'package:matrix/matrix.dart'; +import 'package:pretty_qr_code/pretty_qr_code.dart'; +import 'package:qr_image/qr_image.dart'; + +import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/fluffy_share.dart'; +import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_file_extension.dart'; +import 'package:fluffychat/widgets/future_loading_dialog.dart'; +import '../config/themes.dart'; + +Future showQrCodeViewer( + BuildContext context, + String content, +) => + showDialog( + context: context, + builder: (context) => QrCodeViewer(content: content), + ); + +class QrCodeViewer extends StatelessWidget { + final String content; + + const QrCodeViewer({required this.content, super.key}); + + void _save(BuildContext context) async { + final imageResult = await showFutureLoadingDialog( + context: context, + future: () async { + final inviteLink = 'https://matrix.to/#/$content'; + final image = QRImage( + inviteLink, + size: 256, + radius: 1, + ).generate(); + return compute(encodePng, image); + }, + ); + final bytes = imageResult.result; + if (bytes == null) return; + if (!context.mounted) return; + + MatrixImageFile( + bytes: bytes, + name: 'QR_Code_$content.png', + mimeType: 'image/png', + ).save(context); + } + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + final inviteLink = 'https://matrix.to/#/$content'; + return Scaffold( + backgroundColor: Colors.black.withAlpha(128), + extendBodyBehindAppBar: true, + appBar: AppBar( + elevation: 0, + leading: IconButton( + style: IconButton.styleFrom( + backgroundColor: Colors.black.withAlpha(128), + ), + icon: const Icon(Icons.close), + onPressed: Navigator.of(context).pop, + color: Colors.white, + tooltip: L10n.of(context).close, + ), + backgroundColor: Colors.transparent, + actions: [ + IconButton( + style: IconButton.styleFrom( + backgroundColor: Colors.black.withAlpha(128), + ), + icon: Icon(Icons.adaptive.share_outlined), + onPressed: () => FluffyShare.share( + inviteLink, + context, + ), + color: Colors.white, + tooltip: L10n.of(context).share, + ), + const SizedBox(width: 8), + IconButton( + style: IconButton.styleFrom( + backgroundColor: Colors.black.withAlpha(128), + ), + icon: const Icon(Icons.download_outlined), + onPressed: () => _save(context), + color: Colors.white, + tooltip: L10n.of(context).downloadFile, + ), + const SizedBox(width: 8), + ], + ), + body: Center( + child: Container( + margin: const EdgeInsets.all(32.0), + padding: const EdgeInsets.all(32.0), + decoration: BoxDecoration( + color: theme.colorScheme.primaryContainer, + borderRadius: BorderRadius.circular(AppConfig.borderRadius), + ), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + ConstrainedBox( + constraints: + const BoxConstraints(maxWidth: FluffyThemes.columnWidth), + child: PrettyQrView.data( + data: inviteLink, + decoration: PrettyQrDecoration( + shape: PrettyQrSmoothSymbol( + roundFactor: 1, + color: theme.colorScheme.onPrimaryContainer, + ), + ), + ), + ), + const SizedBox(height: 8.0), + SelectableText( + content, + textAlign: TextAlign.center, + style: TextStyle( + color: theme.colorScheme.onPrimaryContainer, + fontSize: 12, + ), + ), + ], + ), + ), + ), + ); + } +} diff --git a/lib/widgets/settings_switch_list_tile.dart b/lib/widgets/settings_switch_list_tile.dart new file mode 100644 index 0000000..f625f9e --- /dev/null +++ b/lib/widgets/settings_switch_list_tile.dart @@ -0,0 +1,38 @@ +import 'package:flutter/material.dart'; + +import 'package:fluffychat/config/setting_keys.dart'; + +class SettingsSwitchListTile extends StatefulWidget { + final AppSettings setting; + final String title; + final String? subtitle; + final Function(bool)? onChanged; + + const SettingsSwitchListTile.adaptive({ + super.key, + required this.setting, + required this.title, + this.subtitle, + this.onChanged, + }); + + @override + SettingsSwitchListTileState createState() => SettingsSwitchListTileState(); +} + +class SettingsSwitchListTileState extends State { + @override + Widget build(BuildContext context) { + final subtitle = widget.subtitle; + return SwitchListTile.adaptive( + value: widget.setting.value, + title: Text(widget.title), + subtitle: subtitle == null ? null : Text(subtitle), + onChanged: (bool newValue) async { + widget.onChanged?.call(newValue); + await widget.setting.setItem(newValue); + setState(() {}); + }, + ); + } +} diff --git a/lib/widgets/share_scaffold_dialog.dart b/lib/widgets/share_scaffold_dialog.dart new file mode 100644 index 0000000..4a40018 --- /dev/null +++ b/lib/widgets/share_scaffold_dialog.dart @@ -0,0 +1,191 @@ +import 'package:flutter/material.dart'; + +import 'package:cross_file/cross_file.dart'; +import 'package:go_router/go_router.dart'; +import 'package:matrix/matrix.dart'; + +import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/config/themes.dart'; +import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; +import 'package:fluffychat/widgets/avatar.dart'; +import 'package:fluffychat/widgets/matrix.dart'; + +abstract class ShareItem {} + +class TextShareItem extends ShareItem { + final String value; + TextShareItem(this.value); +} + +class ContentShareItem extends ShareItem { + final Map value; + ContentShareItem(this.value); +} + +class FileShareItem extends ShareItem { + final XFile value; + FileShareItem(this.value); +} + +class ShareScaffoldDialog extends StatefulWidget { + final List items; + + const ShareScaffoldDialog({required this.items, super.key}); + + @override + State createState() => _ShareScaffoldDialogState(); +} + +class _ShareScaffoldDialogState extends State { + final TextEditingController _filterController = TextEditingController(); + + String? selectedRoomId; + + void _toggleRoom(String roomId) { + setState(() { + selectedRoomId = roomId; + }); + } + + void _forwardAction() async { + final roomId = selectedRoomId; + if (roomId == null) { + throw Exception( + 'Started forward action before room was selected. This should never happen.', + ); + } + while (context.canPop()) { + context.pop(); + } + context.go('/rooms/$roomId', extra: widget.items); + } + + @override + Widget build(BuildContext context) { + final theme = Theme.of(context); + final rooms = Matrix.of(context) + .client + .rooms + .where( + (room) => + room.canSendDefaultMessages && + !room.isSpace && + room.membership == Membership.join, + ) + .toList(); + final filter = _filterController.text.trim().toLowerCase(); + return Scaffold( + appBar: AppBar( + leading: Center(child: CloseButton(onPressed: context.pop)), + title: Text(L10n.of(context).share), + ), + body: 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( + filled: true, + fillColor: theme.colorScheme.secondaryContainer, + border: OutlineInputBorder( + borderSide: BorderSide.none, + borderRadius: BorderRadius.circular(99), + ), + contentPadding: EdgeInsets.zero, + hintText: L10n.of(context).search, + hintStyle: TextStyle( + color: theme.colorScheme.onPrimaryContainer, + fontWeight: FontWeight.normal, + ), + floatingLabelBehavior: FloatingLabelBehavior.never, + prefixIcon: IconButton( + onPressed: () {}, + icon: Icon( + Icons.search_outlined, + color: theme.colorScheme.onPrimaryContainer, + ), + ), + ), + ), + ), + SliverList.builder( + itemCount: rooms.length, + itemBuilder: (context, i) { + final room = rooms[i]; + final displayname = room.getLocalizedDisplayname( + MatrixLocals(L10n.of(context)), + ); + final value = selectedRoomId == room.id; + final filterOut = !displayname.toLowerCase().contains(filter); + if (!value && filterOut) { + return const SizedBox.shrink(); + } + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 16.0), + child: Opacity( + opacity: filterOut ? 0.5 : 1, + child: CheckboxListTile.adaptive( + checkboxShape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(90), + ), + controlAffinity: ListTileControlAffinity.trailing, + shape: RoundedRectangleBorder( + borderRadius: + BorderRadius.circular(AppConfig.borderRadius), + ), + secondary: Avatar( + mxContent: room.avatar, + name: displayname, + size: Avatar.defaultSize * 0.75, + ), + title: Text( + displayname, + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + subtitle: Text( + room.directChatMatrixID ?? + L10n.of(context).countParticipants( + (room.summary.mJoinedMemberCount ?? 0) + + (room.summary.mInvitedMemberCount ?? 0), + ), + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + value: selectedRoomId == room.id, + onChanged: (_) => _toggleRoom(room.id), + ), + ), + ); + }, + ), + ], + ), + bottomNavigationBar: AnimatedSize( + duration: FluffyThemes.animationDuration, + curve: FluffyThemes.animationCurve, + child: selectedRoomId == null + ? const SizedBox.shrink() + : Material( + elevation: 8, + shadowColor: theme.appBarTheme.shadowColor, + child: Padding( + padding: const EdgeInsets.all(16.0), + child: ElevatedButton( + onPressed: _forwardAction, + child: Text(L10n.of(context).forward), + ), + ), + ), + ), + ); + } +} diff --git a/lib/widgets/theme_builder.dart b/lib/widgets/theme_builder.dart new file mode 100644 index 0000000..1ce0a6f --- /dev/null +++ b/lib/widgets/theme_builder.dart @@ -0,0 +1,104 @@ +import 'package:flutter/material.dart'; + +import 'package:collection/collection.dart'; +import 'package:dynamic_color/dynamic_color.dart'; +import 'package:provider/provider.dart'; +import 'package:shared_preferences/shared_preferences.dart'; + +import 'package:fluffychat/utils/color_value.dart'; + +class ThemeBuilder extends StatefulWidget { + final Widget Function( + BuildContext context, + ThemeMode themeMode, + Color? primaryColor, + ) builder; + + final String themeModeSettingsKey; + final String primaryColorSettingsKey; + + const ThemeBuilder({ + required this.builder, + this.themeModeSettingsKey = 'theme_mode', + this.primaryColorSettingsKey = 'primary_color', + super.key, + }); + + @override + State createState() => ThemeController(); +} + +class ThemeController extends State { + SharedPreferences? _sharedPreferences; + ThemeMode? _themeMode; + Color? _primaryColor; + + ThemeMode get themeMode => _themeMode ?? ThemeMode.system; + + Color? get primaryColor => _primaryColor; + + static ThemeController of(BuildContext context) => + Provider.of( + context, + listen: false, + ); + + void _loadData(_) async { + final preferences = + _sharedPreferences ??= await SharedPreferences.getInstance(); + + final rawThemeMode = preferences.getString(widget.themeModeSettingsKey); + final rawColor = preferences.getInt(widget.primaryColorSettingsKey); + + setState(() { + _themeMode = ThemeMode.values + .singleWhereOrNull((value) => value.name == rawThemeMode); + _primaryColor = rawColor == null ? null : Color(rawColor); + }); + } + + Future setThemeMode(ThemeMode newThemeMode) async { + final preferences = + _sharedPreferences ??= await SharedPreferences.getInstance(); + await preferences.setString(widget.themeModeSettingsKey, newThemeMode.name); + setState(() { + _themeMode = newThemeMode; + }); + } + + Future setPrimaryColor(Color? newPrimaryColor) async { + final preferences = + _sharedPreferences ??= await SharedPreferences.getInstance(); + if (newPrimaryColor == null) { + await preferences.remove(widget.primaryColorSettingsKey); + } else { + await preferences.setInt( + widget.primaryColorSettingsKey, + newPrimaryColor.hexValue, + ); + } + setState(() { + _primaryColor = newPrimaryColor; + }); + } + + @override + void initState() { + WidgetsBinding.instance.addPostFrameCallback(_loadData); + super.initState(); + } + + @override + Widget build(BuildContext context) { + return Provider( + create: (_) => this, + child: DynamicColorBuilder( + builder: (light, _) => widget.builder( + context, + themeMode, + primaryColor ?? light?.primary, + ), + ), + ); + } +} diff --git a/lib/widgets/unread_rooms_badge.dart b/lib/widgets/unread_rooms_badge.dart new file mode 100644 index 0000000..4951734 --- /dev/null +++ b/lib/widgets/unread_rooms_badge.dart @@ -0,0 +1,52 @@ +import 'package:flutter/material.dart'; + +import 'package:badges/badges.dart' as b; +import 'package:matrix/matrix.dart'; + +import 'matrix.dart'; + +class UnreadRoomsBadge extends StatelessWidget { + final bool Function(Room) filter; + final b.BadgePosition? badgePosition; + final Widget? child; + + const UnreadRoomsBadge({ + super.key, + required this.filter, + this.badgePosition, + this.child, + }); + + @override + Widget build(BuildContext context) { + final theme = Theme.of(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.colorScheme.primary, + elevation: 4, + borderSide: BorderSide( + color: theme.colorScheme.surface, + width: 2, + ), + ), + badgeContent: Text( + unreadCount.toString(), + style: TextStyle( + color: theme.colorScheme.onPrimary, + fontSize: 12, + ), + ), + showBadge: unreadCount != 0, + badgeAnimation: const b.BadgeAnimation.scale(), + position: badgePosition ?? b.BadgePosition.bottomEnd(), + child: child, + ); + } +} diff --git a/licenses.yaml b/licenses.yaml new file mode 100644 index 0000000..c10273e --- /dev/null +++ b/licenses.yaml @@ -0,0 +1,41 @@ +# This is a config for a license compliance checker script. It runs in CI. +# +# To run locally: +# dart run license_checker check-licenses -c licenses.yaml --problematic +# +# SPDX license list: https://spdx.org/licenses/ + +# Before you add a license here: Is it free software? Is it compatible with AGPL-3.0? +permittedLicenses: + - AGPL-3.0 + - Apache-2.0 + - BSD-2-Clause + - BSD-3-Clause + - EUPL-1.2 + - ISC + - LGPL-3.0 + - MIT + - MPL-2.0 + - Zlib + +packageLicenseOverride: + dependency_validator: Apache-2.0 + flutter_gen: MIT + hive: Apache-2.0 + hive_flutter: Apache-2.0 + latlong2: Apache-2.0 + platform_detect: Apache-2.0 + rxdart: Apache-2.0 + flutter_new_badger: MIT + + # flutter's internal packages + flutter_driver: BSD-3-Clause + flutter_localizations: BSD-3-Clause + flutter_test: BSD-3-Clause + flutter_web_plugins: BSD-3-Clause + fuchsia_remote_debug_protocol: BSD-3-Clause + integration_test: BSD-3-Clause + sky_engine: BSD-3-Clause + +rejectedLicenses: + - BUSL-1.1 diff --git a/linux/.gitignore b/linux/.gitignore new file mode 100644 index 0000000..d3896c9 --- /dev/null +++ b/linux/.gitignore @@ -0,0 +1 @@ +flutter/ephemeral diff --git a/linux/CMakeLists.txt b/linux/CMakeLists.txt new file mode 100644 index 0000000..ecb5b87 --- /dev/null +++ b/linux/CMakeLists.txt @@ -0,0 +1,147 @@ +# Project-level configuration. +cmake_minimum_required(VERSION 3.10) +project(runner LANGUAGES CXX) + +# smth sqlcipher_flutter_libs static linking Hundreds +set(OPENSSL_USE_STATIC_LIBS OFF) +# The name of the executable created for the application. Change this to change +# the on-disk name of your application. +set(BINARY_NAME "fluffychat") +# The unique GTK application identifier for this application. See: +# https://wiki.gnome.org/HowDoI/ChooseApplicationID +set(APPLICATION_ID "chat.fluffy.fluffychat") + +# Explicitly opt in to modern CMake behaviors to avoid warnings with recent +# versions of CMake. +cmake_policy(SET CMP0063 NEW) + +# Load bundled libraries from the lib/ directory relative to the binary. +set(CMAKE_INSTALL_RPATH "$ORIGIN/lib") + +# Root filesystem for cross-building. +if(FLUTTER_TARGET_PLATFORM_SYSROOT) + set(CMAKE_SYSROOT ${FLUTTER_TARGET_PLATFORM_SYSROOT}) + set(CMAKE_FIND_ROOT_PATH ${CMAKE_SYSROOT}) + set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) + set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) + set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) + set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +endif() + +# Define build configuration options. +if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + set(CMAKE_BUILD_TYPE "Debug" CACHE + STRING "Flutter build mode" FORCE) + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS + "Debug" "Profile" "Release") +endif() + +# Compilation settings that should be applied to most targets. +# +# Be cautious about adding new options here, as plugins use this function by +# default. In most cases, you should add new options to specific targets instead +# of modifying this function. +function(APPLY_STANDARD_SETTINGS TARGET) + target_compile_features(${TARGET} PUBLIC cxx_std_14) + target_compile_options(${TARGET} PRIVATE -Wall -Werror) + target_compile_options(${TARGET} PRIVATE "$<$>:-O3>") + target_compile_definitions(${TARGET} PRIVATE "$<$>:NDEBUG>") +endfunction() + +# Flutter library and tool build rules. +set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") +add_subdirectory(${FLUTTER_MANAGED_DIR}) + +# System-level dependencies. +find_package(PkgConfig REQUIRED) +pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) + +add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}") + +# Define the application target. To change its name, change BINARY_NAME above, +# not the value here, or `flutter run` will no longer work. +# +# Any new source files that you add to the application should be added here. +add_executable(${BINARY_NAME} + "main.cc" + "my_application.cc" + "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" +) + +# Apply the standard set of build settings. This can be removed for applications +# that need different build settings. +apply_standard_settings(${BINARY_NAME}) + +# Add dependency libraries. Add any application-specific dependencies here. +target_link_libraries(${BINARY_NAME} PRIVATE flutter) +target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK) + +# Run the Flutter tool portions of the build. This must not be removed. +add_dependencies(${BINARY_NAME} flutter_assemble) + +# Only the install-generated bundle's copy of the executable will launch +# correctly, since the resources must in the right relative locations. To avoid +# people trying to run the unbundled copy, put it in a subdirectory instead of +# the default top-level location. +set_target_properties(${BINARY_NAME} + PROPERTIES + RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/intermediates_do_not_run" +) + + +# Generated plugin build rules, which manage building the plugins and adding +# them to the application. +include(flutter/generated_plugins.cmake) + + +# === Installation === +# By default, "installing" just makes a relocatable bundle in the build +# directory. +set(BUILD_BUNDLE_DIR "${PROJECT_BINARY_DIR}/bundle") +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) +endif() + +# Start with a clean build bundle directory every time. +install(CODE " + file(REMOVE_RECURSE \"${BUILD_BUNDLE_DIR}/\") + " COMPONENT Runtime) + +set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") +set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib") + +install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +foreach(bundled_library ${PLUGIN_BUNDLED_LIBRARIES}) + install(FILES "${bundled_library}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endforeach(bundled_library) + +# Copy the native assets provided by the build.dart from all packages. +set(NATIVE_ASSETS_DIR "${PROJECT_BUILD_DIR}native_assets/linux/") +install(DIRECTORY "${NATIVE_ASSETS_DIR}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +# Fully re-copy the assets directory on each build to avoid having stale files +# from a previous install. +set(FLUTTER_ASSET_DIR_NAME "flutter_assets") +install(CODE " + file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") + " COMPONENT Runtime) +install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" + DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) + +# Install the AOT library on non-Debug builds only. +if(NOT CMAKE_BUILD_TYPE MATCHES "Debug") + install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endif() diff --git a/linux/flutter/CMakeLists.txt b/linux/flutter/CMakeLists.txt new file mode 100644 index 0000000..d5bd016 --- /dev/null +++ b/linux/flutter/CMakeLists.txt @@ -0,0 +1,88 @@ +# This file controls Flutter-level build steps. It should not be edited. +cmake_minimum_required(VERSION 3.10) + +set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") + +# Configuration provided via flutter tool. +include(${EPHEMERAL_DIR}/generated_config.cmake) + +# TODO: Move the rest of this into files in ephemeral. See +# https://github.com/flutter/flutter/issues/57146. + +# Serves the same purpose as list(TRANSFORM ... PREPEND ...), +# which isn't available in 3.10. +function(list_prepend LIST_NAME PREFIX) + set(NEW_LIST "") + foreach(element ${${LIST_NAME}}) + list(APPEND NEW_LIST "${PREFIX}${element}") + endforeach(element) + set(${LIST_NAME} "${NEW_LIST}" PARENT_SCOPE) +endfunction() + +# === Flutter Library === +# System-level dependencies. +find_package(PkgConfig REQUIRED) +pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) +pkg_check_modules(GLIB REQUIRED IMPORTED_TARGET glib-2.0) +pkg_check_modules(GIO REQUIRED IMPORTED_TARGET gio-2.0) + +set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/libflutter_linux_gtk.so") + +# Published to parent scope for install step. +set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) +set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) +set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) +set(AOT_LIBRARY "${PROJECT_DIR}/build/lib/libapp.so" PARENT_SCOPE) + +list(APPEND FLUTTER_LIBRARY_HEADERS + "fl_basic_message_channel.h" + "fl_binary_codec.h" + "fl_binary_messenger.h" + "fl_dart_project.h" + "fl_engine.h" + "fl_json_message_codec.h" + "fl_json_method_codec.h" + "fl_message_codec.h" + "fl_method_call.h" + "fl_method_channel.h" + "fl_method_codec.h" + "fl_method_response.h" + "fl_plugin_registrar.h" + "fl_plugin_registry.h" + "fl_standard_message_codec.h" + "fl_standard_method_codec.h" + "fl_string_codec.h" + "fl_value.h" + "fl_view.h" + "flutter_linux.h" +) +list_prepend(FLUTTER_LIBRARY_HEADERS "${EPHEMERAL_DIR}/flutter_linux/") +add_library(flutter INTERFACE) +target_include_directories(flutter INTERFACE + "${EPHEMERAL_DIR}" +) +target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}") +target_link_libraries(flutter INTERFACE + PkgConfig::GTK + PkgConfig::GLIB + PkgConfig::GIO +) +add_dependencies(flutter flutter_assemble) + +# === Flutter tool backend === +# _phony_ is a non-existent file to force this command to run every time, +# since currently there's no way to get a full input/output list from the +# flutter tool. +add_custom_command( + OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} + ${CMAKE_CURRENT_BINARY_DIR}/_phony_ + COMMAND ${CMAKE_COMMAND} -E env + ${FLUTTER_TOOL_ENVIRONMENT} + "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.sh" + ${FLUTTER_TARGET_PLATFORM} ${CMAKE_BUILD_TYPE} + VERBATIM +) +add_custom_target(flutter_assemble DEPENDS + "${FLUTTER_LIBRARY}" + ${FLUTTER_LIBRARY_HEADERS} +) diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc new file mode 100644 index 0000000..deccda1 --- /dev/null +++ b/linux/flutter/generated_plugin_registrant.cc @@ -0,0 +1,75 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#include "generated_plugin_registrant.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +void fl_register_plugins(FlPluginRegistry* registry) { + g_autoptr(FlPluginRegistrar) desktop_drop_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "DesktopDropPlugin"); + desktop_drop_plugin_register_with_registrar(desktop_drop_registrar); + g_autoptr(FlPluginRegistrar) desktop_webview_window_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "DesktopWebviewWindowPlugin"); + desktop_webview_window_plugin_register_with_registrar(desktop_webview_window_registrar); + g_autoptr(FlPluginRegistrar) dynamic_color_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "DynamicColorPlugin"); + dynamic_color_plugin_register_with_registrar(dynamic_color_registrar); + g_autoptr(FlPluginRegistrar) emoji_picker_flutter_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "EmojiPickerFlutterPlugin"); + emoji_picker_flutter_plugin_register_with_registrar(emoji_picker_flutter_registrar); + g_autoptr(FlPluginRegistrar) file_selector_linux_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "FileSelectorPlugin"); + file_selector_plugin_register_with_registrar(file_selector_linux_registrar); + g_autoptr(FlPluginRegistrar) flutter_secure_storage_linux_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "FlutterSecureStorageLinuxPlugin"); + flutter_secure_storage_linux_plugin_register_with_registrar(flutter_secure_storage_linux_registrar); + g_autoptr(FlPluginRegistrar) flutter_webrtc_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "FlutterWebRTCPlugin"); + flutter_web_r_t_c_plugin_register_with_registrar(flutter_webrtc_registrar); + g_autoptr(FlPluginRegistrar) gtk_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "GtkPlugin"); + gtk_plugin_register_with_registrar(gtk_registrar); + g_autoptr(FlPluginRegistrar) handy_window_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "HandyWindowPlugin"); + handy_window_plugin_register_with_registrar(handy_window_registrar); + g_autoptr(FlPluginRegistrar) record_linux_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "RecordLinuxPlugin"); + record_linux_plugin_register_with_registrar(record_linux_registrar); + g_autoptr(FlPluginRegistrar) screen_retriever_linux_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "ScreenRetrieverLinuxPlugin"); + screen_retriever_linux_plugin_register_with_registrar(screen_retriever_linux_registrar); + g_autoptr(FlPluginRegistrar) sqlcipher_flutter_libs_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "Sqlite3FlutterLibsPlugin"); + sqlite3_flutter_libs_plugin_register_with_registrar(sqlcipher_flutter_libs_registrar); + g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin"); + url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar); + g_autoptr(FlPluginRegistrar) webcrypto_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "WebcryptoPlugin"); + webcrypto_plugin_register_with_registrar(webcrypto_registrar); + g_autoptr(FlPluginRegistrar) window_manager_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "WindowManagerPlugin"); + window_manager_plugin_register_with_registrar(window_manager_registrar); + g_autoptr(FlPluginRegistrar) window_to_front_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "WindowToFrontPlugin"); + window_to_front_plugin_register_with_registrar(window_to_front_registrar); +} diff --git a/linux/flutter/generated_plugin_registrant.h b/linux/flutter/generated_plugin_registrant.h new file mode 100644 index 0000000..e0f0a47 --- /dev/null +++ b/linux/flutter/generated_plugin_registrant.h @@ -0,0 +1,15 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#ifndef GENERATED_PLUGIN_REGISTRANT_ +#define GENERATED_PLUGIN_REGISTRANT_ + +#include + +// Registers Flutter plugins. +void fl_register_plugins(FlPluginRegistry* registry); + +#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake new file mode 100644 index 0000000..5341305 --- /dev/null +++ b/linux/flutter/generated_plugins.cmake @@ -0,0 +1,40 @@ +# +# Generated file, do not edit. +# + +list(APPEND FLUTTER_PLUGIN_LIST + desktop_drop + desktop_webview_window + dynamic_color + emoji_picker_flutter + file_selector_linux + flutter_secure_storage_linux + flutter_webrtc + gtk + handy_window + record_linux + screen_retriever_linux + sqlcipher_flutter_libs + url_launcher_linux + webcrypto + window_manager + window_to_front +) + +list(APPEND FLUTTER_FFI_PLUGIN_LIST + flutter_vodozemac +) + +set(PLUGIN_BUNDLED_LIBRARIES) + +foreach(plugin ${FLUTTER_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/linux plugins/${plugin}) + target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) + list(APPEND PLUGIN_BUNDLED_LIBRARIES $) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) +endforeach(plugin) + +foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/linux plugins/${ffi_plugin}) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) +endforeach(ffi_plugin) diff --git a/linux/main.cc b/linux/main.cc new file mode 100644 index 0000000..e7c5c54 --- /dev/null +++ b/linux/main.cc @@ -0,0 +1,6 @@ +#include "my_application.h" + +int main(int argc, char** argv) { + g_autoptr(MyApplication) app = my_application_new(); + return g_application_run(G_APPLICATION(app), argc, argv); +} diff --git a/linux/my_application.cc b/linux/my_application.cc new file mode 100644 index 0000000..986be4e --- /dev/null +++ b/linux/my_application.cc @@ -0,0 +1,137 @@ +#include "my_application.h" + +#include +#ifdef GDK_WINDOWING_X11 +#include +#endif + +#include "flutter/generated_plugin_registrant.h" + +struct _MyApplication { + GtkApplication parent_instance; + char** dart_entrypoint_arguments; +}; + +G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) + +// Implements GApplication::activate. +static void my_application_activate(GApplication* application) { + MyApplication* self = MY_APPLICATION(application); + GtkWindow* window = + GTK_WINDOW(gtk_application_window_new(GTK_APPLICATION(application))); + + // Use a header bar when running in GNOME as this is the common style used + // by applications and is the setup most users will be using (e.g. Ubuntu + // desktop). + // If running on X and not using GNOME then just use a traditional title bar + // in case the window manager does more exotic layout, e.g. tiling. + // If running on Wayland assume the header bar will work (may need changing + // if future cases occur). + gboolean use_header_bar = TRUE; + // Lines added to the template start + // Please re-add these lines after updating the linux build files + // If the user explicitly requests to disable the header bar, switch back to + // using a traditional title bar + const gchar* gtk_csd_env = g_getenv("GTK_CSD"); + if (gtk_csd_env != nullptr && g_strcmp0(gtk_csd_env, "1") != 0) + use_header_bar = FALSE; + // Lines added to the template end +#ifdef GDK_WINDOWING_X11 + GdkScreen* screen = gtk_window_get_screen(window); + if (GDK_IS_X11_SCREEN(screen)) { + const gchar* wm_name = gdk_x11_screen_get_window_manager_name(screen); + if (g_strcmp0(wm_name, "GNOME Shell") != 0) { + use_header_bar = FALSE; + // Lines added to the template start + // Please re-add these lines after updating the linux build files + // Disable libhandy here, otherwise the close button disappears on KDE X11 + g_setenv("GTK_CSD", "0", TRUE); + // Lines added to the template end + } + } +#endif + if (use_header_bar) { + GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new()); + gtk_widget_show(GTK_WIDGET(header_bar)); + gtk_header_bar_set_title(header_bar, "FluffyChat"); + gtk_header_bar_set_show_close_button(header_bar, TRUE); + gtk_window_set_titlebar(window, GTK_WIDGET(header_bar)); + } else { + gtk_window_set_title(window, "FluffyChat"); + } + + gtk_window_set_default_size(window, 864, 720); + + g_autoptr(FlDartProject) project = fl_dart_project_new(); + fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); + + FlView* view = fl_view_new(project); + gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); + + gtk_widget_show(GTK_WIDGET(window)); + gtk_widget_show(GTK_WIDGET(view)); + gtk_widget_grab_focus(GTK_WIDGET(view)); +} + +// Implements GApplication::local_command_line. +static gboolean my_application_local_command_line(GApplication* application, gchar*** arguments, int* exit_status) { + MyApplication* self = MY_APPLICATION(application); + // Strip out the first argument as it is the binary name. + self->dart_entrypoint_arguments = g_strdupv(*arguments + 1); + + g_autoptr(GError) error = nullptr; + if (!g_application_register(application, nullptr, &error)) { + g_warning("Failed to register: %s", error->message); + *exit_status = 1; + return TRUE; + } + + g_application_activate(application); + *exit_status = 0; + + return TRUE; +} + +// Implements GApplication::startup. +static void my_application_startup(GApplication* application) { + //MyApplication* self = MY_APPLICATION(object); + + // Perform any actions required at application startup. + + G_APPLICATION_CLASS(my_application_parent_class)->startup(application); +} + +// Implements GApplication::shutdown. +static void my_application_shutdown(GApplication* application) { + //MyApplication* self = MY_APPLICATION(object); + + // Perform any actions required at application shutdown. + + G_APPLICATION_CLASS(my_application_parent_class)->shutdown(application); +} + +// Implements GObject::dispose. +static void my_application_dispose(GObject* object) { + MyApplication* self = MY_APPLICATION(object); + g_clear_pointer(&self->dart_entrypoint_arguments, g_strfreev); + G_OBJECT_CLASS(my_application_parent_class)->dispose(object); +} + +static void my_application_class_init(MyApplicationClass* klass) { + G_APPLICATION_CLASS(klass)->activate = my_application_activate; + G_APPLICATION_CLASS(klass)->local_command_line = my_application_local_command_line; + G_APPLICATION_CLASS(klass)->startup = my_application_startup; + G_APPLICATION_CLASS(klass)->shutdown = my_application_shutdown; + G_OBJECT_CLASS(klass)->dispose = my_application_dispose; +} + +static void my_application_init(MyApplication* self) {} + +MyApplication* my_application_new() { + return MY_APPLICATION(g_object_new(my_application_get_type(), + "application-id", APPLICATION_ID, + "flags", G_APPLICATION_NON_UNIQUE, + nullptr)); +} diff --git a/linux/my_application.h b/linux/my_application.h new file mode 100644 index 0000000..72271d5 --- /dev/null +++ b/linux/my_application.h @@ -0,0 +1,18 @@ +#ifndef FLUTTER_MY_APPLICATION_H_ +#define FLUTTER_MY_APPLICATION_H_ + +#include + +G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION, + GtkApplication) + +/** + * my_application_new: + * + * Creates a new Flutter-based application. + * + * Returns: a new #MyApplication. + */ +MyApplication* my_application_new(); + +#endif // FLUTTER_MY_APPLICATION_H_ diff --git a/macos/.gitignore b/macos/.gitignore new file mode 100644 index 0000000..746adbb --- /dev/null +++ b/macos/.gitignore @@ -0,0 +1,7 @@ +# Flutter-related +**/Flutter/ephemeral/ +**/Pods/ + +# Xcode-related +**/dgph +**/xcuserdata/ diff --git a/macos/Flutter/Flutter-Debug.xcconfig b/macos/Flutter/Flutter-Debug.xcconfig new file mode 100644 index 0000000..4b81f9b --- /dev/null +++ b/macos/Flutter/Flutter-Debug.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/macos/Flutter/Flutter-Release.xcconfig b/macos/Flutter/Flutter-Release.xcconfig new file mode 100644 index 0000000..5caa9d1 --- /dev/null +++ b/macos/Flutter/Flutter-Release.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift new file mode 100644 index 0000000..3e0712f --- /dev/null +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -0,0 +1,72 @@ +// +// Generated file. Do not edit. +// + +import FlutterMacOS +import Foundation + +import app_links +import audio_session +import desktop_drop +import desktop_webview_window +import device_info_plus +import dynamic_color +import emoji_picker_flutter +import file_picker +import file_selector_macos +import firebase_core +import flutter_local_notifications +import flutter_new_badger +import flutter_secure_storage_macos +import flutter_web_auth_2 +import flutter_webrtc +import geolocator_apple +import just_audio +import package_info_plus +import path_provider_foundation +import record_macos +import screen_retriever_macos +import share_plus +import shared_preferences_foundation +import sqlcipher_flutter_libs +import url_launcher_macos +import video_compress +import video_player_avfoundation +import wakelock_plus +import webcrypto +import window_manager +import window_to_front + +func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + AppLinksMacosPlugin.register(with: registry.registrar(forPlugin: "AppLinksMacosPlugin")) + AudioSessionPlugin.register(with: registry.registrar(forPlugin: "AudioSessionPlugin")) + DesktopDropPlugin.register(with: registry.registrar(forPlugin: "DesktopDropPlugin")) + DesktopWebviewWindowPlugin.register(with: registry.registrar(forPlugin: "DesktopWebviewWindowPlugin")) + DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin")) + DynamicColorPlugin.register(with: registry.registrar(forPlugin: "DynamicColorPlugin")) + EmojiPickerFlutterPlugin.register(with: registry.registrar(forPlugin: "EmojiPickerFlutterPlugin")) + FilePickerPlugin.register(with: registry.registrar(forPlugin: "FilePickerPlugin")) + FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin")) + FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin")) + FlutterLocalNotificationsPlugin.register(with: registry.registrar(forPlugin: "FlutterLocalNotificationsPlugin")) + FlutterNewBadgerPlugin.register(with: registry.registrar(forPlugin: "FlutterNewBadgerPlugin")) + FlutterSecureStoragePlugin.register(with: registry.registrar(forPlugin: "FlutterSecureStoragePlugin")) + FlutterWebAuth2Plugin.register(with: registry.registrar(forPlugin: "FlutterWebAuth2Plugin")) + FlutterWebRTCPlugin.register(with: registry.registrar(forPlugin: "FlutterWebRTCPlugin")) + GeolocatorPlugin.register(with: registry.registrar(forPlugin: "GeolocatorPlugin")) + JustAudioPlugin.register(with: registry.registrar(forPlugin: "JustAudioPlugin")) + FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin")) + PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) + RecordMacOsPlugin.register(with: registry.registrar(forPlugin: "RecordMacOsPlugin")) + ScreenRetrieverMacosPlugin.register(with: registry.registrar(forPlugin: "ScreenRetrieverMacosPlugin")) + SharePlusMacosPlugin.register(with: registry.registrar(forPlugin: "SharePlusMacosPlugin")) + SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) + Sqlite3FlutterLibsPlugin.register(with: registry.registrar(forPlugin: "Sqlite3FlutterLibsPlugin")) + UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) + VideoCompressPlugin.register(with: registry.registrar(forPlugin: "VideoCompressPlugin")) + FVPVideoPlayerPlugin.register(with: registry.registrar(forPlugin: "FVPVideoPlayerPlugin")) + WakelockPlusMacosPlugin.register(with: registry.registrar(forPlugin: "WakelockPlusMacosPlugin")) + WebcryptoPlugin.register(with: registry.registrar(forPlugin: "WebcryptoPlugin")) + WindowManagerPlugin.register(with: registry.registrar(forPlugin: "WindowManagerPlugin")) + WindowToFrontPlugin.register(with: registry.registrar(forPlugin: "WindowToFrontPlugin")) +} diff --git a/macos/Podfile b/macos/Podfile new file mode 100644 index 0000000..b9bae3a --- /dev/null +++ b/macos/Podfile @@ -0,0 +1,43 @@ +platform :osx, '12.2' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'ephemeral', 'Flutter-Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure \"flutter pub get\" is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Flutter-Generated.xcconfig, then run \"flutter pub get\"" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_macos_podfile_setup + +target 'Runner' do + use_frameworks! + use_modular_headers! + + flutter_install_all_macos_pods File.dirname(File.realpath(__FILE__)) +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_macos_build_settings(target) + target.build_configurations.each do |config| + config.build_settings.delete 'MACOSX_DEPLOYMENT_TARGET' + end + end +end diff --git a/macos/Podfile.lock b/macos/Podfile.lock new file mode 100644 index 0000000..b125731 --- /dev/null +++ b/macos/Podfile.lock @@ -0,0 +1,217 @@ +PODS: + - app_links (6.4.1): + - FlutterMacOS + - audio_session (0.0.1): + - FlutterMacOS + - desktop_drop (0.0.1): + - FlutterMacOS + - device_info_plus (0.0.1): + - FlutterMacOS + - dynamic_color (0.0.2): + - FlutterMacOS + - emoji_picker_flutter (0.0.1): + - FlutterMacOS + - file_picker (0.0.1): + - FlutterMacOS + - file_selector_macos (0.0.1): + - FlutterMacOS + - flutter_local_notifications (0.0.1): + - FlutterMacOS + - flutter_new_badger (0.0.1): + - FlutterMacOS + - flutter_secure_storage_macos (6.1.3): + - FlutterMacOS + - flutter_vodozemac (0.0.1): + - FlutterMacOS + - flutter_web_auth_2 (3.0.0): + - FlutterMacOS + - flutter_webrtc (1.2.0): + - FlutterMacOS + - WebRTC-SDK (= 137.7151.04) + - FlutterMacOS (1.0.0) + - geolocator_apple (1.2.0): + - Flutter + - FlutterMacOS + - just_audio (0.0.1): + - Flutter + - FlutterMacOS + - package_info_plus (0.0.1): + - FlutterMacOS + - path_provider_foundation (0.0.1): + - Flutter + - FlutterMacOS + - record_macos (1.1.0): + - FlutterMacOS + - screen_retriever_macos (0.0.1): + - FlutterMacOS + - share_plus (0.0.1): + - FlutterMacOS + - shared_preferences_foundation (0.0.1): + - Flutter + - FlutterMacOS + - SQLCipher (4.10.0): + - SQLCipher/standard (= 4.10.0) + - SQLCipher/common (4.10.0) + - SQLCipher/standard (4.10.0): + - SQLCipher/common + - sqlcipher_flutter_libs (0.0.1): + - FlutterMacOS + - SQLCipher (~> 4.10.0) + - url_launcher_macos (0.0.1): + - FlutterMacOS + - video_compress (0.3.0): + - FlutterMacOS + - video_player_avfoundation (0.0.1): + - Flutter + - FlutterMacOS + - wakelock_plus (0.0.1): + - FlutterMacOS + - webcrypto (0.1.1): + - Flutter + - FlutterMacOS + - WebRTC-SDK (137.7151.04) + - window_manager (0.5.0): + - FlutterMacOS + - window_to_front (0.0.1): + - FlutterMacOS + +DEPENDENCIES: + - app_links (from `Flutter/ephemeral/.symlinks/plugins/app_links/macos`) + - audio_session (from `Flutter/ephemeral/.symlinks/plugins/audio_session/macos`) + - desktop_drop (from `Flutter/ephemeral/.symlinks/plugins/desktop_drop/macos`) + - device_info_plus (from `Flutter/ephemeral/.symlinks/plugins/device_info_plus/macos`) + - dynamic_color (from `Flutter/ephemeral/.symlinks/plugins/dynamic_color/macos`) + - emoji_picker_flutter (from `Flutter/ephemeral/.symlinks/plugins/emoji_picker_flutter/macos`) + - file_picker (from `Flutter/ephemeral/.symlinks/plugins/file_picker/macos`) + - file_selector_macos (from `Flutter/ephemeral/.symlinks/plugins/file_selector_macos/macos`) + - flutter_local_notifications (from `Flutter/ephemeral/.symlinks/plugins/flutter_local_notifications/macos`) + - flutter_new_badger (from `Flutter/ephemeral/.symlinks/plugins/flutter_new_badger/macos`) + - flutter_secure_storage_macos (from `Flutter/ephemeral/.symlinks/plugins/flutter_secure_storage_macos/macos`) + - flutter_vodozemac (from `Flutter/ephemeral/.symlinks/plugins/flutter_vodozemac/macos`) + - flutter_web_auth_2 (from `Flutter/ephemeral/.symlinks/plugins/flutter_web_auth_2/macos`) + - flutter_webrtc (from `Flutter/ephemeral/.symlinks/plugins/flutter_webrtc/macos`) + - FlutterMacOS (from `Flutter/ephemeral`) + - geolocator_apple (from `Flutter/ephemeral/.symlinks/plugins/geolocator_apple/darwin`) + - just_audio (from `Flutter/ephemeral/.symlinks/plugins/just_audio/darwin`) + - package_info_plus (from `Flutter/ephemeral/.symlinks/plugins/package_info_plus/macos`) + - path_provider_foundation (from `Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin`) + - record_macos (from `Flutter/ephemeral/.symlinks/plugins/record_macos/macos`) + - screen_retriever_macos (from `Flutter/ephemeral/.symlinks/plugins/screen_retriever_macos/macos`) + - share_plus (from `Flutter/ephemeral/.symlinks/plugins/share_plus/macos`) + - shared_preferences_foundation (from `Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/darwin`) + - sqlcipher_flutter_libs (from `Flutter/ephemeral/.symlinks/plugins/sqlcipher_flutter_libs/macos`) + - url_launcher_macos (from `Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos`) + - video_compress (from `Flutter/ephemeral/.symlinks/plugins/video_compress/macos`) + - video_player_avfoundation (from `Flutter/ephemeral/.symlinks/plugins/video_player_avfoundation/darwin`) + - wakelock_plus (from `Flutter/ephemeral/.symlinks/plugins/wakelock_plus/macos`) + - webcrypto (from `Flutter/ephemeral/.symlinks/plugins/webcrypto/darwin`) + - window_manager (from `Flutter/ephemeral/.symlinks/plugins/window_manager/macos`) + - window_to_front (from `Flutter/ephemeral/.symlinks/plugins/window_to_front/macos`) + +SPEC REPOS: + trunk: + - SQLCipher + - WebRTC-SDK + +EXTERNAL SOURCES: + app_links: + :path: Flutter/ephemeral/.symlinks/plugins/app_links/macos + audio_session: + :path: Flutter/ephemeral/.symlinks/plugins/audio_session/macos + desktop_drop: + :path: Flutter/ephemeral/.symlinks/plugins/desktop_drop/macos + device_info_plus: + :path: Flutter/ephemeral/.symlinks/plugins/device_info_plus/macos + dynamic_color: + :path: Flutter/ephemeral/.symlinks/plugins/dynamic_color/macos + emoji_picker_flutter: + :path: Flutter/ephemeral/.symlinks/plugins/emoji_picker_flutter/macos + file_picker: + :path: Flutter/ephemeral/.symlinks/plugins/file_picker/macos + file_selector_macos: + :path: Flutter/ephemeral/.symlinks/plugins/file_selector_macos/macos + flutter_local_notifications: + :path: Flutter/ephemeral/.symlinks/plugins/flutter_local_notifications/macos + flutter_new_badger: + :path: Flutter/ephemeral/.symlinks/plugins/flutter_new_badger/macos + flutter_secure_storage_macos: + :path: Flutter/ephemeral/.symlinks/plugins/flutter_secure_storage_macos/macos + flutter_vodozemac: + :path: Flutter/ephemeral/.symlinks/plugins/flutter_vodozemac/macos + flutter_web_auth_2: + :path: Flutter/ephemeral/.symlinks/plugins/flutter_web_auth_2/macos + flutter_webrtc: + :path: Flutter/ephemeral/.symlinks/plugins/flutter_webrtc/macos + FlutterMacOS: + :path: Flutter/ephemeral + geolocator_apple: + :path: Flutter/ephemeral/.symlinks/plugins/geolocator_apple/darwin + just_audio: + :path: Flutter/ephemeral/.symlinks/plugins/just_audio/darwin + package_info_plus: + :path: Flutter/ephemeral/.symlinks/plugins/package_info_plus/macos + path_provider_foundation: + :path: Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin + record_macos: + :path: Flutter/ephemeral/.symlinks/plugins/record_macos/macos + screen_retriever_macos: + :path: Flutter/ephemeral/.symlinks/plugins/screen_retriever_macos/macos + share_plus: + :path: Flutter/ephemeral/.symlinks/plugins/share_plus/macos + shared_preferences_foundation: + :path: Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/darwin + sqlcipher_flutter_libs: + :path: Flutter/ephemeral/.symlinks/plugins/sqlcipher_flutter_libs/macos + url_launcher_macos: + :path: Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos + video_compress: + :path: Flutter/ephemeral/.symlinks/plugins/video_compress/macos + video_player_avfoundation: + :path: Flutter/ephemeral/.symlinks/plugins/video_player_avfoundation/darwin + wakelock_plus: + :path: Flutter/ephemeral/.symlinks/plugins/wakelock_plus/macos + webcrypto: + :path: Flutter/ephemeral/.symlinks/plugins/webcrypto/darwin + window_manager: + :path: Flutter/ephemeral/.symlinks/plugins/window_manager/macos + window_to_front: + :path: Flutter/ephemeral/.symlinks/plugins/window_to_front/macos + +SPEC CHECKSUMS: + app_links: 05a6ec2341985eb05e9f97dc63f5837c39895c3f + audio_session: eaca2512cf2b39212d724f35d11f46180ad3a33e + desktop_drop: 10a3e6a7fa9dbe350541f2574092fecfa345a07b + device_info_plus: 4fb280989f669696856f8b129e4a5e3cd6c48f76 + dynamic_color: cb7c2a300ee67ed3bd96c3e852df3af0300bf610 + emoji_picker_flutter: 51ca408e289d84d1e460016b2a28721ec754fcf7 + file_picker: 7584aae6fa07a041af2b36a2655122d42f578c1a + file_selector_macos: 6280b52b459ae6c590af5d78fc35c7267a3c4b31 + flutter_local_notifications: 4bf37a31afde695b56091b4ae3e4d9c7a7e6cda0 + flutter_new_badger: 6fe9bf7e42793a164032c21f164c0ad9985cd0f2 + flutter_secure_storage_macos: 7f45e30f838cf2659862a4e4e3ee1c347c2b3b54 + flutter_vodozemac: fd2ea9cb3e2a37beaac883a369811fbfe042fc53 + flutter_web_auth_2: 62b08da29f15a20fa63f144234622a1488d45b65 + flutter_webrtc: 718eae22a371cd94e5d56aa4f301443ebc5bb737 + FlutterMacOS: d0db08ddef1a9af05a5ec4b724367152bb0500b1 + geolocator_apple: ab36aa0e8b7d7a2d7639b3b4e48308394e8cef5e + just_audio: 4e391f57b79cad2b0674030a00453ca5ce817eed + package_info_plus: f0052d280d17aa382b932f399edf32507174e870 + path_provider_foundation: 080d55be775b7414fd5a5ef3ac137b97b097e564 + record_macos: 43194b6c06ca6f8fa132e2acea72b202b92a0f5b + screen_retriever_macos: 452e51764a9e1cdb74b3c541238795849f21557f + share_plus: 510bf0af1a42cd602274b4629920c9649c52f4cc + shared_preferences_foundation: 9e1978ff2562383bd5676f64ec4e9aa8fa06a6f7 + SQLCipher: eb79c64049cb002b4e9fcb30edb7979bf4706dfc + sqlcipher_flutter_libs: 01ead34db27ae5e49987cae46c8a34199eb22cfe + url_launcher_macos: 0fba8ddabfc33ce0a9afe7c5fef5aab3d8d2d673 + video_compress: 752b161da855df2492dd1a8fa899743cc8fe9534 + video_player_avfoundation: 2cef49524dd1f16c5300b9cd6efd9611ce03639b + wakelock_plus: 917609be14d812ddd9e9528876538b2263aaa03b + webcrypto: a5f5eb3e375cf0a99993e207e97cdcab5c94ce2e + WebRTC-SDK: 40d4f5ba05cadff14e4db5614aec402a633f007e + window_manager: b729e31d38fb04905235df9ea896128991cad99e + window_to_front: 9e76fd432e36700a197dac86a0011e49c89abe0a + +PODFILE CHECKSUM: d0975b16fbdecb73b109d8fbc88aa77ffe4c7a8d + +COCOAPODS: 1.16.2 diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj new file mode 100644 index 0000000..5b297f8 --- /dev/null +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,657 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXAggregateTarget section */ + 33CC111A2044C6BA0003C045 /* Flutter Assemble */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */; + buildPhases = ( + 33CC111E2044C6BF0003C045 /* ShellScript */, + ); + dependencies = ( + ); + name = "Flutter Assemble"; + productName = FLX; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; + 9CAF203E1D098383F2EDFFCB /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3C62FEBAA272B5A33AFFC95 /* Pods_Runner.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 33CC10E52044A3C60003C045 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 33CC111A2044C6BA0003C045; + remoteInfo = FLX; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 33CC110E2044A8840003C045 /* Bundle Framework */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Bundle Framework"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 2D119A6B273B2CE4A6AE3322 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = ""; }; + 33CC10ED2044A3C60003C045 /* FluffyChat.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FluffyChat.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = ""; }; + 33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; + 33CC10F72044A3C60003C045 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Runner/Info.plist; sourceTree = ""; }; + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainFlutterWindow.swift; sourceTree = ""; }; + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = ""; }; + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = ""; }; + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = ""; }; + 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; + 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; + 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; + 35E6B919318905352ECC7D69 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; + 5CDC3DD55F4AC23D2067B292 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; + A1CEA3AEDDC9976F00DB3AFE /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + AF767714B5564068E3D500A8 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + B3C62FEBAA272B5A33AFFC95 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B5C1522B2F3865267414BD3C /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; + CC70F3DF47EEC43FC2D35C75 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 33CC10EA2044A3C60003C045 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 9CAF203E1D098383F2EDFFCB /* Pods_Runner.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 33BA886A226E78AF003329D5 /* Configs */ = { + isa = PBXGroup; + children = ( + 33E5194F232828860026EE4D /* AppInfo.xcconfig */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */, + ); + path = Configs; + sourceTree = ""; + }; + 33CC10E42044A3C60003C045 = { + isa = PBXGroup; + children = ( + 33FAB671232836740065AC1E /* Runner */, + 33CEB47122A05771004F2AC0 /* Flutter */, + 33CC10EE2044A3C60003C045 /* Products */, + D73912EC22F37F3D000D13A0 /* Frameworks */, + F9F203356080D460FB6D4567 /* Pods */, + ); + sourceTree = ""; + }; + 33CC10EE2044A3C60003C045 /* Products */ = { + isa = PBXGroup; + children = ( + 33CC10ED2044A3C60003C045 /* FluffyChat.app */, + ); + name = Products; + sourceTree = ""; + }; + 33CC11242044D66E0003C045 /* Resources */ = { + isa = PBXGroup; + children = ( + 33CC10F22044A3C60003C045 /* Assets.xcassets */, + 33CC10F42044A3C60003C045 /* MainMenu.xib */, + 33CC10F72044A3C60003C045 /* Info.plist */, + ); + name = Resources; + path = ..; + sourceTree = ""; + }; + 33CEB47122A05771004F2AC0 /* Flutter */ = { + isa = PBXGroup; + children = ( + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */, + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */, + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */, + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */, + ); + path = Flutter; + sourceTree = ""; + }; + 33FAB671232836740065AC1E /* Runner */ = { + isa = PBXGroup; + children = ( + 33CC10F02044A3C60003C045 /* AppDelegate.swift */, + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */, + 33E51913231747F40026EE4D /* DebugProfile.entitlements */, + 33E51914231749380026EE4D /* Release.entitlements */, + 33CC11242044D66E0003C045 /* Resources */, + 33BA886A226E78AF003329D5 /* Configs */, + ); + path = Runner; + sourceTree = ""; + }; + D73912EC22F37F3D000D13A0 /* Frameworks */ = { + isa = PBXGroup; + children = ( + B3C62FEBAA272B5A33AFFC95 /* Pods_Runner.framework */, + A1CEA3AEDDC9976F00DB3AFE /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + F9F203356080D460FB6D4567 /* Pods */ = { + isa = PBXGroup; + children = ( + CC70F3DF47EEC43FC2D35C75 /* Pods-Runner.debug.xcconfig */, + B5C1522B2F3865267414BD3C /* Pods-Runner.release.xcconfig */, + AF767714B5564068E3D500A8 /* Pods-Runner.profile.xcconfig */, + 5CDC3DD55F4AC23D2067B292 /* Pods-RunnerTests.debug.xcconfig */, + 2D119A6B273B2CE4A6AE3322 /* Pods-RunnerTests.release.xcconfig */, + 35E6B919318905352ECC7D69 /* Pods-RunnerTests.profile.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 33CC10EC2044A3C60003C045 /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 213E973AEF6461D8FA01037B /* [CP] Check Pods Manifest.lock */, + 33CC10E92044A3C60003C045 /* Sources */, + 33CC10EA2044A3C60003C045 /* Frameworks */, + 33CC10EB2044A3C60003C045 /* Resources */, + 33CC110E2044A8840003C045 /* Bundle Framework */, + 3399D490228B24CF009A79C7 /* ShellScript */, + 889FA79FC2223BE511C611AF /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 33CC11202044C79F0003C045 /* PBXTargetDependency */, + ); + name = Runner; + productName = Runner; + productReference = 33CC10ED2044A3C60003C045 /* FluffyChat.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 33CC10E52044A3C60003C045 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0920; + LastUpgradeCheck = 1510; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 33CC10EC2044A3C60003C045 = { + CreatedOnToolsVersion = 9.2; + LastSwiftMigration = 1100; + SystemCapabilities = { + com.apple.Sandbox = { + enabled = 1; + }; + }; + }; + 33CC111A2044C6BA0003C045 = { + CreatedOnToolsVersion = 9.2; + ProvisioningStyle = Manual; + }; + }; + }; + buildConfigurationList = 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 33CC10E42044A3C60003C045; + productRefGroup = 33CC10EE2044A3C60003C045 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 33CC10EC2044A3C60003C045 /* Runner */, + 33CC111A2044C6BA0003C045 /* Flutter Assemble */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 33CC10EB2044A3C60003C045 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */, + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 213E973AEF6461D8FA01037B /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 3399D490228B24CF009A79C7 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n"; + }; + 33CC111E2044C6BF0003C045 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + Flutter/ephemeral/FlutterInputs.xcfilelist, + ); + inputPaths = ( + Flutter/ephemeral/tripwire, + ); + outputFileListPaths = ( + Flutter/ephemeral/FlutterOutputs.xcfilelist, + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; + }; + 889FA79FC2223BE511C611AF /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 33CC10E92044A3C60003C045 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */, + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */, + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 33CC11202044C79F0003C045 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 33CC111A2044C6BA0003C045 /* Flutter Assemble */; + targetProxy = 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 33CC10F42044A3C60003C045 /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + 33CC10F52044A3C60003C045 /* Base */, + ); + name = MainMenu.xib; + path = Runner; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 338D0CE9231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 12.2; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Profile; + }; + 338D0CEA231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + DEVELOPMENT_TEAM = 4NXF6Z997G; + INFOPLIST_FILE = Runner/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = FluffyChat; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.productivity"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 12.2; + PRODUCT_COPYRIGHT = "Copyright © 2023 FluffyChat authors. All rights reserved."; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = Profile; + }; + 338D0CEB231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = FluffyChat; + }; + name = Profile; + }; + 33CC10F92044A3C60003C045 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 12.2; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 33CC10FA2044A3C60003C045 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 12.2; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Release; + }; + 33CC10FC2044A3C60003C045 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + DEVELOPMENT_TEAM = 4NXF6Z997G; + INFOPLIST_FILE = Runner/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = FluffyChat; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.productivity"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 12.2; + PRODUCT_COPYRIGHT = "Copyright © 2023 FluffyChat authors. All rights reserved."; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 33CC10FD2044A3C60003C045 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + DEVELOPMENT_TEAM = 4NXF6Z997G; + INFOPLIST_FILE = Runner/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = FluffyChat; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.productivity"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 12.2; + PRODUCT_COPYRIGHT = "Copyright © 2023 FluffyChat authors. All rights reserved."; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; + 33CC111C2044C6BA0003C045 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = FluffyChat; + }; + name = Debug; + }; + 33CC111D2044C6BA0003C045 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = FluffyChat; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC10F92044A3C60003C045 /* Debug */, + 33CC10FA2044A3C60003C045 /* Release */, + 338D0CE9231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC10FC2044A3C60003C045 /* Debug */, + 33CC10FD2044A3C60003C045 /* Release */, + 338D0CEA231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC111C2044C6BA0003C045 /* Debug */, + 33CC111D2044C6BA0003C045 /* Release */, + 338D0CEB231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 33CC10E52044A3C60003C045 /* Project object */; +} diff --git a/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 0000000..1a20155 --- /dev/null +++ b/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/macos/Runner.xcworkspace/contents.xcworkspacedata b/macos/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..21a3cc1 --- /dev/null +++ b/macos/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/macos/Runner/AppDelegate.swift b/macos/Runner/AppDelegate.swift new file mode 100644 index 0000000..b3c1761 --- /dev/null +++ b/macos/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import Cocoa +import FlutterMacOS + +@main +class AppDelegate: FlutterAppDelegate { + override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { + return true + } + + override func applicationSupportsSecureRestorableState(_ app: NSApplication) -> Bool { + return true + } +} diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/1024-mac.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/1024-mac.png new file mode 100644 index 0000000000000000000000000000000000000000..7d0807b33191660e2ae241ad1843904e04a19bad GIT binary patch literal 21100 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 Sjp9yg*j=zBfw%reumAwzVTnor literal 0 HcmV?d00001 diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/16-mac.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/16-mac.png new file mode 100644 index 0000000000000000000000000000000000000000..77ef66d1d85f5a03cbc3abf45a4debc68f0a56ea GIT binary patch literal 316 zcmV-C0mJ@MNk&FA0RRA3MM6+kP&il$0000G0000F000jF06|PpNM8T|00D3uNs^db}_b09H^qAg%xa08j$}odGHk z01yBHKqe&s6rcK0#CX3LKQWjka0%pa8Z2s{0RH;pHw!LM%l*FwkGG9U5&LcKadQPu zX^`Ccw$pT`#%%OSVQa_w@$>x^{?mn*P>1T*ld)1v>|b=VF9l1q*w$Kj>n};wjk*{J zSG=RD$DbhB#ysFBdphl1e?i>D<*rw~{aLgVE-3X00nE0d)90BoyZ^*?@UXAFR-2@C Ot7brz{mjzUcGLh-+=r+T+hT5VHS8Ouz(q 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/macos/Runner/Configs/AppInfo.xcconfig b/macos/Runner/Configs/AppInfo.xcconfig new file mode 100644 index 0000000..11b3701 --- /dev/null +++ b/macos/Runner/Configs/AppInfo.xcconfig @@ -0,0 +1,14 @@ +// Application-level settings for the Runner target. +// +// This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the +// future. If not, the values below would default to using the project name when this becomes a +// 'flutter create' template. + +// The application's name. By default this is also the title of the Flutter window. +PRODUCT_NAME = FluffyChat + +// The application's bundle identifier +PRODUCT_BUNDLE_IDENTIFIER = im.fluffychat.fluffychat + +// The copyright displayed in application information +PRODUCT_COPYRIGHT = Copyright © 2023 FluffyChat authors. All rights reserved. diff --git a/macos/Runner/Configs/Debug.xcconfig b/macos/Runner/Configs/Debug.xcconfig new file mode 100644 index 0000000..36b0fd9 --- /dev/null +++ b/macos/Runner/Configs/Debug.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Debug.xcconfig" +#include "Warnings.xcconfig" diff --git a/macos/Runner/Configs/Release.xcconfig b/macos/Runner/Configs/Release.xcconfig new file mode 100644 index 0000000..dff4f49 --- /dev/null +++ b/macos/Runner/Configs/Release.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Release.xcconfig" +#include "Warnings.xcconfig" diff --git a/macos/Runner/Configs/Warnings.xcconfig b/macos/Runner/Configs/Warnings.xcconfig new file mode 100644 index 0000000..42bcbf4 --- /dev/null +++ b/macos/Runner/Configs/Warnings.xcconfig @@ -0,0 +1,13 @@ +WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings +GCC_WARN_UNDECLARED_SELECTOR = YES +CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES +CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE +CLANG_WARN__DUPLICATE_METHOD_MATCH = YES +CLANG_WARN_PRAGMA_PACK = YES +CLANG_WARN_STRICT_PROTOTYPES = YES +CLANG_WARN_COMMA = YES +GCC_WARN_STRICT_SELECTOR_MATCH = YES +CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES +CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES +GCC_WARN_SHADOW = YES +CLANG_WARN_UNREACHABLE_CODE = YES diff --git a/macos/Runner/DebugProfile.entitlements b/macos/Runner/DebugProfile.entitlements new file mode 100644 index 0000000..a964b6b --- /dev/null +++ b/macos/Runner/DebugProfile.entitlements @@ -0,0 +1,26 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.assets.pictures.read-only + + com.apple.security.cs.allow-jit + + com.apple.security.device.audio-input + + com.apple.security.device.camera + + com.apple.security.files.user-selected.read-write + + com.apple.security.network.client + + com.apple.security.network.server + + com.apple.security.personal-information.location + + keychain-access-groups + + + diff --git a/macos/Runner/Info.plist b/macos/Runner/Info.plist new file mode 100644 index 0000000..4789daa --- /dev/null +++ b/macos/Runner/Info.plist @@ -0,0 +1,32 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIconFile + + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSMinimumSystemVersion + $(MACOSX_DEPLOYMENT_TARGET) + NSHumanReadableCopyright + $(PRODUCT_COPYRIGHT) + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/macos/Runner/MainFlutterWindow.swift b/macos/Runner/MainFlutterWindow.swift new file mode 100644 index 0000000..3cc05eb --- /dev/null +++ b/macos/Runner/MainFlutterWindow.swift @@ -0,0 +1,15 @@ +import Cocoa +import FlutterMacOS + +class MainFlutterWindow: NSWindow { + override func awakeFromNib() { + let flutterViewController = FlutterViewController() + let windowFrame = self.frame + self.contentViewController = flutterViewController + self.setFrame(windowFrame, display: true) + + RegisterGeneratedPlugins(registry: flutterViewController) + + super.awakeFromNib() + } +} diff --git a/macos/Runner/Release.entitlements b/macos/Runner/Release.entitlements new file mode 100644 index 0000000..cfeb4e7 --- /dev/null +++ b/macos/Runner/Release.entitlements @@ -0,0 +1,22 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.assets.pictures.read-only + + com.apple.security.device.audio-input + + com.apple.security.device.camera + + com.apple.security.files.user-selected.read-write + + com.apple.security.network.client + + com.apple.security.personal-information.location + + keychain-access-groups + + + diff --git a/pubspec.lock b/pubspec.lock new file mode 100644 index 0000000..e2e89d3 --- /dev/null +++ b/pubspec.lock @@ -0,0 +1,2334 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + _fe_analyzer_shared: + dependency: transitive + description: + name: _fe_analyzer_shared + sha256: "0b2f2bd91ba804e53a61d757b986f89f1f9eaed5b11e4b2f5a2468d86d6c9fc7" + url: "https://pub.dev" + source: hosted + version: "67.0.0" + analyzer: + dependency: transitive + description: + name: analyzer + sha256: "37577842a27e4338429a1cbc32679d508836510b056f1eedf0c8d20e39c1383d" + url: "https://pub.dev" + source: hosted + version: "6.4.1" + animations: + dependency: "direct main" + description: + name: animations + sha256: "18938cefd7dcc04e1ecac0db78973761a01e4bc2d6bfae0cfa596bfeac9e96ab" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + ansicolor: + dependency: transitive + description: + name: ansicolor + sha256: "50e982d500bc863e1d703448afdbf9e5a72eb48840a4f766fa361ffd6877055f" + url: "https://pub.dev" + source: hosted + version: "2.0.3" + app_links: + dependency: "direct main" + description: + name: app_links + sha256: "5f88447519add627fe1cbcab4fd1da3d4fed15b9baf29f28b22535c95ecee3e8" + url: "https://pub.dev" + source: hosted + version: "6.4.1" + app_links_linux: + dependency: transitive + description: + name: app_links_linux + sha256: f5f7173a78609f3dfd4c2ff2c95bd559ab43c80a87dc6a095921d96c05688c81 + url: "https://pub.dev" + source: hosted + version: "1.0.3" + app_links_platform_interface: + dependency: transitive + description: + name: app_links_platform_interface + sha256: "05f5379577c513b534a29ddea68176a4d4802c46180ee8e2e966257158772a3f" + url: "https://pub.dev" + source: hosted + version: "2.0.2" + app_links_web: + dependency: transitive + description: + name: app_links_web + sha256: af060ed76183f9e2b87510a9480e56a5352b6c249778d07bd2c95fc35632a555 + url: "https://pub.dev" + source: hosted + version: "1.0.4" + archive: + dependency: "direct main" + description: + name: archive + sha256: "2fde1607386ab523f7a36bb3e7edb43bd58e6edaf2ffb29d8a6d578b297fdbbd" + url: "https://pub.dev" + source: hosted + version: "4.0.7" + args: + dependency: transitive + description: + name: args + sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04 + url: "https://pub.dev" + source: hosted + version: "2.7.0" + async: + dependency: "direct main" + description: + name: async + sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb" + url: "https://pub.dev" + source: hosted + version: "2.13.0" + audio_session: + dependency: transitive + description: + name: audio_session + sha256: "2b7fff16a552486d078bfc09a8cde19f426dc6d6329262b684182597bec5b1ac" + url: "https://pub.dev" + source: hosted + version: "0.1.25" + badges: + dependency: "direct main" + description: + name: badges + sha256: a7b6bbd60dce418df0db3058b53f9d083c22cdb5132a052145dc267494df0b84 + url: "https://pub.dev" + source: hosted + version: "3.1.2" + barbecue: + dependency: transitive + description: + name: barbecue + sha256: e3a0afaf9005e466887d6c87411a2ddd8d72fc46db3caabf278ee600f1e2f92c + url: "https://pub.dev" + source: hosted + version: "0.4.0" + base58check: + dependency: transitive + description: + name: base58check + sha256: "6c300dfc33e598d2fe26319e13f6243fea81eaf8204cb4c6b69ef20a625319a5" + url: "https://pub.dev" + source: hosted + version: "2.0.0" + blurhash_dart: + dependency: "direct main" + description: + name: blurhash_dart + sha256: "43955b6c2e30a7d440028d1af0fa185852f3534b795cc6eb81fbf397b464409f" + url: "https://pub.dev" + source: hosted + version: "1.2.1" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + build_cli_annotations: + dependency: transitive + description: + name: build_cli_annotations + sha256: b59d2769769efd6c9ff6d4c4cede0be115a566afc591705c2040b707534b1172 + url: "https://pub.dev" + source: hosted + version: "2.1.0" + canonical_json: + dependency: transitive + description: + name: canonical_json + sha256: d6be1dd66b420c6ac9f42e3693e09edf4ff6edfee26cb4c28c1c019fdb8c0c15 + url: "https://pub.dev" + source: hosted + version: "1.1.2" + characters: + dependency: transitive + description: + name: characters + sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 + url: "https://pub.dev" + source: hosted + version: "1.4.0" + charcode: + dependency: transitive + description: + name: charcode + sha256: fb0f1107cac15a5ea6ef0a6ef71a807b9e4267c713bb93e00e92d737cc8dbd8a + url: "https://pub.dev" + source: hosted + version: "1.4.0" + checked_yaml: + dependency: transitive + description: + name: checked_yaml + sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff + url: "https://pub.dev" + source: hosted + version: "2.0.3" + chewie: + dependency: "direct main" + description: + name: chewie + sha256: "44bcfc5f0dfd1de290c87c9d86a61308b3282a70b63435d5557cfd60f54a69ca" + url: "https://pub.dev" + source: hosted + version: "1.13.0" + cli_config: + dependency: transitive + description: + name: cli_config + sha256: ac20a183a07002b700f0c25e61b7ee46b23c309d76ab7b7640a028f18e4d99ec + url: "https://pub.dev" + source: hosted + version: "0.2.0" + cli_util: + dependency: transitive + description: + name: cli_util + sha256: ff6785f7e9e3c38ac98b2fb035701789de90154024a75b6cb926445e83197d1c + url: "https://pub.dev" + source: hosted + version: "0.4.2" + clock: + dependency: transitive + description: + name: clock + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b + url: "https://pub.dev" + source: hosted + version: "1.1.2" + collection: + dependency: "direct main" + description: + name: collection + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" + url: "https://pub.dev" + source: hosted + version: "1.19.1" + colorize: + dependency: transitive + description: + name: colorize + sha256: "584746cd6ba1cba0633b6720f494fe6f9601c4170f0666c1579d2aa2a61071ba" + url: "https://pub.dev" + source: hosted + version: "3.0.0" + console: + dependency: transitive + description: + name: console + sha256: e04e7824384c5b39389acdd6dc7d33f3efe6b232f6f16d7626f194f6a01ad69a + url: "https://pub.dev" + source: hosted + version: "4.1.0" + convert: + dependency: transitive + description: + name: convert + sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68 + url: "https://pub.dev" + source: hosted + version: "3.1.2" + coverage: + dependency: transitive + description: + name: coverage + sha256: "802bd084fb82e55df091ec8ad1553a7331b61c08251eef19a508b6f3f3a9858d" + url: "https://pub.dev" + source: hosted + version: "1.13.1" + cross_file: + dependency: "direct main" + description: + name: cross_file + sha256: "942a4791cd385a68ccb3b32c71c427aba508a1bb949b86dff2adbe4049f16239" + url: "https://pub.dev" + source: hosted + version: "0.3.5" + crypto: + dependency: transitive + description: + name: crypto + sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855" + url: "https://pub.dev" + source: hosted + version: "3.0.6" + csslib: + dependency: transitive + description: + name: csslib + sha256: "09bad715f418841f976c77db72d5398dc1253c21fb9c0c7f0b0b985860b2d58e" + url: "https://pub.dev" + source: hosted + version: "1.0.2" + cupertino_icons: + dependency: "direct main" + description: + name: cupertino_icons + sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6 + url: "https://pub.dev" + source: hosted + version: "1.0.8" + dart_earcut: + dependency: transitive + description: + name: dart_earcut + sha256: e485001bfc05dcbc437d7bfb666316182e3522d4c3f9668048e004d0eb2ce43b + url: "https://pub.dev" + source: hosted + version: "1.2.0" + dart_polylabel2: + dependency: transitive + description: + name: dart_polylabel2 + sha256: "7eeab15ce72894e4bdba6a8765712231fc81be0bd95247de4ad9966abc57adc6" + url: "https://pub.dev" + source: hosted + version: "1.0.0" + dart_webrtc: + dependency: transitive + description: + name: dart_webrtc + sha256: "51bcda4ba5d7dd9e65a309244ce3ac0b58025e6e1f6d7442cee4cd02134ef65f" + url: "https://pub.dev" + source: hosted + version: "1.6.0" + dbus: + dependency: transitive + description: + name: dbus + sha256: "79e0c23480ff85dc68de79e2cd6334add97e48f7f4865d17686dd6ea81a47e8c" + url: "https://pub.dev" + source: hosted + version: "0.7.11" + desktop_drop: + dependency: "direct main" + description: + name: desktop_drop + sha256: e70b46b2d61f1af7a81a40d1f79b43c28a879e30a4ef31e87e9c27bea4d784e8 + url: "https://pub.dev" + source: hosted + version: "0.7.0" + desktop_notifications: + dependency: "direct main" + description: + name: desktop_notifications + sha256: "6d92694ad6e9297a862c5ff7dd6b8ff64c819972557754769f819d2209612927" + url: "https://pub.dev" + source: hosted + version: "0.6.3" + desktop_webview_window: + dependency: transitive + description: + name: desktop_webview_window + sha256: "57cf20d81689d5cbb1adfd0017e96b669398a669d927906073b0e42fc64111c0" + url: "https://pub.dev" + source: hosted + version: "0.2.3" + device_info_plus: + dependency: "direct main" + description: + name: device_info_plus + sha256: dd0e8e02186b2196c7848c9d394a5fd6e5b57a43a546082c5820b1ec72317e33 + url: "https://pub.dev" + source: hosted + version: "12.2.0" + device_info_plus_platform_interface: + dependency: transitive + description: + name: device_info_plus_platform_interface + sha256: e1ea89119e34903dca74b883d0dd78eb762814f97fb6c76f35e9ff74d261a18f + url: "https://pub.dev" + source: hosted + version: "7.0.3" + dynamic_color: + dependency: "direct main" + description: + name: dynamic_color + sha256: "43a5a6679649a7731ab860334a5812f2067c2d9ce6452cf069c5e0c25336c17c" + url: "https://pub.dev" + source: hosted + version: "1.8.1" + emoji_picker_flutter: + dependency: "direct main" + description: + name: emoji_picker_flutter + sha256: "9a44c102079891ea5877f78c70f2e3c6e9df7b7fe0a01757d31f1046eeaa016d" + url: "https://pub.dev" + source: hosted + version: "4.3.0" + emojis: + dependency: "direct main" + description: + name: emojis + sha256: "2e4d847c3f1e2670f30dc355909ce6fa7808b4e626c34a4dd503a360995a38bf" + url: "https://pub.dev" + source: hosted + version: "0.9.9" + fake_async: + dependency: transitive + description: + name: fake_async + sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44" + url: "https://pub.dev" + source: hosted + version: "1.3.3" + fcm_shared_isolate: + dependency: "direct main" + description: + name: fcm_shared_isolate + sha256: "18dc57d9ce7fa6b250f857ef8c823b3f7f1d1b428584557c1e9f2064e9227f6b" + url: "https://pub.dev" + source: hosted + version: "0.2.0" + ffi: + dependency: transitive + description: + name: ffi + sha256: "289279317b4b16eb2bb7e271abccd4bf84ec9bdcbe999e278a94b804f5630418" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + file: + dependency: transitive + description: + name: file + sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4 + url: "https://pub.dev" + source: hosted + version: "7.0.1" + file_picker: + dependency: "direct main" + description: + name: file_picker + sha256: f8f4ea435f791ab1f817b4e338ed958cb3d04ba43d6736ffc39958d950754967 + url: "https://pub.dev" + source: hosted + version: "10.3.6" + file_selector: + dependency: "direct main" + description: + name: file_selector + sha256: "5f1d15a7f17115038f433d1b0ea57513cc9e29a9d5338d166cb0bef3fa90a7a0" + url: "https://pub.dev" + source: hosted + version: "1.0.4" + file_selector_android: + dependency: transitive + description: + name: file_selector_android + sha256: "6bba3d590ee9462758879741abc132a19133600dd31832f55627442f1ebd7b54" + url: "https://pub.dev" + source: hosted + version: "0.5.1+14" + file_selector_ios: + dependency: transitive + description: + name: file_selector_ios + sha256: "94b98ad950b8d40d96fee8fa88640c2e4bd8afcdd4817993bd04e20310f45420" + url: "https://pub.dev" + source: hosted + version: "0.5.3+1" + file_selector_linux: + dependency: transitive + description: + name: file_selector_linux + sha256: "54cbbd957e1156d29548c7d9b9ec0c0ebb6de0a90452198683a7d23aed617a33" + url: "https://pub.dev" + source: hosted + version: "0.9.3+2" + file_selector_macos: + dependency: transitive + description: + name: file_selector_macos + sha256: "271ab9986df0c135d45c3cdb6bd0faa5db6f4976d3e4b437cf7d0f258d941bfc" + url: "https://pub.dev" + source: hosted + version: "0.9.4+2" + file_selector_platform_interface: + dependency: transitive + description: + name: file_selector_platform_interface + sha256: a3994c26f10378a039faa11de174d7b78eb8f79e4dd0af2a451410c1a5c3f66b + url: "https://pub.dev" + source: hosted + version: "2.6.2" + file_selector_web: + dependency: transitive + description: + name: file_selector_web + sha256: c4c0ea4224d97a60a7067eca0c8fd419e708ff830e0c83b11a48faf566cec3e7 + url: "https://pub.dev" + source: hosted + version: "0.9.4+2" + file_selector_windows: + dependency: transitive + description: + name: file_selector_windows + sha256: "320fcfb6f33caa90f0b58380489fc5ac05d99ee94b61aa96ec2bff0ba81d3c2b" + url: "https://pub.dev" + source: hosted + version: "0.9.3+4" + firebase_core: + dependency: transitive + description: + name: firebase_core + sha256: "26de145bb9688a90962faec6f838247377b0b0d32cc0abecd9a4e43525fc856c" + url: "https://pub.dev" + source: hosted + version: "2.32.0" + firebase_core_platform_interface: + dependency: transitive + description: + name: firebase_core_platform_interface + sha256: "8bcfad6d7033f5ea951d15b867622a824b13812178bfec0c779b9d81de011bbb" + url: "https://pub.dev" + source: hosted + version: "5.4.2" + firebase_core_web: + dependency: transitive + description: + name: firebase_core_web + sha256: eb3afccfc452b2b2075acbe0c4b27de62dd596802b4e5e19869c1e926cbb20b3 + url: "https://pub.dev" + source: hosted + version: "2.24.0" + fixnum: + dependency: transitive + description: + name: fixnum + sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be + url: "https://pub.dev" + source: hosted + version: "1.1.1" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_driver: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + flutter_foreground_task: + dependency: "direct main" + description: + name: flutter_foreground_task + sha256: "9f1b25a81db95d7119d2c5cffc654048cbdd49d4056183e1beadc1a6a38f3e29" + url: "https://pub.dev" + source: hosted + version: "9.1.0" + flutter_highlighter: + dependency: "direct main" + description: + name: flutter_highlighter + sha256: "93173afd47a9ada53f3176371755e7ea4a1065362763976d06d6adfb4d946e10" + url: "https://pub.dev" + source: hosted + version: "0.1.1" + flutter_linkify: + dependency: "direct main" + description: + name: flutter_linkify + sha256: "74669e06a8f358fee4512b4320c0b80e51cffc496607931de68d28f099254073" + url: "https://pub.dev" + source: hosted + version: "6.0.0" + flutter_lints: + dependency: "direct dev" + description: + name: flutter_lints + sha256: "9e8c3858111da373efc5aa341de011d9bd23e2c5c5e0c62bccf32438e192d7b1" + url: "https://pub.dev" + source: hosted + version: "3.0.2" + flutter_local_notifications: + dependency: "direct main" + description: + name: flutter_local_notifications + sha256: "19ffb0a8bb7407875555e5e98d7343a633bb73707bae6c6a5f37c90014077875" + url: "https://pub.dev" + source: hosted + version: "19.5.0" + flutter_local_notifications_linux: + dependency: transitive + description: + name: flutter_local_notifications_linux + sha256: e3c277b2daab8e36ac5a6820536668d07e83851aeeb79c446e525a70710770a5 + url: "https://pub.dev" + source: hosted + version: "6.0.0" + flutter_local_notifications_platform_interface: + dependency: transitive + description: + name: flutter_local_notifications_platform_interface + sha256: "277d25d960c15674ce78ca97f57d0bae2ee401c844b6ac80fcd972a9c99d09fe" + url: "https://pub.dev" + source: hosted + version: "9.1.0" + flutter_local_notifications_windows: + dependency: transitive + description: + name: flutter_local_notifications_windows + sha256: "8d658f0d367c48bd420e7cf2d26655e2d1130147bca1eea917e576ca76668aaf" + url: "https://pub.dev" + source: hosted + version: "1.0.3" + flutter_localizations: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_map: + dependency: "direct main" + description: + name: flutter_map + sha256: "391e7dc95cc3f5190748210a69d4cfeb5d8f84dcdfa9c3235d0a9d7742ccb3f8" + url: "https://pub.dev" + source: hosted + version: "8.2.2" + flutter_native_splash: + dependency: "direct main" + description: + name: flutter_native_splash + sha256: "4fb9f4113350d3a80841ce05ebf1976a36de622af7d19aca0ca9a9911c7ff002" + url: "https://pub.dev" + source: hosted + version: "2.4.7" + flutter_new_badger: + dependency: "direct main" + description: + name: flutter_new_badger + sha256: d3742ace8009663db1ac6ba0377b092f479c35deb33e05514ba05cc0b0a5aaaa + url: "https://pub.dev" + source: hosted + version: "1.1.1" + flutter_plugin_android_lifecycle: + dependency: transitive + description: + name: flutter_plugin_android_lifecycle + sha256: f948e346c12f8d5480d2825e03de228d0eb8c3a737e4cdaa122267b89c022b5e + url: "https://pub.dev" + source: hosted + version: "2.0.28" + flutter_rust_bridge: + dependency: transitive + description: + name: flutter_rust_bridge + sha256: "37ef40bc6f863652e865f0b2563ea07f0d3c58d8efad803cc01933a4b2ee067e" + url: "https://pub.dev" + source: hosted + version: "2.11.1" + flutter_secure_storage: + dependency: "direct main" + description: + name: flutter_secure_storage + sha256: "9cad52d75ebc511adfae3d447d5d13da15a55a92c9410e50f67335b6d21d16ea" + url: "https://pub.dev" + source: hosted + version: "9.2.4" + flutter_secure_storage_linux: + dependency: transitive + description: + name: flutter_secure_storage_linux + sha256: be76c1d24a97d0b98f8b54bce6b481a380a6590df992d0098f868ad54dc8f688 + url: "https://pub.dev" + source: hosted + version: "1.2.3" + flutter_secure_storage_macos: + dependency: transitive + description: + name: flutter_secure_storage_macos + sha256: "6c0a2795a2d1de26ae202a0d78527d163f4acbb11cde4c75c670f3a0fc064247" + url: "https://pub.dev" + source: hosted + version: "3.1.3" + flutter_secure_storage_platform_interface: + dependency: transitive + description: + name: flutter_secure_storage_platform_interface + sha256: cf91ad32ce5adef6fba4d736a542baca9daf3beac4db2d04be350b87f69ac4a8 + url: "https://pub.dev" + source: hosted + version: "1.1.2" + flutter_secure_storage_web: + dependency: transitive + description: + name: flutter_secure_storage_web + sha256: f4ebff989b4f07b2656fb16b47852c0aab9fed9b4ec1c70103368337bc1886a9 + url: "https://pub.dev" + source: hosted + version: "1.2.1" + flutter_secure_storage_windows: + dependency: transitive + description: + name: flutter_secure_storage_windows + sha256: b20b07cb5ed4ed74fc567b78a72936203f587eba460af1df11281c9326cd3709 + url: "https://pub.dev" + source: hosted + version: "3.1.2" + flutter_shortcuts_new: + dependency: "direct main" + description: + name: flutter_shortcuts_new + sha256: "16ee1c8a9bc9586b5117ebb774a8ff6b396f856743e97251eb483c4dc5769d7f" + url: "https://pub.dev" + source: hosted + version: "2.0.0" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + flutter_vodozemac: + dependency: "direct main" + description: + name: flutter_vodozemac + sha256: "16d4b44dd338689441fe42a80d0184e5c864e9563823de9e7e6371620d2c0590" + url: "https://pub.dev" + source: hosted + version: "0.4.1" + flutter_web_auth_2: + dependency: "direct main" + description: + name: flutter_web_auth_2 + sha256: "3c14babeaa066c371f3a743f204dd0d348b7d42ffa6fae7a9847a521aff33696" + url: "https://pub.dev" + source: hosted + version: "4.1.0" + flutter_web_auth_2_platform_interface: + dependency: transitive + description: + name: flutter_web_auth_2_platform_interface + sha256: c63a472c8070998e4e422f6b34a17070e60782ac442107c70000dd1bed645f4d + url: "https://pub.dev" + source: hosted + version: "4.1.0" + flutter_web_plugins: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + flutter_webrtc: + dependency: "direct main" + description: + name: flutter_webrtc + sha256: "16ca9e30d428bae3dd32933e875c9f67c5843d1fa726c37cf1fc479eb9294549" + url: "https://pub.dev" + source: hosted + version: "1.2.0" + frontend_server_client: + dependency: transitive + description: + name: frontend_server_client + sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694 + url: "https://pub.dev" + source: hosted + version: "4.0.0" + fuchsia_remote_debug_protocol: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + geoclue: + dependency: transitive + description: + name: geoclue + sha256: c2a998c77474fc57aa00c6baa2928e58f4b267649057a1c76738656e9dbd2a7f + url: "https://pub.dev" + source: hosted + version: "0.1.1" + geolocator: + dependency: "direct main" + description: + name: geolocator + sha256: "79939537046c9025be47ec645f35c8090ecadb6fe98eba146a0d25e8c1357516" + url: "https://pub.dev" + source: hosted + version: "14.0.2" + geolocator_android: + dependency: transitive + description: + name: geolocator_android + sha256: "179c3cb66dfa674fc9ccbf2be872a02658724d1c067634e2c427cf6df7df901a" + url: "https://pub.dev" + source: hosted + version: "5.0.2" + geolocator_apple: + dependency: transitive + description: + name: geolocator_apple + sha256: dbdd8789d5aaf14cf69f74d4925ad1336b4433a6efdf2fce91e8955dc921bf22 + url: "https://pub.dev" + source: hosted + version: "2.3.13" + geolocator_linux: + dependency: transitive + description: + name: geolocator_linux + sha256: c4e966f0a7a87e70049eac7a2617f9e16fd4c585a26e4330bdfc3a71e6a721f3 + url: "https://pub.dev" + source: hosted + version: "0.2.3" + geolocator_platform_interface: + dependency: transitive + description: + name: geolocator_platform_interface + sha256: "30cb64f0b9adcc0fb36f628b4ebf4f731a2961a0ebd849f4b56200205056fe67" + url: "https://pub.dev" + source: hosted + version: "4.2.6" + geolocator_web: + dependency: transitive + description: + name: geolocator_web + sha256: b1ae9bdfd90f861fde8fd4f209c37b953d65e92823cb73c7dee1fa021b06f172 + url: "https://pub.dev" + source: hosted + version: "4.1.3" + geolocator_windows: + dependency: transitive + description: + name: geolocator_windows + sha256: "175435404d20278ffd220de83c2ca293b73db95eafbdc8131fe8609be1421eb6" + url: "https://pub.dev" + source: hosted + version: "0.2.5" + get_it: + dependency: transitive + description: + name: get_it + sha256: e87cd1d108e472a0580348a543a0c49ed3d70c8a5c809c6d418583e595d0a389 + url: "https://pub.dev" + source: hosted + version: "8.1.0" + glob: + dependency: transitive + description: + name: glob + sha256: c3f1ee72c96f8f78935e18aa8cecced9ab132419e8625dc187e1c2408efc20de + url: "https://pub.dev" + source: hosted + version: "2.1.3" + go_router: + dependency: "direct main" + description: + name: go_router + sha256: c92d18e1fe994cb06d48aa786c46b142a5633067e8297cff6b5a3ac742620104 + url: "https://pub.dev" + source: hosted + version: "17.0.0" + gsettings: + dependency: transitive + description: + name: gsettings + sha256: "1b0ce661f5436d2db1e51f3c4295a49849f03d304003a7ba177d01e3a858249c" + url: "https://pub.dev" + source: hosted + version: "0.2.8" + gtk: + dependency: transitive + description: + name: gtk + sha256: e8ce9ca4b1df106e4d72dad201d345ea1a036cc12c360f1a7d5a758f78ffa42c + url: "https://pub.dev" + source: hosted + version: "2.1.0" + handy_window: + dependency: "direct main" + description: + name: handy_window + sha256: "56b813e58a68b0ee2ab22051400b8b1f1b5cfe88b8cd32288623defb3926245a" + url: "https://pub.dev" + source: hosted + version: "0.4.0" + highlighter: + dependency: transitive + description: + name: highlighter + sha256: "92180c72b9da8758e1acf39a45aa305a97dcfe2fdc8f3d1d2947c23f2772bfbc" + url: "https://pub.dev" + source: hosted + version: "0.1.1" + html: + dependency: "direct main" + description: + name: html + sha256: "6d1264f2dffa1b1101c25a91dff0dc2daee4c18e87cd8538729773c073dbf602" + url: "https://pub.dev" + source: hosted + version: "0.15.6" + html_unescape: + dependency: transitive + description: + name: html_unescape + sha256: "15362d7a18f19d7b742ef8dcb811f5fd2a2df98db9f80ea393c075189e0b61e3" + url: "https://pub.dev" + source: hosted + version: "2.0.0" + http: + dependency: "direct main" + description: + name: http + sha256: "87721a4a50b19c7f1d49001e51409bddc46303966ce89a65af4f4e6004896412" + url: "https://pub.dev" + source: hosted + version: "1.6.0" + http_multi_server: + dependency: transitive + description: + name: http_multi_server + sha256: aa6199f908078bb1c5efb8d8638d4ae191aac11b311132c3ef48ce352fb52ef8 + url: "https://pub.dev" + source: hosted + version: "3.2.2" + http_parser: + dependency: transitive + description: + name: http_parser + sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571" + url: "https://pub.dev" + source: hosted + version: "4.1.2" + image: + dependency: "direct main" + description: + name: image + sha256: "4e973fcf4caae1a4be2fa0a13157aa38a8f9cb049db6529aa00b4d71abc4d928" + url: "https://pub.dev" + source: hosted + version: "4.5.4" + image_picker: + dependency: "direct main" + description: + name: image_picker + sha256: "784210112be18ea55f69d7076e2c656a4e24949fa9e76429fe53af0c0f4fa320" + url: "https://pub.dev" + source: hosted + version: "1.2.1" + image_picker_android: + dependency: transitive + description: + name: image_picker_android + sha256: e83b2b05141469c5e19d77e1dfa11096b6b1567d09065b2265d7c6904560050c + url: "https://pub.dev" + source: hosted + version: "0.8.13" + image_picker_for_web: + dependency: transitive + description: + name: image_picker_for_web + sha256: "40c2a6a0da15556dc0f8e38a3246064a971a9f512386c3339b89f76db87269b6" + url: "https://pub.dev" + source: hosted + version: "3.1.0" + image_picker_ios: + dependency: transitive + description: + name: image_picker_ios + sha256: eb06fe30bab4c4497bad449b66448f50edcc695f1c59408e78aa3a8059eb8f0e + url: "https://pub.dev" + source: hosted + version: "0.8.13" + image_picker_linux: + dependency: transitive + description: + name: image_picker_linux + sha256: "1f81c5f2046b9ab724f85523e4af65be1d47b038160a8c8deed909762c308ed4" + url: "https://pub.dev" + source: hosted + version: "0.2.2" + image_picker_macos: + dependency: transitive + description: + name: image_picker_macos + sha256: d58cd9d67793d52beefd6585b12050af0a7663c0c2a6ece0fb110a35d6955e04 + url: "https://pub.dev" + source: hosted + version: "0.2.2" + image_picker_platform_interface: + dependency: transitive + description: + name: image_picker_platform_interface + sha256: "9f143b0dba3e459553209e20cc425c9801af48e6dfa4f01a0fcf927be3f41665" + url: "https://pub.dev" + source: hosted + version: "2.11.0" + image_picker_windows: + dependency: transitive + description: + name: image_picker_windows + sha256: d248c86554a72b5495a31c56f060cf73a41c7ff541689327b1a7dbccc33adfae + url: "https://pub.dev" + source: hosted + version: "0.2.2" + import_sorter: + dependency: "direct dev" + description: + name: import_sorter + sha256: eb15738ccead84e62c31e0208ea4e3104415efcd4972b86906ca64a1187d0836 + url: "https://pub.dev" + source: hosted + version: "4.6.0" + integration_test: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + intl: + dependency: "direct main" + description: + name: intl + sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5" + url: "https://pub.dev" + source: hosted + version: "0.20.2" + io: + dependency: transitive + description: + name: io + sha256: dfd5a80599cf0165756e3181807ed3e77daf6dd4137caaad72d0b7931597650b + url: "https://pub.dev" + source: hosted + version: "1.0.5" + js: + dependency: transitive + description: + name: js + sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 + url: "https://pub.dev" + source: hosted + version: "0.6.7" + json_annotation: + dependency: transitive + description: + name: json_annotation + sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1" + url: "https://pub.dev" + source: hosted + version: "4.9.0" + just_audio: + dependency: "direct main" + description: + name: just_audio + sha256: "9694e4734f515f2a052493d1d7e0d6de219ee0427c7c29492e246ff32a219908" + url: "https://pub.dev" + source: hosted + version: "0.10.5" + just_audio_platform_interface: + dependency: transitive + description: + name: just_audio_platform_interface + sha256: "2532c8d6702528824445921c5ff10548b518b13f808c2e34c2fd54793b999a6a" + url: "https://pub.dev" + source: hosted + version: "4.6.0" + just_audio_web: + dependency: transitive + description: + name: just_audio_web + sha256: "6ba8a2a7e87d57d32f0f7b42856ade3d6a9fbe0f1a11fabae0a4f00bb73f0663" + url: "https://pub.dev" + source: hosted + version: "0.4.16" + latlong2: + dependency: "direct main" + description: + name: latlong2 + sha256: "98227922caf49e6056f91b6c56945ea1c7b166f28ffcd5fb8e72fc0b453cc8fe" + url: "https://pub.dev" + source: hosted + version: "0.9.1" + leak_tracker: + dependency: transitive + description: + name: leak_tracker + sha256: "8dcda04c3fc16c14f48a7bb586d4be1f0d1572731b6d81d51772ef47c02081e0" + url: "https://pub.dev" + source: hosted + version: "11.0.1" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1" + url: "https://pub.dev" + source: hosted + version: "3.0.10" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1" + url: "https://pub.dev" + source: hosted + version: "3.0.2" + license_checker: + dependency: "direct dev" + description: + name: license_checker + sha256: eea27638e42bc98fd91a6a8187eb57e5617e2c3c8b313a5d51b14bec7a8685e1 + url: "https://pub.dev" + source: hosted + version: "1.6.0" + linkify: + dependency: "direct main" + description: + name: linkify + sha256: "4139ea77f4651ab9c315b577da2dd108d9aa0bd84b5d03d33323f1970c645832" + url: "https://pub.dev" + source: hosted + version: "5.0.0" + lints: + dependency: transitive + description: + name: lints + sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290 + url: "https://pub.dev" + source: hosted + version: "3.0.0" + lists: + dependency: transitive + description: + name: lists + sha256: "4ca5c19ae4350de036a7e996cdd1ee39c93ac0a2b840f4915459b7d0a7d4ab27" + url: "https://pub.dev" + source: hosted + version: "1.0.1" + logger: + dependency: transitive + description: + name: logger + sha256: be4b23575aac7ebf01f225a241eb7f6b5641eeaf43c6a8613510fc2f8cf187d1 + url: "https://pub.dev" + source: hosted + version: "2.5.0" + logging: + dependency: transitive + description: + name: logging + sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61 + url: "https://pub.dev" + source: hosted + version: "1.3.0" + markdown: + dependency: transitive + description: + name: markdown + sha256: "935e23e1ff3bc02d390bad4d4be001208ee92cc217cb5b5a6c19bc14aaa318c1" + url: "https://pub.dev" + source: hosted + version: "7.3.0" + matcher: + dependency: transitive + description: + name: matcher + sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 + url: "https://pub.dev" + source: hosted + version: "0.12.17" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec + url: "https://pub.dev" + source: hosted + version: "0.11.1" + matrix: + dependency: "direct main" + description: + name: matrix + sha256: "0660c8f662f53b56eb2c0d7a7019517b735f20218ce35bc20f44de43bc3a9466" + url: "https://pub.dev" + source: hosted + version: "4.0.0" + meta: + dependency: transitive + description: + name: meta + sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394" + url: "https://pub.dev" + source: hosted + version: "1.17.0" + mgrs_dart: + dependency: transitive + description: + name: mgrs_dart + sha256: fb89ae62f05fa0bb90f70c31fc870bcbcfd516c843fb554452ab3396f78586f7 + url: "https://pub.dev" + source: hosted + version: "2.0.0" + mime: + dependency: "direct main" + description: + name: mime + sha256: "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6" + url: "https://pub.dev" + source: hosted + version: "2.0.0" + msix: + dependency: "direct dev" + description: + name: msix + sha256: f88033fcb9e0dd8de5b18897cbebbd28ea30596810f4a7c86b12b0c03ace87e5 + url: "https://pub.dev" + source: hosted + version: "3.16.12" + native_imaging: + dependency: "direct main" + description: + name: native_imaging + sha256: "93573afdcab070011d78a40fc1f69b61967f1f8485d2b81a7a2ee585a85f4c04" + url: "https://pub.dev" + source: hosted + version: "0.2.0" + nested: + dependency: transitive + description: + name: nested + sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20" + url: "https://pub.dev" + source: hosted + version: "1.0.0" + node_preamble: + dependency: transitive + description: + name: node_preamble + sha256: "6e7eac89047ab8a8d26cf16127b5ed26de65209847630400f9aefd7cd5c730db" + url: "https://pub.dev" + source: hosted + version: "2.0.2" + 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: + name: package_config + sha256: f096c55ebb7deb7e384101542bfba8c52696c1b56fca2eb62827989ef2353bbc + url: "https://pub.dev" + source: hosted + version: "2.2.0" + package_info_plus: + dependency: "direct main" + description: + name: package_info_plus + sha256: "16eee997588c60225bda0488b6dcfac69280a6b7a3cf02c741895dd370a02968" + url: "https://pub.dev" + source: hosted + version: "8.3.1" + package_info_plus_platform_interface: + dependency: transitive + description: + name: package_info_plus_platform_interface + sha256: "202a487f08836a592a6bd4f901ac69b3a8f146af552bbd14407b6b41e1c3f086" + url: "https://pub.dev" + source: hosted + version: "3.2.1" + pana: + dependency: transitive + description: + name: pana + sha256: "3fc3fe8e7a9fd4827fa4d625a423eec95d305b2bc3538a3adf7fd6c49217af97" + url: "https://pub.dev" + source: hosted + version: "0.21.45" + path: + dependency: "direct main" + description: + name: path + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" + url: "https://pub.dev" + source: hosted + version: "1.9.1" + path_provider: + dependency: "direct main" + description: + name: path_provider + sha256: "50c5dd5b6e1aaf6fb3a78b33f6aa3afca52bf903a8a5298f53101fdaee55bbcd" + url: "https://pub.dev" + source: hosted + version: "2.1.5" + path_provider_android: + dependency: transitive + description: + name: path_provider_android + sha256: d0d310befe2c8ab9e7f393288ccbb11b60c019c6b5afc21973eeee4dda2b35e9 + url: "https://pub.dev" + source: hosted + version: "2.2.17" + path_provider_foundation: + dependency: transitive + description: + name: path_provider_foundation + sha256: "4843174df4d288f5e29185bd6e72a6fbdf5a4a4602717eed565497429f179942" + url: "https://pub.dev" + source: hosted + version: "2.4.1" + path_provider_linux: + dependency: transitive + description: + name: path_provider_linux + sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279 + url: "https://pub.dev" + source: hosted + version: "2.2.1" + path_provider_platform_interface: + dependency: transitive + description: + name: path_provider_platform_interface + sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + path_provider_windows: + dependency: transitive + description: + name: path_provider_windows + sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7 + url: "https://pub.dev" + source: hosted + version: "2.3.0" + permission_handler: + dependency: "direct main" + description: + name: permission_handler + sha256: bc917da36261b00137bbc8896bf1482169cd76f866282368948f032c8c1caae1 + url: "https://pub.dev" + source: hosted + version: "12.0.1" + permission_handler_android: + dependency: transitive + description: + name: permission_handler_android + sha256: "1e3bc410ca1bf84662104b100eb126e066cb55791b7451307f9708d4007350e6" + url: "https://pub.dev" + source: hosted + version: "13.0.1" + permission_handler_apple: + dependency: transitive + description: + name: permission_handler_apple + sha256: f000131e755c54cf4d84a5d8bd6e4149e262cc31c5a8b1d698de1ac85fa41023 + url: "https://pub.dev" + source: hosted + version: "9.4.7" + permission_handler_html: + dependency: transitive + description: + name: permission_handler_html + sha256: "38f000e83355abb3392140f6bc3030660cfaef189e1f87824facb76300b4ff24" + url: "https://pub.dev" + source: hosted + version: "0.1.3+5" + permission_handler_platform_interface: + dependency: transitive + description: + name: permission_handler_platform_interface + sha256: eb99b295153abce5d683cac8c02e22faab63e50679b937fa1bf67d58bb282878 + url: "https://pub.dev" + source: hosted + version: "4.3.0" + permission_handler_windows: + dependency: transitive + description: + name: permission_handler_windows + sha256: "1a790728016f79a41216d88672dbc5df30e686e811ad4e698bfc51f76ad91f1e" + url: "https://pub.dev" + source: hosted + version: "0.2.1" + petitparser: + dependency: transitive + description: + name: petitparser + sha256: "1a97266a94f7350d30ae522c0af07890c70b8e62c71e8e3920d1db4d23c057d1" + url: "https://pub.dev" + source: hosted + version: "7.0.1" + platform: + dependency: transitive + description: + name: platform + sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984" + url: "https://pub.dev" + source: hosted + version: "3.1.6" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" + url: "https://pub.dev" + source: hosted + version: "2.1.8" + pool: + dependency: transitive + description: + name: pool + sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a" + url: "https://pub.dev" + source: hosted + version: "1.5.1" + posix: + dependency: transitive + description: + name: posix + sha256: "6323a5b0fa688b6a010df4905a56b00181479e6d10534cecfecede2aa55add61" + url: "https://pub.dev" + source: hosted + version: "6.0.3" + pretty_qr_code: + dependency: "direct main" + description: + name: pretty_qr_code + sha256: "2291db3f68d70a3dcd46c6bd599f30991ae4c02f27f36215fbb3f4865a609259" + url: "https://pub.dev" + source: hosted + version: "3.5.0" + process: + dependency: transitive + description: + name: process + sha256: "107d8be718f120bbba9dcd1e95e3bd325b1b4a4f07db64154635ba03f2567a0d" + url: "https://pub.dev" + source: hosted + version: "5.0.3" + proj4dart: + dependency: transitive + description: + name: proj4dart + sha256: c8a659ac9b6864aa47c171e78d41bbe6f5e1d7bd790a5814249e6b68bc44324e + url: "https://pub.dev" + source: hosted + version: "2.1.0" + provider: + dependency: "direct main" + description: + name: provider + sha256: "4e82183fa20e5ca25703ead7e05de9e4cceed1fbd1eadc1ac3cb6f565a09f272" + url: "https://pub.dev" + source: hosted + version: "6.1.5+1" + pub_semver: + dependency: transitive + description: + name: pub_semver + sha256: "5bfcf68ca79ef689f8990d1160781b4bad40a3bd5e5218ad4076ddb7f4081585" + url: "https://pub.dev" + source: hosted + version: "2.2.0" + pubspec_parse: + dependency: transitive + description: + name: pubspec_parse + sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082" + url: "https://pub.dev" + source: hosted + version: "1.5.0" + punycode: + dependency: "direct main" + description: + name: punycode + sha256: "39b874cc1f78b94e57db17e74b3f2ba2a96e25c0bebdcc8a571614dccda0ff0c" + url: "https://pub.dev" + source: hosted + version: "1.0.0" + qr: + dependency: transitive + description: + name: qr + sha256: "5a1d2586170e172b8a8c8470bbbffd5eb0cd38a66c0d77155ea138d3af3a4445" + url: "https://pub.dev" + source: hosted + version: "3.0.2" + qr_code_scanner_plus: + dependency: "direct main" + description: + name: qr_code_scanner_plus + sha256: b764e5004251c58d9dee0c295e6006e05bd8d249e78ac3383abdb5afe0a996cd + url: "https://pub.dev" + source: hosted + version: "2.0.14" + qr_image: + dependency: "direct main" + description: + name: qr_image + sha256: c3cd2ac2c6cd6b14604c97b45c477b18988b6518f72120fa04418fc54e3b0d76 + url: "https://pub.dev" + source: hosted + version: "1.0.0" + random_string: + dependency: transitive + description: + name: random_string + sha256: "03b52435aae8cbdd1056cf91bfc5bf845e9706724dd35ae2e99fa14a1ef79d02" + url: "https://pub.dev" + source: hosted + version: "2.3.1" + receive_sharing_intent: + dependency: "direct main" + description: + name: receive_sharing_intent + sha256: ec76056e4d258ad708e76d85591d933678625318e411564dcb9059048ca3a593 + url: "https://pub.dev" + source: hosted + version: "1.8.1" + record: + dependency: "direct main" + description: + name: record + sha256: "6bad72fb3ea6708d724cf8b6c97c4e236cf9f43a52259b654efeb6fd9b737f1f" + url: "https://pub.dev" + source: hosted + version: "6.1.2" + record_android: + dependency: transitive + description: + name: record_android + sha256: fb54ee4e28f6829b8c580252a9ef49d9c549cfd263b0660ad7eeac0908658e9f + url: "https://pub.dev" + source: hosted + version: "1.4.4" + record_ios: + dependency: transitive + description: + name: record_ios + sha256: "765b42ac1be019b1674ddd809b811fc721fe5a93f7bb1da7803f0d16772fd6d7" + url: "https://pub.dev" + source: hosted + version: "1.1.4" + record_linux: + dependency: transitive + description: + name: record_linux + sha256: "235b1f1fb84e810f8149cc0c2c731d7d697f8d1c333b32cb820c449bf7bb72d8" + url: "https://pub.dev" + source: hosted + version: "1.2.1" + record_macos: + dependency: transitive + description: + name: record_macos + sha256: "842ea4b7e95f4dd237aacffc686d1b0ff4277e3e5357865f8d28cd28bc18ed95" + url: "https://pub.dev" + source: hosted + version: "1.1.2" + record_platform_interface: + dependency: transitive + description: + name: record_platform_interface + sha256: b0065fdf1ec28f5a634d676724d388a77e43ce7646fb049949f58c69f3fcb4ed + url: "https://pub.dev" + source: hosted + version: "1.4.0" + record_web: + dependency: transitive + description: + name: record_web + sha256: "4f0adf20c9ccafcc02d71111fd91fba1ca7b17a7453902593e5a9b25b74a5c56" + url: "https://pub.dev" + source: hosted + version: "1.2.0" + record_windows: + dependency: transitive + description: + name: record_windows + sha256: "223258060a1d25c62bae18282c16783f28581ec19401d17e56b5205b9f039d78" + url: "https://pub.dev" + source: hosted + version: "1.0.7" + retry: + dependency: transitive + description: + name: retry + sha256: "822e118d5b3aafed083109c72d5f484c6dc66707885e07c0fbcb8b986bba7efc" + url: "https://pub.dev" + source: hosted + version: "3.1.2" + rxdart: + dependency: transitive + description: + name: rxdart + sha256: "5c3004a4a8dbb94bd4bf5412a4def4acdaa12e12f269737a5751369e12d1a962" + url: "https://pub.dev" + source: hosted + version: "0.28.0" + safe_url_check: + dependency: transitive + description: + name: safe_url_check + sha256: "49a3e060a7869cbafc8f4845ca1ecbbaaa53179980a32f4fdfeab1607e90f41d" + url: "https://pub.dev" + source: hosted + version: "1.1.2" + screen_retriever: + dependency: transitive + description: + name: screen_retriever + sha256: "570dbc8e4f70bac451e0efc9c9bb19fa2d6799a11e6ef04f946d7886d2e23d0c" + url: "https://pub.dev" + source: hosted + version: "0.2.0" + screen_retriever_linux: + dependency: transitive + description: + name: screen_retriever_linux + sha256: f7f8120c92ef0784e58491ab664d01efda79a922b025ff286e29aa123ea3dd18 + url: "https://pub.dev" + source: hosted + version: "0.2.0" + screen_retriever_macos: + dependency: transitive + description: + name: screen_retriever_macos + sha256: "71f956e65c97315dd661d71f828708bd97b6d358e776f1a30d5aa7d22d78a149" + url: "https://pub.dev" + source: hosted + version: "0.2.0" + screen_retriever_platform_interface: + dependency: transitive + description: + name: screen_retriever_platform_interface + sha256: ee197f4581ff0d5608587819af40490748e1e39e648d7680ecf95c05197240c0 + url: "https://pub.dev" + source: hosted + version: "0.2.0" + screen_retriever_windows: + dependency: transitive + description: + name: screen_retriever_windows + sha256: "449ee257f03ca98a57288ee526a301a430a344a161f9202b4fcc38576716fe13" + url: "https://pub.dev" + source: hosted + version: "0.2.0" + scroll_to_index: + dependency: "direct main" + description: + name: scroll_to_index + sha256: b707546e7500d9f070d63e5acf74fd437ec7eeeb68d3412ef7b0afada0b4f176 + url: "https://pub.dev" + source: hosted + version: "3.0.1" + sdp_transform: + dependency: transitive + description: + name: sdp_transform + sha256: "73e412a5279a5c2de74001535208e20fff88f225c9a4571af0f7146202755e45" + url: "https://pub.dev" + source: hosted + version: "0.3.2" + share_plus: + dependency: "direct main" + description: + name: share_plus + sha256: "14c8860d4de93d3a7e53af51bff479598c4e999605290756bbbe45cf65b37840" + url: "https://pub.dev" + source: hosted + version: "12.0.1" + share_plus_platform_interface: + dependency: transitive + description: + name: share_plus_platform_interface + sha256: "88023e53a13429bd65d8e85e11a9b484f49d4c190abbd96c7932b74d6927cc9a" + url: "https://pub.dev" + source: hosted + version: "6.1.0" + shared_preferences: + dependency: "direct main" + description: + name: shared_preferences + sha256: "6e8bf70b7fef813df4e9a36f658ac46d107db4b4cfe1048b477d4e453a8159f5" + url: "https://pub.dev" + source: hosted + version: "2.5.3" + shared_preferences_android: + dependency: transitive + description: + name: shared_preferences_android + sha256: "20cbd561f743a342c76c151d6ddb93a9ce6005751e7aa458baad3858bfbfb6ac" + url: "https://pub.dev" + source: hosted + version: "2.4.10" + shared_preferences_foundation: + dependency: transitive + description: + name: shared_preferences_foundation + sha256: "6a52cfcdaeac77cad8c97b539ff688ccfc458c007b4db12be584fbe5c0e49e03" + url: "https://pub.dev" + source: hosted + version: "2.5.4" + shared_preferences_linux: + dependency: transitive + description: + name: shared_preferences_linux + sha256: "580abfd40f415611503cae30adf626e6656dfb2f0cee8f465ece7b6defb40f2f" + url: "https://pub.dev" + source: hosted + version: "2.4.1" + shared_preferences_platform_interface: + dependency: transitive + description: + name: shared_preferences_platform_interface + sha256: "57cbf196c486bc2cf1f02b85784932c6094376284b3ad5779d1b1c6c6a816b80" + url: "https://pub.dev" + source: hosted + version: "2.4.1" + shared_preferences_web: + dependency: transitive + description: + name: shared_preferences_web + sha256: c49bd060261c9a3f0ff445892695d6212ff603ef3115edbb448509d407600019 + url: "https://pub.dev" + source: hosted + version: "2.4.3" + shared_preferences_windows: + dependency: transitive + description: + name: shared_preferences_windows + sha256: "94ef0f72b2d71bc3e700e025db3710911bd51a71cefb65cc609dd0d9a982e3c1" + url: "https://pub.dev" + source: hosted + version: "2.4.1" + shelf: + dependency: transitive + description: + name: shelf + sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12 + url: "https://pub.dev" + source: hosted + version: "1.4.2" + shelf_packages_handler: + dependency: transitive + description: + name: shelf_packages_handler + sha256: "89f967eca29607c933ba9571d838be31d67f53f6e4ee15147d5dc2934fee1b1e" + url: "https://pub.dev" + source: hosted + version: "3.0.2" + shelf_static: + dependency: transitive + description: + name: shelf_static + sha256: c87c3875f91262785dade62d135760c2c69cb217ac759485334c5857ad89f6e3 + url: "https://pub.dev" + source: hosted + version: "1.1.3" + shelf_web_socket: + dependency: transitive + description: + name: shelf_web_socket + sha256: "3632775c8e90d6c9712f883e633716432a27758216dfb61bd86a8321c0580925" + url: "https://pub.dev" + source: hosted + version: "3.0.0" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + slugify: + dependency: "direct main" + description: + name: slugify + sha256: b272501565cb28050cac2d96b7bf28a2d24c8dae359280361d124f3093d337c3 + url: "https://pub.dev" + source: hosted + version: "2.0.0" + source_map_stack_trace: + dependency: transitive + description: + name: source_map_stack_trace + sha256: c0713a43e323c3302c2abe2a1cc89aa057a387101ebd280371d6a6c9fa68516b + url: "https://pub.dev" + source: hosted + version: "2.1.2" + source_maps: + dependency: transitive + description: + name: source_maps + sha256: "190222579a448b03896e0ca6eca5998fa810fda630c1d65e2f78b3f638f54812" + url: "https://pub.dev" + source: hosted + version: "0.10.13" + source_span: + dependency: transitive + description: + name: source_span + sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" + url: "https://pub.dev" + source: hosted + version: "1.10.1" + sprintf: + dependency: transitive + description: + name: sprintf + sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23" + url: "https://pub.dev" + source: hosted + version: "7.0.0" + sqflite_common: + dependency: transitive + description: + name: sqflite_common + sha256: "84731e8bfd8303a3389903e01fb2141b6e59b5973cacbb0929021df08dddbe8b" + url: "https://pub.dev" + source: hosted + version: "2.5.5" + sqflite_common_ffi: + dependency: "direct main" + description: + name: sqflite_common_ffi + sha256: "9faa2fedc5385ef238ce772589f7718c24cdddd27419b609bb9c6f703ea27988" + url: "https://pub.dev" + source: hosted + version: "2.3.6" + sqlcipher_flutter_libs: + dependency: "direct main" + description: + name: sqlcipher_flutter_libs + sha256: dd1fcc74d5baf3c36ad53e2652b2d06c9f8747494a3ccde0076e88b159dfe622 + url: "https://pub.dev" + source: hosted + version: "0.6.8" + sqlite3: + dependency: transitive + description: + name: sqlite3 + sha256: "608b56d594e4c8498c972c8f1507209f9fd74939971b948ddbbfbfd1c9cb3c15" + url: "https://pub.dev" + source: hosted + version: "2.7.7" + stack_trace: + dependency: transitive + description: + name: stack_trace + sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" + url: "https://pub.dev" + source: hosted + version: "1.12.1" + stream_channel: + dependency: transitive + description: + name: stream_channel + sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + string_scanner: + dependency: transitive + description: + name: string_scanner + sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" + url: "https://pub.dev" + source: hosted + version: "1.4.1" + string_validator: + dependency: transitive + description: + name: string_validator + sha256: "50dd8ecf91db6a732f4a851eeae81ee12406eedc62d0da72f2d91a04a2d10dd8" + url: "https://pub.dev" + source: hosted + version: "0.3.0" + swipe_to_action: + dependency: "direct main" + description: + name: swipe_to_action + sha256: "05289a2bff6a0227deeff382afa1c46643d1f077e678d78f76440e153ea1ef7d" + url: "https://pub.dev" + source: hosted + version: "0.3.0" + sync_http: + dependency: transitive + description: + name: sync_http + sha256: "7f0cd72eca000d2e026bcd6f990b81d0ca06022ef4e32fb257b30d3d1014a961" + url: "https://pub.dev" + source: hosted + version: "0.3.1" + synchronized: + dependency: transitive + description: + name: synchronized + sha256: "0669c70faae6270521ee4f05bffd2919892d42d1276e6c495be80174b6bc0ef6" + url: "https://pub.dev" + source: hosted + version: "3.3.1" + tar: + dependency: transitive + description: + name: tar + sha256: "22f67e2d77b51050436620b2a5de521c58ca6f0b75af1d9ab3c8cae2eae58fcd" + url: "https://pub.dev" + source: hosted + version: "1.0.5" + term_glyph: + dependency: transitive + description: + name: term_glyph + sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" + url: "https://pub.dev" + source: hosted + version: "1.2.2" + test: + dependency: transitive + description: + name: test + sha256: "75906bf273541b676716d1ca7627a17e4c4070a3a16272b7a3dc7da3b9f3f6b7" + url: "https://pub.dev" + source: hosted + version: "1.26.3" + test_api: + dependency: transitive + description: + name: test_api + sha256: ab2726c1a94d3176a45960b6234466ec367179b87dd74f1611adb1f3b5fb9d55 + url: "https://pub.dev" + source: hosted + version: "0.7.7" + test_core: + dependency: transitive + description: + name: test_core + sha256: "0cc24b5ff94b38d2ae73e1eb43cc302b77964fbf67abad1e296025b78deb53d0" + url: "https://pub.dev" + source: hosted + version: "0.6.12" + timezone: + dependency: transitive + description: + name: timezone + sha256: dd14a3b83cfd7cb19e7888f1cbc20f258b8d71b54c06f79ac585f14093a287d1 + url: "https://pub.dev" + source: hosted + version: "0.10.1" + tint: + dependency: transitive + description: + name: tint + sha256: "9652d9a589f4536d5e392cf790263d120474f15da3cf1bee7f1fdb31b4de5f46" + url: "https://pub.dev" + source: hosted + version: "2.0.1" + translations_cleaner: + dependency: "direct dev" + description: + name: translations_cleaner + sha256: "060f4a8cd782e271509719741dd3540fe81ddaad49bd79e1d8fc4598299a6b84" + url: "https://pub.dev" + source: hosted + version: "0.0.5" + typed_data: + dependency: transitive + description: + name: typed_data + sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006 + url: "https://pub.dev" + source: hosted + version: "1.4.0" + unicode: + dependency: transitive + description: + name: unicode + sha256: "0f69e46593d65245774d4f17125c6084d2c20b4e473a983f6e21b7d7762218f1" + url: "https://pub.dev" + source: hosted + version: "0.3.1" + unifiedpush: + dependency: "direct main" + description: + name: unifiedpush + sha256: "8ed9767f750a1dc6159a77e2171641d0cb825dc87682d1ce1b8618689b79f58e" + url: "https://pub.dev" + source: hosted + version: "6.2.0" + unifiedpush_android: + dependency: transitive + description: + name: unifiedpush_android + sha256: "556796c81e8151ee8e4275baea2f7191119e8b1412ec35523cc2ac1c44c348bf" + url: "https://pub.dev" + source: hosted + version: "3.4.0" + unifiedpush_linux: + dependency: transitive + description: + name: unifiedpush_linux + sha256: c062d5eedd1cec70bcd33270cc4e01ae0ff6501f33d471167c06b34a968adfeb + url: "https://pub.dev" + source: hosted + version: "1.0.0" + unifiedpush_platform_interface: + dependency: transitive + description: + name: unifiedpush_platform_interface + sha256: "83372bc8d794b8b12ef6993b518d7be907dcfc2191bdf6de0ece5c4445d89880" + url: "https://pub.dev" + source: hosted + version: "4.0.0" + unifiedpush_storage_interface: + dependency: transitive + description: + name: unifiedpush_storage_interface + sha256: b8d423a4695efc616aa21d8ab48fb5ef99d6288c68b56282b8faac1579ceabd9 + url: "https://pub.dev" + source: hosted + version: "1.0.0" + unifiedpush_ui: + dependency: "direct main" + description: + name: unifiedpush_ui + sha256: "1b36b2aa0bc6b61577e2661c1183bd3442969ecf77b4c78174796d324f66dd1d" + url: "https://pub.dev" + source: hosted + version: "0.2.0" + universal_html: + dependency: "direct main" + description: + name: universal_html + sha256: "56536254004e24d9d8cfdb7dbbf09b74cf8df96729f38a2f5c238163e3d58971" + url: "https://pub.dev" + source: hosted + version: "2.2.4" + universal_io: + dependency: transitive + description: + name: universal_io + sha256: "1722b2dcc462b4b2f3ee7d188dad008b6eb4c40bbd03a3de451d82c78bba9aad" + url: "https://pub.dev" + source: hosted + version: "2.2.2" + universal_platform: + dependency: transitive + description: + name: universal_platform + sha256: "64e16458a0ea9b99260ceb5467a214c1f298d647c659af1bff6d3bf82536b1ec" + url: "https://pub.dev" + source: hosted + version: "1.1.0" + unorm_dart: + dependency: transitive + description: + name: unorm_dart + sha256: "5b35bff83fce4d76467641438f9e867dc9bcfdb8c1694854f230579d68cd8f4b" + url: "https://pub.dev" + source: hosted + version: "0.2.0" + url_launcher: + dependency: "direct main" + description: + name: url_launcher + sha256: f6a7e5c4835bb4e3026a04793a4199ca2d14c739ec378fdfe23fc8075d0439f8 + url: "https://pub.dev" + source: hosted + version: "6.3.2" + url_launcher_android: + dependency: transitive + description: + name: url_launcher_android + sha256: "8582d7f6fe14d2652b4c45c9b6c14c0b678c2af2d083a11b604caeba51930d79" + url: "https://pub.dev" + source: hosted + version: "6.3.16" + url_launcher_ios: + dependency: transitive + description: + name: url_launcher_ios + sha256: "7f2022359d4c099eea7df3fdf739f7d3d3b9faf3166fb1dd390775176e0b76cb" + url: "https://pub.dev" + source: hosted + version: "6.3.3" + url_launcher_linux: + dependency: transitive + description: + name: url_launcher_linux + sha256: "4e9ba368772369e3e08f231d2301b4ef72b9ff87c31192ef471b380ef29a4935" + url: "https://pub.dev" + source: hosted + version: "3.2.1" + url_launcher_macos: + dependency: transitive + description: + name: url_launcher_macos + sha256: "17ba2000b847f334f16626a574c702b196723af2a289e7a93ffcb79acff855c2" + url: "https://pub.dev" + source: hosted + version: "3.2.2" + url_launcher_platform_interface: + dependency: transitive + description: + name: url_launcher_platform_interface + sha256: "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029" + url: "https://pub.dev" + source: hosted + version: "2.3.2" + url_launcher_web: + dependency: transitive + description: + name: url_launcher_web + sha256: "4bd2b7b4dc4d4d0b94e5babfffbca8eac1a126c7f3d6ecbc1a11013faa3abba2" + url: "https://pub.dev" + source: hosted + version: "2.4.1" + url_launcher_windows: + dependency: transitive + description: + name: url_launcher_windows + sha256: "3284b6d2ac454cf34f114e1d3319866fdd1e19cdc329999057e44ffe936cfa77" + url: "https://pub.dev" + source: hosted + version: "3.1.4" + uuid: + dependency: transitive + description: + name: uuid + sha256: a5be9ef6618a7ac1e964353ef476418026db906c4facdedaa299b7a2e71690ff + url: "https://pub.dev" + source: hosted + version: "4.5.1" + vector_math: + dependency: transitive + description: + name: vector_math + sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b + url: "https://pub.dev" + source: hosted + version: "2.2.0" + video_compress: + dependency: "direct main" + description: + name: video_compress + sha256: "31bc5cdb9a02ba666456e5e1907393c28e6e0e972980d7d8d619a7beda0d4f20" + url: "https://pub.dev" + source: hosted + version: "3.1.4" + video_player: + dependency: "direct main" + description: + name: video_player + sha256: "096bc28ce10d131be80dfb00c223024eb0fba301315a406728ab43dd99c45bdf" + url: "https://pub.dev" + source: hosted + version: "2.10.1" + video_player_android: + dependency: transitive + description: + name: video_player_android + sha256: "28dcc4122079f40f93a0965b3679aff1a5f4251cf79611bd8011f937eb6b69de" + url: "https://pub.dev" + source: hosted + version: "2.8.4" + video_player_avfoundation: + dependency: transitive + description: + name: video_player_avfoundation + sha256: "9ee764e5cd2fc1e10911ae8ad588e1a19db3b6aa9a6eb53c127c42d3a3c3f22f" + url: "https://pub.dev" + source: hosted + version: "2.7.1" + video_player_platform_interface: + dependency: transitive + description: + name: video_player_platform_interface + sha256: df534476c341ab2c6a835078066fc681b8265048addd853a1e3c78740316a844 + url: "https://pub.dev" + source: hosted + version: "6.3.0" + video_player_web: + dependency: transitive + description: + name: video_player_web + sha256: e8bba2e5d1e159d5048c9a491bb2a7b29c535c612bb7d10c1e21107f5bd365ba + url: "https://pub.dev" + source: hosted + version: "2.3.5" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02 + url: "https://pub.dev" + source: hosted + version: "15.0.0" + vodozemac: + dependency: transitive + description: + name: vodozemac + sha256: "39144e20740807731871c9248d811ed5a037b21d0aa9ffcfa630954de74139d9" + url: "https://pub.dev" + source: hosted + version: "0.4.0" + wakelock_plus: + dependency: "direct main" + description: + name: wakelock_plus + sha256: "61713aa82b7f85c21c9f4cd0a148abd75f38a74ec645fcb1e446f882c82fd09b" + url: "https://pub.dev" + source: hosted + version: "1.3.3" + wakelock_plus_platform_interface: + dependency: transitive + description: + name: wakelock_plus_platform_interface + sha256: e10444072e50dbc4999d7316fd303f7ea53d31c824aa5eb05d7ccbdd98985207 + url: "https://pub.dev" + source: hosted + version: "1.2.3" + watcher: + dependency: transitive + description: + name: watcher + sha256: "69da27e49efa56a15f8afe8f4438c4ec02eff0a117df1b22ea4aad194fe1c104" + url: "https://pub.dev" + source: hosted + version: "1.1.1" + web: + dependency: transitive + description: + name: web + sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a" + url: "https://pub.dev" + source: hosted + version: "1.1.1" + web_socket: + dependency: transitive + description: + name: web_socket + sha256: "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c" + url: "https://pub.dev" + source: hosted + version: "1.0.1" + web_socket_channel: + dependency: transitive + description: + name: web_socket_channel + sha256: d645757fb0f4773d602444000a8131ff5d48c9e47adfe9772652dd1a4f2d45c8 + url: "https://pub.dev" + source: hosted + version: "3.0.3" + webcrypto: + dependency: transitive + description: + name: webcrypto + sha256: e393b3d0b01694a8f81efecf278ed7392877130e6e7b29f578863e4f2d0b2ebd + url: "https://pub.dev" + source: hosted + version: "0.5.8" + webdriver: + dependency: transitive + description: + name: webdriver + sha256: "2f3a14ca026957870cfd9c635b83507e0e51d8091568e90129fbf805aba7cade" + url: "https://pub.dev" + source: hosted + version: "3.1.0" + webkit_inspection_protocol: + dependency: transitive + description: + name: webkit_inspection_protocol + sha256: "87d3f2333bb240704cd3f1c6b5b7acd8a10e7f0bc28c28dcf14e782014f4a572" + url: "https://pub.dev" + source: hosted + version: "1.2.1" + webpush_encryption: + dependency: transitive + description: + name: webpush_encryption + sha256: "63046b7d6909f4a72ce3c153fa574726e257aaf21b1995ba063dc241a1b1520b" + url: "https://pub.dev" + source: hosted + version: "1.0.0" + webrtc_interface: + dependency: "direct main" + description: + name: webrtc_interface + sha256: "2e604a31703ad26781782fb14fa8a4ee621154ee2c513d2b9938e486fa695233" + url: "https://pub.dev" + source: hosted + version: "1.3.0" + win32: + dependency: transitive + description: + name: win32 + sha256: "66814138c3562338d05613a6e368ed8cfb237ad6d64a9e9334be3f309acfca03" + url: "https://pub.dev" + source: hosted + version: "5.14.0" + win32_registry: + dependency: transitive + description: + name: win32_registry + sha256: "6f1b564492d0147b330dd794fee8f512cec4977957f310f9951b5f9d83618dae" + url: "https://pub.dev" + source: hosted + version: "2.1.0" + window_manager: + dependency: transitive + description: + name: window_manager + sha256: "7eb6d6c4164ec08e1bf978d6e733f3cebe792e2a23fb07cbca25c2872bfdbdcd" + url: "https://pub.dev" + source: hosted + version: "0.5.1" + window_to_front: + dependency: transitive + description: + name: window_to_front + sha256: "7aef379752b7190c10479e12b5fd7c0b9d92adc96817d9e96c59937929512aee" + url: "https://pub.dev" + source: hosted + version: "0.0.3" + wkt_parser: + dependency: transitive + description: + name: wkt_parser + sha256: "8a555fc60de3116c00aad67891bcab20f81a958e4219cc106e3c037aa3937f13" + url: "https://pub.dev" + source: hosted + version: "2.0.0" + xdg_directories: + dependency: transitive + description: + name: xdg_directories + sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15" + url: "https://pub.dev" + source: hosted + version: "1.1.0" + xml: + dependency: transitive + description: + name: xml + sha256: "971043b3a0d3da28727e40ed3e0b5d18b742fa5a68665cca88e74b7876d5e025" + url: "https://pub.dev" + source: hosted + version: "6.6.1" + yaml: + dependency: transitive + description: + name: yaml + sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce + url: "https://pub.dev" + source: hosted + version: "3.1.3" +sdks: + dart: ">=3.8.0 <4.0.0" + flutter: ">=3.32.0" diff --git a/pubspec.yaml b/pubspec.yaml new file mode 100644 index 0000000..18e08ec --- /dev/null +++ b/pubspec.yaml @@ -0,0 +1,125 @@ +name: fluffychat +description: Chat with your friends. +publish_to: none +# On version bump please also increase: +# 1. The build number (for F-Droid) +# 2. The version in /snap/snapcraft.yaml +version: 2.3.0+3546 + +environment: + sdk: ">=3.0.0 <4.0.0" + +dependencies: + animations: ^2.1.1 + app_links: ^6.4.1 + archive: ^4.0.7 + async: ^2.11.0 + badges: ^3.1.2 + blurhash_dart: ^1.2.1 + chewie: ^1.13.0 + collection: ^1.18.0 + cross_file: ^0.3.5 + cupertino_icons: any + desktop_drop: ^0.7.0 + desktop_notifications: ^0.6.3 + device_info_plus: ^12.2.0 + dynamic_color: ^1.8.1 + emoji_picker_flutter: ^4.3.0 + emojis: ^0.9.9 + file_picker: ^10.3.6 + file_selector: ^1.0.4 + flutter: + sdk: flutter + flutter_foreground_task: ^9.1.0 + flutter_highlighter: ^0.1.1 + flutter_linkify: ^6.0.0 + flutter_local_notifications: ^19.5.0 + flutter_localizations: + sdk: flutter + flutter_map: ^8.2.2 + flutter_new_badger: ^1.1.1 + flutter_secure_storage: ^9.2.4 + flutter_shortcuts_new: ^2.0.0 + flutter_vodozemac: ^0.4.1 + flutter_web_auth_2: ^4.1.0 + flutter_webrtc: ^1.2.0 + geolocator: ^14.0.2 + go_router: ^17.0.0 + handy_window: ^0.4.0 + html: ^0.15.4 + http: ^1.6.0 + image: ^4.1.7 + image_picker: ^1.2.1 + intl: any + just_audio: ^0.10.5 + latlong2: ^0.9.1 + linkify: ^5.0.0 + matrix: ^4.0.0 + mime: ^2.0.0 + native_imaging: ^0.2.0 + opus_caf_converter_dart: ^1.0.1 + package_info_plus: ^8.3.1 + path: ^1.9.0 + path_provider: ^2.1.2 + permission_handler: ^12.0.1 + pretty_qr_code: ^3.5.0 + provider: ^6.0.2 + punycode: ^1.0.0 + qr_code_scanner_plus: ^2.0.14 + qr_image: ^1.0.0 + receive_sharing_intent: ^1.8.1 + record: ^6.1.2 + scroll_to_index: ^3.0.1 + share_plus: ^12.0.1 + shared_preferences: ^2.2.0 # Pinned because https://github.com/flutter/flutter/issues/118401 + slugify: ^2.0.0 + sqflite_common_ffi: ^2.3.6 + sqlcipher_flutter_libs: ^0.6.8 + swipe_to_action: ^0.3.0 + unifiedpush: ^6.2.0 + unifiedpush_ui: ^0.2.0 + universal_html: ^2.2.4 + url_launcher: ^6.3.2 + video_compress: ^3.1.4 + video_player: ^2.10.1 + wakelock_plus: ^1.3.3 + webrtc_interface: ^1.3.0 + flutter_native_splash: ^2.4.7 + integration_test: + sdk: flutter + fcm_shared_isolate: ^0.2.0 + + +dev_dependencies: + flutter_lints: ^3.0.0 + flutter_test: + sdk: flutter + import_sorter: ^4.6.0 + integration_test: + sdk: flutter + license_checker: ^1.6.0 + msix: ^3.16.12 + translations_cleaner: ^0.0.5 + +import_sorter: + ignored_files: # Optional, defaults to [] + - \/lib\/l10n + +flutter_native_splash: + color: "#ffffff" + color_dark: "#000000" + image: "assets/info-logo.png" + +flutter: + generate: true + uses-material-design: true + assets: + - assets/ + - assets/sounds/ + - assets/vodozemac/ + +# Guidelines for adding a dependency override: +# 1. Don't do it if you can avoid it or fix it upstream in a manageable time +# 2. Always link an (upstream?) issue +# 3. Explain how and when this can be removed (overrides must be temporarily) +dependency_overrides: diff --git a/scripts/add-firebase-messaging.sh b/scripts/add-firebase-messaging.sh new file mode 100644 index 0000000..af7ce02 --- /dev/null +++ b/scripts/add-firebase-messaging.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +flutter pub add fcm_shared_isolate +flutter pub get + +if [[ "$OSTYPE" == "darwin"* ]]; then + sed -i '' 's,//,,g' lib/utils/background_push.dart + sed -i '' -e 's,^/\*,,' -e 's,\*/$,,' android/app/src/main/kotlin/chat/fluffy/fluffychat/FcmPushService.kt +else + sed -i 's,//,,g' lib/utils/background_push.dart + sed -i -e 's,^/\*,,' -e 's,\*/$,,' android/app/src/main/kotlin/chat/fluffy/fluffychat/FcmPushService.kt +fi diff --git a/scripts/build-ios.sh b/scripts/build-ios.sh new file mode 100644 index 0000000..7fd791b --- /dev/null +++ b/scripts/build-ios.sh @@ -0,0 +1,78 @@ +#!/usr/bin/env bash +git apply ./scripts/enable-android-google-services.patch +FLUFFYCHAT_ORIG_GROUP="im.fluffychat" +FLUFFYCHAT_ORIG_TEAM="4NXF6Z997G" +#FLUFFYCHAT_NEW_GROUP="com.example.fluffychat" +#FLUFFYCHAT_NEW_TEAM="ABCDE12345" + +# In some cases (ie: running beta XCode releases) some pods haven't updated their minimum version +# but XCode will reject the package for using too old of a minimum version. +# This will fix that, but. Well. Use at your own risk. +# export I_PROMISE_IM_REALLY_SMART=1 + +# If you want to automatically install the app +# export FLUFFYCHAT_INSTALL_IPA=1 + +### Rotate IDs ### +[ -n "${FLUFFYCHAT_NEW_GROUP}" ] && { + # App group IDs + sed -i "" "s/group.${FLUFFYCHAT_ORIG_GROUP}.app/group.${FLUFFYCHAT_NEW_GROUP}.app/g" "ios/FluffyChat Share/FluffyChat Share.entitlements" + sed -i "" "s/group.${FLUFFYCHAT_ORIG_GROUP}.app/group.${FLUFFYCHAT_NEW_GROUP}.app/g" "ios/Runner/Runner.entitlements" + sed -i "" "s/group.${FLUFFYCHAT_ORIG_GROUP}.app/group.${FLUFFYCHAT_NEW_GROUP}.app/g" "ios/Runner.xcodeproj/project.pbxproj" + # Bundle identifiers + sed -i "" "s/${FLUFFYCHAT_ORIG_GROUP}.app/${FLUFFYCHAT_NEW_GROUP}.app/g" "ios/Runner.xcodeproj/project.pbxproj" +} + +[ -n "${FLUFFYCHAT_NEW_TEAM}" ] && { + # Code signing team + sed -i "" "s/${FLUFFYCHAT_ORIG_TEAM}/${FLUFFYCHAT_NEW_TEAM}/g" "ios/Runner.xcodeproj/project.pbxproj" +} +cat << EOHELP +If something later in the build explodes, and looks possibly related to App IDs: +1. Ask Xcode nicely + - Open ios/Runner.xcodeproj in Xcode + - Go to the Signing & Capabilities tab + - Ask it to repair the certificates/register app IDs/etc +2. Fix it yourself + - Go to https://developer.apple.com/account/resources/identifiers/list + - Ensure that Xcode created the App ID successfully (for fluffychat.app and fluffychat.app.FluffyChat-Share) + - Under "App Groups", make sure it registered your group + - Back "App IDs", check that the App Group was added to each App ID's entitlements +EOHELP + +### [optional] override pods minimum iphoneos deployment target ### +[ -n "${I_PROMISE_IM_REALLY_SMART}" ] && { +# 1. I'm sorry about the indentation't ;_; heredocs are weird about it +# 2. The patch basically just removes any preference on target iOS version +# This lets our default from ios/Flutter/AppFrameworkInfo.plist take precendence +cat << EOPATCH | patch --forward --reject-file=apple_please_fix_your_coreutils --silent ios/Podfile +diff --git a/ios/Podfile b/ios/Podfile +index 9411102b..0446120a 100644 +--- a/ios/Podfile ++++ b/ios/Podfile +@@ -37,5 +37,8 @@ end + post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_ios_build_settings(target) ++ target.build_configurations.each do |config| ++ config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET' ++ end + end + end +EOPATCH +rm -f apple_please_fix_your_coreutils +} + +### Make release build ### +flutter build ipa --release + +### [optional] Install release build ### +[ -n "${FLUFFYCHAT_INSTALL_IPA}" ] && { + TMPDIR=$(mktemp -d) + # 1. Turn the xcarchive that flutter created into a dev-signed IPA + echo '{"compileBitcode":false,"method":"development"}' | plutil -convert xml1 -o "${TMPDIR}/options.plist" - + xcodebuild -exportArchive -archivePath ./build/ios/archive/Runner.xcarchive -exportPath "${TMPDIR}" -exportOptionsPlist "${TMPDIR}/options.plist" + # 2. ...and install it on your connected devices + cfgutil --foreach install-app "${TMPDIR}/fluffychat.ipa" + rm -rf "${TMPDIR}" +} diff --git a/scripts/build-macos.sh b/scripts/build-macos.sh new file mode 100644 index 0000000..f25711e --- /dev/null +++ b/scripts/build-macos.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash +git apply ./scripts/enable-android-google-services.patch +FLUFFYCHAT_ORIG_GROUP="im.fluffychat" +FLUFFYCHAT_ORIG_TEAM="4NXF6Z997G" +#FLUFFYCHAT_NEW_GROUP="com.example.fluffychat" +#FLUFFYCHAT_NEW_TEAM="ABCDE12345" + +# In some cases (ie: running beta XCode releases) some pods haven't updated their minimum version +# but XCode will reject the package for using too old of a minimum version. +# This will fix that, but. Well. Use at your own risk. +# export I_PROMISE_IM_REALLY_SMART=1 + +# If you want to automatically install the app +# export FLUFFYCHAT_INSTALL_IPA=1 + +### Rotate IDs ### +[ -n "${FLUFFYCHAT_NEW_GROUP}" ] && { + # App group IDs + sed -i "" "s/group.${FLUFFYCHAT_ORIG_GROUP}.app/group.${FLUFFYCHAT_NEW_GROUP}.app/g" "macos/Runner/Runner.entitlements" + sed -i "" "s/group.${FLUFFYCHAT_ORIG_GROUP}.app/group.${FLUFFYCHAT_NEW_GROUP}.app/g" "macos/Runner.xcodeproj/project.pbxproj" + # Bundle identifiers + sed -i "" "s/${FLUFFYCHAT_ORIG_GROUP}.app/${FLUFFYCHAT_NEW_GROUP}.app/g" "macos/Runner.xcodeproj/project.pbxproj" +} + +[ -n "${FLUFFYCHAT_NEW_TEAM}" ] && { + # Code signing team + sed -i "" "s/${FLUFFYCHAT_ORIG_TEAM}/${FLUFFYCHAT_NEW_TEAM}/g" "macos/Runner.xcodeproj/project.pbxproj" +} + +### Make release build ### +flutter build macos --release + +echo "Build build/macos/Build/Products/Release/FluffyChat.app" diff --git a/scripts/build-windows.ps1 b/scripts/build-windows.ps1 new file mode 100644 index 0000000..0c02f80 --- /dev/null +++ b/scripts/build-windows.ps1 @@ -0,0 +1,7 @@ +flutter doctor +flutter config --enable-windows-desktop +flutter clean +flutter pub get + +flutter build windows --release -v + diff --git a/scripts/create_fdroid_repos.sh b/scripts/create_fdroid_repos.sh new file mode 100644 index 0000000..595e1cf --- /dev/null +++ b/scripts/create_fdroid_repos.sh @@ -0,0 +1,67 @@ +#!/usr/bin/env bash + +GITLAB_PROJECT_ID="16112282" + +# repo directory for build +mkdir fdroid/repo +# ... and for deployment +mkdir repo + +git fetch + +# building nightly repo + +cd fdroid + +cp config.nightly.py config.py + +PIPELINES="$(curl https://gitlab.com/api/v4/projects/${GITLAB_PROJECT_ID}/pipelines\?ref=main\&status=success\&order_by=updated_at | jq '.[].id' | head -n3)" + +cp ../build/android/app-release.apk repo/fluffychat-latest.apk + +for PIPELINE in $PIPELINES +do + JOB="$(curl https://gitlab.com/api/v4/projects/${GITLAB_PROJECT_ID}/pipelines/$PIPELINE/jobs | jq -r '.[] | select(.name == "build_android_apk").id')" + if [ -n $JOB ]; then + URI="https://gitlab.com/api/v4/projects/${GITLAB_PROJECT_ID}/jobs/$JOB/artifacts/build/android/app-release.apk" + FILENAME="fluffychat-$PIPELINE.apk" + echo "Downloading $FILENAME from $URI ..." + wget --output-document="$FILENAME" "$URI" + mv "$FILENAME" repo + fi +done + +fdroid update --rename-apks +mkdir /fdroid && fdroid deploy +rm -rf /fdroid/archive +cd .. && mv -v /fdroid repo/nightly + +# building stable + RC repo + +rm -rf /fdroid fdroid/repo + +mkdir fdroid/repo + +cd fdroid +rm -f repo/*.apk + +cp config.stable.py config.py + +PIPELINES="$(curl https://gitlab.com/api/v4/projects/${GITLAB_PROJECT_ID}/pipelines\?scope=tags\&status=success\&order_by=updated_at | jq '.[].id' | head -n3)" + +for PIPELINE in $PIPELINES +do + JOB="$(curl https://gitlab.com/api/v4/projects/${GITLAB_PROJECT_ID}/pipelines/$PIPELINE/jobs | jq -r '.[] | select(.name == "build_android_apk").id')" + if [ -n $JOB ]; then + URI="https://gitlab.com/api/v4/projects/${GITLAB_PROJECT_ID}/jobs/$JOB/artifacts/build/android/app-release.apk" + FILENAME="fluffychat-$PIPELINE.apk" + echo "Downloading $FILENAME from $URI ..." + wget --output-document="$FILENAME" "$URI" + mv "$FILENAME" repo + fi +done + +fdroid update --rename-apks +mkdir /fdroid && fdroid deploy +rm -rf /fdroid/archive +cd .. && mv -v /fdroid repo/stable diff --git a/scripts/generate-locale-config.sh b/scripts/generate-locale-config.sh new file mode 100644 index 0000000..b697850 --- /dev/null +++ b/scripts/generate-locale-config.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +# Directory containing the ARB files +l10n_dir="./lib/l10n" +# Target directory for the locale_config.xml file +xml_dir="./android/app/src/main/res/xml" + +# Create the target directory if it does not exist +mkdir -p "$xml_dir" + +# Output file name +xml_file="$xml_dir/locale_config.xml" + +rm -rf "$xml_file" + +# XML Header +echo '' > "$xml_file" +echo '' >> "$xml_file" + +# Search for ARB files and extract language codes +for file in "$l10n_dir"/intl_*.arb; do + # Extract language code + language_code=$(basename "$file" | cut -d'_' -f2 | cut -d'.' -f1) + # Write language code to the XML file + echo " " >> "$xml_file" +done + +# XML Footer +echo '' >> "$xml_file" + +echo "locale_config.xml file has been successfully created in the $xml_dir directory." diff --git a/scripts/generate_command_hints_glue.sh b/scripts/generate_command_hints_glue.sh new file mode 100644 index 0000000..530f548 --- /dev/null +++ b/scripts/generate_command_hints_glue.sh @@ -0,0 +1,30 @@ +#!/usr/bin/env bash +# Generates some glue code for translation of /command hints. + +# How to use this: +# - Add any new hints to assets/l10n/intl_en.arb +# They must be of the form commandHint_ with in lowercase. +# - Run this script to regenerate the glue code +# - Run flutter test to see if you did everything right + +# Looking to add descriptions for a new command, but don't know what it does? +# It is likely defined here (in registerDefaultCommands()): +# https://gitlab.com/famedly/company/frontend/famedlysdk/-/blob/main/lib/src/utils/commands_extension.dart + +echo "\ +// This file is auto-generated using scripts/generate_command_hints_glue.sh. + +import 'package:flutter_gen/gen_l10n/l10n.dart'; + +String commandHint(L10n l10n, String command) { + switch (command) { +$(sed -n \ + 's/[[:blank:]]*\"\(commandHint_\([[:lower:]]*\)\)\".*/ case "\2":\ + return l10n.\1;/p' \ + lib/l10n/intl_en.arb +) + default: + return \"\"; + } +}\ +" > lib/pages/chat/command_hints.dart diff --git a/scripts/integration-check-release-build.sh b/scripts/integration-check-release-build.sh new file mode 100644 index 0000000..5e32918 --- /dev/null +++ b/scripts/integration-check-release-build.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash + +# generate a temporary signing key adn apply its configuration +cd android +KEYFILE="$(pwd)/key.jks" +echo "Generating signing configuration with $KEYFILE..." +keytool -genkey -keyalg RSA -alias key -keysize 4096 -dname "cn=FluffyChat CI, ou=Head of bad integration tests, o=FluffyChat HQ, c=TLH" -keypass FLUFFYCHAT -storepass FLUFFYCHAT -validity 1 -keystore "$KEYFILE" -storetype "pkcs12" +echo "storePassword=FLUFFYCHAT" >> key.properties +echo "keyPassword=FLUFFYCHAT" >> key.properties +echo "keyAlias=key" >> key.properties +echo "storeFile=$KEYFILE" >> key.properties +ls | grep key +cd .. + +# build release mode APK +flutter pub get +flutter build apk --release + +# install and launch APK +flutter install +adb shell am start -n chat.fluffy.fluffychat/chat.fluffy.fluffychat.MainActivity + +sleep 5 + +# check whether FluffyChat runs +adb shell ps | awk '{print $9}' | grep chat.fluffy.fluffychat diff --git a/scripts/integration-create-environment-variables.sh b/scripts/integration-create-environment-variables.sh new file mode 100644 index 0000000..d2b3a8f --- /dev/null +++ b/scripts/integration-create-environment-variables.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +export USER1_NAME="alice" +export USER1_PW="AliceInWonderland" +export USER2_NAME="bob" +export USER2_PW="JoWirSchaffenDas" diff --git a/scripts/integration-prepare-homeserver.sh b/scripts/integration-prepare-homeserver.sh new file mode 100644 index 0000000..6bbee11 --- /dev/null +++ b/scripts/integration-prepare-homeserver.sh @@ -0,0 +1,60 @@ +#!/usr/bin/env bash + +if [ -z $HOMESERVER ]; then + echo "Please ensure HOMESERVER environment variable is set to the IP or hostname of the homeserver." + exit 1 +fi +if [ -z $USER1_NAME ]; then + echo "Please ensure USER1_NAME environment variable is set to first user name." + exit 1 +fi +if [ -z $USER1_PW ]; then + echo "Please ensure USER1_PW environment variable is set to first user password." + exit 1 +fi +if [ -z $USER2_NAME ]; then + echo "Please ensure USER2_NAME environment variable is set to second user name." + exit 1 +fi +if [ -z $USER2_PW ]; then + echo "Please ensure USER2_PW environment variable is set to second user password." + exit 1 +fi + +echo "Waiting for homeserver to be available... (GET http://$HOMESERVER/_matrix/client/v3/login)" + +while ! curl -XGET "http://$HOMESERVER/_matrix/client/v3/login" >/dev/null 2>/dev/null; do + sleep 2 +done + +echo "Homeserver is up." + +# create users + +curl -fS --retry 3 -XPOST -d "{\"username\":\"$USER1_NAME\", \"password\":\"$USER1_PW\", \"inhibit_login\":true, \"auth\": {\"type\":\"m.login.dummy\"}}" "http://$HOMESERVER/_matrix/client/r0/register" +curl -fS --retry 3 -XPOST -d "{\"username\":\"$USER2_NAME\", \"password\":\"$USER2_PW\", \"inhibit_login\":true, \"auth\": {\"type\":\"m.login.dummy\"}}" "http://$HOMESERVER/_matrix/client/r0/register" + +usertoken1=$(curl -fS --retry 3 "http://$HOMESERVER/_matrix/client/r0/login" -H "Content-Type: application/json" -d "{\"type\": \"m.login.password\", \"identifier\": {\"type\": \"m.id.user\",\"user\": \"$USER1_NAME\"},\"password\":\"$USER1_PW\"}" | jq -r '.access_token') +usertoken2=$(curl -fS --retry 3 "http://$HOMESERVER/_matrix/client/r0/login" -H "Content-Type: application/json" -d "{\"type\": \"m.login.password\", \"identifier\": {\"type\": \"m.id.user\",\"user\": \"$USER2_NAME\"},\"password\":\"$USER2_PW\"}" | jq -r '.access_token') + + +# get usernames' mxids +mxid1=$(curl -fS --retry 3 "http://$HOMESERVER/_matrix/client/r0/account/whoami" -H "Authorization: Bearer $usertoken1" | jq -r .user_id) +mxid2=$(curl -fS --retry 3 "http://$HOMESERVER/_matrix/client/r0/account/whoami" -H "Authorization: Bearer $usertoken2" | jq -r .user_id) + +# setting the display name to username +curl -fS --retry 3 -XPUT -d "{\"displayname\":\"$USER1_NAME\"}" "http://$HOMESERVER/_matrix/client/v3/profile/$mxid1/displayname" -H "Authorization: Bearer $usertoken1" +curl -fS --retry 3 -XPUT -d "{\"displayname\":\"$USER2_NAME\"}" "http://$HOMESERVER/_matrix/client/v3/profile/$mxid2/displayname" -H "Authorization: Bearer $usertoken2" + +echo "Set display names" + +# create new room to invite user too +roomID=$(curl --retry 3 --silent --fail -XPOST -d "{\"name\":\"$USER2_NAME\", \"is_direct\": true}" "http://$HOMESERVER/_matrix/client/r0/createRoom?access_token=$usertoken2" | jq -r '.room_id') +echo "Created room '$roomID'" + +# send message in created room +curl --retry 3 --fail --silent -XPOST -d '{"msgtype":"m.text", "body":"joined room successfully"}' "http://$HOMESERVER/_matrix/client/r0/rooms/$roomID/send/m.room.message?access_token=$usertoken2" +echo "Sent message" + +curl -fS --retry 3 -XPOST -d "{\"user_id\":\"$mxid1\"}" "http://$HOMESERVER/_matrix/client/r0/rooms/$roomID/invite?access_token=$usertoken2" +echo "Invited $USER1_NAME" diff --git a/scripts/integration-prepare-host.sh b/scripts/integration-prepare-host.sh new file mode 100644 index 0000000..f110aab --- /dev/null +++ b/scripts/integration-prepare-host.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +if ! command -v apk &>/dev/null; then + apt update && apt install -y -qq docker.io ldnsutils grep scrcpy ffmpeg +else + apk update && apk add docker drill grep scrcpy ffmpeg +fi diff --git a/scripts/integration-server-conduit.sh b/scripts/integration-server-conduit.sh new file mode 100644 index 0000000..f4b031f --- /dev/null +++ b/scripts/integration-server-conduit.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash +docker run -d \ + -e CONDUIT_SERVER_NAME="localhost" \ + -e CONDUIT_PORT="8008" \ + -e CONDUIT_DATABASE_BACKEND="rocksdb" \ + -e CONDUIT_ALLOW_REGISTRATION=true \ + -e CONDUIT_ALLOW_FEDERATION=true \ + -e CONDUIT_MAX_REQUEST_SIZE="20000000" \ + -e CONDUIT_TRUSTED_SERVERS="[\"conduit.rs\"]" \ + -e CONDUIT_MAX_CONCURRENT_REQUESTS="100" \ + -e CONDUIT_LOG="info,rocket=off,_=off,sled=off" \ + --name conduit -p 80:8008 matrixconduit/matrix-conduit:latest diff --git a/scripts/integration-server-dendrite.sh b/scripts/integration-server-dendrite.sh new file mode 100644 index 0000000..ee23da1 --- /dev/null +++ b/scripts/integration-server-dendrite.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash +chown -R 991:991 integration_test/dendrite + +# creating integration test SSL certificates +docker run --rm --entrypoint="" \ + --volume="$(pwd)/integration_test/dendrite/data":/mnt:rw \ + matrixdotorg/dendrite-monolith:latest \ + /usr/bin/generate-keys \ + -private-key /mnt/matrix_key.pem \ + -tls-cert /mnt/server.crt \ + -tls-key /mnt/server.key + +docker run -d --volume="$(pwd)/integration_test/dendrite/data":/etc/dendrite:rw \ + --name dendrite -p 80:8008 matrixdotorg/dendrite-monolith:latest -really-enable-open-registration diff --git a/scripts/integration-server-synapse.sh b/scripts/integration-server-synapse.sh new file mode 100644 index 0000000..03d2184 --- /dev/null +++ b/scripts/integration-server-synapse.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash +docker run -d --name synapse --tmpfs /data \ + --volume="$(pwd)/integration_test/synapse/data/homeserver.yaml":/data/homeserver.yaml:rw \ + --volume="$(pwd)/integration_test/synapse/data/localhost.log.config":/data/localhost.log.config:rw \ + -p 80:80 matrixdotorg/synapse:latest diff --git a/scripts/integration-start-avd.sh b/scripts/integration-start-avd.sh new file mode 100644 index 0000000..fb608e4 --- /dev/null +++ b/scripts/integration-start-avd.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +chmod 777 -R /dev/kvm +adb start-server +emulator -avd test -wipe-data -no-audio -no-boot-anim -no-window -accel on -gpu swiftshader_indirect diff --git a/scripts/package-windows.ps1 b/scripts/package-windows.ps1 new file mode 100644 index 0000000..b3ba0e7 --- /dev/null +++ b/scripts/package-windows.ps1 @@ -0,0 +1,5 @@ +Write-Output "$WINDOWN_PFX" +Move-Item -Path $WINDOWS_PFX -Destination fluffychat.pem +certutil -decode fluffychat.pem fluffychat.pfx + +flutter pub run msix:create -c fluffychat.pfx -p $WINDOWS_PFX_PASS --sign-msix true --install-certificate false diff --git a/scripts/prepare-android-release.sh b/scripts/prepare-android-release.sh new file mode 100644 index 0000000..a2a11dc --- /dev/null +++ b/scripts/prepare-android-release.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash +cd android +echo $FDROID_KEY | base64 --decode --ignore-garbage > key.jks +echo "storePassword=${FDROID_KEY_PASS}" >> key.properties +echo "keyPassword=${FDROID_KEY_PASS}" >> key.properties +echo "keyAlias=key" >> key.properties +echo "storeFile=../key.jks" >> key.properties +echo $PLAYSTORE_DEPLOY_KEY >> keys.json +ls | grep key +bundle install +bundle update fastlane +bundle exec fastlane set_build_code_internal +cd .. diff --git a/scripts/prepare-fdroid.sh b/scripts/prepare-fdroid.sh new file mode 100644 index 0000000..f9384b0 --- /dev/null +++ b/scripts/prepare-fdroid.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +cp -r android/fastlane fdroid/metadata/chat.fluffy.fluffychat +cd fdroid +echo $FDROID_KEY | base64 --decode --ignore-garbage > key.jks +echo $FDROID_NIGHTLY_KEY | base64 --decode --ignore-garbage > key.nightly.jks +echo "keypass=\"${FDROID_KEY_PASS}\"" >> config.stable.py +echo "keystorepass=\"${FDROID_KEY_PASS}\"" >> config.stable.py +echo "keypass=\"${FDROID_NIGHTLY_KEY_PASS}\"" >> config.nightly.py +echo "keystorepass=\"${FDROID_NIGHTLY_KEY_PASS}\"" >> config.nightly.py +chmod 600 config.stable.py key.jks config.nightly.py key.nightly.jks +cd .. diff --git a/scripts/prepare-web.sh b/scripts/prepare-web.sh new file mode 100644 index 0000000..6ffb59f --- /dev/null +++ b/scripts/prepare-web.sh @@ -0,0 +1,20 @@ +#!/bin/sh -ve + +version=$(yq ".dependencies.flutter_vodozemac" < pubspec.yaml) +version=$(expr "$version" : '\^*\(.*\)') +git clone https://github.com/famedly/dart-vodozemac.git -b ${version} .vodozemac +cd .vodozemac +cargo install flutter_rust_bridge_codegen +flutter_rust_bridge_codegen build-web --dart-root dart --rust-root $(readlink -f rust) --release +cd .. +rm -f ./assets/vodozemac/vodozemac_bindings_dart* +mv .vodozemac/dart/web/pkg/vodozemac_bindings_dart* ./assets/vodozemac/ +rm -rf .vodozemac + +# Add native imaging: +cd web/ +curl -L 'https://github.com/famedly/dart_native_imaging/releases/download/v0.2.1/native_imaging.zip' > native_imaging.zip # make sure to sync version with pubspec.yaml +unzip native_imaging.zip +mv js/* . +rmdir js +rm native_imaging.zip \ No newline at end of file diff --git a/scripts/prepare-windows.ps1 b/scripts/prepare-windows.ps1 new file mode 100644 index 0000000..97451b4 --- /dev/null +++ b/scripts/prepare-windows.ps1 @@ -0,0 +1,5 @@ +choco install flutter cmake --installargs 'ADD_CMAKE_TO_PATH=System' -y +Import-Module "$env:ChocolateyInstall\helpers\chocolateyProfile.psm1" +refreshenv + +flutter config --no-analytics diff --git a/scripts/release-ios-testflight.sh b/scripts/release-ios-testflight.sh new file mode 100644 index 0000000..14e6ea0 --- /dev/null +++ b/scripts/release-ios-testflight.sh @@ -0,0 +1,16 @@ +#!/bin/sh -ve +flutter pub add fcm_shared_isolate:0.1.0 +sed -i '' 's,//,,g' lib/utils/background_push.dart +flutter clean +flutter pub get +cd ios +rm -rf Pods +rm -f Podfile.lock +pod install +pod update +cd .. +flutter build ios --release +cd ios +bundle update fastlane +bundle exec fastlane beta +cd .. \ No newline at end of file diff --git a/scripts/update-dependencies.sh b/scripts/update-dependencies.sh new file mode 100644 index 0000000..5f783fc --- /dev/null +++ b/scripts/update-dependencies.sh @@ -0,0 +1,6 @@ +#!/bin/sh -ve +flutter pub upgrade --major-versions +flutter pub get +dart fix --apply +flutter format lib test +flutter pub run import_sorter:main --no-comments \ No newline at end of file diff --git a/snap/gui/fluffychat.desktop b/snap/gui/fluffychat.desktop new file mode 100644 index 0000000..8861487 --- /dev/null +++ b/snap/gui/fluffychat.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Name=FluffyChat +GenericName=Matrix Client +Comment=Chat with your friends +Exec=fluffychat +Icon=${SNAP}/meta/gui/fluffychat.png +Terminal=false +Type=Application +Categories=Network;Chat;InstantMessaging; diff --git a/snap/gui/fluffychat.png b/snap/gui/fluffychat.png new file mode 100644 index 0000000000000000000000000000000000000000..e007649396b67bf631afc0e7ac5bd4797b4aa4a6 GIT binary patch literal 32675 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 z k.startsWith('commandHint_')) + .map((k) => k.replaceFirst('commandHint_', '')); + final commands = (await prepareTestClient()).commands.keys; + final missing = commands.where((c) => !translated.contains(c)).toList(); + + expect( + 0, + missing.length, + reason: + 'missing hints for $missing\nAdding hints? See scripts/generate_command_hints_glue.sh', + ); + }); +} diff --git a/test/homeserver_picker_test.dart b/test/homeserver_picker_test.dart new file mode 100644 index 0000000..054f49c --- /dev/null +++ b/test/homeserver_picker_test.dart @@ -0,0 +1,17 @@ +//import 'package:fluffychat/pages/homeserver_picker.dart'; +//import 'package:fluffychat/main.dart'; + +import 'package:flutter_test/flutter_test.dart'; + +//import 'utils/test_client.dart'; + +void main() { + testWidgets('Test if the widget can be created', (WidgetTester tester) async { + /*await tester.pumpWidget( + FluffyChatApp( + client: await prepareTestClient(), + testWidget: HomeserverPicker(), + ), + );*/ + }); +} diff --git a/test/utils/test_client.dart b/test/utils/test_client.dart new file mode 100644 index 0000000..720925a --- /dev/null +++ b/test/utils/test_client.dart @@ -0,0 +1,43 @@ +// ignore_for_file: depend_on_referenced_packages + +import 'package:matrix/encryption/utils/key_verification.dart'; +import 'package:matrix/matrix.dart'; +import 'package:sqflite_common_ffi/sqflite_ffi.dart'; + +Future prepareTestClient({ + bool loggedIn = false, + Uri? homeserver, + String id = 'FluffyChat Widget Test', +}) async { + homeserver ??= Uri.parse('https://fakeserver.notexisting'); + final client = Client( + 'FluffyChat Widget Tests', + httpClient: FakeMatrixApi() + ..api['GET']!['/.well-known/matrix/client'] = (req) => {}, + verificationMethods: { + KeyVerificationMethod.numbers, + KeyVerificationMethod.emoji, + }, + importantStateEvents: { + 'im.ponies.room_emotes', // we want emotes to work properly + }, + database: await MatrixSdkDatabase.init( + 'test', + database: await databaseFactoryFfi.openDatabase(':memory:'), + sqfliteFactory: databaseFactoryFfi, + ), + supportedLoginTypes: { + AuthenticationTypes.password, + AuthenticationTypes.sso, + }, + ); + await client.checkHomeserver(homeserver); + if (loggedIn) { + await client.login( + LoginType.mLoginToken, + identifier: AuthenticationUserIdentifier(user: '@alice:example.invalid'), + password: '1234', + ); + } + return client; +} diff --git a/test/widget_test.dart b/test/widget_test.dart new file mode 100644 index 0000000..7d1d98e --- /dev/null +++ b/test/widget_test.dart @@ -0,0 +1,20 @@ +// This is a basic Flutter widget test. +// +// To perform an interaction with a widget in your test, use the WidgetTester +// utility that Flutter provides. For example, you can send tap and scroll +// gestures. You can also use WidgetTester to find child widgets in the widget +// tree, read text, and verify that the values of widget properties are correct. + +//import 'package:fluffychat/main.dart'; + +import 'package:flutter_test/flutter_test.dart'; + +//import 'utils/test_client.dart'; + +void main() { + testWidgets('Test if the app starts', (WidgetTester tester) async { + /* await tester.pumpWidget(FluffyChatApp( + client: await prepareTestClient(), + ));*/ + }); +} diff --git a/web/auth.html b/web/auth.html new file mode 100644 index 0000000..806485b --- /dev/null +++ b/web/auth.html @@ -0,0 +1,13 @@ + +Authentication complete +

    Authentication is complete. If this does not happen automatically, please close the window.

    + \ No newline at end of file diff --git a/web/favicon.png b/web/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..e062b83e7bad6714d9e4363358d2874c61c4b784 GIT binary patch literal 1995 zcmV;+2Q>JJP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+Rav3wj?PC{dX0;1W^%Oj^jDKgI<1Lhn({b^{PH9 zA~RHi0K6Ab)BpQ-n166NtHA^ojVVTpE2NNIMn~44g zkA8-nZy!iF^71G*QjZ-yhAx(mK|eh^blM5>81in*>5NTsyOZPHbk5()GI3RY9tQy! zjUn{TxbDf@_0;Xj?|;Uh@kAerGH%8Mj`kq}5(EzS^CUu$0>OrvpPQN~jxCMVkU)G&) ztIf6o_y&i?*n&YK2gC;jYLsbEUu~s|5QFPZ&^lM0Uo!RLlB<4F5avz8iSfxdui&PF zIS;YB#zM<)n*QKS;kgks9l;pki-+4h3x0Y(7#d@yIg!;XR*1{ZBt#gKx%q?^2%&K> z<%KVq-Pq@A66?VrFPIe*%(iS3h3S@Ce(~%r8>j}mQ=X(91Aqv=8NrYT12&Rpie$w( zAp(vHelj9=KDYt~hz+}jC|&SAf*f_zH@*>Cx{lozqr89!#u5=wlY9nQA#jLTZ;BMk zhCK&njx4O4I7c5tLzI%{P<)(_)jREw$XKBb9pS++&xnJ@q`0 zYr~H)c*G$?M;iIc+F|vPwP)r&XN?YPZV@&0WVjm@|{QJLX<_ zd&64GtLXVf&|HPU6cy5A`9Uc=#Sh!b&st-D)4<!&l=CI`RIkTD61=V*t)#uc|v$>N9x<Q-%{6u zVZu2h4L%X6(%`f~93Gqc7s>Z7_l*5A)xOu7@2B1!Sl21$%|&$B`&-B-8#M~fmIpwq z^$^3PFA&v3Ada#^D-6S^xKs~7s93+cL@sff`#@0-k0b0axo>uBL_XTHhEV1u=ko&l zNo$u+4W0bW*a-%T{GJ(hVdTmlw1`uf980XXXmUNm)Je@pnKE45c1FMf={XO=Hc>Ui zqh>PpflKk>v=p<&n+$W#Zuv+tj1@b1I)XblW2YK}K zIQo5}4O2${Ala@o>#OK>@&3l5MM1g|EX>4Tx04R}TU|=$E zba8TJ5@2A+%_}Jia(7aQh>TKTKhMC%z{~&!iOIzUjsXEaAa-7UUMd3y_;!tf5kz0s z1(}5@j~8$y7ZjBM=|4bhl#*JU%)r2C0Ay#EmlOcS8Rr1mB1zd`_688UC?v=k$UXvO z^QA-BS3v9}2>S_$T?F(5ko^UuJ{`5*&HCkwr=x>4m6b}&A z=Rk1yGK!r+h#^37X;B%J$;f0(n2#`HjsydP|5649mOltFlU@df1v(52{8JHPYK9C9 z0{RRL`{n=uz{XGgMlj5U00006VoOIv0RI600RN!9r;`8x010qNS#tmY3ljhU3ljkV znw%H_000McNliruHcAp{ z%1@)P5EipQ$U^K)3Bzi}+Ctgbu%KjiO0t;66t16z88r)rsPUJ-qLC2|5;ADU=8iB| zv#{{iSKm43`@YWmp7#jhaG1Y9u4|tt- zTJpc$KwpxkpLTQ>n9PPzQPeB}C%~c-`@m|Osc_6L_hc89>hhu}NC|QN$H!-`{PzGx zWjjp?fXdV3Yc6~@Bqqf_L{V6GUwU;J8<`7^lVACI+319Sj0lU|nPBW`bA*jjU-l{7ruztY}1!CfHusd*$3B2E+pf!eC!BOo`1 z3{ODnyweg?b7D6T%iA5Y%NkU*vh1?10M=g`-+(T_p=#wX2m@0}VI$xJwt+p_Wj**= dEd2X#`~Z*=dbAMVFO2{I002ovPDHLkV1lD&jDY|E literal 0 HcmV?d00001 diff --git a/web/icons/Icon-192.png b/web/icons/Icon-192.png new file mode 100644 index 0000000000000000000000000000000000000000..6003f5cf7a22c0c6916b11c6085505bd3d8f6f50 GIT binary patch literal 24004 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 literal 0 HcmV?d00001 diff --git a/web/icons/Icon-512.png b/web/icons/Icon-512.png new file mode 100644 index 0000000000000000000000000000000000000000..f652f244accfa1435bdb386c608d4300ba34fd06 GIT binary patch literal 50420 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 + + + + + + + + + + + + + + + + + + + + FluffyChat + + + + + + + + + + + + + + + + + + diff --git a/web/manifest.json b/web/manifest.json new file mode 100644 index 0000000..e4f6c31 --- /dev/null +++ b/web/manifest.json @@ -0,0 +1,23 @@ +{ + "name": "FluffyChat", + "short_name": "FluffyChat", + "start_url": ".", + "display": "standalone", + "background_color": "#0175C2", + "theme_color": "#0175C2", + "description": "The cutest messenger in the Matrix network", + "orientation": "portrait-primary", + "prefer_related_applications": false, + "icons": [ + { + "src": "icons/Icon-192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "icons/Icon-512.png", + "sizes": "512x512", + "type": "image/png" + } + ] +} \ No newline at end of file diff --git a/web/splash/img/dark-1x.png b/web/splash/img/dark-1x.png new file mode 100644 index 0000000000000000000000000000000000000000..f4c0bdb922597c27f2e8d2eaccadf53aa8a8caff GIT binary patch literal 5267 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 DE3n96 literal 0 HcmV?d00001 diff --git a/web/splash/img/dark-3x.png b/web/splash/img/dark-3x.png new file mode 100644 index 0000000000000000000000000000000000000000..b627f52801ffb9f2d7ebde438c873a738424907d GIT binary patch literal 25762 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 literal 0 HcmV?d00001 diff --git a/web/splash/img/light-1x.png b/web/splash/img/light-1x.png new file mode 100644 index 0000000000000000000000000000000000000000..f4c0bdb922597c27f2e8d2eaccadf53aa8a8caff GIT binary patch literal 5267 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 DE3n96 literal 0 HcmV?d00001 diff --git a/web/splash/img/light-3x.png b/web/splash/img/light-3x.png new file mode 100644 index 0000000000000000000000000000000000000000..b627f52801ffb9f2d7ebde438c873a738424907d GIT binary patch literal 25762 zcmeEsV|$!kxOUjscG9qM(zLN{qp@wKpA8PHHy=jP_xGJG_!c_X6wlQvpXz+x1nthnP2OE zk-W7zOc<4HOSy1qL!WH70X=?y6VBBH=6WpxdQjS6^mJREm-kPu^B$&z86bl;8ugbx>?h zE-w+io&&Z8()_C^1`mfPvYj`oP8zRV?-%d}sP58D(%YGwklWuaX7895OV{+5x5>Ge zAMTpEXV%o(%8DH@%#wfNkYpQS9_FZiMZO&CKl?tVXkggv*`~2UNKF;)FDoNW|1N2% zbnJ2;qg7sMhaAq+4`ogH6F41ZXtdcb7>IyQvae#68gkN2O6M{L?;_@DCAbtwlqAjc zGCFQ`;m!rMJ`CIF-M8^s_Bx7w=-EDIbdJ*5y4J)Axa$f;>V=%kh@>3OkBG1v8=A8S^m)2cv;kB zxR60%5s{dYmBw!8crChIio;i6t7x!UHh&)b?yWgC0F$BR`WWJ&C$IwY6v4a{e`XQw zYgCw#o+W=$j9{CcRG(;akOySV(hnPVW4%eMOzw7q&`_ff*qEoZ%VC^DO6|m46Wwil z_tf&##4v|PWo+4xRHt08+myplhg<;-R1npW)u?JEw{L)EVZh@@t|Vhg2R*;l^uhokyD_XXTy;$B!plD!Bi(Z~(a!xK(yma_;QpX4HMbL`r+^~8r&3^mD5=(T z<-v*9F!i%*sK2|i+3w87-9yApK&S31j82gb&8d@x@B7LroiiG^2b40N^DRQC^X5|MWd+~v2c>o^WMSmLUD=T zGQOFn8sH)^oU4j|3GiM-U5L&rM#dt&^V@;)!d`!{p>MFE6L-8UY@_fzCBapd; zZi&V20Y^%yVAyXE^%Cb!TCD{Sc{Zo;m{>mX?!HO1okm~=7NZtg)hI=@9kC?-!qL;W z(|(OVSI^IQ*{^czSy-GCSZQU9;M_tpgz3*x{*SmI$ zF4iym%{Fn+s(XQ1CbLOVeD}O9bU?9tl@>9M*sj+aA<^dc%(U#EKB8(TjZ87qoTtq# zEpKOa%@-L-x{(@OkEaN#sxK($uOfPFoE8liDvvlme+j5CD`~$?@*ctg3?_X1_({%d z{?NU!-S6P#q^*dyJ)7xfC$}6$;%q)2e1jYtm7#4NP)=*v(`}hApk|61po#HM6Apr7 zWy7r@CXR6a<*$!M#SHY|xjsojJvMymQ`p%MTaX{7oXp-}xtQs>tofybHS*<#^{`}; zrt6IQB#-!uSGlQ|P5{^9J1b(#i!T6qZpu%^zp-gr@(oqc?2d+aTnTJN(Y*!zr`Y<2egLG2_FPs_)OsU0i(ca?l*7eu*Q9lHT$UO>&)j2@%c z)_r9ugz0BDPOdEp8dE_eer5Clw!3TTwBAxt(AO*ytw!#8ms}?ntd-DE`+L#T&Rkk) zq22k~V~N}A^GsoA z+0E<=5FsmAm@u|t@vVpWWoNJdwqOXSvR$56`)fd4PIz3@=&PdZTJ+jmlU-JQNd6!F zvIKOUtFqV15Vx|D22l$7)F0ZmCC0`>(n5xf99hW67bi(Wp~%O_d^Tq&WSud(CElPn^f02y(3lpRG)Ylt5tn~a| zBwsKos8aBg;A>hLr8@Z+2jfvuo+rj6e>Y5J(|kYNmv)eB7xBn4?CklQ%16;DTx_k; zp-1dxAG1INpN~;Q)?OnmLo<$u$leciMmh#toUZF*zBo9)zea#9?JaZ%$Di}_yF6p7 zaj1KjE~m-{ZRQeDyiKNMVf#t=!g45u_R%=;Hx{v->FKnWg68Florklc&R#A^b z<3b8-zhCrO4i$RrRnC7SFCXulHs%-CRdQ2V%uJQMFO~xt-^5$&aEp=F%ylEIW z$)7{Mv0CW{&~p@sNKqBOKpd3Ozlfw8n^KSQZuzQdWT>r!x zegBt^c>n9b?8Bi?GH9TV5IL+|TggOQu)MO}yj_LF{JKf4^9|^wRM#N)1%^J(aKaI} z-Ivwx1Shij!uKSsNtU3U5BLSZc8DjQ+S@F&_{i#~d2A9_G3+@c%6s2Byz?^-tE&7x z(=%Q`1vw3sB*l4vM%_%NyZL*W z^F@(3wI+Yotb&gJ$081uuglh{l2fnaR-19ycAL#ZA)OAd7D3PaoWnl=l}{YCB9&ab zc|D>;#$t9S)5V(>$B{IZ@;wP%@G?H(6j=!|^v(8u`d;u(X*x#rvpUwDEnK%uZCa{QbW9mk4LF!% z>ow|QdbyilCu6evY#BG%COQt}yZB6R->G}l^?H7xL^zihvSdjc#R+u7wNZR`N-(k= zHQ|yt@?bCw+R!wR%+U6JrpKa*qWHnv7{i89V)~+43w(LaGI%wYAZ!psdjNIEL}`~> zuRkp`T_q6yXwf>?d`MTPRZYo6?Y)z9(RMU1L$|R+xN#NOYGHXj_oWtH&x#$-m{mcO zFt{74G3~#Vhhdd%r@E zBZ2V!PgQSF*KhjVS-fMR@e1*DdGhZryz>5q7gGW?iHEvcj{;*A18;!c2=fm9?asy3 zUGk4g`e&6oAoMieICaelJ5y$w&SR&9&h^VJD-=D~8f9*`W30C4Js*Gf|={j5+e>G zff!+d{M?a~gp8hZbVUMW5O3dOlDA0-0Pjgj?qxnY$BW zI7ffzRTY2pgk>I&Gx|h5G7wQ2_XE!q9MlOC}>C3PJ;93{Qhvu+T4txW`z0nVIe0Ru#cU=A{Sl|DITb zQ{bX~KTA#$XkynPj6uTORA0H=DIKza*Z`tHSEXi^VDa>vIQ*eTd4DGUxFbZ_($k%4 zFwn*GhL$(PwUyDq+~+MI`X5WXN-M8Hk%m4SnT-B|)o~@h`8kI@1!Ma_%_9mj;^;qp z_b@9{6KaW!^4hy5k7#;0NfwZAHfu|m3ZA3~*BIwXW%QlNKhLUvG~wAGy)!N^)Br@% z4t?$0vXr=3q(dTn3^q_8N(d+jW3OC#7b}KNM#o;0*ZyuLtSxNmkTj!%Z-acxo3``l zR;N2z$N$IlsQ3666N<`n58{u|>4aiNkH>SLM7`fTnN{^AW&#-~Za^x$Q&qBF?!9|i z>y$)n>Q&B&0OVU0LBn2l&XgY43~mCq(P{xdBz+Ok_(z4<0|?GhYin8lV0tk+9w&dH z%QPNd5_UY&k8*aqf1%CE>NMVxD#R!;me!Jvd)n8rZOfB9bbq9q?wNU59(YghN z%LxJk-1k~$w3*a5MbAyxuEwXOn8ohmv!v%g@+3i=Vn2x>mU|jLe)BK4WI!_1zn{O= zpX^vTzD=3|f2^h>Qvh*qQ^^jfG>~fQxqSPR54-nPp+}!8{&AW;ABrjz z{Dz3+vA@c1d+SoXXysXGlGT1&+&!?kI!n+?98D_?4J8KlIfHHGEu-ukPc5B#59eHT zwfBfP8I|a*FD_4iJfzy(EEo|4T2A`=RC+ko*m+!^+G!qid~oPwzs=1O_co#xdyqm6 zLVk?|%~LY~;YFRc_R0IhHy7UrGny?$rXC;r7{d``d%M(l)}})%`Se5mW=n5_ zT>X7MFzLOrs7-oJ(@RK`Z)G^(jk@QzVqL=~`*e7&Oc>zFYXl?$DoBL7hpw#$z4#w) zak#9*xsN^1C$`TMO}C;xdAU~&ITr!`#Uev1bGIy3cAf7^qNJG?TMF+p7x9>|;mjcB zgUsIKT(9sLO+Rc-5E~>Tht0CCzIO$4jEC>;7UmT81m}ox$1~@}R`WK+tiR@7LE-j+ zOpFC!b0t3i>ENkbqrTLmOesovOpSOO6&013me#vu+`Gc!;dud9W8?k!r-nbI2XP*; z6b}-26m&AV>qm`h%3f~O^h3VfqwdC4t&dYo)?-;&VwU5pw)$vUUAIa39Mq-=XGsdrs`olsJN+K3J@)}@+$HK~Hl^b*BJd!Wuo@#SB8@6EDQi=c+l<@AuJK&hR`JiyR zePL@F5!roT{joabEK4N)C*5W1RGPBc{@7DJ;;Ql{YRZkF^K4k?yvN{(~BCIkF$g2kT4Hh8(&^*yfi#xu?}JeUq5E&;gUHrA>jATK1!OI zxB38@)x2OkYIa(8%4DSMYPq%_^d?+kVirto1Cc%cmDoub8aAqs@SwjAm?C?SH&Q}= zjRKKb?LJ**2$A-C$j2QL4e)JlD3H(gAimo0PvX?xy6AwO{0$iF;QDEYsFUCy4l0t> z#A+@604P-710(tIdF>tlD$q@q^r_q1^!RP@=8SQ8p?EueFUy1=7S&fBSkeU$+KNKS zxjP1byAAwtfglh2R{s*x(%sB3w+|*1!wlZRsBjHP%yetkgUQm(*j|Je4yL>}D2s&x!!yavtO;V^ z1%to*QOj)9r+Q*wTR0xbQpR1C_Yo_B0|847ifKFX!K6uOJcJxJk#4F+IsGTz9@FU{ ztxuz5fsDed++^7uEFY`p2~FB!7F9$>H&T@e;7ReM zUYYIc8uoD_7$AZdnW~>+Z+Am5-6#XR_YBU2hM_%Xyc;LHy6wzxyi(M~lf!zKTsn_gCCf zT3%`1J4zOgLu*}^u1g6=C#N4Puc;Nk{aZcv%JnR)D0#jwUW)9Kz(IzE`E*rdAskB) zG+p(S1Z{_0NQCyiXzo|mG}60d0e8v>GIe>Tw~00%NFx3%mFp4tOf5REuR1jUMMxKo zTc_9OV5ANW%bVOBC5<2MPans1JqnZl=7m8p~U(pntN~9Yw*km+pCD*|gkR%9?@+oc9 zU+f$U@+thn%wDK=ZMcN5TOiJ+`ynlsGXsJ**;b2S6J~>Ck za&~VIoZd^hs76_@YA_HisYpJ@Y95~wtwVx4uVi%8O1y2ro7^-KO3K7uzcIwQ6qZT5 zT3039Ta_DE0N0z?;wF+lR?-@scJt@oTPj-83t_cB-}4~ir8b$jd7|PRClb=pj(y8* zGwsgu*%VRbqza$+xap%n4iko#p7U;Lm|{q}zdTDFCe|ir5EnDu$F+@`#%IcX{_8!; zB$G@NcN>g)9k6i6!RhoY^2=TFuDw9#S%a_I)$G>{3nEi7x+Bn{xp*57$@uUuwprNzv_628*$+uGz z)LuP~z+r|SjT3+}xeX|(ne{CS7}!rDNgI#;DkAav1<>1tSK2$7W=hn1JyO*Zm*v)K zwC>b)*$|3|xz$*Uz1S=NFpUZ0HXcq9CZo;%5lUtg3eY!ET=@c;XHCjKG8XXk)d~?< z{Tvd!ZxWBmR#S-2^O%w*w6y7KczWn4)(In&=6AdqIMsp%VCo&w7kl~;R~ssHf#SUq zace^i9aboI^=|kBX+mlK**0n|WeN2D#19_ZCJjREvK!A=-*YpmFT0!Mxz@ad+im0< z$Cp{yK-YUa82PFu#FVxz%2|wIX}a_5GEFsh3hi9LqOLCS3$-)TtxHo{KqEgp+k81x(?`0~?chHAdHpxwW82LdG#Uy< zaaxTUp}Vh*2m*L8sMY;xGS&g(_wkS=`OykMHF7Nkz3z*bK)%L%fSJ-|QOtP*sHu*^ zJbDm)y}41|yJcrcUcE)|nU)uA3Fp{C!EQHPO7;zp#(ElT4{J~mKc)h%zRL7A zb8#Viu%EeKB{Up*)5$L$xsA+j=L5vlSK7%9T90b;wRi*JFd`&p9gkI=e3E!V65q2A znHW=sD!BKS`F(gxZH}fAx8e0QO#By1yu-GZ zZqLI=(MQDg4F^3{)rHzciguv|06L(}M?QXidEV`Gl>(q>aVjg9p0kU9-8XTHib1r= z$jDL$m(~Zh>nZTX zY>v8ZXGJ>H#1{_IwXlM-eF+K@o-6082&)ba((U@L5q8Qgq>+g6<7cqj3+=w@1?SUF zwij}DEoCP+gcvfYrp3csSfr+;JiHOmRphL=Y34oiyB)OTE4u5+06HrmB}3_Vcs3XEPD#-m)l+2 z8*t3^pa#LTO7~-fov-b#oA%z`TfhIRhY-0l#`R8V917X?5Cp8 z@%?%EWfEWVR!Me$#XwMBRK#(4_Pg-uRr;3oP^UbnnlRR<8Z_eblt6^&nvb1e&bEsh zj01z}4=(f4osZq(s*@7o@K_xp?`4XZ>|XcF7?kv^d{|^Q;BNEux+&Q=fN)zfnQF&y zjX7_-OWV48baZRSZ;PFhANCj3G>7LemTKbOim0U8AR~XL!qVaBV*B{}p@d>qs-?kX zM<@;BPwm^Vw48S}v2T*134YhF8TbCk-96YOBv?~)J?^DG&VH#$xeH(AGNfGr5o;TQ zM+iHauV=McdG|J1-D8nn^vreVyc@^gsOD;mHaJ%1g|Y4##$dQmhV zRiG904vh+PKj)Vc*Tvtk1;BH{il4e!&#PFrg}8W!$!31OKa+gE&VJMA)*}>z!~;sn8BR&-90{Luu8j(Nr>k%ta+yIH1{`Forzc0iROy24guwVq~3^sq;}2CJKBsH@wKtHf*ML^HW% zz>@5<&6{9r!Ql_;i+*d4cIw_5UbsuDW zyhTVjc1F5T)`KDg|8!lkUr$13_q%D?dF>awWqyy&Vg?U)KCek zJiDlb4aWAO{q~i#&hE9}UiRyBjcnCEgA#!V>P7GX)U4Ue$>JIk-eXNB>-I5#jCEhx zv1rQ~EI>ZI@32`7!hhGv4nxEYYWw%*Oyj8e+yPin(%8R$LHw8Am9Z=h3n^$KaRP>c zN6O5m0eUEv^x;U7TK`D6I6?xL(J2T1Y_m84GmY!p+(*o19uA?Y!;x_X3i8@+mfooO zx7JrQzBX}!EJQ&S&L?SM6bp^-bmNdfU0TUU9|ccxE$jGKm1NuM05)Qh+!N=x!%6*e z5tpE_If#@ZXaGu(G$z9lp%^kx(7_8B7DvG%$Po=jzw%XMuT{bZUnDmKw8a?}7nl6@ zF)qIcEDj)#eZ#L5MdJWU#R=m!n;z+(9u;?G)DnaV|E_o zFj(WE74dfpu#R7r+~K;Dug4hbGOL}t0nTMeWZ^j=aLpd#CD;SN1ofvO-gr@~^Aa=n z;wy`GgQtuA`35Q&=OWME+-cfwoNjBc{&x9V< z4^c~Q*cw5yB!I%}MB*B1;E^NYpMOSSHX{i}$GME*iC z>SkXGx%l!d1(8TD$o8`(Ea}erEGO){J9_@62$b6XEHghW#`R__7nL$WnjnKXPCFF? zXC6w!6YyF&ge|qgb)%pM2XOGhbT^oq$e_reKb4urb1C+%e3e@jTo&mPZC=UbMt7!YMpAfpno zwWygt5PRGPRVWbyMM={VEs%JSX`t%oQ#Z+rNg^eY1s5f^$N)47>A8il-8xg zr7N0E%?@T!__u`uYe;yz^03^$!sbhZoEl7&p*0?phR+q*~+ zAw&LGq@ugHQc_uN5(jFV6qFtNzg>kStAfY%%QkqrlO((;&40PiCDc}HN-ajGhK2d` zj2tNjCNn9k4F!AzZkY|)0L-OTAec2Kqp1WaRo{L2WQj3i>?o?zgO>U)zXwz;ZOOPe zpECw-)&O{>4T6?hu>HHAj+n~RM-+pHXmWJ_2CvuP$HN>jy)2~20N0QFDG29YASq(} z8f?GM$X+0Syaokq*eCZXVeqO>Tm;C??!M2Y;0gKP-Y5H5O)!J_g-}%6zPWP6R94eG zD&#>1n=Pgla(1YS}bHoy=c{$yn3v# zISiFRE%<{lVGTa;h~YE3shKlf=s%9kI>e|q#5OB9x4+)Lsj-aS{6&c3H&B~caz7d_;VvG*rjby zwplwH_RTtwyIS)_mCKSqsQ%x*ILx?Ojfx#kmmEKQ1q#O4&#(ni1B;p?!1NI_Fiq9y zHPS{4e~Siy@lb^~9cJUk9)QM=>(@6iq`&3 ze1`E3Bj|rT7vl28v%QZLwv5->R4>1Ku++V@{HWq%B<9cjmoc%Dp-p={nu&S5 zURdxyBx6X#(dERV;(39BV!p@4BtNQ>d(;;9=M)qI?LTuR8N_5pJX#=H*O-USF=X+nshb+4N=`Ve&J& zno%xT2!w$jSX7*i@(-5%g&4Sv=153X$MjU;n-Dn7f&45!h4OE3Q zl)xiJkmp5E(9m&{{vG0QDOz%O5>t(MsIZhxl7@FfeI5gc68!S+yNv@!ikPs5%@ig- zp&FtT2owMv`?RYkScvvMxAV*y=gd6~iV%-8)(QDDRYMM_{@i`WQ9eu>-}$UUAELUH zP1qw~s+0g8We!RQYPJCcgK*;BEzDOl(EI>mOjyiZQ)L8T;S}3qnEEhtD{&H5C|0dwyb30B!&6 z7(@RrW21*}27AP6=*Ua&URCtnKhV&b{dRPDBm-NeJWi#xPb`r13{=2L|4N+wDSJ2A zj%e{O3JaxWWo8AZbr^*~h=xEd(H;_r`}he50cDs%%W`uz;<204g+j7OkcsGRbJ}+( zugB)Qe~5Jeh(@gI+HeZyTSgy^Gy{5!-I zrYfqzxDu(JH3GB@Hg+x^8_MuocHQDd_D=VDYpvOtyoN8&<3QfvbtRFJWu?3+2G%q- z;1ofFqb@%l5vQf1<(Vow?Os4j9wB~2rq2|2s{E9T%Fy0veO!%>mSU!l6qFZipgsC$ zJW^r8CtE+&TABHKWpX?byopuiy@x~#*I;P~nE$}fOw(2n6Adf+kw=c~#NrnI$zKu|)HefBWai6IQOQ?NOG^5_ z%L2eDc^;qq4uzU{{c@ENnS|ZfN#3*f5`={nMsPnw)ez;1`oEoLzicoRHPncS?{Z*k zUUu8=BBW7~uPiW{bv(VrQO-MkvAlxItXcXyY?y;EC-zx++Q>%o{VO;l#Z%;LX+YJl z8cc20i&@^I6|;`t-;GQl8VKu~*Y&NNaPb`pT+iCriPYzHXroABTRs8$ci<_(O&%@H zqB8s!KAus>3BJ6yx}uk{mxQSDI~vE_e!${=NYORqX%FJnDd>XshJK>IL%H0;pN8&Dpig`W+0Um4BNr zBV-y@OIft;u(hbo*@{s8T6Y#tzP&w3BwkNpMw%>PCEI<-S2SxbdvweevixYydWRSs z$hCK={q8}I*HM4)I&bb78tQ-^jPoCAdVeSQ;nBhN)8o_&)b-Lrhp;w?`P`j7BxBJ-fG8AX&(KnkV9T6nXD4VZTF28a)rw8F<|@8H>abJz zh_Dmr_+#(95RQk-tx!d$XU@hjzs{dU8omkknOf4X{<#18Lwh4fEq`ctLMfK?kQt~< z@N?|#^&y-7{nu$FL(f4C7Yo<%L&ulkICtcYH|?-7Gy8thTOWqY0csL;HM3t;oFlZ_ zx7kYyHFCH-kAm7=LSWmkXgG&P1`ysltMPCB39r-gZl_ToILv+)g9Ny%xY*l!r0ng1 zvPp>A)W^fFM*|&YhaYxw_KVm_zlM=XUd;VsCm!25lX5?TWWe~e*@nip@l}v7F>_bz zPTW_gOJatwGiASJ^($x2M@^qibh_U`IzgzS$qRTTjXnP$<;f-d`?M10MZ9IedfLS1 z_C?Sg2joB@YbXOuNQ3a8`*%$+*T%a22{+9u;CT=<$x@^ZvfJM;QFSiLL-lSjVscMk ze|p{^qUy8O{!}D`A)dnj7axt+@|N*ptK)WaAWQnisKWHH&usbSMbw%wxsg<~wsurT z-Lhg^ zO4Z^fMqk6Z5`GM${VI6Y`J-L)cJoY?hu$@3#RC-3tDi=@-o6!HFp4~LWHR#Fr~ROQ zJnYO?tl%r&t|Nd2rRDFR+8N&gLlFz=?&*qH|NYcP3VoQF-schqR?5K8PJ zRb4zL!92E7RL_%GzDyV|DcDm5l6GQ$rW>(ns+f)KWYFF&BG9uSDwJUBXC)y8iKQI~ z(j2sa$|wlp30i}PulWPEd>WxTQHJUi8q3{xeYQBe_5b1`89>7k%Z z{pXTgX8!z?w!s#32MOuP0tW||CspK#&Gk_R34X=i=w$0&4Q`L$F)W($Te~rl!^i99^h5tA(A$E^d(-WsWW)_={z#fP6*gR({CDVvR_R-; zX^8>Xk3q^Z8`aBh_)9@yrU>Mq>3=7fGOXfLr|v=bg2QYi)036e)$d`m=C4&5*tcD< zk8jXx*=lCLTYb>Dnn_x0H`;X@ndT6#?(dN#q@_EWi;DIsJHG@G@z(5W-kQeal*s4i zWai|&E3;4SPs(gZL`1X{(0HJ;hd2X_-?hROXfQ8jGk-F0lam+xAvi?Wxh@H#`V;RC zw`TRsMGp7~6);|Cm|-&fwy@l;0x60L%Dxf0LdM30^gn*MBq)`6L#V@WrpMTcH;k;e zzH0fwV&Xbok*|$$!bc6(L-D^vr}dtai<3F2{#0LwT31ML@5m-k{3h4b2)OLD&+7V@NaPTYf z7S{*zhL_ek{3glH>kHq+65P>WC2jf!b%#;P)W0#yz;EVun)V@27lfcsCp`ZJ7>rd` zWxyldQu1vCGHw*am%#g>qGq|)K3+3aL3c(FioomY>fk^~it|4eg2;_KWAn{YW{8>^ z&bf75EPH?t3=Gu2JDPP;ka)!yc%Bj`b!)7_$fxQc^(vS6l`mwaMhnq&RBa24vr`Apgz)}Em7X$Wg<@I zuV25Ck&^01z?wM94Ga(aB_t$}DY-(;3P-ooKvC&%5u_?96g1`2Zo+-|j*JAXP7txFZA=2OWbrR;s8SjUVESP%S3b*hEflD&yqDQudI@Xeb&E;4|yk*10p2 zCwza=(C8KxwE& z2+)rJLhLc$cJewZ0Qr#&Zdjvs_DgL3M6l4#rF&Hmx1XMoQ33RzHYa0>TZsaFk~kre#bIq|dwV-p z+DG24+rq*^8gurETsqXY;@|owsoM7}1b?{i2LP1Q?y$sNA1?Qt5@Eys+qy&Z8&+1< z?q$p4kOfiq?@C$OMj4u#noB45o-D%OZuKR8?rP|Jtbgj3pN3Ya5qO2UGN`XJa4T0U z%zUi~s-rx(AVW_qlqs9=oaFcE^FC2SH;D}V%17z*6(O}kb6@xYv_Z02V0Q3r(#+! z8ydC^nPZf&fvBJnnm9Tri18>n8C3h?F+q>P+Kf2B`_n_OpW(lIdiXE5w@w3hu2vaM zSn)^_xlq?CuIVx}Gv$w*xw z?t$KRvij{mV?jK&(hX$*E^$#XS%mPvbTj3=C06k9eWIA%KfInLOl$eWHmdGEu?5*M zfAk;GR@(P*jW4=uzdJax3W%IhXxxo_KTjM}nb&doHtH%9Ue}~$OqTIbaiup zui1bw6qG@$o5R}LS_eKpzU(j{Fpvl>s3%HP1iGfpQhXKHGS&!)m#TtY@BEBN^X=^S@+_OTE;)oIc4KIzx5UpUc1$3I&t z=o=|9;!#E41#D_2t!fi3Nk+s~wY`o&>r01FR(051L@Pt>pXG zjyO!gtuDA^!9gH2`fPOdg$<%DNkHyxFKS_ciM)xR!3DlVj3)s$Bj$2W2T4@e$dO4r zv-g)$20)#54??WP$LR1*Q$~1hOaE1wOImDy&N)B8-#52kodic%SNElEd5eWWiK-js zFgOzDKv3iF;ME}(oxw9wMb#SXB_keUWGmv6j|Ix;-@)v@9+Wlrh(6QyI8nenu*8{2Q| zDkvy8yPCZ_94CH`-i|XZ4@E7+TmYLMyf0U;cwtEImM2%zQCC`e6u5@xe1pO4GjV>Y z;!2^5KrQ%KN7;_Ga8?s&rM)gs?IKCPtP@ye!Zv~R0@NT z!NNdh)tS+g`Xi3HO*YDwkLK#6HyqlhkKTay(txlFUa;oP`Yf>{_g3ns=jSTHu%8uq zd3`qXlt!C%G!)fAP9Xz!q5p<`jD}<19=8Euahyr~k;MTtxKF}G6=7)8euA2sYqXe{ zFVkBQhVWdb*PVX_6PAdkOh`C^MHt(z4`P}s z55ikF)14aRfYIs@3uX1b?Qe0t@4U#+yr+qh-*@$|0dy?ljNUfT!VP9vEmmN@CGy)z zxiw%((_c{UeulE#;xidQFlNzF{pN!}lpE;LT7{UHP3N?;e(SsO;sUSkI5!xP@k5lu ziCX$C<&1)kfu8jH_do%OSbGPdcc|Q8n6IO$X)!l-KqQ2&jwKN^7m;rA$?vq@OJ=Yn z-je<;T_#ivnzdIUAtBRMd{a8~zjblvwGGTXJUsA37or!8nA@@@$_kyGTYvw)u9sqL z76wG9m#upebP^^h8$!Shc#R1MXu14Pdtd$6)cgLAASFtJO7o&b7~Ls|P9zlt=@g{9 zQ)!VBq+x=DNJ{tU964Z4x)}pDy0`D~{a<_^kI(seXXkO>*M08$dd9gfS{x1sFDNLm zc_hJ#p>sRPdC+7n8(P-EHqTXO-8ryDlo2{7nRGR%RN|TGS#f7IC6AP@m3jB>fj7Y| z*s!t1nAY4Y&7i$Elm^!!-19XV(oeBVIq!nQ{FE9$sfO}nnaIjSaLn7jU7KMX<{3D7 zw$lYu@p7wX!q9|6rf)99@m#&(y%EPvrZ2oYXB08FH?>9c)dp4_w?>z21xbx97Oz1g zo7s$P@b@^m+%a$!;;J=Yzd(aoB-c56^M-4F<*qOR)YuISo*El;&sOBSzv7g6uGswK zZk@L&!yRG=7KYGSnd0@RqKF<-0sU}}R;KwmS;;$~Rl0In0p8mWvJMGC4wKGSVdVl( z$heCR6k3IOh4SdAq?b-;>L?t3S25qY!`Z({vv(q3O8y|k*(tL0K9P_|z&hs3HWLst zu9P7U{|s9AlL|PArOkrNUJ7T^YlP{);+8 zJQ`TX#-y?J|E3UeD7eGscfhX@kk_--)E(pgbY)6_&|=HhP7ZsJEZT+-lTj^TU2GB| zSGw?*x^^FviXP9B7@=ZRzLXJ)CmLtIWviCr7YbS&7|?1ERcg*H!JS^+=H}%tuC5m0 z5*0ll5Yl$Hlijvi6c!Q^^0s@JrwQQa=HI^$!UqRmC=K^6#XrlOb~w=iQV3^p-`Sa& zgI9FyBqSt<+6ntC0e@fX=^cgZm+iH;|1HtEznn;={AqtvXnV1Kb(9aZ{c8t1Z+l&T zl$Fu7-MFi~^dQgCT~0r){<>MwL|1>A-OMvETJxjtSD)j(9Qk>^<&LX{u3v8xa(}P? z?mHJ|zq7jSy|$D|u_&J5klzlWbIoEVw35G`wI#A~Lf(aME`EC13jOKd_#^ty&v@!( zuqU-TSuA-hKXB=P|*BY%a<=-z{df>5K1@i^}*yXhPAe%sY5n+ zVt2V?(=ZM)$c|Ub)?L{-Cfr`_MNWYyAZ;c zGwsWMC0$ltv6!&R3&(S8pI&t+9v`xVzviS?z3~f;D`Nfeq{XMkKl;!TVN0|00ZAfa znD^1wT;cAOZ=O8k)ta+G{+Qpxy@!;iEK=bQE$*)5+K%ipHeWwf(ma)PE02nx$YssI zi&yWZFJO_iTm6ye*IOzUpQ7DR+HU#khb&*tOR%^RWfd>jofj-!SDrB@ijUf;$`*rI z?v63)z#HG^QPEKq@5V^NzqGj0ssw9$echB$_$yEp5EOb=GMIT zZr@B0vGI=PD=mcfHncU?*XnM)C%11@b2UEQm*b|SKB*mwrrsK<+U#mlinKQ<51*vN z5zq;*aQRP7pnQC6p1BELX}#Jd9sF4E=^J*w2GeE5;{s=`mF|9z*o!3ASiG%r8d$w? zO^j=;!)m8C^r`u!3P(iXXKc-&8~irm%^Spihad5(_OB4*;gO!h7GpUZBL4eOPRse1 z3ejiA_)Td?>fbhd+qcAc_rSb*n~bXNX~EZ_|>F;YhogmL+qe*XOy@IQ+#Xn zJXH>VBf@PVcgW8-BpTPJFR6H+R=E>grA#R=Ew}kZOo~}F__p-7{ZD9D2$h@^sp$h( zlA(ddjWf<*jSjL|#1qs(U-cz2SUg(H-(RFz#Ah=R)MB=9$|-PbhJ7_1#e#ux{Ip0{$k{bF2Y+q4s@AP4+4m4{ zK?_?%*Dy~Yi_+SY0J@BLOqiyBaxQ^3xzthe+FIby=hE{i7qpC7;9IgP#Ris|Gj{Jk z&$Tbp7*mlt-S`D%>h(kAPg~x*+zMp>Sj873+v>ROVwZaVyWu1A_o9-W}scPh6EXTatXH4_w@%d)Yah~X)r6vc$SuJr7Rw&JI zo;!RH*JlWLS0B?8DVV7vtgMD!ntNgI&oxX`Q!NIaia!E*gwXy5-0dqn#2Q@#b^?{A zGL57v|M+^2!spZ>u3IrL-}#IfpZhFuZOYuWc6fKw?=B)I9uqcW{i_z~!4XDVHAD>o3ThwVJ*CPcQ=>M8qJ%ON6G&KUj?a%U1VOn#Rf+ zLL*g96Syjn$Np@Jrv)$%sZdXGlEI>qKFAknIZ>N-MW)r~XLPWzhz9jZcg`cX}{{B-rL>dZBKD9-h1M)Rs8I zB3Rjk+reM#A>?-Aa}R1$ApF$#js>po!54{^^h-puMf!ufp39gkaXorRp{V(%d$De* zVOh0z2~``XJrkyHK=By*08RQ^-L2;YzqHsM27a{|$b!eXxNvhPJ)wO;@bq>U0mJaK ze3rUJW4~j+($nJE*A;%l2fFz)X=@D0pY@Fe%wAnSsjn}XTD_P5*y4#mBLT_a$9WFU z2x>xd!>GT@+lIhjx5$mqzJK`^b_-xiXXs|dN9c2`RFEQNBoO0J}EWTtC-Qm z-Nf3X?AIXf|=*xf`5?n2k+jl6*Y5;${=k@Bx3= zLaEmqD*o{Se?<-`g-S;kMEY&#V0_?w%eCHr? z7OKBiF-97EbalDAt9zfJM7jHR_fQVQpZgzfgZwV#bH}$KXBPSA*PlXR%y;0L9d zO~L~S#CP<13|Hr^qL8$S_Q10h;2`!tac;AJtESfLZDrgOy723*2h#WDv0<17t4BhP zB<>cfeOHAaRJ;_+dynb9{`Q*g0ef%D(4gqq(692=_j9ui2n$vj-SyMV%_u8R!8E#D z0!u>6AH*XntalXI5@l~6HhQAVc=r}seZv_&Dk=ptzkNG_$Srt=e`%-%sE@)Kih0=# zFY0o>-b!HF+7x(sH=Xa%RVZ0YyhHVX^fm0-uAOqDV$+Y2u&}kF)8@Cui`fEHT30F4 zEX4)R;f*Sb!Ooc`A$wGP=6x@sWr{Q!*$2HFozqE+arvW154^?^N zs#}aDKz*`q+og_RHV_O^TvT-PBGJcK!D!};i;kAo7ASwv=PG30p)jyT5wh?7r`j@H z;)P%;2S~;1HAPuj8NW?}<<4)v_C>3E{vQeRY5{`vYOO!s_!@VGf&Lf|$MI%nW~!r5 zC<<Bu!|_b)EiuidzJqlKe0Bi3URsWVusv2a*hW=^Zq zF1^i@7(*7V@GVzRGB0T6KBZ*gKbgg9v0uKpEWHl{0pop1Q5Cw~!%1#3*o*RG zPheBLMD+FbxdLu~MiymNXvmFP;@80bfdTWJuU|bHGjJq?WmBj&`W+8Q<-AK{!i_;tzjImvJ@T6l^>^y$*jhY}v;s9Lc>GX6s}UsW<6CX)}X?84-G zU8LSpE2{O@)T7Y0)@g7*1G;1%A@Z?$%1t*TEv;d2#qC-r=~b(vZbtUEZ<4Z-l9C4I zTid!qS~qIP+cRYd3lOa4xcQ+byf3UoRx+n8GdsIgo@Hr8qRuR9*7>`LJ8Rm<0p`q*0f6&85XMOg5``0VPqZFGi_7!Yt3=eU~Cua889nB?+tTUXYE(Jrj1m!YbxZiitQJGF3plN0<V(sjf-zg^ht?x8bkSN=>@};4dw>h0`8rAP`+)Yl^oKBHoDwa~Bp5Ll z$rrSfma=pSUzwZz{JZ6)ChVdGwuQgKODgyG&VSFx5}EGzaW=mDC<(k1fcodXPs8;b zwmbP_fNsjmsKvB-VL!6Iz8+F{79>}5cz6hw)YPOW*X3JzQ*AwC@-R@Vn9UpaLVGNj zBWU#LfX`9k%ZrU4aGQy0|0((;xrBH}OhLT@b(jc++tDN%l^2t~6N;@FJE#ltR<14#x9qAV#NX5ei ze)oVv|Moh((yw>X<2ON!O;*J^q0*3v_LWE|k<`(A&*p^a5g}(0JAPumatR;`MKi`h5CF$NnyM zX5=(pXAtb_dMG}2-`nrHLIAFw{mfvdqlUn+ThP27H+Q+eLZ#od@ewkbZnyXg5J;7G zY}RhH+TtZ7E#}lV!G-q z!!*@K!x#~(x8y08fnzX|%Tn-K?)*5@@`JL7c|8;f4aFa>udf>yZNR_O19a|qgxJFT z{JaB*jE|C4&MPe{j=2y;A1LGF0-kp{D*&VgLuP50yCcalLL~<2?uJ%Y1{p$GE% z;W#0sB`?sjkxS;AX4m*s%NXW!%$^xjIIPtC~|P z@2{E4`|LK={`~pK32XvTA(1Wn#R*K34!JnS;vwhPWGToW(5{{qB{Lg7x*GH&JaOjZc^eulL#- z{ZhWPx@D<7Q|95DzBvfy;4u#2@`psT*`{~Y7>(s(DM08@t^v|_(QDo)BWaz_J`KU` z{)(Gl2Y_#I@c5L6wR{ebTJ-p~F}t<|9dExL4Vf4=tP>#*$BV~cpFi)rHc%f_JCSnXMokmHTUsHDy7GL2<#^Xr6Ydi?`Dz0i~pQ} zcr*2?d5&WSi>fXql zbzbqf5GYj|IBQLRs%)|aqhH>1h{^?h=Ui1`HPVB(YyJB5>$J)oiknnV;RS(&gz{Kv zXxvLBaxcWL!mSgng0(W=S;%CGgR zB4GhQ>afw=m#F@9os|~eH_!K9$HieZG9&@RIf-}&>9TBKk4AkT;@bZ^v+AV)f_I#y zO}}Y$x#H*lkYvm&^wkb$ixb+1Tb4_hehqk4Y<86~jX-)Q>DSeoxwIUs=Y}K*9cr4+ zCSQU+pIqo2!UZ6;Sw0&f;`BrJ(iK3~!q>I)UIX`N>Flx`OLi2rO1DPma=o2{2bdu zWj0s)w;KI-1y*C>-vN zq|nlBzTB-HA4@8hqcQ}5N-4nJPL6tiNZ4O&pPOcWG>wpDlJS%n3@#1-IX(S`j{A}{ zD?NlQuZ6eKOpn9%#zc98Ef!q>9-xHho)MtZ{%DQKHpZoi(-U5)s(nFqhkMK z<*tOU*FRoIFOA$2-%_{PLmcOFGI5e@ zUy6A@ZrQP*WPE&lq8)s#+2Fb;gdDjhEt0PkM<1SU<_EVmHW`t6lK(=9O-mwVcuGUd z&v)7m`ymcR|Gh)d%OJ_<&cAYj6C}2iJ8w7{{Y$BAJAiqRp+Ef(c9Y}#4~KGYvFLX`LUk@g?^QpDTh`%MaQ<` zj7hi1H!IT{U_(etPIhk}KW<-!rc_w(!N$hSri9E%I{ATu6JE6c(ks>!(}`|yaaAk| zIBVfTP0NJv^yhh$q!JQMtd!9xM1Hn}q&nMAOnrkvUkk7`7)X4NnC1E}jPl<<5CUGA z1b4aIV!fItDxJrQ*!oSCPsgk@um<4S&^PAht~2riVF^H~2QR{dg9D&mpdxAVQHFfYK5h)vsypL1C z$cC7&n=@+cXFm2asAKr@^73C6Az_D}t=RKeq9-Vk0&Y=nTG-FZ$;m+hMu)P?W0YrZ zhj)U6o&<_*iN+`_ATtUXzHHN@6>`)sAWgZyvFn)1*7z(8#F89S~2S0YNVUP*Mch z_Y^K*Xu3ts&OepPjp`qR+0B(tYhf^044|~gBo3rd)6l$PWo8caLroRUpAm+c13eDR zYa9_miIkg+*tg~N^gldEi=;{;Al)L;ap^8WKw3(=YqU^!3ecw&N5y#6d@gX5V?I2?t@$(8(@kZtB=})oP4!xx@7bOTW zxB*a6VW0J2J6|-kYK+dfGA*OuW~HRhYFiV?jZM>>liN@nMw8Z`D^3)b;`4B+s^7pD zWPXsbxG0#_RORgO+7))qkYdv5y1D4;f(Bag%0P7#9XtaPbk9%$pxZOV6#R!YM*RtR zS|yA?0e}x8lHA}wU*(uVvjdN@z$pN)UgUtr1Hb>b(f=;Q|03dlL*xHnj`$E*s{lPq zkS%MfczKO?YE4i0=`Vm2E?@sOH*(qRbT*CuekP@&3wqU455zdA&*^Nt@5Sx>x4;0>ZYYmz z!Y0-Bw0r(jyFQ_q%bJm<--0m+i4_rvGsxkZh=kh?PR329qTesSgS-2W3oXanR!za& z&#SZ>*##0@|Na{sJdq}V-~$MPh#>a2LfjA77CL|2`C#6N-g|1UoxZ=F^Y~7cm;%uB zE12lX&IwVC)t!u`YlX&1avnM^8}GCrHV)DTO;$w`GVa&18M8d#~S0=yc<1 zw5phzwIHnVXSsk2(z|xZSsdiU;Jm4SpT+_nQq#PkX-95N?lUW%2nR zhz?CJHFIY_0zAc;F(k|D*D513W)QBZ>^XT)A(gfDt*pdRkfOw%eaUky9=&Xi1Q|9) zn*vM0AkWrQ3;JT_JKCh@;l96GIz_f5fqF0nU~w0m|H-z!iv6ZI1f%IUZ9ku0;`2VG294#hTsce+^=2}~GlmI9IQ&ceLEsVXGgMmM3eSf=>A0uC zm8;9l+xuvV`mU}o`4eT>4h9G6HrNf^?>n=HBxkLkvvsl+R$M{rwevnz7788=RBG2A zPmFBbW!s{R3V}Q6${-;Uk4 zygZkYm>E+vY)D$zZG+yr=(;U&M3z}1XtzFnB1i*4Jo~MRDb72UIU`xMe)qXMb6jYKn)=OG@uxm-_~@U+XKPTu`k#}YVE?15uh!%O> z3udb5n#5sEqN&`>Xqi>$Gx|70-3PdeyF_vVOF{gKr9hBpNuA)UDEMiH(;d7O-qx4= z93C*RV%hm_7wWhFWAga;9o5?1KVTdQ{eJ9tUBU=R zw%W8_)mNES2wT|NVsrLM>o5B$*K&IQh-sG~&0hix+R)AU7WoR|`_Qn4AJ|_5JbvC# zY}bprE6b4RpS?V$3|r=J@qkqx3e7C5T3SNa`SllOSQ$1W9qyVr2Ct77`{GZHU%zy3 zgLZ7*;g;6NE$hpjkeJ^T*Xyh8A7pgBQ&j0UhXkp+)KXljke)m;#{qdm(c5V!zkF}y zK^&o#tgM=#FkVG7+lq!Rv==UY!Dg3YtjrEueeUOlNP(`n^$}jo8@2`{5X*5T*#`N&%UlS6DAgD4=%W3ucJCtx0nX@gq80I1xN6& zIzZ$xs)dhq*vXtnwcS~{c`NkF>ks9PYy{SmkGeRU<>&Ncx0A3}v>sRWwU&)1wV^@j zEBvDmS7w_9?~}{htov#X-VtX&OP-1a>=xi{9y+z2xLQ zvh)9=By5rszmuPB3yiveBxD|ky_;Vi(?iWX@_cuDJnrgifmYqLw>2|w=5%9nk#o;k z9tLX#YsSTIKK|)hDy1E?n<0@4SN5ccHG>@koi|X-qR!L$#sH27w9^B<-2zntYQJ`x zrS$jpD-)_T{-bkyYf_>)+0q4<8#v-LVA}4tQo2m8R_mJzGaI`qXPBxxP$~){ zTitjzY3);jA9O`M89v`gqLQJ)$`O z_g6pQr5^*oOVxs}?Zs^$MF_PJhp);bN~|h&2EQARZ~myQibbl|aWk}XJ2n(+e;@Sb z9ya{FF0&ClkA&1Tqd`7LQiZH-S(VMe3Vy{aUukMGUXSW0x3l3Te`C`~2#2r<&)uV3 zy0LK`J8RUI7HicSJ0GI$+$$-f8GZM=&`;8bI%=$X1;5bUR#lXK@5WuWn^iI;O1@R=0z$+a1A?1)E}WaLiSIjI?`y8@d;;83yUC4||Z@G;i{cXIg$p0Y#Etq>zWDk@`Rn2N~;D()h~N zbOCRj{~gS+C-=1TuYn)8)V<&Lg7}-D?WYcDwMcESblBCL`$xfj#cD_)G(U?k(!yAgr1thKd9yR|T34)|Xa(e>6eSp1ToTCDM6 z*Y9NSbSJ|tB`IJY4GbExf`aa<)gI$i-sA5<%`6VFFGL-jc3dhn`!|xILs=w_aiv;m z3u{=l6BgEATHCcO;t#?&D%-C!R^gC1yLQRQ!FK}Ao7Wu>;;6P9pUC)%&?`~&g_>>W z#>6fbZK446xf}b13|UocsP<#FU_VvorG#fMc2yK~oqe+_%v+k7wi|*bAWLeT-~B_C zzq>`Ot$R^O`fVr5oQ$6euWd6mc~`QXV-Sm5A=7n@@D2By)4jK-<}P+2MSP2Nb_b(4 zmnYY|xwSUeL$$tRjB_>nftxqcz1W#%^eOs0_IGzIL(@ixjhaK-VS=nLX>Ux5eFi+a zR4BIYJezDbW5#4rJ%rb$)}!1jb$H#)tdAFSR5=nA-DK5XyY^uvr(bfXIG;0D11z4HcV)fc-L@BgCv_q0Z~uRJ8#NN~`Hj(WVr6|?22_SY z5t}WqKd65kv7q!;teQ;w9i_&9U2Vf%@dor6A(H46OQMYywidc7rPJe2AIi( z-?LKt$h>&C#+d6kg?~L;CykpFEGtxNwjIyq<=?y8iki+b4`7n9aAFQhIa^Nt`9N|I zi(L_S@P1VyWe2*p6?F2MLeaeY?^o5mZ!37cN8}NS6{KP)AxL`7dQ^q`l{~p-@k9)I z5pl{XprSZJ%^4Zc_16Ei+qEDb0G z^5|FG!|cYs|L9B@ClVA)GVr|?ETMC}94<>Jn&xX+`pmDW+Hg8~G7#?=<9~(rs-R-T z{#E9zKx5J+=5gyp<=lW2PR4TGAron#!|ANiJ*RPMN}tX=47-(-hePWqeTHoN84 zWhI_Y&bN3pbx0Ovev7?NyVdfGLX~Q)uP;Jxqem=bT^OOyXq)A!a*(0Pf{8zQ1Mls} zYiPkwRJwk$c@jgHazoiAEV1(jR-2o9+jahj$5{Cp<0`(uGTA1Sy2Bfql-4P#J0dWI z*iO>7=^qg72sOREf})HXfvAohYjik!JuF_eWSCza?}(GpFn<-!G!zzdnJnDZC7J1C zlU8MKTfphXIDa3IulH~Z0tu5|^Yom&;l@~>Y^loZ9@Q`J`9j9>;d6g}F_ZBDm-`v9 z6d^Ajd8yFzxYES5i6vv#d{V6EAZ+-O6g|nd1kB&7QAaAku;GvM?=EoGzZu)bE(?(? zTsVdW6WG9*1w!8f{!?MDn^0@5<6Iph9@)n@r)x#0W%qXT8P!l?y6|7ypDmZ;AYAhadSB_RMAgpt zyh5}=B31rxy}yMdchBVM+@>(>z){^#`o3i0wmzxnfwYtFP9sErbeh3jMk- zi?hywes<*K6=%E!z4k&XGm8W-dea>D;!CHtvwA}I8vTcf=Qc!SF>abeTy0x;8lF8{ z8_YSAI`;9OM*SaDSbYmN+R*IhvRb${N~<$HW`r_EWe_^Db|D096yo$nHlpBg!tyqp@W^-QZ>o^-xQrezrQ1_C(<7?9PA_HXfp+m&DUK`Vo z9bG&W++M_nQ)=Drx1U`)DhGJ8EW24VP5jL9bKRUgc)#`U$3bwO+(bYpv;F=>%`<>Z z78C#*>F1c2VpRLnf9(nriFbC${VI#kL!a!j3~KDJ6!XqkO^j?&xM6GPr#+}sSDdL* zE1|@iAe}r|uo$hdDEf%^RmQz7J|-k{=3d_SZ}ve6x=7&06VVo(Q3iSVx6t}a6;|Zt z5fmFg`~7OBwm+}Xy)at4fAis04r!l9JuRUX;y^twH1sS~joI>&d+PR*fwTDljh&7$G!kF!bB8{qzQFb}y5t|RWy}kjRi@1J)-Ijf<>NDhx%CzRu#W)ujj@dt z8HxqaxcN>f-mTt{&*AhyYw3)p(usqYd)40DdFE_m(oa>YeCRT#%MO{J#pHJhmyQ1T zp4xjk?TSO*KO4CGU(9WL%nqaY@SJBWE*dO1_w9>+b~7d)Sv!8;IylOHJR{@Bf!q61!)V z#NqoRSRx~&U*I4d@M6JM>&m<#rt;byoVia~${MuTLM zw*CaA=r^I%jj5Yd4h`pp(#f}`*&U^2_OZg9O_CmV5N41-3a4({e({eNPT6iBKB2(^ zEed&;=dZO{kQ@Q0b2uP7-_C5Wcl(Fq5^#sTK`Lt{a`)Gpg}Fa5k_%DV6m;_vb;E`eTa#+|KoPL zzl82)(Au)mS0a{b0Y4vZ+|wwi@g(F4$aO4C1Z`ZcGTVD?W(z^uUsiOCz4Q-KG*eWe z;(r&__%@bn^j07p1}-i!2$pak$*eCqvL0q6wzjRps8|?a`zjrVVfDStyA4(SDGi70 zX2*lolBeGTtLHC%i9^1{e^PiU}rZ#dJi}73)(4o{nMvlB5vf^f33(xDU zsM!dgF+VlF%%7te^=H3cJ>_`ZTP2($;Fo&bBaVfP&srHrZEMw`iybx}Y2k3a2B*sc z<&seLf1Kp2s!Us)7tZWe_6~50zJLNgpII_-anRNBx=D8`MJ-`_IhQ*YoBEgqh``Fe zjw<2hqam(6^GqV5~K^eQgzb>}z=m5h7VgkAQI}Y4f8sZAUThcvx}m%WnYNV=SewV|l5mgX;pNo=Gm6@|IHIvgKb;f145tt2f+AGZ!e`OyFp|%%-P@}r}^&bhY@*_oRzXiz=41Yzs+F8qA5PihD3h|q5>!~y-}AgI-C2yH%UZ1s!0iHT8slRdmv&B)WEt?0tFd@Vkc93UVC zyK+(7Wopn!&Tm8fl*>#UD4}_7cwOm zIs(zXZ@m+E2;nk(wzu3h7844f1*<HTo6aVyVac+6cy;>hDT(-8Fxd-u!>M` zZ3{MzhlxZF%}T25^^2CU9_~7MOYC9wA`O2FPR=&v&YSE{P&-KiacJ{WjKq zS%hhb^ML?fd}jQK^HCrabV3{ZQ%Ua8(8+kVQpd&TZqI>sWG_AAC&k(>uA}Zi;b<;3 zUMmLh07`sabLZhdyx=yU*wWQ%v;n}7mnA9IN<_0@%~3{D zk=4PpB?Md{9YmodO0Ngr70N;wstV|afIp=$Xw?}-$*fYO54#3eqW7E1xw`CqmLNgt zhJc3QuvGY0Br-ljC0oh-a9K1+fsbK``9F^sCS#TFSoxVwP%Y~;K{Mv$ncPLT$bqX! zu+to51>2Z7<5H8u#sj>lYc*Bd!0+&+6$^NH2~L5Pu;$<^{dvR4Mwl z39@;~dLqwqgv@G}J6{!ED=|%^-3!Bxfa~$>GT^T;_{5>t&I0aWeaosa`~tn3tzfNf zUBdwrX%xui?2Y9+p(I0!to~IEnS^c};#Vb>k);=qT7j+CfH}B(?{^_&yFQm5XLaQ} z1!s%Jt*`$&Ew4xX0%_HOS|Yy#N7V0tV(Cs2uyNSE=k`;cvS7|f;u{1JD5#X-lvi(a z;O?#CHt#^QY3t`|ce`G=5dyElIg@7B){1b0_4okhMBl;dTBXr*fYwD?Zf#sL1G<0x*YlzK)4ufcPAUAy9?6RuHifa9B;S3n*h==alJhh6X2JG(#@(CmM9N>N%uTdaW>yYg z5Jdi_9uvCM`%Q^D2R>ggZ+Wk9_l%ILsiCzS`&UWg9w`Tkr%Q`Q)MhJBb2C#phT#(+ z08E7J+T#*B4j3gO-g(N{6yk8C$ewZ$28CV>@A@T4aRGQp}7Wl+e1^GyX|NJa1@HX z<9B*!R)jVa7+N15G3=CS<~=`6)`2ZjxN!jE$U&5K6?)Ap+;vCY%@r?Sd>#+@z%Q6% z8??6eK2CnN*74B9%XR@p@XW|>be*iC`jwh0`J|!u*$%yz*SE>#4MZK3>F903CUtif z)Wel<4XcU2I4oCNMke}0AP`Exg|^GVfnE_uV^boxU^V4U6PvBIgRNZ=sy!e3*YHlgzFD!i8X_IBQR3F*s zh_lW8$`r1l`uEzb6$d4-5X2=GH)WXAf$d`5$iA$UY`P4Ik;`lMgZaXxbH0jY1-9g> zA_knUY}{QB0i6$|yB?ClDvX^KHehs3fG6=pfy6n7m6mAm}tWttf7+Lg0B+ZiuDR}(K)I7M;^6Gh-tJaaz@Ou+r!V%DSytU<06+zl9R!k-N5enT!>4pk)Xbv` zJ)A4p?Jskc)C!ogD5L_~ZC~s!lMu-_DbgJJ_AG_AKm|0Y|?I`ZC@ zRoy#g2m~7Wbxuz2hop|pTpm-~H)$4e_Kl&&Fiuc24dYDXbG#n6FP}C<1Kv=99$zsyNL98TJYvrh0(O>Vs zV857ZlY#zIK_}=zS`wb`Li9!*N*1J!>QwA7lb*}j+4i~VatpO3+Mee-{LO;~LYy+% z{;(-o!+A`vwDLr#QH2eQ=oGoi!(fUf(2yo%T73i8LNgWrN!CXh`wPzx^CEk~$Gxy> z#?I9)t*;@xaKhW8a00d`&6GhTM{}>DRHDEMyXb<7(87g!`KQBJ!j7#t6nKec6=xLr+RN92`&oL_ zBr=Ar_b0zT3GJ``ve>n@{z1N=hC(KCr;PaKUc|td@%&xR`#4|WHoFr&xH}+z3JQ^s z*mA9H-hpEtODrM@?!|H;A@7lECY!knhWoY&93GLz`U*~R&7zPV{OxVXW4nU*Ht3OB zp5vAjbwG8HQJSIbZr7Z{HXmM#xj4T5ynWb?j-H`gi~X(<#{&MSm{jwNNu+D3LDzo}73 z=05e)`+nb2urDXmwq2i@!EVn(V43A3@?|9{;7BX(O3L9l-@SDg2;BIOozT%Q_tiSt zPqlv~$iy*ALPh&>M=GYad*T=L$s>HSpdxU@%(pccL6Wm687CY0y$+w!;y(S^4iW2BN1mM%(~Su>y>d5;Rl2-^1TiswYr2`O?LXU}~HZvX;ikf?m;u)WqYfNH7z zn0Di6m=u0KDdQ(orKzl(U$B2JV7R=Eu~Xb6WK-^4SuOc4f633am_Irx1md&D7+2M5 z@Oo7g2HzzNLy-g@k&0stv1Ozuidg;Llx#KHfNYGoV=T%y5TiF2mR2@4av5a7>gzkY zn;hZtP7OvK5T&Tz+d{I&G8%SVy3Jd^w`_w$Ow&7@SioKoi1w9}h{K0Zh+=$FUS^(f zdiVg8;lzBOcARm(uI+VxW7WLvf+|en+Rvwq19#oWV|$68!?foFm-Am#ma#945&jtn zyay-v^HXd~Z+##MF+Jmm1BIrRSKhM~g-*DhrB)jM{&YK))@@M@AE&fA7DUtk@g;AAESHXq z=fV?3MlQu@*!y9xGdn}xy~^TzcVmRS=!nz9qlOsBqIjV-T(Egij*V}$;wk3)`HyCa z0o6ZF_#h8Xc}eQ+uDAa4M-`%|acGh^A$6-UsDaubxtn}NJ%;9UKV!@M)SxF>V_9>K zDpmY#eKKFx+;x0}>UO&>rmL>q5Vpdb;Id!E?$|_oNK$zo5S*RH(uDqeGsKm@S-C~P)=VaL8+reSqB?@Iw@e>$GYTS+IIn>nm z?z}pQq~3}|_^DZDEDWDC?&f)C^lxMpF%U>9D@SKt2hYuWia;O@dQef|0~c~lwHn-& zSP^p&2`JU=<&64;aMtMg>Wxt2@Qe{No%M0a(=Q2Lohz@rXwOB;B02V{RWfX1FAppm z8xXMM&CDVAATm@@|19qZPM0S)gbz4n7o=&FAJ3bK8PY` z#ciYhn~dIC=-MjbKrgyb*2L#5$RPFN?!AqlL4y6lT%$YwuxERB;|0F%{T#9P`eDJF zhe}WVCZ5A67rl#4cPZhS%{gnOtsc$!39^no;hTyj)EG#@CSoHST{y;fBVujnwdSPy zPHQ9zV2e~IL2E%geNHs~pWj?6`LdVZRuzq(ZgZ&_N^mBdc->+O*olhpe(?}~!`usU zdX8o*G}~n0!l19&WlkvdHkU^P4x=PE%taIekRWxYd!cd5s@ie{&$ zskoPpSH--~ei+O*JAARQ=lfl!Msh86)xdvIQx9LsC))FGHza)pp>nrTZm%D=w3wY%8WpE@N~Wz*P=C@Skse?WwM zc4?^%%jI&`+i8f-jhZdC-luU5qC(O5)fOFuJRLATm0 z3{Wjl>dO75lO-n=dTHb2#_R5|Gh-W&oqNY65LS6&+&-m&l+fddSIYr4^ZjKb1^&qy zOCOg1OlcYEy}iNZ7}S+P-1gl35KLX|qPEW+=<Gm$T zVeMg4vvhX*?wb!qPb`@;1*~YB6Aehk2eXp2vsinu3-?qJ@pgGD3*0Cun0jw^yvYg5t!U%g`>Y$p|XCb$*fK{TJbNtxKOMWE!8f3=BqYam1T>!f1r(Irk^x})zu)F8tc{~1V2gv1hVC5g5VBRdGeZC zxybFz4~yXCe|g_yU=1eQYgt_75m3=a97ynnt7z@u(v1Y=e?r?N)Oyj3d_&!6FCV-b zOKYv7<#y%?w*Uegkj>wF%;j^i1b@8OQ{>5Vl-;Ssq?s)_4GaI1@bhPQ8)zgjjig;? z!QS{J`aVk|I{A^+w6WG*6f6x5#X*;W(&IS`&C4B544@pjfxtLX)HtmqO_*CwII-{a z3O(=!K7FQ{=LkQ+rOh1VRJfN$rVMH%xqdTDzfq9LZ(dFN(m| z<FW_%YC~}F zz$A%9Nw9$lCipc*|53z3ek|zP`8MYxARVmi0QB@0O5j>% zf0ulaLUtztdX1)u?Ao-VY=hS5>$D+GpsL3B3OYl4r27mCFaqj+z#BS8wE%{g`N;}3 z*k$&Z|HL!s7TDt%7}Nm7ndZi1uJnfdrB~~L9`NSXb<^L*JByO#Es#t9yQ3@pBpkEy zE3AE7u0GwdaSVi1@Z=V6(`G{c$OKp|*aAf)07)~BYxSPA;NfJN=wDBB21CrL+e2Zc zaWQUE1Sx`z{sYM3<)Kk#+$-C_H^WWxzrA&x|%`2 z=pzv0;u*Et1v5u`;XOTbFgYEa==E%8s^!k_(IU&UL$qeW^z*PG%admXdD?-&jilyZ zhdEQ;d2B_O-9naIeiz&9pAQ(`Cmqfus%{sKJVMD{2N@*LjFmmTIn9#mMLIJJ?Wy#y z-N=NGA%|af!Z_B~pW05{vtUmM#c`REW3K7DPve*!kJdTawMz;4HnUS$}z4% z44{Dm9>9|CWIAtaJ%AlAwq>{uG`~GgDLNhw!b?UsQ7a!|Q8FAm@&*8Rq~~z36<)3y z(-TJg(AD^!*lG&|{spUPKvLX}lAUTVph~2Xp7ktij-`wKTn>x_aVOAHK*^crMM)b5 zmXbs8T9ucW5?F2_NC&~#{TgCuCr9U$PU`k5%z+-X#0q?I0;rDWT4BZOA#5EAtadli z(D?Yy-`}PI3`&|SkhlXalv%ilB)2$Ge#tEP;qzVPUj{;PXL7zk@jlo%qn&GRlH)DtjpfMqbe1f@h=;cv)AVlNq zW$R~)tStNhOI$!X-5PnEY4gEr8asP~df!1+xXk~V)DYIhd)m*+Q-+u!EDDD^oG8F2 z5~KlzuZ3(R+}sm)==c<&90VTuv}ENZgC&Ut^qH`Q`fo}W>rV%IH0@Zl8x|x* zeuW@|U?K7NfhB9^y!qcr$v+P>FjttEeK`sr_^N1)#+ym`{>32IVBsRIh;&orF9|tNcp>2Wnc!vo;ZA8AqZL_xelMq# za!0l2W)bzpp=aFC`tAM?$LB(PE8D{Iw5#JNu`Jt~R`n{itT{rso|b4yn?v=BFAK`g!(zZaKbR~s zJG`780Zx>l#RBsE=oV*$T)uAQ4XwS}xT|N+Hr3z$rMI@5GJFJx8-k$C?j@vmh)<88 zMI)P(1+@m?j?6{G7SdhY&KiSkZZjws1mk?J4k$bV&m>V#m*_kOe?Ye?!118Zyx9UCl_v`Hn zL6d3Frs|m(3cx{xydO(JA?0no+ERHNUUj^$3KaZ4@cch(esm;Pe)}YZ9P?%8!-M#l zZEG1g2r@$Iu_(isKv8Cw*P4;3F(dB*037Jx?^e*>z!b|=daemWxmlum$?qrJwA*af z{dM$Y+rEcY<+hob!z?PpHKn2eAdHMd4-L|;Q))I0D(wTF`6n08V#0Fz)BxU(n&^rdc)r3iz@hzJP zR8JXdXrN$k^T^X5*^Unf*~iUT_^Qv`vobT$=NnVlHYz>U$Uil#pjcqU+=kz|F2-w$ zTw9dwpaIns$cgt#R2LY0uso?(e=O*;8}$87isW-t1Z=jaPSbAbqE@ep%VO+=MR+O- z%>U6*KHovn`j7Qw~bfJ*x7|0s`kosF{si(!TL5 z8G7{b4V9q-)!_S(fK`0ltFq*?l;AhXH97@U+H zNxW+Jr)ZNv zyY7JIx7gQtYSz7(4OOL))2R#Jg@#vbmQQDfiPqgGaUuRf5Qf3nXUTX9%NQJz@^YbCWnuN~+I)FDBSk_A zaw!}s0N%#+s0@p^nsQ-|C5Pmv2o_jVRFtqf;V4cJpV(bU>%zK}V~1%GRE|J4=sS zQ!Dhkw7A;orD`GoSfPP2;gmoy*%ht^AJi;duny14EZ#7wQ5zZs00jQXm2#eAh}R;qxtHyMZ4qy~G{I~6 zPts0K!W&w59|3_!NI=Z9v$ov&WcpQsVgl?R`FS{ikhbM4$4_HVwGs$6MmCUcWBlhrfP(d)+Q zc%?V%#6ZZ9dY0K$;#q?;KD|qZa;UC~SWDb*T!bQ27Z`m_`z*NN<{W%wtW>MaR>02S z2mco*(w*Xi&4qKZFEcqgQeP@JM^7Z}?e|?N(=T}IGxGEE`PvVjwqH?X=HfL#>}IRA z+S3PVeZmK zI9!jZzQd^E)YQ~xOB-6gJl}TrejZlP?FhYrysL`){=GTHl1o-b#$scAU29g0TEJZO zUqyRS)<(zT076&pM2tVAwJTP6=Fn>K?|G{dT3`|=7ua*6iCwl@zK|ULEwRsrZN|E= zVkR&(M=d)!DYCG#-qd!wUmxR9hKaU&j*P`PQ*?N-{ta|hGBNp=7Br1=PQmk0d2J*^ zxGym&Np(F9o;DgHr0Bz>#*a@ecE|YeH_pt$uN}7FvS59;B){(Uh4GE^Bem_Rsi`iC z*XI4al#7u1S}~_l+s~J$2m<_kB{Me)S7vs;sh% zeA@7K$sX9Asan1sO6CHU2D<;<^HMqj>fgN+LzL}Fu19*75-KJ!Ql^NAhzOGF2FSvv zjrs3|*B5_(1ald+x^1)K%xfP0s1X@j!w>m)k^=c!Alsoq_S0>U!Z}f$L^+8-G z{cvA&OLR8pT~!aIQ3SM*8NkB8>K!%5#>O6VX!7CXS~7K>5H&M1o6Ig&JasGw8#O2w7@-z7~KI=r;8t(;}o(y+tm z&|W0V!MW{&@ag5*1TPLQnY=5pv3L{SZO=gjKqEl&Oe&u8NzdW&3RW7QGs_fVL_tDu zjJyBIKhKUJZIb5>0t7{;dt7|H%T0o6FL*wFEz8Z7q}p%$k?S4ZeV7%wXGLPi*vk;r zX{15ABN_%qFIdJIef9~p=5e_Px@mz*1_g1hD`1aS%SmamHJY;%mS!0A9{XzX^p`Wu zgYew5Fnk+rzwGdYeG2#VD<&1eOG-fUnItzFh+vZvjX`cc$B&wZP#0!CyhHA6lu-Be zkYq4=FS%7*3y0H6T&ejnx-cC#E`Ol0MGBI4&7>MoThTuX>(N+Q#saR$z>cKPuLn)G zXGv<_2cp6rwKbu*YZ_L9Q0nZDB;<2stzuEr=!iMGH4B~UrHqntj^9BAcSqnh4dtKs zom^(`e0xfHZf-77S`*4SGYiYxdu8Jfryn~vthF^W`x{gkZ@Vryx0bsCj3gw2hSN|2 z8Phb~uoYY>5oM#dMUGfKBzO2dLvBN{_-@G<$UPjneRm*A-|=1}qsY`+$=4!_9X4y0 z0`k#3Cbj#m{s#xYyDKG!CgF;?Udi}lF)JH2Jk~AZqf?#Jc8;r-DC9gi2#C^+?s@)8^=qC)ACyqy+-uBKI4W-S=zoXB$*@!-Y;_!{0va<4Hm>&8G zB_63D$ay6=B%B7uGpls6U&B@d-53#V#J#%}gD@CkEJ82GI`j!yE=D!!v%eF3F8%F( z191%3?xMxAf?uPe_GKVc@cYK<>goYh#(Mh&zHgQpk9_sM?PNM`j~CePdaL8!n2^eH z85KQOGj@8vJU@8@bfY9veLONwz7cE3(O72G>Mij&TTKyR(VE`mXOph~T!lT3}bW9Ao>;Wily=1=eEUkYg6&puX>jK>b72 z_qb>DCAu3YH|8XSnvFm|s)?lEXSDC|2R3*GATZB&e#(0g+?IxDOWlOc8W4sMgqUJU z#{kpAy7g9LmyKGFJh08Fb->^?eo}2(C%$ufk*~i+&GEaQU2Z9w-_@u#fuw-ZiGL4%TS8LoDy-iT@~sa_nkX&-}woHvqbw@tEGuK6d((op%>APh{6h&)W4sA5wMy98*$J$y=6Qk&*F~rOLGD9KQB`V2 z&41%pTp|W0RgM35R_-RRdUio0Wh5TzEcQ(#g}!8$V4gDlo!T28f4#R4@;|Ra^Y2oX zTar}W1Ehm7ea@dR1@hyxsdE^PxEo8;kF2spCoja(a4Ed~HMDSLd7tEnh@oaH_)fLX zVe>bvKnY&I)OY)tb3;G*$nCY-KA!3)TSzxTr%1|g;MSb?TiJI#dxWDn{x!J0VsOKxuGCosni1zdlVqcet?ld7w$tC=*O6>@}K1sxro za7v+9&o-8?Fl%>bv3(AP`|-8!{*I@7fHNj8mC(EUV+3xO(dOy1AGa16CZvue;MXn! zHGck%#hC((M;=@o`;8kdEN4e>oDz+Pct$)N&w45SKZdX40$3PbXs~wX46}G=gg`OiuT9e?ED&}hD>%&?`qp_~sEFOSh-`iYLZ3J6t_x9kL*_BQ_|xld z7P7t36X%_^OKr$`fd0_ZNA28|f3P^cJ}LS@?A>x^bF<&wG5p{K*nzbi|6gD55B~%) zXOQ%btI@?!(T(UY@}hezE=3IBiEyUw;IyQPbwAP=HG3et&)3X1gJd+(qiC7|>cB7_bJ zD$=DRy^4S+1P~z-2%v!U4hc0#O&~N$Xo0{R&-n}Q$MZE;?wxDTy)%1e%~~@{lz;nA zmK|DTH$KILzNBex`Sy(zYVRgVUrR{@Sumx}!GX=q$H$)8D?D>&B4~ztH;9Ck&XeyY zq|ziw(Bi`)6?e+kGbjhd6xH729HuJEL6!QA#;rj-9-niL z!J^uA%&;eb^TBPpi@|DDJk{tA)svpdWR*|Vrtj^f86G)S7dNEbXfO{Wj^%|`E!8f z_(1(*xMeu+KD@5YB|Ln88FJu?2gqC?riFVQPQx2H&^nU$jpjF_l z`s!wR76p~mVvKQnX2nQ|K}>?%56DE+(w``F1RfJ(sg}&6xijVb`i% z(5nyK6aZ$)5K!(L^z2WSv{{>Ly>bCzmY5EcGNkvY@URmxTaMh!82Yed0{9?RXg?HZ zXwr}i@(Q-C&h)r;C0lqha7S9_up63FPFR|-hat2G!5T7i+Hr5!`kL-XeSgVDOAV9O zXb@7-hHWE45n*@EQW}phG6B}y z=MEvGbWo-3R3Po2q(@R$DEi>GrLvYvi;8PrUS45Ovf}8*RCflj6a4;2Q-@^_WVKOJ zm*W@Ya0d2anB8p9v%*;!JA$G)xMraxgeW;b{V<_>8G2w-GQ4OGT${ndz=5~@V?0x_ z1^3v?Q(N8fg`Wck(y>l>7*ZJUrK(Et0Y5Zq7@YgSc$N!wSlQlhJZ*H|-U_!hPK>T2 zI1})BF6cULxzAp1aDp!M^n^@*1V)C&(3>v#02jY0!@f>PnWWF830=sTZg!}d0me7Z zRRt8**y_A=*phRk8w^q9Sjy7t=-bf^@bJ9U6a4@ZKTyV_f0Xt(wqOePubb1NQ<&}t zP$l-n5e+hC&nygG>pLSa_>QH@I&4_x-)&$SzWhXl?xDKaRfwj{!s}puGOtSO_wPr6 zC|lc}KsJup;hSJ^AFI{Vr}ONjSfAW}L$)IHLO610X!Mn|m4<5@d-Bi(Re(fK3M z_$fq&3Cd)H%ep8so7#I*U-5Cm?SjmDNFuI=i+?EdL<-NHo4#j}#46Kd!{Mm%{$Lan zJL?)am!K$=lOaJmZ`JU1%$^>-{^-U@UE5prwyfx1!}?Q{V=wS*E-+A!T|EckEx1JpFU}W zaX#m2T3TKFlFWx3n#4^~T3T91ZeAW{pVa?S*1I*Hd$sHi6l55DRg&3jq@Y*^aQLik zIw_K&i)fV{%Ib0F;7L%s{>R|Xn;t&!f$6T`L#YVEnOlOLI8j{dck}ys-FDT7aE6x6 z=%cGlU)mCOL;&1tK3?^xEQ$ z<)fOQ+*c8{zwhU%&ZUa74)L%APtVJ7JRorFWX<$t(F)eLt}8<8jP6{!Y*{XIzxB+U z8?iIG`m^L#q{?)U45aQ}$rM!~(!Wmc_D2;DdQRWWg1n%N(eoAFxbBC2eZb)rhHU%w zx~Ajte!#t{;o7<;Hb?Zh*~XT!6&J(;v* z)fQB%=}IVy;&-PkfSXrX_s%u@v3vu2ytb~161M$rR79zUT9kSTCY~iP*660kY2-7J94HH<R0Wm>e<#m=XVwUV*%0{y z72huPCw6w}d1t7@Y}x!^4z)=``O$s72P4yPA0*zk?g`{atTkYh zCHqKUb&%2eZyK(2-53-&)G8gVW#3dajM+Ly=xNN}pGl%;G)1uZ<8Z5EV`FKi0?vW3 zYa*JQBq>-sX=iSHht%L;V`+KdLZP$~IwJZY-L%0k`?bPAkdLb^Xi5bH2o}C%bGc6waw1%Qm z5#1n-$_fWoIEh#Fx8;n^epGf%g5~kZ?;Q$7@m<%`@deq_Kl|}YQ$U-QiI(w!VfJqG zzkJ%+t=@wI>IzWZvY0y5fKKY5JZfxMF|T1Dt7CDugJb3&8RpOTE#Y>@n-i55Di}0c z+6;4IMy>UiBIc9PIc60t2er?KP(bvs;+n?MptE?>z{CRPUAf6ZZ#sXCI~bgttETu3 zsx4My@Ph|xfw0pox}kM*&Mm|aILF%a;#S$%$dQ+CN4Wxm z0-apBH!w1Krs4aOk^?Wh+G^&zlxApmuYrYv5=qFn^-1a(9#=_eF5~ry-Yv}I_^EK+ zvk%v!l*o9GOWA@Txgf9^&I=c;Ae^6sJlt z$TU>4Y2kpRAhB6nWLl+GI&^8Pog+r|v3<+bRjwN*Cd~pOA~HIuN>Pr`M28Vfu;r`4 zbdqR)GU*@;v~Yh(jQNXJ-7{~W^ZG>%W8C$9l{Ty2c@|fNM@1z>O6A?OWbo%W1L)?N z|B<{SCa`zQ99T#Irxj*=*kxYmpjcY97XSFJ9$Ck}I;fM(mvqioySAj$tu%V*=h~jL zG3FHxU@#gyFIH}Ig~F28DZcCzTMHrYU1OSYZS&;pY2}vaB^7+&EqoYrv@{jCRCTr= zFXVVLbl5aOe>2VEgu4}!kh_;HDFYCy;ji%Am7x76aa45fvsy?UUEZ^{emC6yyNiDU zAFyG%Vems3-s$0ag_zv7%&7?9!uWnr!o-pN9^d5q^O3Dm!)OJAZ!L!Ea-sr%q13w_ z8V%(^zf=>byYdYLFw6&&vC2?7tjNZ5PWF5I5ag7j;Nb}UeGL&vCP8v*jy1O5i-TQwhuShD}I zKS#L)v*@2$+X3cJ9w=UWVurD+k|^3Ny>CD(N1o5C-U`zF6T8#j&PHOm@^^dQxE+BN z19NWBfVJ&j@B61eqEA*FP(ev|T`x(2OJp--)lNy?i?WCiuqNGr2Qx8m%|q!tcRci! zB2}pMYReAi4p`1wCEoqc1&Q3s3(af(fw6AuecR2OSiq;Hcvya*Z$Gqut#^Lrp1N2x z71pAe+H74**3rg7RZ7b*9JH&+p`BDh%Zg0onDUuoi%)B-|#dQHamqmaPddP_;7m=u@C7) zcmKXXSL06|kRS&*0aasnsW-oStE^ro8Q5~U(`eHN$#)_8AL@Re4N}^PRoD2kSz<#H zTl^QK4R1^BJQ&xPUPG!q9Ks$~()av_XE7ME(4Fe2?)xHm!FOFZw>Y=RbTj(b5!;hX zY`cFM1Ts6U2697-U){}Qr%F;sRSvm<$1x$f4SdIPl=J<$M*czH^Blu>B~;wce_1vO zcRjoy=-IUmz;@`)TI@^lmr;?zrijG${*2n@A)@6T;xMe3NC$diyLgktuM}OCKc?nD&YtsYUGMloJr>QDGm5a+LuyyjlLHVp( zZIllOC7u}(5Q|`JB3-{{{pjt|so#p$4iS0G@cB@=F3aDCf@_($yh4Qzr`{J8vj+=U zhJ_ZGX^gFLO(Z`LhH<0DR5#sXdh@Ki1A9)V1UXugb|u>gh8U)uUoC+Y7lm$00z9Zj z0w5BQ7-Ilh?Uw^t;4;_C32FK03oF!?WO(h!wR3Xzylu)Z{_QPewh|d9=;J-tlzl$a zE*BSrfil(iQN_ z!P;lnA7m5zW(yJ^mdd7g-a0;nLr*3Eud>-9vjYq^lJfkKpKg|p90WI?ttdSm$uDc}*Y z@s)xGuFcZ3@2oKWz#AKuE4y9cXD)53`qr_SlZl6LdZ|eFp12+u#%{X*9_ES;Tssgn z-@KP&2>XrG1qm>7h+K$roF96i52tf`nI`7jVV|tY(cRB`3s#I!>D3FX6_jauvXHMB z?f4Ka6C*$GQTb1JcUg(AgB}ub+2(<$DperpBY9M{e=A%v8)k9wN|!~2F*kZ$ z>m37zW}=cc?X@mWh48Ke*yjb8DR(Aew z%#{f!61p9A*Ck@!!hQ62KsjBFlr`eTXgZ&Be|bVzfa^x7iN2MI=(dgTPe>V(R9Dpx z*i73V_7~i}6>rprZbM@lbUpiE?|o6k!iQ-~jYR|{0ImQRzwX;jNUBtj&Jy}DLajE2 z9;6r-YSeM08$Ph|$}YT_++B2Fks4j7$MF(yV+RNEIZPQoPA$vK%sdwq5sA>+;n{Gi zLs9dZ+<=Pp$MYUGgo;+u(AZArg3Og1F<_NcXT*mvTPEc!NznLnt|C6p#xu=UNFVy$ zhQkd7jTxDRawhiX4wHm^->C1s|1e=O9=ombrC(#>XZ9+}cpL5PD);I#=$sCHfDuJm zJ-dJ&D--Yir*2eO$9D!+7Qln6scX9FNfi4=GBd}t6isBFItbgoEum5iNq16p6*=NG z4TIbOhjmkDNz00rKY~lJSdN6Qv$@%K^=`x0s%;wjNcVO%3d&;-H2|~K=v_+7u*(e^ zC@9OrbpKZTpt#eZaXQ^b*w4k?>cqsvnggk}p`ci_Z z?CN;2xa|Sgfm9CQJm;;#_IviHlpxTj2ztL=Rul9)NaZ~jKNW~W*@bHBNM9;!%_O$% zg4D`k+&=YYU8AgCT%QZggm*OG%gGmMV5uR=2SFg3_B*oH`MXgz3)W=v)#9^Qph`*W zGxazZbBurLgmw{mw}R1<=Rw>GGf>cVH#KOV>HM}_&6r7z2HOX!nEkqqjg34NiQD4P zKeY#fk%PIF2nngF?9y8iDNh`Ju5q~#4;v9w<`GjTzwT|?2=`{6A%AOUP^$4l?{hh# zQM(qhBfyO8PJ9IA9;E-%Tw>Z|7wb0k;{5yBz&qW*U}G}hcCws}9mc=zZ9ae3c~Y+L zE7@(Mw0Co#773T3r|*2K)-vwSpB22#bSE!jOTAhrMh~2tdBVQ*4(x*pHm`L}j%GQ- z#tX$PZI78 zN^#>{=7g^@P+cyo7rM#=v+I;(NP&-lrhiy6nXWlzsqHaHOXl$HbGQQp{1yDxig&NO zK>hNS$I}_-GkgL?{Aual!ha|_y5W@|l%G6NKE|;7n2&J4)m#aU+sc7)hAOKRF6Jb) zH`HU!dpkkt!;dMuW0leokeK8|0B?+Io)6u=t1O7R4NWCsrGA38~Zzn+r=$xiQ2>Cp##N2 z$5%dAlTXj*N&1TcuMZ9ms4$n5)ye{^f}VV*_lb_%Q_DuKCfm>bsQj;v!sYTKP9<_v z+IH0o$KMdv^P3C&UVRaKL@S?L{2^`19613Y*cLuLIjx`KdbFPrrkj_(!x2gF^d)Hs zO6QeMLIGkm5){D%SG=nI)-kvo@XKIdW4d3o6AYfJ{bA*RQl7anE}eay3~RnJc6^a@ z&ao?=<$R>zO)G)B(`dmqchXhmr0~(F%lhU&)nhs*bQbP=$ag1G zzf#l$qTLo>1}DJ;Ow!LpHoy0ASr2J({zV5IM&13@kmu;u7J0|cSk*TBgf2%;$!uer z2G92liRTZ1w2Uhm>$rWdKf&RZ#&YmSS_BXDE;#8Q%L56o1iGIsF^=aUroqvmq`>{aYy0C`T3W6+fgPpi_{M!|TZFE4j-)Jn2Q)NiOPFa> zWf0Q5J^B2Uf1YRi{cqzsk8uxbw_+Tqe8HPYJ1=}n0&$-js~M60%|U$Bi%)2)jEHmn zor9vS;ahzO{fh9w+ssV{eFfBi;QXi@n2VL@PzQ_<4Yw~o^r4uct2g7;35_Kl@!yly zrR#9dH)RnXy7`>$x{~FIV9a^jeMYAsy`LyGL3yR(Gyn^~Z`8z-*4ln>BYtS?%CSFy z4_iIyQbDHX0Y{$G1ad?rd`BO+V6{$RSlW3~j_WjnnYdc6;6BmPQO9wFkJkQ+QFR|$ z7RN~yKB~OVJsvga$@Br?`Euw7CRJfvUfQTYzTs;_!(_OYM<|V~EagiC-oJ=020&1R zDFh$hznzdnyzOR~FZ<^ordU?b0ta-rj<$OmvjnUb`wGT2({Rl5rrp<5c zDg$!AkmHg*lb@fut!s=oo@eRFkrfTEGcw*y?Gf=;+L=(wXytK&<`WC@USBcSkpZVg zB@d<#y}-F&5>trg*F)<(D9Gya1>EK*71RAX-z1L?Tus=Jf5R?;Q_cGgD>tUs+xTe! zvB3a2wj9LRK1VZ=qKzwk@!Bh}Z}auD>M??$vzAx*$uen3+*j%!i9xu~F` z_%&Z}(u}xeS^C&p+4N?C!P|eVPZ}}O13g(0IP8CUAshRY6&ro{o69FD01o?z=y!1!qB`AyNnb2yJ z^DaTK$9Ly>28P~FTZ`+=8L4i2^t`Mm9w2=fMK+{&Gos0^l#|dp#9lz&-W+ZGt(7Pv zCB1!IXb|QJH42rD6K4wVj(tmN3ItyDpwq`!R-{-mJwE?J^ps^lefqI(y{=o8Nfg9h z{RWjHiH}QSnnZYFeeY#jRDOLni+Y@8NeiA2MmXy%})LRZQP};ZZim zr63y;4UAh?Hcptx3}&pa)Q=3$ctRL z8X2kS`z&vWu=Y!lx2Pb?UI!5AU%5WpAeA0P^)vq6-A%W|Z_x4TUVg4F`bzDu)`NDg zGw#-4SVK+CA`l}KP9^HAQ2_@UT01kd)OBB%s$?xRHQUbeo8+Nki>JaCH)tS|K}FC5 zhGRLCsf4|~J$kLR*=31DU;XvOwiN{8W z<`@o1P#(G2Y*WL-c^oAFT13d(c{};k0MuT+C8aoP>-sI$9gcT z37%{n?Nuv98+MoXg6^qh(S5iw%-Jg}r)w4OGo%Uq(Nqc%CC zIbx2}#A2S?;a$Bki^%PF&mK2^7-72b>c=~(4U`iBDra5%g~3Zw-M+tWe}Bk1@UJ6N zXEMuoZW>YiU!baDy55bSnq9cS3Cj1dB8`kQ^@}f$Hh=y4WySbJh34wR|5(DpV!VUn zUEAj$-;Dv+hMguk8-~27FJ-IlS(QZc{>AnbYO?(5s)uN+L*yR=4s-BG%u_k|(A6_v zH|kw7Oif_0y}m%2=hQwXG|p;~e;}a}l`So&jG$_rm9_FbftC0i8N@2w3{pC zHADM|m1g9x#^z!QkIl4UmgUo@iCcKQEZR5UX}^xWWP4ej`_njVj40PrE|`Gu54EVs z3Lu*R50X=LS1MilGeLvH5;Qc;)E(Y=zJB&*kd(LGmZuo9*8`euWZ}OVH%c|AlbM-W zcTXzcfJJ8TP`|k`W0(D*L z3@B=lO8u;nuKxVZ{{h%Tv5Wu! literal 0 HcmV?d00001 diff --git a/web/splash/style.css b/web/splash/style.css new file mode 100644 index 0000000..6654d94 --- /dev/null +++ b/web/splash/style.css @@ -0,0 +1,45 @@ +body, +html { + margin: 0; + height: 100%; + background: #ffffff; + background-size: 100% 100%; +} + +.center { + margin: 0; + position: absolute; + top: 50%; + left: 50%; + -ms-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); +} + +.contain { + display: block; + width: 100%; + height: 100%; + object-fit: contain; +} + +.stretch { + display: block; + width: 100%; + height: 100%; +} + +.cover { + display: block; + width: 100%; + height: 100%; + object-fit: cover; +} + +@media (prefers-color-scheme: dark) { + body { + margin: 0; + height: 100%; + background: #000000; + background-size: 100% 100%; + } +} \ No newline at end of file diff --git a/windows/.gitignore b/windows/.gitignore new file mode 100644 index 0000000..d492d0d --- /dev/null +++ b/windows/.gitignore @@ -0,0 +1,17 @@ +flutter/ephemeral/ + +# Visual Studio user-specific files. +*.suo +*.user +*.userosscache +*.sln.docstates + +# Visual Studio build-related files. +x64/ +x86/ + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ diff --git a/windows/CMakeLists.txt b/windows/CMakeLists.txt new file mode 100644 index 0000000..1c2b994 --- /dev/null +++ b/windows/CMakeLists.txt @@ -0,0 +1,101 @@ +# Project-level configuration. +cmake_minimum_required(VERSION 3.14) +project(fluffychat LANGUAGES CXX) + +# The name of the executable created for the application. Change this to change +# the on-disk name of your application. +set(BINARY_NAME "fluffychat") + +# Explicitly opt in to modern CMake behaviors to avoid warnings with recent +# versions of CMake. +cmake_policy(SET CMP0063 NEW) + +# Define build configuration option. +get_property(IS_MULTICONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) +if(IS_MULTICONFIG) + set(CMAKE_CONFIGURATION_TYPES "Debug;Profile;Release" + CACHE STRING "" FORCE) +else() + if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + set(CMAKE_BUILD_TYPE "Debug" CACHE + STRING "Flutter build mode" FORCE) + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS + "Debug" "Profile" "Release") + endif() +endif() +# Define settings for the Profile build mode. +set(CMAKE_EXE_LINKER_FLAGS_PROFILE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}") +set(CMAKE_SHARED_LINKER_FLAGS_PROFILE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}") +set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_RELEASE}") +set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE}") + +# Use Unicode for all projects. +add_definitions(-DUNICODE -D_UNICODE) + +# Compilation settings that should be applied to most targets. +# +# Be cautious about adding new options here, as plugins use this function by +# default. In most cases, you should add new options to specific targets instead +# of modifying this function. +function(APPLY_STANDARD_SETTINGS TARGET) + target_compile_features(${TARGET} PUBLIC cxx_std_17) + target_compile_options(${TARGET} PRIVATE /W4 /WX /wd"4100") + target_compile_options(${TARGET} PRIVATE /EHsc) + target_compile_definitions(${TARGET} PRIVATE "_HAS_EXCEPTIONS=0") + target_compile_definitions(${TARGET} PRIVATE "$<$:_DEBUG>") +endfunction() + +# Flutter library and tool build rules. +set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") +add_subdirectory(${FLUTTER_MANAGED_DIR}) + +# Application build; see runner/CMakeLists.txt. +add_subdirectory("runner") + +# Generated plugin build rules, which manage building the plugins and adding +# them to the application. +include(flutter/generated_plugins.cmake) + + +# === Installation === +# Support files are copied into place next to the executable, so that it can +# run in place. This is done instead of making a separate bundle (as on Linux) +# so that building and running from within Visual Studio will work. +set(BUILD_BUNDLE_DIR "$") +# Make the "install" step default, as it's required to run. +set(CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD 1) +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) +endif() + +set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") +set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}") + +install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +if(PLUGIN_BUNDLED_LIBRARIES) + install(FILES "${PLUGIN_BUNDLED_LIBRARIES}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endif() + +# Fully re-copy the assets directory on each build to avoid having stale files +# from a previous install. +set(FLUTTER_ASSET_DIR_NAME "flutter_assets") +install(CODE " + file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") + " COMPONENT Runtime) +install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" + DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) + +# Install the AOT library on non-Debug builds only. +install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + CONFIGURATIONS Profile;Release + COMPONENT Runtime) diff --git a/windows/flutter/CMakeLists.txt b/windows/flutter/CMakeLists.txt new file mode 100644 index 0000000..903f489 --- /dev/null +++ b/windows/flutter/CMakeLists.txt @@ -0,0 +1,109 @@ +# This file controls Flutter-level build steps. It should not be edited. +cmake_minimum_required(VERSION 3.14) + +set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") + +# Configuration provided via flutter tool. +include(${EPHEMERAL_DIR}/generated_config.cmake) + +# TODO: Move the rest of this into files in ephemeral. See +# https://github.com/flutter/flutter/issues/57146. +set(WRAPPER_ROOT "${EPHEMERAL_DIR}/cpp_client_wrapper") + +# Set fallback configurations for older versions of the flutter tool. +if (NOT DEFINED FLUTTER_TARGET_PLATFORM) + set(FLUTTER_TARGET_PLATFORM "windows-x64") +endif() + +# === Flutter Library === +set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/flutter_windows.dll") + +# Published to parent scope for install step. +set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) +set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) +set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) +set(AOT_LIBRARY "${PROJECT_DIR}/build/windows/app.so" PARENT_SCOPE) + +list(APPEND FLUTTER_LIBRARY_HEADERS + "flutter_export.h" + "flutter_windows.h" + "flutter_messenger.h" + "flutter_plugin_registrar.h" + "flutter_texture_registrar.h" +) +list(TRANSFORM FLUTTER_LIBRARY_HEADERS PREPEND "${EPHEMERAL_DIR}/") +add_library(flutter INTERFACE) +target_include_directories(flutter INTERFACE + "${EPHEMERAL_DIR}" +) +target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}.lib") +add_dependencies(flutter flutter_assemble) + +# === Wrapper === +list(APPEND CPP_WRAPPER_SOURCES_CORE + "core_implementations.cc" + "standard_codec.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_CORE PREPEND "${WRAPPER_ROOT}/") +list(APPEND CPP_WRAPPER_SOURCES_PLUGIN + "plugin_registrar.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_PLUGIN PREPEND "${WRAPPER_ROOT}/") +list(APPEND CPP_WRAPPER_SOURCES_APP + "flutter_engine.cc" + "flutter_view_controller.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_APP PREPEND "${WRAPPER_ROOT}/") + +# Wrapper sources needed for a plugin. +add_library(flutter_wrapper_plugin STATIC + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_PLUGIN} +) +apply_standard_settings(flutter_wrapper_plugin) +set_target_properties(flutter_wrapper_plugin PROPERTIES + POSITION_INDEPENDENT_CODE ON) +set_target_properties(flutter_wrapper_plugin PROPERTIES + CXX_VISIBILITY_PRESET hidden) +target_link_libraries(flutter_wrapper_plugin PUBLIC flutter) +target_include_directories(flutter_wrapper_plugin PUBLIC + "${WRAPPER_ROOT}/include" +) +add_dependencies(flutter_wrapper_plugin flutter_assemble) + +# Wrapper sources needed for the runner. +add_library(flutter_wrapper_app STATIC + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_APP} +) +apply_standard_settings(flutter_wrapper_app) +target_link_libraries(flutter_wrapper_app PUBLIC flutter) +target_include_directories(flutter_wrapper_app PUBLIC + "${WRAPPER_ROOT}/include" +) +add_dependencies(flutter_wrapper_app flutter_assemble) + +# === Flutter tool backend === +# _phony_ is a non-existent file to force this command to run every time, +# since currently there's no way to get a full input/output list from the +# flutter tool. +set(PHONY_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/_phony_") +set_source_files_properties("${PHONY_OUTPUT}" PROPERTIES SYMBOLIC TRUE) +add_custom_command( + OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} + ${CPP_WRAPPER_SOURCES_CORE} ${CPP_WRAPPER_SOURCES_PLUGIN} + ${CPP_WRAPPER_SOURCES_APP} + ${PHONY_OUTPUT} + COMMAND ${CMAKE_COMMAND} -E env + ${FLUTTER_TOOL_ENVIRONMENT} + "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.bat" + ${FLUTTER_TARGET_PLATFORM} $ + VERBATIM +) +add_custom_target(flutter_assemble DEPENDS + "${FLUTTER_LIBRARY}" + ${FLUTTER_LIBRARY_HEADERS} + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_PLUGIN} + ${CPP_WRAPPER_SOURCES_APP} +) diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc new file mode 100644 index 0000000..8116491 --- /dev/null +++ b/windows/flutter/generated_plugin_registrant.cc @@ -0,0 +1,68 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#include "generated_plugin_registrant.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +void RegisterPlugins(flutter::PluginRegistry* registry) { + AppLinksPluginCApiRegisterWithRegistrar( + registry->GetRegistrarForPlugin("AppLinksPluginCApi")); + DesktopDropPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("DesktopDropPlugin")); + DesktopWebviewWindowPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("DesktopWebviewWindowPlugin")); + DynamicColorPluginCApiRegisterWithRegistrar( + registry->GetRegistrarForPlugin("DynamicColorPluginCApi")); + EmojiPickerFlutterPluginCApiRegisterWithRegistrar( + registry->GetRegistrarForPlugin("EmojiPickerFlutterPluginCApi")); + FileSelectorWindowsRegisterWithRegistrar( + registry->GetRegistrarForPlugin("FileSelectorWindows")); + FirebaseCorePluginCApiRegisterWithRegistrar( + registry->GetRegistrarForPlugin("FirebaseCorePluginCApi")); + FlutterSecureStorageWindowsPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("FlutterSecureStorageWindowsPlugin")); + FlutterWebRTCPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("FlutterWebRTCPlugin")); + GeolocatorWindowsRegisterWithRegistrar( + registry->GetRegistrarForPlugin("GeolocatorWindows")); + PermissionHandlerWindowsPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("PermissionHandlerWindowsPlugin")); + RecordWindowsPluginCApiRegisterWithRegistrar( + registry->GetRegistrarForPlugin("RecordWindowsPluginCApi")); + ScreenRetrieverWindowsPluginCApiRegisterWithRegistrar( + registry->GetRegistrarForPlugin("ScreenRetrieverWindowsPluginCApi")); + SharePlusWindowsPluginCApiRegisterWithRegistrar( + registry->GetRegistrarForPlugin("SharePlusWindowsPluginCApi")); + Sqlite3FlutterLibsPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("Sqlite3FlutterLibsPlugin")); + UrlLauncherWindowsRegisterWithRegistrar( + registry->GetRegistrarForPlugin("UrlLauncherWindows")); + WebcryptoPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("WebcryptoPlugin")); + WindowManagerPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("WindowManagerPlugin")); + WindowToFrontPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("WindowToFrontPlugin")); +} diff --git a/windows/flutter/generated_plugin_registrant.h b/windows/flutter/generated_plugin_registrant.h new file mode 100644 index 0000000..dc139d8 --- /dev/null +++ b/windows/flutter/generated_plugin_registrant.h @@ -0,0 +1,15 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#ifndef GENERATED_PLUGIN_REGISTRANT_ +#define GENERATED_PLUGIN_REGISTRANT_ + +#include + +// Registers Flutter plugins. +void RegisterPlugins(flutter::PluginRegistry* registry); + +#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake new file mode 100644 index 0000000..9032c3f --- /dev/null +++ b/windows/flutter/generated_plugins.cmake @@ -0,0 +1,44 @@ +# +# Generated file, do not edit. +# + +list(APPEND FLUTTER_PLUGIN_LIST + app_links + desktop_drop + desktop_webview_window + dynamic_color + emoji_picker_flutter + file_selector_windows + firebase_core + flutter_secure_storage_windows + flutter_webrtc + geolocator_windows + permission_handler_windows + record_windows + screen_retriever_windows + share_plus + sqlcipher_flutter_libs + url_launcher_windows + webcrypto + window_manager + window_to_front +) + +list(APPEND FLUTTER_FFI_PLUGIN_LIST + flutter_local_notifications_windows + flutter_vodozemac +) + +set(PLUGIN_BUNDLED_LIBRARIES) + +foreach(plugin ${FLUTTER_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/windows plugins/${plugin}) + target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) + list(APPEND PLUGIN_BUNDLED_LIBRARIES $) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) +endforeach(plugin) + +foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/windows plugins/${ffi_plugin}) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) +endforeach(ffi_plugin) diff --git a/windows/runner/CMakeLists.txt b/windows/runner/CMakeLists.txt new file mode 100644 index 0000000..17411a8 --- /dev/null +++ b/windows/runner/CMakeLists.txt @@ -0,0 +1,39 @@ +cmake_minimum_required(VERSION 3.14) +project(runner LANGUAGES CXX) + +# Define the application target. To change its name, change BINARY_NAME in the +# top-level CMakeLists.txt, not the value here, or `flutter run` will no longer +# work. +# +# Any new source files that you add to the application should be added here. +add_executable(${BINARY_NAME} WIN32 + "flutter_window.cpp" + "main.cpp" + "utils.cpp" + "win32_window.cpp" + "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" + "Runner.rc" + "runner.exe.manifest" +) + +# Apply the standard set of build settings. This can be removed for applications +# that need different build settings. +apply_standard_settings(${BINARY_NAME}) + +# Add preprocessor definitions for the build version. +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION=\"${FLUTTER_VERSION}\"") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MAJOR=${FLUTTER_VERSION_MAJOR}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MINOR=${FLUTTER_VERSION_MINOR}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_PATCH=${FLUTTER_VERSION_PATCH}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_BUILD=${FLUTTER_VERSION_BUILD}") + +# Disable Windows macros that collide with C++ standard library functions. +target_compile_definitions(${BINARY_NAME} PRIVATE "NOMINMAX") + +# Add dependency libraries and include directories. Add any application-specific +# dependencies here. +target_link_libraries(${BINARY_NAME} PRIVATE flutter flutter_wrapper_app) +target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") + +# Run the Flutter tool portions of the build. This must not be removed. +add_dependencies(${BINARY_NAME} flutter_assemble) diff --git a/windows/runner/Runner.rc b/windows/runner/Runner.rc new file mode 100644 index 0000000..fa20f48 --- /dev/null +++ b/windows/runner/Runner.rc @@ -0,0 +1,121 @@ +// Microsoft Visual C++ generated resource script. +// +#pragma code_page(65001) +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "winres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (United States) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""winres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_APP_ICON ICON "resources\\app_icon.ico" + + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +#if defined(FLUTTER_VERSION_MAJOR) && defined(FLUTTER_VERSION_MINOR) && defined(FLUTTER_VERSION_PATCH) && defined(FLUTTER_VERSION_BUILD) +#define VERSION_AS_NUMBER FLUTTER_VERSION_MAJOR,FLUTTER_VERSION_MINOR,FLUTTER_VERSION_PATCH,FLUTTER_VERSION_BUILD +#else +#define VERSION_AS_NUMBER 1,0,0,0 +#endif + +#if defined(FLUTTER_VERSION) +#define VERSION_AS_STRING FLUTTER_VERSION +#else +#define VERSION_AS_STRING "1.0.0" +#endif + +VS_VERSION_INFO VERSIONINFO + FILEVERSION VERSION_AS_NUMBER + PRODUCTVERSION VERSION_AS_NUMBER + FILEFLAGSMASK VS_FFI_FILEFLAGSMASK +#ifdef _DEBUG + FILEFLAGS VS_FF_DEBUG +#else + FILEFLAGS 0x0L +#endif + FILEOS VOS__WINDOWS32 + FILETYPE VFT_APP + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904e4" + BEGIN + VALUE "CompanyName", "chat.fluffy" "\0" + VALUE "FileDescription", "fluffychat" "\0" + VALUE "FileVersion", VERSION_AS_STRING "\0" + VALUE "InternalName", "fluffychat" "\0" + VALUE "LegalCopyright", "Copyright (C) 2022 chat.fluffy. All rights reserved." "\0" + VALUE "OriginalFilename", "fluffychat.exe" "\0" + VALUE "ProductName", "fluffychat" "\0" + VALUE "ProductVersion", VERSION_AS_STRING "\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1252 + END +END + +#endif // English (United States) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED diff --git a/windows/runner/flutter_window.cpp b/windows/runner/flutter_window.cpp new file mode 100644 index 0000000..b43b909 --- /dev/null +++ b/windows/runner/flutter_window.cpp @@ -0,0 +1,61 @@ +#include "flutter_window.h" + +#include + +#include "flutter/generated_plugin_registrant.h" + +FlutterWindow::FlutterWindow(const flutter::DartProject& project) + : project_(project) {} + +FlutterWindow::~FlutterWindow() {} + +bool FlutterWindow::OnCreate() { + if (!Win32Window::OnCreate()) { + return false; + } + + RECT frame = GetClientArea(); + + // The size here must match the window dimensions to avoid unnecessary surface + // creation / destruction in the startup path. + flutter_controller_ = std::make_unique( + frame.right - frame.left, frame.bottom - frame.top, project_); + // Ensure that basic setup of the controller was successful. + if (!flutter_controller_->engine() || !flutter_controller_->view()) { + return false; + } + RegisterPlugins(flutter_controller_->engine()); + SetChildContent(flutter_controller_->view()->GetNativeWindow()); + return true; +} + +void FlutterWindow::OnDestroy() { + if (flutter_controller_) { + flutter_controller_ = nullptr; + } + + Win32Window::OnDestroy(); +} + +LRESULT +FlutterWindow::MessageHandler(HWND hwnd, UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + // Give Flutter, including plugins, an opportunity to handle window messages. + if (flutter_controller_) { + std::optional result = + flutter_controller_->HandleTopLevelWindowProc(hwnd, message, wparam, + lparam); + if (result) { + return *result; + } + } + + switch (message) { + case WM_FONTCHANGE: + flutter_controller_->engine()->ReloadSystemFonts(); + break; + } + + return Win32Window::MessageHandler(hwnd, message, wparam, lparam); +} diff --git a/windows/runner/flutter_window.h b/windows/runner/flutter_window.h new file mode 100644 index 0000000..6da0652 --- /dev/null +++ b/windows/runner/flutter_window.h @@ -0,0 +1,33 @@ +#ifndef RUNNER_FLUTTER_WINDOW_H_ +#define RUNNER_FLUTTER_WINDOW_H_ + +#include +#include + +#include + +#include "win32_window.h" + +// A window that does nothing but host a Flutter view. +class FlutterWindow : public Win32Window { + public: + // Creates a new FlutterWindow hosting a Flutter view running |project|. + explicit FlutterWindow(const flutter::DartProject& project); + virtual ~FlutterWindow(); + + protected: + // Win32Window: + bool OnCreate() override; + void OnDestroy() override; + LRESULT MessageHandler(HWND window, UINT const message, WPARAM const wparam, + LPARAM const lparam) noexcept override; + + private: + // The project to run. + flutter::DartProject project_; + + // The Flutter instance hosted by this window. + std::unique_ptr flutter_controller_; +}; + +#endif // RUNNER_FLUTTER_WINDOW_H_ diff --git a/windows/runner/main.cpp b/windows/runner/main.cpp new file mode 100644 index 0000000..3c2f3ab --- /dev/null +++ b/windows/runner/main.cpp @@ -0,0 +1,43 @@ +#include +#include +#include + +#include "flutter_window.h" +#include "utils.h" + +int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev, + _In_ wchar_t *command_line, _In_ int show_command) { + // Attach to console when present (e.g., 'flutter run') or create a + // new console when running with a debugger. + if (!::AttachConsole(ATTACH_PARENT_PROCESS) && ::IsDebuggerPresent()) { + CreateAndAttachConsole(); + } + + // Initialize COM, so that it is available for use in the library and/or + // plugins. + ::CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED); + + flutter::DartProject project(L"data"); + + std::vector command_line_arguments = + GetCommandLineArguments(); + + project.set_dart_entrypoint_arguments(std::move(command_line_arguments)); + + FlutterWindow window(project); + Win32Window::Point origin(10, 10); + Win32Window::Size size(1280, 720); + if (!window.CreateAndShow(L"FluffyChat", origin, size)) { + return EXIT_FAILURE; + } + window.SetQuitOnClose(true); + + ::MSG msg; + while (::GetMessage(&msg, nullptr, 0, 0)) { + ::TranslateMessage(&msg); + ::DispatchMessage(&msg); + } + + ::CoUninitialize(); + return EXIT_SUCCESS; +} diff --git a/windows/runner/resource.h b/windows/runner/resource.h new file mode 100644 index 0000000..66a65d1 --- /dev/null +++ b/windows/runner/resource.h @@ -0,0 +1,16 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by Runner.rc +// +#define IDI_APP_ICON 101 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 102 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/windows/runner/resources/app_icon.ico b/windows/runner/resources/app_icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..f53c6c0053751707f857edab9188c4dcee4f2275 GIT binary patch literal 12383 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 + + + + PerMonitorV2 + + + + + + + + + + + + + + + diff --git a/windows/runner/utils.cpp b/windows/runner/utils.cpp new file mode 100644 index 0000000..f5bf9fa --- /dev/null +++ b/windows/runner/utils.cpp @@ -0,0 +1,64 @@ +#include "utils.h" + +#include +#include +#include +#include + +#include + +void CreateAndAttachConsole() { + if (::AllocConsole()) { + FILE *unused; + if (freopen_s(&unused, "CONOUT$", "w", stdout)) { + _dup2(_fileno(stdout), 1); + } + if (freopen_s(&unused, "CONOUT$", "w", stderr)) { + _dup2(_fileno(stdout), 2); + } + std::ios::sync_with_stdio(); + FlutterDesktopResyncOutputStreams(); + } +} + +std::vector GetCommandLineArguments() { + // Convert the UTF-16 command line arguments to UTF-8 for the Engine to use. + int argc; + wchar_t** argv = ::CommandLineToArgvW(::GetCommandLineW(), &argc); + if (argv == nullptr) { + return std::vector(); + } + + std::vector command_line_arguments; + + // Skip the first argument as it's the binary name. + for (int i = 1; i < argc; i++) { + command_line_arguments.push_back(Utf8FromUtf16(argv[i])); + } + + ::LocalFree(argv); + + return command_line_arguments; +} + +std::string Utf8FromUtf16(const wchar_t* utf16_string) { + if (utf16_string == nullptr) { + return std::string(); + } + int target_length = ::WideCharToMultiByte( + CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, + -1, nullptr, 0, nullptr, nullptr); + std::string utf8_string; + if (target_length == 0 || target_length > utf8_string.max_size()) { + return utf8_string; + } + utf8_string.resize(target_length); + int converted_length = ::WideCharToMultiByte( + CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, + -1, utf8_string.data(), + target_length, nullptr, nullptr); + if (converted_length == 0) { + return std::string(); + } + return utf8_string; +} diff --git a/windows/runner/utils.h b/windows/runner/utils.h new file mode 100644 index 0000000..3879d54 --- /dev/null +++ b/windows/runner/utils.h @@ -0,0 +1,19 @@ +#ifndef RUNNER_UTILS_H_ +#define RUNNER_UTILS_H_ + +#include +#include + +// Creates a console for the process, and redirects stdout and stderr to +// it for both the runner and the Flutter library. +void CreateAndAttachConsole(); + +// Takes a null-terminated wchar_t* encoded in UTF-16 and returns a std::string +// encoded in UTF-8. Returns an empty std::string on failure. +std::string Utf8FromUtf16(const wchar_t* utf16_string); + +// Gets the command line arguments passed in as a std::vector, +// encoded in UTF-8. Returns an empty std::vector on failure. +std::vector GetCommandLineArguments(); + +#endif // RUNNER_UTILS_H_ diff --git a/windows/runner/win32_window.cpp b/windows/runner/win32_window.cpp new file mode 100644 index 0000000..c10f08d --- /dev/null +++ b/windows/runner/win32_window.cpp @@ -0,0 +1,245 @@ +#include "win32_window.h" + +#include + +#include "resource.h" + +namespace { + +constexpr const wchar_t kWindowClassName[] = L"FLUTTER_RUNNER_WIN32_WINDOW"; + +// The number of Win32Window objects that currently exist. +static int g_active_window_count = 0; + +using EnableNonClientDpiScaling = BOOL __stdcall(HWND hwnd); + +// Scale helper to convert logical scaler values to physical using passed in +// scale factor +int Scale(int source, double scale_factor) { + return static_cast(source * scale_factor); +} + +// Dynamically loads the |EnableNonClientDpiScaling| from the User32 module. +// This API is only needed for PerMonitor V1 awareness mode. +void EnableFullDpiSupportIfAvailable(HWND hwnd) { + HMODULE user32_module = LoadLibraryA("User32.dll"); + if (!user32_module) { + return; + } + auto enable_non_client_dpi_scaling = + reinterpret_cast( + GetProcAddress(user32_module, "EnableNonClientDpiScaling")); + if (enable_non_client_dpi_scaling != nullptr) { + enable_non_client_dpi_scaling(hwnd); + FreeLibrary(user32_module); + } +} + +} // namespace + +// Manages the Win32Window's window class registration. +class WindowClassRegistrar { + public: + ~WindowClassRegistrar() = default; + + // Returns the singleton registar instance. + static WindowClassRegistrar* GetInstance() { + if (!instance_) { + instance_ = new WindowClassRegistrar(); + } + return instance_; + } + + // Returns the name of the window class, registering the class if it hasn't + // previously been registered. + const wchar_t* GetWindowClass(); + + // Unregisters the window class. Should only be called if there are no + // instances of the window. + void UnregisterWindowClass(); + + private: + WindowClassRegistrar() = default; + + static WindowClassRegistrar* instance_; + + bool class_registered_ = false; +}; + +WindowClassRegistrar* WindowClassRegistrar::instance_ = nullptr; + +const wchar_t* WindowClassRegistrar::GetWindowClass() { + if (!class_registered_) { + WNDCLASS window_class{}; + window_class.hCursor = LoadCursor(nullptr, IDC_ARROW); + window_class.lpszClassName = kWindowClassName; + window_class.style = CS_HREDRAW | CS_VREDRAW; + window_class.cbClsExtra = 0; + window_class.cbWndExtra = 0; + window_class.hInstance = GetModuleHandle(nullptr); + window_class.hIcon = + LoadIcon(window_class.hInstance, MAKEINTRESOURCE(IDI_APP_ICON)); + window_class.hbrBackground = 0; + window_class.lpszMenuName = nullptr; + window_class.lpfnWndProc = Win32Window::WndProc; + RegisterClass(&window_class); + class_registered_ = true; + } + return kWindowClassName; +} + +void WindowClassRegistrar::UnregisterWindowClass() { + UnregisterClass(kWindowClassName, nullptr); + class_registered_ = false; +} + +Win32Window::Win32Window() { + ++g_active_window_count; +} + +Win32Window::~Win32Window() { + --g_active_window_count; + Destroy(); +} + +bool Win32Window::CreateAndShow(const std::wstring& title, + const Point& origin, + const Size& size) { + Destroy(); + + const wchar_t* window_class = + WindowClassRegistrar::GetInstance()->GetWindowClass(); + + const POINT target_point = {static_cast(origin.x), + static_cast(origin.y)}; + HMONITOR monitor = MonitorFromPoint(target_point, MONITOR_DEFAULTTONEAREST); + UINT dpi = FlutterDesktopGetDpiForMonitor(monitor); + double scale_factor = dpi / 96.0; + + HWND window = CreateWindow( + window_class, title.c_str(), WS_OVERLAPPEDWINDOW | WS_VISIBLE, + Scale(origin.x, scale_factor), Scale(origin.y, scale_factor), + Scale(size.width, scale_factor), Scale(size.height, scale_factor), + nullptr, nullptr, GetModuleHandle(nullptr), this); + + if (!window) { + return false; + } + + return OnCreate(); +} + +// static +LRESULT CALLBACK Win32Window::WndProc(HWND const window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + if (message == WM_NCCREATE) { + auto window_struct = reinterpret_cast(lparam); + SetWindowLongPtr(window, GWLP_USERDATA, + reinterpret_cast(window_struct->lpCreateParams)); + + auto that = static_cast(window_struct->lpCreateParams); + EnableFullDpiSupportIfAvailable(window); + that->window_handle_ = window; + } else if (Win32Window* that = GetThisFromHandle(window)) { + return that->MessageHandler(window, message, wparam, lparam); + } + + return DefWindowProc(window, message, wparam, lparam); +} + +LRESULT +Win32Window::MessageHandler(HWND hwnd, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + switch (message) { + case WM_DESTROY: + window_handle_ = nullptr; + Destroy(); + if (quit_on_close_) { + PostQuitMessage(0); + } + return 0; + + case WM_DPICHANGED: { + auto newRectSize = reinterpret_cast(lparam); + LONG newWidth = newRectSize->right - newRectSize->left; + LONG newHeight = newRectSize->bottom - newRectSize->top; + + SetWindowPos(hwnd, nullptr, newRectSize->left, newRectSize->top, newWidth, + newHeight, SWP_NOZORDER | SWP_NOACTIVATE); + + return 0; + } + case WM_SIZE: { + RECT rect = GetClientArea(); + if (child_content_ != nullptr) { + // Size and position the child window. + MoveWindow(child_content_, rect.left, rect.top, rect.right - rect.left, + rect.bottom - rect.top, TRUE); + } + return 0; + } + + case WM_ACTIVATE: + if (child_content_ != nullptr) { + SetFocus(child_content_); + } + return 0; + } + + return DefWindowProc(window_handle_, message, wparam, lparam); +} + +void Win32Window::Destroy() { + OnDestroy(); + + if (window_handle_) { + DestroyWindow(window_handle_); + window_handle_ = nullptr; + } + if (g_active_window_count == 0) { + WindowClassRegistrar::GetInstance()->UnregisterWindowClass(); + } +} + +Win32Window* Win32Window::GetThisFromHandle(HWND const window) noexcept { + return reinterpret_cast( + GetWindowLongPtr(window, GWLP_USERDATA)); +} + +void Win32Window::SetChildContent(HWND content) { + child_content_ = content; + SetParent(content, window_handle_); + RECT frame = GetClientArea(); + + MoveWindow(content, frame.left, frame.top, frame.right - frame.left, + frame.bottom - frame.top, true); + + SetFocus(child_content_); +} + +RECT Win32Window::GetClientArea() { + RECT frame; + GetClientRect(window_handle_, &frame); + return frame; +} + +HWND Win32Window::GetHandle() { + return window_handle_; +} + +void Win32Window::SetQuitOnClose(bool quit_on_close) { + quit_on_close_ = quit_on_close; +} + +bool Win32Window::OnCreate() { + // No-op; provided for subclasses. + return true; +} + +void Win32Window::OnDestroy() { + // No-op; provided for subclasses. +} diff --git a/windows/runner/win32_window.h b/windows/runner/win32_window.h new file mode 100644 index 0000000..17ba431 --- /dev/null +++ b/windows/runner/win32_window.h @@ -0,0 +1,98 @@ +#ifndef RUNNER_WIN32_WINDOW_H_ +#define RUNNER_WIN32_WINDOW_H_ + +#include + +#include +#include +#include + +// A class abstraction for a high DPI-aware Win32 Window. Intended to be +// inherited from by classes that wish to specialize with custom +// rendering and input handling +class Win32Window { + public: + struct Point { + unsigned int x; + unsigned int y; + Point(unsigned int x, unsigned int y) : x(x), y(y) {} + }; + + struct Size { + unsigned int width; + unsigned int height; + Size(unsigned int width, unsigned int height) + : width(width), height(height) {} + }; + + Win32Window(); + virtual ~Win32Window(); + + // Creates and shows a win32 window with |title| and position and size using + // |origin| and |size|. New windows are created on the default monitor. Window + // sizes are specified to the OS in physical pixels, hence to ensure a + // consistent size to will treat the width height passed in to this function + // as logical pixels and scale to appropriate for the default monitor. Returns + // true if the window was created successfully. + bool CreateAndShow(const std::wstring& title, + const Point& origin, + const Size& size); + + // Release OS resources associated with window. + void Destroy(); + + // Inserts |content| into the window tree. + void SetChildContent(HWND content); + + // Returns the backing Window handle to enable clients to set icon and other + // window properties. Returns nullptr if the window has been destroyed. + HWND GetHandle(); + + // If true, closing this window will quit the application. + void SetQuitOnClose(bool quit_on_close); + + // Return a RECT representing the bounds of the current client area. + RECT GetClientArea(); + + protected: + // Processes and route salient window messages for mouse handling, + // size change and DPI. Delegates handling of these to member overloads that + // inheriting classes can handle. + virtual LRESULT MessageHandler(HWND window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept; + + // Called when CreateAndShow is called, allowing subclass window-related + // setup. Subclasses should return false if setup fails. + virtual bool OnCreate(); + + // Called when Destroy is called. + virtual void OnDestroy(); + + private: + friend class WindowClassRegistrar; + + // OS callback called by message pump. Handles the WM_NCCREATE message which + // is passed when the non-client area is being created and enables automatic + // non-client DPI scaling so that the non-client area automatically + // responsponds to changes in DPI. All other messages are handled by + // MessageHandler. + static LRESULT CALLBACK WndProc(HWND const window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept; + + // Retrieves a class instance pointer for |window| + static Win32Window* GetThisFromHandle(HWND const window) noexcept; + + bool quit_on_close_ = false; + + // window handle for top level window. + HWND window_handle_ = nullptr; + + // window handle for hosted content. + HWND child_content_ = nullptr; +}; + +#endif // RUNNER_WIN32_WINDOW_H_

    p9U~G)w-shgyD2t#>dBEVj4Z5Elc^$ zF{c8wuo;ja<2VAy3KszNDBl&nLl97_Ge^7>dwUb{;rr|H)1Tal*I&ODH*X-nAnoay zF7LbGy^*|Vr;zif1*i6)u^7WVL7yi-q^%*JbIV@qd6-6e@>+15-{&2A7`zxx zXr&6}x8IcS>S&UaGNgz46QAb|>3E*$_@`}RS`E?!pGF1wW+xeG9E}_KFaBio+Zun9 z7cRyjLii9Y+ogNF=TP59v>=cX4D-RZ24J9!d+~6200H1(!}xk@8*3}k-#&`zP9rWa zT#6wKf_t|XqeBlOBatF}`J?f71cgxhG$I9%40klxL+~xd z?&@N+A>t0eDEqykQ29aw(76>7oJ5!rNT2llnMz}j-#Jgvbi!STmcn`DJy-cmWck}P z)pPHwKlwKmdij~xM0@qSC?E-is{*sChiL}9bG}R24u)4e%qrQV;EFW`5x?~X6mnTd z{@Xj4!~7UuV+imLO4oavHPV@gne$IY2VB5i7+nq-?f^+()ZdANtxfd*ZtQOlVt3^b zL;3(4;3)TT1Z{Egsd@6it3KXA0q`vqN)L*<=zUsm4cq~WxQ~Kyo|lGS4#gZ&3iRgo z1?$T@xn;%9j$a_OVc=*^#q#DsT))2(*B4h}?85o@(|_?V;t&4(pT*TzUyY&ecx<3> z#QP}p8H@88UMq79h@MWFEXYvElB zAb;ef>wHmgN;Z@r%lS_br&u__VRBo!ss2}n9Qh|o631i*0!j{5ZpS(~{I(39*(;Sf zTONO0{p;MBG!iJx-fHtwh#6I0(yu%3dw%Hl&Muxi-wtbVcc7E(2NpF1%8}L`n#HRh zLdiDZ+k-ZSvwP`Hoy#6shyf#RJ&yJ^Q?NU^dw_!PZSJQ5==@-}F40(X;`RB<@bv6N zY;CPa&!a4$1qT>Z$a~b;bT%+fqw1{r>?Ae@63`6HAImal5$1o13fYnso z`0xNF|3SR|-B07%2W1F+W(oz=nxJj=D$zFR_80@OOkhH>>?^c~q75y$$}<-piO9s5 zGNr&Ve^W1GDpPK<2Zmcg#mDd!If)G370>+iTE4IH^%+;Q@ptYWm-!jJ)sTlvbsE6I zC=QS(vp88-!+GKSWW4s}&m}#+@ylP~gl{5uyRo;^#{e5gsUBePt?<2ybOB>`2wCk8 z2M+&F<{UQ_(caEZJY0Mb_wPOcPwVg{$`3;@g43DXcet-#7utXx8f`}nkoEQwNEO1uyV>?zJk)2+r>+oAy#GWM@7movSO8 zU;L(y8BTwk%p>L7 zl&X7gI$EMER$gjvIF~Pb=Y%#eFL*N`Q-rg1tseS3-yzQ-T;5~HaDQUoXS)p2gz|^0 zG9$mY^+kT1#H@#Qjms6CLQ*}?f}}O;g`5V7($0z9!8`G#0Y8e~9oPx;U;bJ1+hga? z$CQUGyKf9>;V)@GMl(5+*J^gxY6+PB|y%Cx#hW-O{*IO)WX0t1-~RP zO?8{~_7Snpqf+zSnQy6iUTZ{VpfwsPeCT&(X`M1p^%qQ(`$b_4`fUmk^YuM{^eA)1 zlza0*{|>(mIm|ZJjj4r;(e~`nh72fddf8JN`+InD+ZciU*hi@E;0SE2I&2@Yi;f+i z8j34VV*pk?fHH#yphGWq;Wu-;3B0ogIB7=gIavsSWKXWWPyOA4q_fpWJF)x#>2TbM zW@{c{GZ8Bof;S#*#CtavMyKcE5B}+&$2b1N|2XIQ>FJH23_TLijgPl6{`A#WjsZt5gwe})n9+UBqzzAc@r-B%x%kfEIB26ejlqnB9-5eq&h!HK z!vM5Lcz+86a09{a>ON>}cTjo&mk(kSCE`39i*Jt)$AydYF*`pFK2~!p2*8d&B^z#Z zHk~)5z*h-5(ccxG4*NQXN8wJT;MykiWjm%2)=!cDSbX%scKpBoo1etbez2Y!$#*pr z(x^r0LH8QSo>T0QpDTXlSskMs)~bXiB_~ufB+RRr_&Me2d{|xTXUTKk=1D;VU8h=%OB`WQYfd*F$`!<-wM2A@>~SGh1l&xd+CQ^vJ8V-t;>lV^vr zbFp+d@_X>0T(=j0bN$HKMHqlnF^;0P2T&QSDU&B>ScaJ3znvn&F%1?3nTp+>;86@e z>B6~OLu&fb4m2{yCo_=bY}~>4`|jU<5P$nO_h={i!-$?TaeRdG2H$Q|V_WT&@@fxs zo}ysSANAO`6M%NQ$#Bl8m7U`fmYX3x0-mzZ=oE6eLme=T4wVncj*k3T^4Cc0xRXeSG;MnT zFU4qgB0ES1yEutBi^tI7A@bex;qTqu#u32@pq?%tn49Uu+?2e#8^_`&1+Fr|sX?@n zYp#+9M?Hwrqv)IxGP^JX4xuA=AfZl&@QfU-WOtFr?A+7X6qj*4JMq!AjrigBKaRiq z?#(>n&n>lbL;zenN+sRe;|UZo{?Gw9Pc01EG~21D1|hXdm}_&$2PZ?i03zvu-)W4Q z@NB4mX9o^xb!2&HP2rS$RYH~Ui3~m~KPge;Pg*e#f7PK*pLGNGX#`To+{7E4xk0x2 zBG1_VU;YOp-|o!L#LUIZx!0G&Z=+C;UAKqZtHiAs(lgvWhM5mzYlDaaMi0dFcqjIE zdnizt6oAjP=VNd4Anqb)R!{_F7teq3sc2yYw&y2f`pOmX;+}&SsL(|8@eq%PQ9f2F(Zo zOElJ@{$6G7z04@P7X_4W^RHKhmQS-0-cY7*B$W(Q!te7H5?Ep2L|rWu>sOa=0(r=Z z_}PPsN8{Y7>~TQgIUMRrZ+FcfN6AN{7efeFCHgUOe10xEGvnY%uSZWAZ{6V_JhVgb zecXc{wvJ;Dg}=KsNKeio*YU|lTzYCD#*hVr0gMl<99EK6oFkEEs={z8dWW9vh0{hl z@+=*Vwza+3!nugUF`kcM3@pUXemm~2?!`OT@5cvsw&D;^^Yh>OllZfL{y&Z{fAde^ zDTIzn3nj1D=cdy+aTtb{ew@JU)-lfiJBA*LM+pWhJhoK~0BU3DQ9QbLKaG^8MilRh z5&*uyO|v0GBCIfe{>k?wucJSBpJl*!Whlm9zEX%7n)i}=I)w8S< zM!&`aF%R|6cM2feRSXF?BK4XM3}tB)=4n5qwYPm|+ihd^u;<}7EpZINJmj6*p<(b1 z;f=I-j6*ownT!_BS!)c34Fk*hIfH!!I$r%K4gqd<47M=`nM4VCRNQf{)VEhm=V8J*mI#hqAoV$Q?Io$-;&JXTU2NgGk2`u3T z&fKTYt{wG&261i=G^yb21pc0l)wPNE(GPFLzxwaqig(_^xj}?C z;P*I0=eVCKjd1FLi(ZtZE-*2;(X((ar$s;mqD9<*EAb$bvYq_VQA?$tQC%Y(s2gdr zXD=hayz;cBk(~BI#^pCzN<$Ry_r5daV`F|>Mc;F^4FCCFR?qFe@?DAk@H>N5uA|M! zGNJ8kiu~*cl&_I@fUq9m0FJj?*^8@T=g_yKChblWr|c+}*Nmb%P9W@xiIGO@? zv(RfF`LT&X55EGabl9Mc*5pJSA!7zGbbIbXG)Ql6{}JBc@zzQVV^19K9mVGI9yGfb zOH2FEJSs=JnC`^FG~e!SP!~5~FJ_UaAQky(M+cb^ZI2xv+s;A8@Izc+j8<(;;JB*z zB1Y@eJi8Qk?i|G%zqlVi_~9p9-3G@pJCxl8&yJo9Vd!D=0N{aiOTo%Zw^Wl3oGV!t zfLgLl4H&u4j-R|M@IM>sC&iiJTH(mQg^uh!#1`?M9BO=?;QxvEYyZeE(V5>X8K?#K zhAb%yDzQ)yR~l1#=hYoNHS^mQ^7g^o`$;K zB@|-tng~s#R^@0ZWgvf^TQv=Jp(wHD5DM2KbQD6vG3F+kdUj;t`HP!dz1Z2^uO`t8 zJMwT3FAY8C@JO)WT5l>4jt;>%6q9f;R&W*{IVVzO#q$ycr{$M8gk%w>=9!J6USJKO zfuU_LE7GCW8ir9@;CcijvJ5*l@w(ch6DW}ePQ-rPeXtpy+*piHZx3Sr@A_FKabb`_)ntY>T#S0SDy78y0Rxsuu*=)y#~R%4n)EjMJ6*f`P~3&P;>sywvpb7 zY8bnRnFp=AVyajLg!)AU4b>YFprab zxP`D3@&*-7(z9*GxXBX%5NO7-g@Nrrv8R^{z7g_GkHU&hJbbtnx9_aPy?bl1g#j^w zG<7bRy&yV*Zsa=x|2YhjTfJKM3l>%sf`vAqHR+*yuQ@O<(7Gx5!@zZPG5 z?JM#5&wnny_{Go1r3()0H-I&A9EUPb<8U#KE3uIa)=?U^UdE(HemnQsVBIs?vjBNG z^la~$B$p?8q;4s+TEL>>gB~23#{hMRK8N8oFf)%r$0K+jqdInnI1amqu|-?#xmIs9 z8dH1=-w&OOd$*6{dw=_J{Pn-S7N1G5=>*P-x6g52wcOt7|%w+6LP|kvZwm~*MsHM@rh9Jd{OYkEb}xP zQijN6XTmA1fh!YK`INlMaJze4wvo9GcX|qo^Sm{2l1qo-|IRE%{S=1a2=ezJ-gxVF z{PY(e$AkNuF@@vdLZaM1k)lW7Z)ItYSWuj0mO5~?SYc$zJWGQI8WH~DqEg3%qW2oq zEsxNvf(DC?Oxl2+)D!9q^Kvv}b#*=EnjJl`HzbTL(p(_VsaRbZjvs#iTKx52{3`zT zJJ;gc`v=*>-Bl;H#}hBsL)_%q`pO6Nhxa;V{#K^hNUKzI?kO*qHlOnM=Y+Tz!zJ%_&pY3#F5i&Cr%+3V1OkBcGzq@W-niPxGCY<@wCHLwk6q8mc#M-HqFK7sK;!yEqiDef4YchkyEy zWA^E%5cZzUd6?bzJp|bv5}_{*Q9l{2rr&fHoZCaptzE#qi-Cr?Pm-rR(>dw8q^Ewq zI2$SfdJ?k1B_vZ*_Znw)IQ#pv-q*oix+lX4-nb|}Pp;JOG-6Q8H%a%_&u>azmPL}J z@j~aPZSuEt?C@G2hswPJAFXW0_BI|hAGxwlt!es%C3z)nm|<#hep9w-4K;nH3`v^v zcfLAlhoOdn-}$LVYXc+O{X8282!~%Z%C@)nV`XV0mLKh4Aa$eNx)OU^LL9&fzycD(tfT zMqIdXKAwL1YD`a0Q!r-G0LKg?P=1ltH0CN4mrxlx>G=7RD%a>uBcI|-FS$t{HUIru zQ07)?i?e!46Zsr`ra@`X5^}>Hi>*zR{W1!CzY(pG+1TG2jk`Ct;yZu+llcDMU5i^c zz&+o(orpBy)*VMKG&$S@8~e~mF*48c0VO0(3SR2qyU(JD-}StTwVbG8%1H0egqkPL zu*N?iQ1>&k=rj~uJsIQ$@l>W+prnDl=*&oklqW8dGq_it8_J6l&*=a3)<#^1hK`0? zF*Y?Fy6~`4!cY83)<86)^pl<-4~x-bIwE-)bHNi=dzfqJBrdX(i5FEkD~B_G-lby; zk!d_S^0d9xOL^e2v(uALAyXD`40hs2ufGR#F0R^_+kiSBIh)17!{uI?v78O?7Gxz zCmt-Vg(BiuXQMN zsxesMkNW$&reX17at#ch3-kShUbMR{a086@p%t70;aCUrsK3jyth0F$Ps*>1f{fe? zOR1(xmcg`!x-S0CxlI)8qOQS#4rrO1G&ye1zfQ_w_F(mP8nLo?7(f2rwfKMkw{OO; zegQ3z*TT$fersE7QyR6@)sqs+rpX6cPM#_O-P?1ZacIwzp0^I*(J_twdxp9Vb@2Du zX9dQ;9_n;Yrp@&5jP(+B?!o79`FwuvTpE9O?>>l6KehE5qXQC6Anb%yldV{ce2nk$XM95pTV*92?6nMsz+p^uXupF?)+N z`VNmA9(Un_vB>?iyzykH+j$meXL0xMB_yBJeEIJl6sL7QPsZOA>UPyJVGEr7LVPIm z4v>vH)ehskh1O`Z72PpAcp{e9H+7$5a&{rcp&1QF^EoSvy!ROuDM+u%szZHWSF<+4 zd@fxSdMNqiZ|amfMY^CEWk(AqRW;!572A0VQXhFf35|5((`zg7;~!j$*Z*!2LlD^p z-ONlx%uY8+--134k{)uDEA?HGi3ZCPCbhgMbW+h|8nV9~zP~G+g~Pv(@Z0cxwx~Lt z?J;IACo$*2S}74f0O6z}IZzg}2xun+=R{Zll|!xqjP#~5rd@^5SE20e?WR{SH8&o! z=cjXn&ZE&@3>v+1pnIEgh7cAqwd?xR`lK8^4x(1QD}NN^&hHcOrE#U}+F?$Kq9!oo z5yJd%$nIh_)ur}a^2)-Wk~WLg-c%!SB@6&z5^G~af)vRX)Rn{z1~ z_OmBW#>;loW{szuB4v#9vk*~EL7<#xS2=E zr-ah`Q{L6V*Qq?YudgK?k*lO!z9GtgX=3r#Ht^1BV&l?$TD0Wb)JB(pAmR*15tLp1|Qg zO2^HqQPd6#I*jQ_5Y9Pr*MXn>@Wc4m|LVhdfEPc8z;|wNZwK5C9C~s{E74Eh%8i3; zpZK@^@@x)o@!b1jXjs0jwt`-NbEw;YHazy5GL1^aA{9?VrZaz{GR;^A(33&F%oVWm ztcDcz>vWuSKc2?f-P`x$onO75d#`@})tBP=XP=9YKKL-+`qi)E@|Dr}%GX|v{{D7s z@2tiA!c;u}!c%-J53Lt?!eegoJU>4lue|(f{G&hollX&g{c$YJpO57wPds>##-zrP z2mc@76qM~J+=p;iv{L`9YU0lN`XKR6u(xj%0+r44ka})%f41sg99Jmk8z6pMXtChH zhn7{MG9y8YOwZvlj6wO<#eaF=zlXUVjmOerKi+-gZoK)^t=Oy1A9t&gIL4Vk5D7_s zV7%;Q9>O(yeUtu#@hMKFYo`d+_&I%7>QwWPRn5g0{4TM4U*oq<|Ld_1<+pfG+$%p) zhWrBqd88~-5E2W1PV==ad8CeYJ(LOZh4a9Ta7ngFc__}5GU^8Bzd5q!v>I3I_i)y7 z)@`H3GaDiv&+>hd6*=e4_q_AHSF3hvLln7FUinAp7r54WrM#A~s*u0==`gYzm`_Z2 z3~U45re3=kr;m2y&7a?l@Ba0B@zyW*Vq+!plqb)f9~o|A1|Vy&Vx9Zy+*7wUE1g1Q zAWkcpS>rru1sG@}6dc!~z_7%}LvHJ%OsIn}NWQ6~@65l%)93$wqCxQ0F?-^b%~hLn zsJObO?1XoR1*`{EkGfkLjp<)o{ieYI^jxEkAy){ zA0b4V$I--t7(j5Yv}$U$gScai#w0a+)?I1gR)eVdHJs~k_IKSr!;|R@Pd*bhPR17w&QZ$+JJi>cIXbOY?C$Qx-MjbW z(Zij1_L-;S%U}Llu7G^wjd#NHpTGL$SL6BTu7*dvJzQMORh5ZPvW6G0M_o> z`wzeD?!-qQdB*9F<7Yp8GnO8$$L#D}4)=Sy%Gj7E0|4VuzUg?D1M!pq5tS z(w)X9pZWXO)BXQDoGrViQ+eje`pNSe@WRMWm=O&usS-FlTb3Rv=dN@b- z(KvLw0dz}k6S#wL9LB2`i6CDkEmEzDK#gN(>)KzaHLBp?83bvslODa6savdMs04N0 z5U*v}RsfRDp(I+92VwKfn5Y-PgV7V5Uwq5jS~q~gf@s1xnZEna+H)$ydB zz{#FA;RRGMjFKPtP5TlCrTaVaV^D(oJ(s$?$AUNjRwsC^(pjp;ooy1P+4DqRl9VQ3 zdVrK+Phg3*18-CBNO(KOm*iJ1mr4Eo$dl@3#ldC)nE9U`pZDGetb>j*#- z(x_7u(u<|O3Nyn=dcReWLBAS&xMD=glBau zK^mxT&jdM7G#KliX+w<%^GXJWCy%(Vg;RQ%*4N+3&n2Ddb*A!+Z+;sSZ{mdP8?9k@ zca}Jnb25dE^x)NySM#;9N?z)hj$b-UItHh(uiI@>>w2naOIvG4AtQ>ujf3bGA*1l4 zMu4mO8g2oDG2pQ9^weBno8~Zee+S`@;8uv+Ta~z$4y!^>;A24qSCwX@%&d0ew1#=P z|NF+z{-%^!U(>U;UEsnxJ{eBlgAdbNr<#7f_v-Jxy}g{^zP`2_&pr1{eC;d0AIpzc z;+Ma8GrHZ8_~!4w5Hqurv9Y-V+=gC#BF$L#HOfzL+V z#Atf^t;P7o&p(NO^P^wH8^3%vwzhVFqdkSCt}6Y3d-M^dsj6uePEXre*WLHVV)${z z;2NcEI@j4o;#nxvbeg+42#3t8(5SM)(?pD({?TY2VF212?2w;C>o72e$JQYFdpHQ$ zD>#WGfVF#EPBBT=7nUR+8*>QT{0r_&eJlE?>Xy85QjgQ;^>04OXq`)}!`XY%SFtd5 zo%Zybll+PG@4V(GeEaVZ^ZU%F<}d5Zl~-Q#KHGL0D~%40?ET?AJm#=}>1m^`$cHq- z(Q$T~$wZNWAJVvvyCF>V+gJc&k62Qbe>YdPX(dZ8fb&T`0$$f03z$c?=qYU z(zsgsX&p-W|F+@m_rEO^#xp832~|;N%d~#}&N}7;-UFCItilzt&i8fiT}`A#pc=f- z`B>yt=4P1(FZebM3fit@&vLydJXWtN)UC>QNh=a5`K4Fs)l7M>Az>Xg{4mT9+>92( z&U8)a!>VbN7#xyrv_@lkdNN$8?05EZx&?rahX#$+GXK`7^MwjLYA>$f6FN;grcB$3 z)$d{h8DY@di9@%CK)9%5n)WzywQYwgMtS151l#&#_>4ydc2y|wFTZoBgixNHUh8M| z)mY;?VQRZ7dM!9B@5(1t1%R_S_nGet&JCf`IoL$^{P&5Aj`X z{GEw)+r^P-EUVC1K0Xs_;aS>I^HboMX}oyO>oMiHDRnAtj6I#n4pyOx&J}r}(hUT% zhetBq#72TU)t@-=#~J;_0WJiRI|n=r{nzjPRuRX+J&l{w1UI#_QNWod(aS9mWM70BnXsK1rzUNes~A!#OQ;cPT7 z6zHh5sR1Zmlz2SUqrUL}%y{-vN~2?AI4Q%e=y|FHwBa1F%$Ha@vGyhO`%VR@3$8At zDRf%q0-g=l<7}vZKl%J@@Kve*nMkwi`;z9@7@`Du>K_oy_7oSN5mOJ8`%GV5<%^73 zKmbZ^H##@o=~DKNjbH?7%s0Vl177vpL>&*0_)dA?Kj(5=P7*E&YMHP8Qp=6}Afva+V0knRRO?#3lSVxy#y#vb0+myvcnZyiNBgxB_s%QUA+Ve}e+?eX zudC!9fCitPtyiI;(i!0Ig1^$PI&B?)S9mhbli&Ztqj{dqw<@R#b(>C&##0?q^WU&5 zU{u(O@tpT1fTUtKE5yV11BI+6b5YtPpr9I%BC^vRjfqM35K;&zoXb1U6P)PILF))9 zZ7@EvTi;=ch+T?F6BDEzwilS@2_Ps74Ihm|w;bre z>s~34LVqBn|OjhoqHa)RcA=_}0O8`qNm3-OKYDwq9%IJ9$pp zjENENxf(OC3SQMW#`LCBNmtY(T!lC3grC=PuizGcD!T%gQoahh^z`Y(NgMXIYHXKt zVNZ={gK7E51_5JA#C_GMa{H9BxR zmpNqMJvW|p1>Z>Y_xCFJ(Efa`+h@JZQrHw2E4MTRt#0;Sq#P^JAdTdq_N1+24VT{( z^SdX0OMmtr+iQ?Ld)4#gQR@S}Z`BC%^P>)y>~x~3l~P>D_{9qOij3_>LK4w#<_C~ z38S&ei8LlJU%pDb91|0s@SuZtoJN1!xwaj9%=ogJJLnLZx}78?05eZU&{@>*G6-rp zvp5LVJkzEf1JY(O$ZVT=s6tLdNh=J*bMn5l;%E&t;pV=c_R(wsSFY|&IWgIanfVFo zS*9gfcDWW+m&gZV7_prLe5(wQc{+gu$N3K9;*53wt9U1Gqegws!ID3#D9)YFo_nHl{f9(@veuRw>oN+DammPgbxQtFcNAmG z`X&ytt;!quinQ?KsB=f{i3e=f*YpUvAi~jJCd9?GdYEu}i$CZ0l+pe8xMk!m_S!9n(HJ6U*pa zf%j)cl4Q(6s(AWMi9V~-J()Jk6z|^Wv&Ta%d+Lz~K$9_Po0xi9La>jd6wbY+h+P2> zG*$d%BD{^ZLcHduPlS&|;JlSF&){=kuMq*{F+Wrc1JL;yj?ugOnv@`sMXta>xyZm~ zM&3n%6+$>I=W&1;Y;<0Uh1U7QyA-l~H%z`mfe<^|;l3Ax-R0O>ze{`&yPHd~zr7wu zy*=uKH<3mbLXU>z28ju8+wJP-(gSLcPHH5d4WCuNIz0K?@H^8~?XIuM&~QaZ(JS8A;;WOZUCYZ+VccGR;^uWE&Ghr&>o#YQr1OTBZP~anOg&+W{!2ejtym*+* z%cm#xuF+eSm04Hy%>AJ-G?XO@73;r$u$x0t_7LS*hSNf?s!#H?Lk!9PXyFJBTqH7w3fTtUrpShj(LlYdspIcUOGtuVGS?WYTE1g?d)- zI*Y&h-Pur{mFH*Q)!&_cUf=uk>gDlfmwcU+}ddjrkhXDMise#sf(Tdz>|o6H--Ar&I`1)fDYQ+O(H zpPNZ4H1o>uier|Mdxx@;#*BPl?u(J)sDQkj^-eG*CEQY zY<*PMN#)k>_qYyl=6znE1xuvSXDkb9D!lrR8Cyftsww!WqYgUTuSz0jo zaVh)n8=j<*1PbBolX0zw7In_tYfs>+tw{p2L$~k_L&w zG8Zy$M}k5d{!m%n^Sxwjqtk|pVA5V z9g$|7&f_Y7xAt+tl>40)zSrUF_YZQk07;}6pJMlZ8%LVU(E)Y5L&LQ2wBC=y zr~E#Rb+Ep5)9Uv8rg%2gd45)Syv)-&oRuf3_o}P0?3q}zV%!u$z6jEKxKQxtd?zFM*gg$Fzt8O!5L|W}>#=J=rxi>dBSTG;DhgMREPD?4 z80$Q}J#I5!V%<NI)8`OHHWWm%5z|=26Gr75+YHEcfiS zgo2}dX8Rw@rutC{x4JHw)@S)#(Jv#&CO(&-T<`;d@$9ksgD)vVBx~>~L`K7^}Dw#=8s8BC6;y%+-jNY8R0m=B*&gzlQ-_BVvmr_3o9A?OQ9mPwuS2E{v z_?)lHYOJH^@9(67n46i5ZVN?wfMamn%hM^MzaA^MK8z3E`gz>>^n*Cu--^kxR*d8R zO21|J!}^vW9FwuAw=o3@v3~b>1V+@wc=manwp?jHI63)UM;||t{>gYsm(}mbLVUiY?2$6Gw7f6;ewZh4N`Wh9Y2n#utFstDdI~s#oHk z;5Ttz!$)eehsOOVn;1k!oG|d0#v@g$4J6ZMm8u|(S-Xt#FUhP!_Wb$u#PB-}r!X_4 z$D{Q+4brA<632y}>fgpXpE{PhoQ%2^3HBM-Rr`9_cG35L!WZLjijE}c- z+n$w`rI?dJT@<|3AqC;0$4>Sr2 zZyM5pRCd^trz}n5fHv`6X_xRWX+Jv@I+FsDRCtnb1CbuLRptXyk5OQTQRsQW{si3bBn1*205JI8pv$2Fzx$$Hu__A&#R%IZ6rMW_HrYl!r1;O&G z#xv1+S;dT{&1D0B%KZ)TWF+7-VxhSzKicE9Ze@vuCQDf*K1Q29qnZ@MJ?Z5uzVW$p z=ku6J^G#Su_xZOJ*dX5~xm1N&j&QV$+{oEao`7SK+oS6o4>2v3adm@!ngYtwKjK3p{z#-2z$L6pp!bJ^HwVY@EQoB7_ zF6qR> zKl9tnt8P6p1u~5+LakIfgTfTB_^cMbbz$Pxk)X`Mw&h$NfvOO4BIt4Myq-i16cgZQ z1#u0KD(@r?p4CdK2yc^BfUnZmS3@!%R()>gg5fs|vPF1!2JK)yVt+jjb{1pMTaF`# ze-E~>JA2Ut039mUrhW~sb}74|stQK|S&UoZK?AcswwXF|oA2`dlZxUroUQNK@SD;b z9!pRCeph%54kQ=3bvSvIxT=_#XHV8E+mm<&FTkOGcT&&l_vttFm9!)go4Htr#~I7Z z{629?OpGh6B|;L(fTg|)92v0^1k}~{8eBOfkq(}R`=wjq|Tad)wMxJ3iH8vU@yvMc0oAK^1ei*;{>G$LMhrf!0-PM@D zKso`$pC`e%b}IEB|~IQy(lqpd2j|FIK*ZsildaF_(-fLA6GE1j6myD=UWG1=cl#u z$?_A=@NK@UXaf9YZ=Dd~cMhwA_j(SQa!ItOOrUJjB(BNQYUb}!#SGatK5+Q`G?*8m zl0l|9Ti3I}yy|F@I-abe{|(XbSM2Zb<| zD;17Ym(s382>)f6ih&DmO1_4(?a$9hDj%3-jmNqegCj{f43<5D#1RcYYD>8qrhb$9 zg?kM*4QIDEISb>*L!qDF7D_!ztizMP>u{RZ`}*1A*E$qKs{W>aUwHC2h12|hJ)RhX zu8i7ba_ zpA{^#=mye=*6R7$`WfoaYdn^`F=)WE!@nAT9UK`uk*r@irjS~bug;>oUK~O@N5dL^ z*axILl{=OL9i%KUT258=8TnwS>vgtn-q!JVg|puop3JMp!|w{eDNUW7D+|ImprXB)jX|%LTG@3cEQO35&;EfuU~&TdfN|TYyD1a ztlWx&{tCi%4~4!TqZo?~+A*T_xS$LcP zwF*zd>URZ`|9!tXTL(j3_LHBVJ}>WzKq$C2ct)zqwf2HipaA*ICbJd>!XCVFJu!@{ zP?JlBe9V_VtCVGJ+!tdVe3^oes$Bgb6@g{fK~FT%ZiXnwx=mSao;HRX89n+7DuaH? zYG2z?gbRv->oAI-A$=V6xZjKR@P2ehp^?4Sc<}L?@$>KfCC1<1#e+K^#%S!t%tSNB z+SKM~KYNrL4l7aKDeSTuw5K#$FeE8^j}S6CH?OR6<{2NzR&}(Er`}!3H(|rODwiq} zc<8^==fY9(TYmdpM(SjI63#Ch} z(%X~@RJw<*N9+YHz1j|2?H}yL%F?6gbQTe^hi|HG|*I+trDy+gb-fU*J!^TaJ zUnR9^PVsmefl5Z}PJYs77GWJq9_Cl%D|uU=C+qa@7_wK{x=Kr#=jl}+>TGY)un%>bb!>7oE#Jf1D2G8`Nc9^Y~Qwvy80g6P_3PFYvAaaS|#h*MvejfG9&I^^?3m z^9>J`dAUfHGL-MqSIc2vq8YeIO?uFQbg}6%mD2CCMx{N-Oq?g_pv)%xeDL;c>E<({o`S~QkGgo(>*u!_-;s3z9Q z>pWBxmXS=wZy?EY-kYvsuIvQ_#wFh(bc!L)Pn~`kSmmCJPW+f$o!jHw(t~~I3}wbw zCM^?SGC1drV3MapgPu7QZF@uJ^w!JW;I- zb-C8+EPaU%4~h31+k2MoO;P6d)#(8)w2<$)`Yid~z%$Y5E2F(g^8V?(G4mu3`7kwr z&nOddfOp0Xyx35ABQG%6b8$fxRQ83=EUzf}6NR6~vGVJ2C3hN1J}QzdKYyHke;R5S z8S53+zd3%kQ2zCFpBUTaI^E$oe_=jWSC@0;ZU>{y zQ$alQ_rk@?F^}>0?mHjF+wa_uiHS*`ozGRh+dW)jM5CZM06cf^Jd8Kqct76%;1+r9 z;sYOJ1YX9ld^u*O=d%4&E6Y!3%6YZ$p~Jy7Jbhmq;Hf5fV4IyMp7;`G@(k?~v2Gnw z+sCy7nJ^MoDsS+SvO>A9R!=!2o$wo87fz<<2N*82mc2aIi+FSh@f@0OCAU&mT1KG< z^^c#IXdQV>$UJ{XFwJMhIz0Kjt}Fjf;%^Hzo&Kiy+e6h(U|8B~xsP9;4CUSF^8_`; z)&Uubv^4k z|E^evCx08v@5wUHhWdS-=E<~Y-#;FGSJKo)dadKx06b}wsO5{I8cbmnFd{!C^_d`` z1U5p2E4&A=wZLI^5TKxuK?QIF-WPn9x5R(Twb;w&!w+uO1@l+&geA1<7 zsSv7KQoqkMYAmbhF+T^}G3dFvcR98;7cl@IMSp*lbejmWeY{pzhV5ezkhQJX03_uOR+!5&pj4SYBP`XVv9w6k|mI5YKR0VNhV_ z^NLaRT4id#s^@#6{tJT&WBw1P*Y-qPbp_K9H0G4YTsRE~1+Vb?tYRzg3%#FyQ|RX` z4JkwoW>eS4_Ib^`6|h-G$zOGyi8FAY@1?7%J;~#xY=hG)eD3hF#!R8h^3q)V?PPAZ zbQsR_Ii0&hI*h;K+*Lz>rYE0N{@^H&^&*3TbLDd1y2=>TT2Z)DkGf|f%LAu%xzc1& zn*8{T$d_D8%yegB>Df8+TX^zOop<%wXG-2IJ~4hudu^9nUR=Di zK$_$D=%Wvl54!EKSiJWzrlu$2-1+%BpP#;d{5^M?ZKY-hb~JB@M^ZPd|+zcrlutcJ8~`>2xxl%D7UWY=iW} zeR)Q0HTZHUu%^diK-vQ-Efspo$0zR%=2eIKp4_R87%K2kzGR1i%*GpyNR4DgK?yvs zhN0??1Jy_AbkKt=^l%zWI9v8_3#R++QC_NRT(yDcXRl{N;g!NKC7i9>zilMc4w6@5 z>hUMj5bFA#^adu)0nv)&vIk8(Y1r|?>e(yo$V%2U`G>P{wdyrIYTl^j)G7T@=ajcaW_e7Vy?>c!MyGD64~i^w_@Lm1h7!sM5w-*0 zC?_mfeljG#63_CnA?xAulB}v@flVE1y#Jq&r)Ov$1||RN&RuI$Ea^ zmBU8sc^c~gC`vpjv*cCo1%^Vl{(^^z9i#UoNwOjby*Ys_BO0NDipfdGJyig}WaUpR zE{Q}d9h8v`f?Y3P#x!K!urL=Zlo^s%z`5OkqQGrr(#Vj!WE_ip_hGn_asnNw2cRps#*(N*;kbtI{)UEcA7Pm+mABYBkJh^ih* zzQEV1)AsR3XQq70X2E=awYUskGK?dRA#!Bwz(pxb?*426WcS9$((| z*JJV4NAb?jz8@dI^^@3HxfkuDUUYE?Cd6-lI}Uq0=!t&L3H6|GjSGzo>uy;&N3{pR6S`yJR3_WZ7SC^7V`aRkd}q?*>q=v@buAR`J9O<9K6qLX(upxqKFJ< zzcJ(xtiP>ON;WVpUf|tquWbVcIkaQUS{k?}lKBSQieFLakPCh^_h;*wsWWJdd*Z+$ zxO4G#sEVEzRLX>ZwvDxM9W^~_NCxr78?6_VzqVc(xHSe>AHC!X?IX}|3g?neh6TZn@S zeYs7J8!6k?v2MGZ5CYsh!fIuC85j;?a(p5-Ha4;iFFyZ5^mg~+?YG{+`8|m7$%vg^ zKMtVZE6-ktKmX_dIKK9Kug3hsWX#NrMXNIsd%F>vTgP$z#!4pT-~A+h{F7hC z%Gx^LPsH@>M0A}FF^(|^3={TL+i4;>Z>o}GHH^d=jFEPj{j!pRj+_pY13<eU21lkS@|nrw@&pb zU)3<=T`~~)@?VF+Hk`Co&g&zFIH~iK(r95fdSfjes4I1HHw#DKJNjH8fUdguJtX^B9%qgwpw%_uR z$?CRdo`m}P*`d_y*RQ9+Hl)FAF;v1TOQ#hmPf++|nRP7f5jO=_XAlyHS}aO+Gw!2q-JWpEL+%Hh&_7M>;XU80$Oq1`_S%lU4+5&SSw- z&xq0;vU87090K4x351FyV1B1#2ALeBz2e&F#Ucsu_Qc9ED*A} zLK#J4Jr6M^2Q)b690G;oYWtd_V~?YvJ`{W8$~qXrJ>=|C)-beZL56W9tw6}HU}p2t zNUVWuta~gAF$!0rh7Yg>g``O`$oF-q5o9QYQ(de35+q*o8K!h#tAZQG&9P}Rm??Q; zW|=q5;~fS}>QBClM!_xlxDTXV_<3X+Z-x-uX%J`KNJ0In=?TH5JHY!Syc8r^OvaR< za-v9w5NaVj3d0F0ZD@O9ox`Un(6BTAp$4jBcn^GR@m)XL+9d5ns}l_>YCgH`3uW%@ z@5J`rI(02WW1b|DJ-s9S=#F}n7VX_%ieb2?v^J+cj*{z{sX@1=iNT z?zuFifI~nE3uA$odD||(7p^?CJV8hPsoZ#JG?=GKqZTA`g~q)xhfNe{Ch{IY7rCbw zUzbfiq*?wtxm(3$d(x20*YE@$@&UAe*npm;f8a9!AfxagHZ?Rxrf7zt(KbJt7|PH9 z_Zn){oDT{dTK15d6vM@KImFq4uH*rYnCy8cot}9f;m6m80xqC=1brSg3mw^hp1ZmH z(1jM^ur)iZLW!S3FmZJ>G$EJ0j5^WoDiwm&ex<=_AQjP76?d0F7 ziK*CFU(F4$&!3x3e*g5tPhxX(J0_;aqS0=}qxIc*u(}xMuFS`auUw6V^W)KQKRsmL zmWo7myQ5sLDIJT!E0m1dW2K>*F9jq(#|0z^a1>>55J5#G+p06hIhW9o z^5j~@8r~_J$uDWyt7WTCt5}RMp4pZsqR;ch7GcMCiM#4I|4;CF5~;+=^-SauQ5xrJ zJuEZpES)2t%MYRjo65jT9`K*0%IRPqb-|^Gv^q&0vJu(cUV;Kz049+ATtmu*8Zhe- zias#ra)<|EmuLGyNO_*8#t48>ejkH;hY_rw`~Dodsk3waFcOXrR%3tbVQenni2fFa z-~I-|5J7W@k%-Y3`*;XgsVQWPiFi?Kq>POGgQybW)@bpDpeh_+Y6C8MYy%#V=95-=-*{xm)rC?kxmyXG8g9a^;u9KS zofT?n{27x@PVbW+2xsyAc=T;aQ{%M`^-tTI;;4F1U(MR+Z()>^BJ(?YN&gX zeQ(}|e3j|E3hgo_p$K7L8mLkB0RHAsE9bK@pJ&ET1d&AwLtRFVqqD)Ebu7Q1OjGhM zY5Y^lOnS+*ltM9ete+1wh9P#({uP%x!^aMlLz9OG$UF?_oO-}NIlH&J8#_DO7-o&= zwwrP5=Ji;|AT+P3nd#_GjHmqZ-1Xfaj?(sKv^t~l-1AqGhwN!|o0qxS7Vj|tKrP}i z#&|Y0JA-4tkAt;ahVC&23Y}12qwV3EbdvbXCT3f7kc*QH9gtARunBBOpsy5*1a(3h zZv<(hR!}u8(l9ep>WNM=p|B;Bge#%Evs{0nb5dTr^F#%6XwtO#X%$KtJ}?c2pfpLE zd{oQa>N|tq8Z*tASmX6HoGS5>#&5E^Onu zH+fXRQJz+eL3+}WXF7CNtBU@Sw#uHwg`Q3WG8`k;lch|Pc&h6uUaN8~)9AN$dU&;7 z#n?NIhWh$s$ma>CaxD)l+N-{=zpY`TM)cNLH96DNaQRJ9{>woAiMQlOGqODMJ{t}7 z^)#5zlOdl~Z9oT~7Fga^nPj5J-(}&(Dx~=2T@LeANH>@~ze6jg^`E$vG_cTfpFZdJ zAc00IgDWw`M+l9wq6dKKl{mzExJzAk$fL(Qjl1>O-MklT%b&*P+U@A?En@`q!i7Pj zR!9R9{KoUdQUD3Xhdhg=|~($yr7%b*g?;;j_N?;PQ3;&(M>MSnmP~Q3cv)&b0*TTL$J55(`R20boHN$H z710@ep1f{e8lAkO81qm`rsvLk?`xctcPb@eR_IJw=@u8#kXylc9O1;6huV+uyN68M zOT%vlgKc|zD^^w?A@h!75*l~jsy&1Hr{m+}xtjOp&6_!O;>wjPF*!4l2A+mttJ99z z1=^3yoL<18>gY4?LC=k7HahUa5XNDr)GGl+8=b-f9V(_v&#Le%II;~IvfdlSnY`ii z&kFT(ufHiulXaTfiNubxgjnttBR0fq$L$1P?w+nyJ34%S{?OjfT?35>I=hjrp2z z`u;SQVBY2Wcr4G#O8m7jG5>P8q&pK(vV8cwM7Xlx-M`^2L> z&vh70uJGLNVPpTs5zlX@~#)_=ZxoFSeJPv-YzsOx)Dk0+8#gbINSz$?Q^ z+12;rsJ_pbNz!;q10XeRp{eqn_bLN!Kdb7z%awwpO(u0KA&e@GLlu$+V6N1bPH-R& z27BankocZxQJbUP*nDs^-uu}P;>X|l%lPR3N7|n?*|sEiepuu@=b7(3)UCQTR{`B< z0BjLdlQdE!O|SX{GL!L1FM84NB0-Yrd+1FjnI1(_VzWuH$!3#alkAB=0|nG{tL}K_ zoHKW3>i7G5#NI3OoLc~>IL9;Aioqko-NW4@R;;!E@gKF>%ct$FJG<@v_IBIV>Ykss zvm;*?LgwJLlXU!Y2>)*cZ>5V}FZlraLcuV`UGl9=(1$>LC(?_KhLWk9gI>_B=)8zW zUT*t!-B05Y7WoB>G~(CMxrarao-hx^ry=J9r|IsFlpa%k8E(pe!EqMkHu%TxP)Xk{s@b_!Zq$SytSh> z%1#t~pv!m0)9ZNcc#uWwuH!`M6#B?KzpaaW`8KdloG*mvRQa=4m$TFMH|I-}f4J2-riUGxvX zx!S(}!w=gV@7$};x2$cnjm=%=-zI%?2iAT<1K4eU{4~;P3?O4+gpPES@mH0U8+l{w z+%@m(f^>adkg5wA_|4&U`2Q+t{V-~iQ1YifS}2c2{RRAGVW1xIa8_@p zzdp9@uWw)38sT={tDvk_S@{x~r;(dwD&OG!aD;N*!<=u)?=TOeuN7xEaT1EA0~WZZ zHYzA@)tiQCKfNv-3mQ#B@?xJC;r3Xj_v5Fof| zTtr&*Rd_wF+iAvm1Z;@WtLfKa8c=T#q?|v9*6F75vbu40hx&H9h!;C$CSVA0=&qJL ztAQiuPF_0)4T`PJ;_3T{+0A)WJos=FuTQ{n0**uYbl5JAzHHCF`e}RiyOJBYZA?b(rs3QBgh*L+B2-0Bz$4x?3EXFK5Ltr%SJw%ihlG zpy;)TUxgua_IrY>w-cp8k8kjUpp!Bl`&QkBK#XzHDnpm%c(Vx1Xd_{AU9>9TuHrmK zE3EUPlRkK9`np%f8mNQ2Elk$_$)b_dH+l@Nu{=fOxj_YQ_TR%-=h{YWsUT zZ3`KG`QnHL?OCq3w>%ep)*gTPc^0|5yQKL$+RTsB6Us3~-hTUS;N5nBGq|&}*WP;b zopy43)=o}l%%|42c9z@D-gf)=JKt>o#=rGHZa?_($L+(9-f#Q&_S^CCX*)f=z}ef# zqS;-&>~6!_b>cN;+d0+8KW7CO>cesX8833{HN*<t9(NJMXB#)bas_iaqh5e(<-u~{eTT?` zKm#%6;Ef#idyQ6(-@G=qjPhH!7jjoHr%2vTVZiJ;S$vvy3bFvZ6p{k)H@ zIam+%E-f9m_00=9c-YQx_+C8uWqbM6uks0xjdtAb?<}>Q)mdA;K5Lg}FWT(nfcQ8& zfIbe{%mEkrN`HL=aX7E`(YAH|>Z8HLYCD)X($d#%@KtC9H4e}Hm4ah@G6RZ-F^p5j z4kiuZ$T$@st}@;pq|G!0eabDuD091P(e-9pg@urge52QweKpMM+L!83(lhp+Hw~k_ zp_8Y_i+U*|Un38Ta<$^n*(lz}35Q0O6AT)@HE6kwBj^Xb_2&Ho{Thpg^A}&XpZ(E) z-v04_{vWrW{%aYvg7EI+1l<$c7VGP}k*fi*pS6W*GDvZN2V#3OCX_%G>E_GWY$Whu4*J z*d}Y&gc|#zErY6rQdKzDqlE>oX?ch0?IdL$MlsJO-l#(;JYGT5=mx`(=SAJWekd7S z%&k68UxSa)&*^G;?-yaAKoLpuhGH#R4hLc32pa0XsD^90ZgVwZ7dB4^Hxe$jOPj<~3&9 zQaImw_nr2^M<2BPyLZ~b(P8`I%g62ci-Y#$*+F~!wOBZ_owQ>4x-0^j?#Ze_ho`dVvH~^kuuXHN3 zSxFBb{}dkUh@Y(aeT9X+86npJZaN?Hf@ED)`Ovqr3nqH?MkqcEJtZVHbt`Y$_B50| z?)YxmRm0cSv(0H3vT(b6;ji>*-tF?Y%NUJ&^+4U( zIBeJFU$&EjU$vvBpS07%FWc(XF;3q#aMd<()K+|B?ov3zr#x-T#D3GwH;Vl&$+B!Z zb-r+-13~+7_*A+R=MKS)^Vj=U-wVrkwbPd`+tn#@;ZGl2un4%2&-O>h)3+K~bHnBV;}Q1g zU%l}2YTqqfj$g@xV0rr;xsNP3xrn=bNP;OHibkXU2n&1#mYJ3tP(j*{)txK8+hMdf zbv_KkKo~}<{i$)+oR`0e3Bfb^J{bd}271|)ue=Nmke5>(FhY&JLbVC4=SE>FLpG;O zRI@49!L}CHBlLy=lMAN#J&hu!4yP^mNuyq%(#qj0XDrH^SVI}`+BEtZ+L9Ti-0!{i z++UR|{Fcuybn5#^RXOJ>RA=q({&s$|{0iMB*x%i}{l41HPR`ow z?39Jlan1t1_2zbV36Bqt+uqK8d;0iA`^lgF1jlf_-MzcrHaFMuGKe3L{@Kre*?#@$ zW9Yt#Gr1pl_{Q7qoLM zr#vj;0k`i5_!*Y&IX@#@e7Nb1A(a!5a$}HNN%3;AYuVBbS zLFFsMb4MpZIus0?p_|vrLkEL24Smwpn{i-rJ!EDIa~&g4bF_Q2ebWKs0k_JfY?u8& z#~G~+0xn4pCc0$&n&3byP?QSA7&=ah_YTIvNi2~Y24M@vN{}w}XEMb+ANQ)*P>FtX zLPdk2Z#a4F>LvFt+R=+&wZmt>#0mVotzVzCJKJmR{`Pv?U{DuFM|rHbgkfLtGa;m{ zcvcK&@A~2-ANF0ou1^H`Q*;$y(C(Pnj02}br%)|7w$>NBel?a7f~g=-jA6)xGWf&D zNtdF{JcJ%SJpwYN4S6>NtcTRO6<$-WXgb1c@boa+`?@g3Ih??G^U`KouV2eT>*zKc z3V$vaH0vSvaSW>5jUY`(8xG&-r`H>+YuVA*UMHTx*HfH&3|;%`ar^Y2|FiZ_|Nh@^ z|IOd~58L&@vvzNDrMe+$>zur!!=yoV}9A zg|VwK7>_;)uM3vx#VJ$#WjN)q!0*L%>i50%Cp2=yy*Sk$a<)`YF>@NE0y?M+@=M0IVA$e6ske@g4eSH95 z=8tXlzTT=Ty>4SGU0&r?mQk3Uu%oYo=T=VnJ`Iy(TH=m5jg;ceEfp?jEN*a`wl+73 z852cx5LY{HciuFVM+Yy!J&V()-pWyf8YUwrmuJ32gTKmPHL+q>_+TTem2cW`jk{^>vYW&02Qz5lfRT|PKRt#9%235M3r9Q+E0K4lYSfK;g(() z`Hs^*(tYj+jJz6C$x>YlBTTOi)BCd9i#BU+-t5CP4BP{zA!EOh_8L50Zf*yw72Lvk z`(AqYcBa6n`?YyO)ty3~6iB}tG<>yO+UfB$RGN-{#>{!zhxaRUqs}*)f>wm3Drv5?rSR@~$`A<;7aN@~JSTR{gNm5-Z>H zr|tas)AsV&&)e+et2lr8IWJbkSEs%SJZpX&VS|6G;9OBLxr2nJy1G22Pr@Wtv^n0WlL5e!T1YQcE! z?Joug!!XJUF%pxxVEMEm|2sa@)^N%SZ7Dis&T9|3n_mW}UgA*{u5kQzDRXyyvwilH zKX3ow-~SKVKmL#ZllJ&0KWX==zYQ%nfYsS~TcrbAICuU8+%@uXaR#mF@;QFv+1U)d z8eG~s_c(w?)I;jXXsILmAzd z4M%iEqdm8n0`0&XLAn&wWH(eFoKtnbC^H4~s=lH6Ls{e0=|CGcS$rzxuJIW8(=c!) zPCs?Zp$~P%?|m9E5G(J+KjlEjdaak0-h*z6O`WqXwco{vLhI}P=53`7{XzA4+6a~t zr!ehf(WvT;bc5H6o!iPEfz%{dJL(&H#dSU$O-8;aXc^jCB|{7@YKK$i4wx{fBjr-o zJnXjPN4}qk30`1p zW3}z>Y_z*~_M*Rj`LkcPKmO-`ob%6j_U^WK-g>v~?(TUTMXW1d#V6?ac7yPfI0fRP-Q~3kDPq|y^ zuZs&PZyFaPjsG{{M!&r8z@YLiSIVSM=95uSc1hMocR+8tJf~@1@a%Lp489s%+;L;! z&M)iB&(a4~kM_Xn6dq+FcQ)R`kPU$;D_4>&KwZw*&MCPlv{!~Y{tFHiw&J#;=$_U1&Ehr^&HU?j$)rJ8%j7>w(+w!XC4 z)=_pFE4GPdx_Hqpj=z)jz`Xzf|MW>jK~!kRFF$R|T(8Uyaqy0D2+rE_<#`?n`e@Kk zK;>H@R}7{1&pf{^c#RY2uY?HK;-s!W@PB=YWtyE4>#_JK7*OHr5OxI+EoUb~D4FU2 zdKgUaOr8d55krmuF{gSO*CCQ+Z(PCf9X|GPnG^e-%x`=H|-}EMmnWpNsZm(Z|Q_?Ah~n{_I)1 zJ~(V!9)L&I)-hIVGo0`N@G;+g1c?Gax@PlXu?^+O0i4b5-=cqC2VWN|zi{6u7J-50 zU53b=TvwRWjBxvU+)k3`VNN4pEG`TKhmi_9`LAQhD`C+m$20JRK9l?T8J_uI%NUPv zn@)oS2J`X}*d9c==XJBu4v+ZoHwZ~t6 z*8asG`;%}l+MACawYT1Qv%T@~VSD_=m+kq}Cy@yq57w)3Dj$E@+OK}q+RuOfxLwRv z+mC+yJMCZk{Xb}Lz5P!5uMyRuSXtr zny-x*hTJf|WBAvJ7yY+mUo#%TK1`waS%;wNjWo)Vk{u@SQ?%0hxTnGN5k@-+(XkcH zeTzvLa&1`9^(LQh-~V;P=*s9<_04g5UFp-1^w^_ms6LMR;n#$A0zFNcuM1V?X1HB% zfnS^DwLE-1ADzF^HTH!#*Aw_nVdT&8bvXxB5$3NF!W5mLqD=^*V4JS8s8t%?C00lU zH5i@FI|1}L{dqT5lR9qKGgn3{Z4(!D*-yjFp114c&)eA{@cgs3a;f9T3Yev==lzy- z+Vtj8M9zc!(uDpRN-08$BE7=Va~JUPQs+-+&z(Qd&zLT-+SXAF4v-M%XR356Gqwek zS6^dNNjsjbC}~tL+Bixs3ZsuPu~6f#@h6&xS7rN^gd0IT11e$cek=s#FAJ{-I92lU z&u!d@u^u$K?0{^9 zoCDI^uMduC3L_NlhT`U4q{ba0Z{fotUy$yheUvn5^jVIKdbVNy=wO_STvsqh7(qo1 zX{rP=G5T0INM8^sA#@sbQncoUSSQ7*9H6Wk=Qs%IiL)TAzE0_qIW>{J$cXJs@Q#pr zVMK-WWzzrZo8=a9fGPp{k5a~p_Pti& zG4|ljs7JXD=8w9;pYrA8xmz%H60@)&-Q7fY8n-sq(?qUfBrQywpZJ*(o=>aPpa_UBd~S_|m6d#*p#pT$|kUg+af8 zCfAmk^l9V|9-CLaw@}g0V4mqWWQF_4rFmZi!D~H0T=r?~D!#7#Z5aKU0y+=2bCGe- zk@;D`&WzBfr)l^GlN?-;9Ov%>#dYwj zcKq^_Haq^Jt;~+v*3v9zx^w`2xuacEJ_2d?>QP0UG}|OS&KVBk3`fte-d|q&-M9X0 zBkl~k+lP~yox%?J38HufXhcAVZ$Lfft^TH+u2`grA$fxy8LyL?QBo*f;?IB)dhvO^ z+i``3K$6pAL#5B#4BBzMXybOck<}-(K|HtnXDA~~_!^vxdc+xb&*)*`ODtb{zpIW{ z-WQC?CEezdYz|%Y(XBjILHV;q{vL>rdVQ(G$HS{0D;N&^1;GDujH|7&OBQh>-A7vK zJ04Gpb$K2z!ZhtRyc(*FX{d6;=~>7?=EEes4xjW9MyUHm!oW4ID=wIZv^_yzWs3fz z?6|iZ3ny*#wZOE{bSO#ZiF}KU-)eLc#F_EwJRA35m4Uls{90VELqEm!n?qr*7q|ZM zF#1$*JMDIUrA-%l-p_RaGLh@Zc9pN#vQdu#zw@`^IX^UU9_ta;nPSSL?sg-R$}H0C*NrfdkIFYLsI>oofjJ^->&m| zD7o%Xl`G?w0CA`365D6r(#7P0`i;F=-vP9fITHeLvCh=#FJ9yxBb+mI5>|ul=Lu9^ z&)fO&uiML~f6)$~{k&bDJZWZN|N4M8#s(ee(mpiBj{wu)G$`td;Smm=X zItld0UA{PQ_M1Ms`{z!gzs0x0c(SFgHq+yvT;33-zL0C%ru;bbH=HAz8v=Mk2nkbq zF5*NtLh3=2+x35QxT&;?2aC4GwPAW);bz^@?x=U8AK}r>@|1+03!Fni-e@M1Mm$c& zMZZil8fA-)RW48URDw!1JhzGLN?C%~b9F8-&dxAC@{oQOyP^Gz`u*&nV7Kd6MG9dr zMtc638NT|cIOA0=h=Okt%o{s@#dQm?Mg#W%Y9(!v{;Dh(9RE=MG?>Pwll?VS5(fRI zA#F&zuAE+1CQd=8f5z6!(8I1$D{Z9PzU2+3*;j)pnNN|0n_-l@sWcY~IAKZ?QE;EL zUlelM-3+f1VcN$LZr@i(PwSG9-}ii7F~Z=rBOLe#lq{E=Mz#^5a>Rz=Hm@&OaC{a< zX2iWr(ubn8enB})o(ZdSVdC(9@d=@h6HwRG&aE^RU&jlKUBdIz<2aDp+Z%0j)AQCB z;Psb5HghKM^!T9t?596z&z_=B*Jxk7=rez9i)!IHzCw0xa0E~vB1 zCCBo5(U8b^yX(=)^L)R+xgk7o%9ryB>M#wJ)^A=L7WK#V>%wikx5KpUY1y0UlBI-xVc;q+;}EzX4zJg@agE0a zCMRo=-P0%d2r-CE1mz-W80r#waaI2Kq=S;7bbA();{m_veuUrT^evJcBedv^4VwIA!D54k1E#??M_T3I#689~>MqJi zXRawQl$1pW%|=;yVIXxeKI#m|$};jh@z;dPTR6uf=u|KGRPr^&Q~j8N`8|_h*=hOP z_l8Ov^p{8cKB2*J%pU{yu^VoD zN#Rx)e0W_Lb!vP!VT#{in&D>pqFm9_{K}aZc}*Dg=XEC_&dQsX)5!L@)YGRlcpVJB z*LC6GGC2N+zyhzacou#9I;gsnes-A~FdPlb_-N8V5z-0_i+VkQFs`R*w?pd9%K?-A zPQ&2$UlwkcDg1?V@a#tDi{{&5(Weo=nr0~c1Gw+~A9No)8GJVVHlG&sU*NmJkA8nU zEijSi0k$zMGwR-kX_+Z3Yg4`WtAtF#ISobZ6j;G&@@*U(F8wP0(Oy=jt`^ILXwFq) zm)Prau<*?AK8 zyfe9=@GR2h)h#DxTn~XWcs;!*44MuYX?0OBzfGADSK>6joj%^^8tJv;VBUa5odw)Z zcPvE<$7I@676uJ^qq!bsy|>H=1K$8wwT8k``&pNvqYmImFWiN%`ZC?!95`>@7u;5C z>YXxVxARTE36{-bMA=i|dz&>EDt|aOMobZhPX z5AV14-hVScF(*%aJ9u`r+8(|6e*55qZ?vtgbr!;B;Jr-!OX|;1^ga$1#@pcIcd>o? zGsbW`3|_x3)R-2r;f8EX!YE?;G_UCSDjvhQH603efDJwECUhId^>|Er(~x&O87F0k zg)#22++Q#o6tgAzW!+E0T~zf4%9 zFA`OK!q*1`jCoda{rXTmeU;~57ykO?D!yGWV^x1n_*6Xac>;B!V?%p)+~941`31k{ zJS3Lqqu!8*!d0-~m-WYP-6+@F@B9;2fV>+(VsP|w!t3}ql`XHQFy8^pLH|q($xw`v zVLnb7Wz09Y3!t;*kM@&^Gqs$bA-XN{UU_-Gc#Z#+D6AJ9+-=q<=fbNPsj7dVg4 z+tusdVpa}g4{!=qJTk~{`Epf zIgjT|ty_Wyl@?53@W!Le2=+bwPw=ApQT;7}3+E#|RexTFOYzUI1CfyI)}>uSk8T98 zW$d;SnduWsF`D+z2~YwlKGG>Svy7j-Si=C3lyj!=3~FaKtmG3A;OvCasfaVkt)i>% zX}lP>WeV)PauR1SuqZpOJ6hs?F$p))g6MT&F}}r6LEK~01{gAIdBDX0?+q#x1Ji1* zaD)+RR*IwOo5woLO^sL5sXoPYlnY^lsk>(=km!C0a7o$C$Wq3@}LF(41}z z+Gotf?tVl;Lfp{Pddg%6(`)p_i}}t;Z%?RDV;l-MW9vdTWIpvkcpJ*$yO}@E2s&3~ zi4K>aPdaC@>tp3j?k~2+q`|9b7Jf+#*t}}p_7e4C!lCfRpE#e3F z_uCt9?BK+;_W1GB_W2jTYVUvac6;x`H{0C@yNqJiPEOFt@XbfS?jYv;BCwp_5ngS} z>wXH0PUU&2qpru;nO6gxqmV}4jKoTInbt@i;nFw5mEa5BfcQ&G&V=R@?ez260ONOK6b|7dzko(loi$ z^VUMzU}p)J`Vo#jOwJDg?g?}#{G>@4N?Z&^ZcrBsJ0g& zy-GRLM+L`EEotKg_tGNtpombiP_j|_p~_k&?R(wRgve8H8+v&fPE2{}T#t;w(9`3{ z&E;l+D}1^Yr`)JN=}&Ntb~=o3`+E6O1~0LSTXuO^nN*>>I7+K1VHI``+tbL^O1`|3 z{XB|ZF5!5^(L+4WSKG=JE5Wu-feQ#>&2tPm_13o9<>eY!*V~3O=)zsTXTV`QJNc@; zeD-OZojh%Ol)dBczv4+=o*dBb34Yo!#6Qp37FV&^W;_S~?6RNXqi;yem1o1wS>4h> zXaPVRATJ5{ST~P$ef;ds9@l{14h&dFshfb`p<6`=jq4kOT!cP~EC6mp?rhI83NPgZ z>57@lb<(LCnTF^TC&#}POrOFusAS}_-!>bMM-5?K1VH8&lk4o0PN2-May}aMQUNJP z4t~o6LVoX+T(IO`gX50E%+Kgh&RyE!kcs4q_=0h{6Ne}uWYj}aHHai-5unJgx>Z2P zxEYWyecS&!<3~FG;sDSmjcB?9|5j;VGW!eB=d^cD+eiMY2jj}lNl}~jYe(?Rv!1er zHpY3qB?;(t9{oEuC+irYI7lXzFY;NDvW_L{pEyV}-F&W9EW-GHUuHF(F2zgTl;@9~ zae_!@MKR|(;%I7rUd@agX!}a zyn{y4rP}gscE(^AA-FrH%Q_J5%rE<9DLlgI&PfgBT^UnuuUFv-JO)-aHjoACIJYDk z|5Xt3)bGIAcKSy`7AkgW$+9Jj>+T@M(Si2W1ZCv6AS4s2bu%f%^=o;meJ_{aa@hC}seBL@GXW>n? zoN-ih3%MDxQ{!}LMEj%(<7~8GF&!oKmtWG$H}#yGAWR!D%$GoK$AKuAtbgLtFb~bY+H#>^Hz=xe!-r8tO zo9KSOUcKfx(XY#Xxq(aQuqG{(4e6sEgEyBE29l)_v`{`4eA22gev7E)x}`%vZWW9$Tz-lJ9i_VWgPg2lxPgWrfm{)8E_SPOgfm~9|)GzpOJFMKT_6A07= zbLNuvTrfEA#0BcMZo3_CR3~_@k+YfO?|AK2cv8i}TeD4#zPvu8|HvBjaO^Rn>L|)6 zS()y%TeKIX6&i&CW;yl%nMB}|Mn$I^yr*=* zz$q7D<|f9n>J8ArlTs4HducNdp`pRirpW)`P`DTI*M-F@r()ST#_uGWuT09iR0g4V zQw0^8%9H>78qic3GOxIg!seR4^SaoD2(|ap&^i$*$4k6y;{*f3CO)y{Z?JMN8j{2bq+C=@jx_aRR~_quVDL&HYhWXOJ)mH3{@!eVS;DgZ)KJsxkuh8H|`DM%b3Mvo(R-l z%)dA~YH4xBp;jMQ7mmpnjBR)dICBw1;ySC4;<|8>^3 zwl;yS@a63Mq-|{C)cGkG*8w;JOL%xoI0n~TUot*8Nc;2(8oL~f5gcq7`Z2nt=Cz!k zii(aIO+_F|j;eC_HmXaM1PVnz+ivl^g7m7ZswW+b_ks(~@J;%|kV==o>h{ii>p|W0 zKTv$PoIbdHne(~FCB^oG*!vD86X1p>iK!e}2|m*1arNod^jopx0_>NuA%Zv_5sW$swArtExOrF3o-~j? zo&UhxPNa-!$au3KAP|&={Mu(z#$yW48%2b@uD1XFSoH%VAbo%CR@8Zm5 z_2zgq0^XahqZhDWE@3)%IEY>Nq?C|II&HQGWczk-qG+pPKh-VWk2SXX6T zG0Les)Y+kH{N5Rywtw<^vme)E!y|V&hsb7?UP^p zsvW#IY@4g=?cKNDZI2$@3I5MN{h~ej@+;W9)b8%>we8K-c7Z>cF)){v7k78v9US0q z5BsZ9I30u}$ML$UtOZ z@b@M!q;JVZ$-Jm35|DSMDOZsb(nh%{j)A9~MC%ov+o1C>9M7sFjIy_IcKUr?EPZ`! zFF^Xh{L#GSCXinXv3=Sd4zGQ%-HQAC>DO6YSPmLagETI^PsNE1{JNl;6x{W-?g%s! zFbtfwRlGwM;Q8R`>tOUZ*T_gM+A5eHK7(iUKl)nn<37M`px=vUgp6N&f#Q4k8J^l{ z`f6QiOa2^?ksCaeKg74eyt#bz*s|06`kwLt?r+5l8D7MxKVbA1c%A$ty@uPvV*CkH zB9FBdR^hPR1F(WK@6HXaKq z%<|gaIzDHK{Hk%;^D#yRzRDM_qKCK&2A#~~Ds?J&y{PAPeilz$;2gN(u=jewD{rMW zI8Crj(n9wtvw+H%5A{ayG;P45d`Agb-h2CA$Pyb)>~LkNijQ_GuoSi=4iz*L+NSczD>(&rjR_&TiY@-fRa42krUu=WRm=0S9qsYd0^7 zym)-sKKtdT?dey~a11xw{W}lZ&Zf?zpPQ*qFdZEq1h>wH6!8)8>Nl6p56yU zQS)*^Uz8OtZ-tD3QptqDP^#w`NQkYK-wMUE>WuMx z$7aBs*X9o}Z=?f5#wPmG?pEG3E?5|5`MrqUsjBNPV|f%SJ>12rcFbGU8M1UUo;!NV zi`S8#lA(DyuREmOkq3-%jr($pyJIM%jDxJOxT;{@bgt#&&+;okY2tZW56)}3BU&Bl zU)*5KhE(HEH}B$SZv$!hU))Ks8IUhcDiwB z%5A0FW;KvFcFjIbWFY6O6<6?fy)|cvP$;6uE56UX`raEJLb(5JI!0cfNCj&Z9*i zxlG#<7!zQ*nj4N696%n^&|jSfF%HKs3bMB;FDlr$VEqo<3Witd4sbtcItMBgNMCmj z1e_)sx&h>eFP7!r^7>EyEao~6m2dd^(#6H>tj%1YI*&96I$FT`#tLPY+vXNJauXcu zmpEYZObs+^XBXG)1jp^@_`GfJthP7ayvtZ-?cl}Zc5!aI%z=v;j^IYSw|}o~t+#gc z@}xcf;&B|lhd6-S>pKnqu5GTlo7mcm7cbh;QJwu$1mgH@thF`YM&8_L*9^qn_X{T1 zEDJdT^&mkpf9TU5A`>01wPf(UGW>(YrVe!O_3T5@o}vph^N{=w@|$7>7LEgHC1u4z zNTD)KBheCOktcrVraY;+ByXr=Ho<%6lJpZ@+T+svxtwz2aOxLaNaNmgW6OynxRvi- zxB6^sTH()k+k)eDKzZw=--WX}170ryaYP502BcpCbzhNX!1*)R5A$@&rEIlfnpowP z&DrN+=qiuUnWOVJf07d3rgZM@o5^Dg;u`W1{i?7Ns>bU>`bTA-I5}VI_mF97V#^2q z(rtxrg}?Dn><2YRze9Irfi!{6R2#`JeLA3YYVovaH0pCL{c5^~p21_jJaEi{WlfV8 zqkg|P_C81k7;eQwuGA&Q;T^c*Seq_B?uX7(p6cH6)mNJ-LItIv2u1#6@O5oDohB!2 zPcA~^SXF*wwdv#6-oX%2T;&#FdI4X;!1=rK=Za3bKLdPR3rM&S+OtP0Mkitkr4CwN zk#YPa(#RIF5w(J)Q$nZ(Q}Oe6Hzhgq|+U zg^V655Vlh%{!LqiDW1Am#ko1&X3!4qQ(4` z_i@z7pO=^C~Dtt zo(X*Z^l95z+iV|w@GWFuxjlXQEKhzOJh%sLsYQROf5{?2$jdGE31@H#FE)>aEpRJX zOujjeIUfyOm*#TJy`f8KzvRWdGG35`>lB}a;*lXS^qPi|H-g!53<*ZXi#{*Ho8t8d zmEU2)yD6mJfPO!Pq-o%l6VrM;y{`Of`?WjAQ|P$7zTIB!0#ZLXhTPWpO1?{8NBuzB zwR|l;mGSv~>JM5}xx!UJM~}Y+oqy#38k<-Aqm>TzR}`t`TqnD77HP_4V)DF>jg73} zswouF6JW7cPQrSKYT5k35#qoe=Xu zC)B_b+cA(qT4-I&NGE7e0*|vn>g4k?R(}`PtvCBj)DiHJZ$9IK^XKpLUS1wi`6Tzg z6&U9bhpm*H!a%GtjPrPbf9Dw_913s^V>N%fcLGhv4;YV=XlhEj@RN?I4no@ZM1tAy^a8YD4T0|o_P1TUvMMa8sY+<@>W zb?QEX-LZ}GhS8^yCOd=I_6N;79&v`5#sP(ACBx6#j8=>yFUMatPlNp!bQmywv}!vy z`emLpS5A5`d7!N_Tyz@4B4h!a#?%c*-E zFLv=3Fvc?snD@6K**z}W=dxc*yW+)wIJXLD6i<~=8Q+9T5C7#uFHdDKm|x1F&a`n& znu;LG08m-fd9!-)pn|wc2I`=?_?TiZr2WOwtmLGHtgF5ysiiqt~$u?;MxzbIeRt}*?t#B8(dthJWi8}yFz~@Q-e~WCxYs`V&Ij%7_ug)2 zv*Y%&U;eB;dwJ2;{S9E9Lu{kB!cvgp!KreTE_Vtegl>dfU@REm2n&a zuT#IEIal#5sk5Km4ZttssMo z$r*jZLg5z^$r3TxWQb?zoaovIzXhlQr`wVv#7hMfmd2!ApK^ObSwA)64j^edfH?<& z1E4{3$ALa%w^66i9Xu7I4g$_yoW!#Fb8x4^Pczs{#3K+xVfx%~DNvM%P^xffi}*GS zp&I$GFIV`2x8o~vRvVRfo4i$igf3^VPMn@G6iDSWh8vTw!c=f&zU8c!G;XJ5=j^-@ z3a7YLkhzq0US~`d98S)2OoC%}gkzL;d$cFbtUp%S1~1JnU|g9xwAyK{Bb5nP#S?;4 z2aC$#gSHXpT?gJO1@fnOaGUOx2BbR`C!JRO)IgmJwSCKp%d|T4X8FHLn3lVJ{W=_j zpRU+Khuq%`)>}9cx1rK|$@<%yQAt%9<6eJ)M`v)zhh?ODbbg{%4*Lmx*`$FO8O z%9pz_H@pum7;wd;btsw*++2I#)2dJ7zWO##GnSx)QQ!Q!SX^gp8HZ`~hemyA!pE%} z8yjtNYrV~8_0i?}b)ur}8cx>E-fp{d_kMfxtvA}c?|;-j`u2C*cYg3&?FT>po%W;O z`rY>1f8%%CkN@WHw;%l0-@p<4W?NoeYoC7pW&7gGqvjOe-q{S@4v!Ao>e_X?|6n(; zyHh)cFQ1>cU;W~j?aR-;Z12DSVSD&+zkT`DLHp|QF9>uyy-Md_)XAwiYFoTExH({JgYJbe$4C4 z19B1CSJ{!@SvOCsc{1Q;dG&2%C9yJ8IC@keGBN56sPeA`_%n8ZM!&xvsl<$Ka?qz} zI<5yFs$Z41fDtUSpx3LA1Rh6Dp*m*1 zEu_Nk+3oC9ElwKD%Inyay7n6}*#$g<@i>1tfj$DhBCf-!)-R{ee&q2XCUM|uRZhjL67_fz7BW<3-$R4BD72z16d?%KvTuk>tyC5U+u z+z#|8xCTz!R!GD<($mlRwRhEzVPGVHv`@e7N8a+TGWJ0W61?^Y@LE!b0ffAX?KTd< zGGqMq*=9#Grl(5ehSd)A@UsJkOl)GR+sc{dYM~!8Sc{$WdmLg81f`!@=2baSFIO>cO8o|lxw=^99WdAvuyR4)wu?q35;^- ztj4kg>t-1WXec}jluvEYh^zG>Belw;jkF7>z$iDsdF?m&LRZ@we1{^6v(wiVr0LEl zUn+>1wrv{J&`;%PTz7Vd*YedlI`WENJ|Vbd4%hti*Ls$nTR@-sv{(1$(_F2#`*@wh zsw(9rbB1)Wrv>nvXC2#29rH~j*miWAmI)b+Zc9CAY?}Ix64I)SJNO|{=t{A%Ba>Yk z(=uN>cu!-Qw_wSfvoBmzyz`>&BM;tN2gG>+MC4N6rx%RFe1BadPeACmUsl-N-D{5? zzR|w(o$s{Y{r$h){`SB8ueNV~>&J{^r~UGmkJ~@~r$1@`?4SQd`^6_u+RK;d+P2w_ z&sux-;<)|dmtQo<-nOB~0!+i>LV=-3ZNAGP=1dx*35DCZD&wy5*$xPAWl=agM- zZ@>F~9w|S0cBC}4t-E_|9Zzuy2XJ{EJRS<%q!Kjq!|i?-a=h^=9~57C8(I^>hn{CV zo(@Q%g)S}2aY?744*AY&cqcv>EZwM*P`oa>7tKlQb5z+^rYfB@py*!?x8J`VZ+|-{ zQ%-!qg16+;V3k8p0m@%K(?jgFeQ>@Devo?|0m)nxr+xMso|cSw4cRDg8%CQsuhsiI z`YcS-B3q2L(v3sG;I277`qX7t+~y1EGj%8|J+F{|7fSZQbEqpT@T2$B{z${vzl;SU z!BlxB9Zd@#Ri*~gL~go0tIx5>*9uj>_!rei?1Fn0ALvW4slE+-zUT~It z3|=TFLTp9{Wz4kfG7gy6TR`|nhhhsLPIL%qHLj3s(i+Dx~g@ZQT z#tc@XUkte(EjdtwH1`Q?9 zfl_5377Q|k!3qK}46}zp6_5c6R)s#yUT4(RI0*`$<;TuXft8tNU65W4^ysn#e_Cd& zXp_d+?X5yxVN%w96UKN(Y^dv^`MmsmFr63N-ez9aE1|HAJG5nJN*JwSRyi(mN9Vs! zWH}AZYd5#XkQLWxg)!LWd4C9&OFzWfVFYVgHu&L<_LWQ0Ds~vLxwPTOkn^ZL>E16! zc5{r3A#`&rH6GiTx6`kMX4)qLFF4#_5yk zl!;*k<_3}*hRZeMkv?3fUhr@;547U=`yi@}7k%9DF43r)`r?#dv=c=Oe(xuI9Qlj% zx*oI+-j2_vJ=A`FaTdP3^WMAd@BE#=)BfNO{vbPWKl#Z|+8_Pb|84uv|G^)%zxyBm zgZ6j-qyMV?M}P0XZU67T`(L#G@bCWp_MiNx|3&*p|M;J^pa0_5?N`74q8%Ncu#jGE zdw1@}(E3)dep_2+LB4X)?%Y{x4gE(*>4@0F}@^0qov&I zbTi&k$OWConfnWr3E~^z{H{bDl*KvFpTl8`NEDod@<4PW zRNaB20&Un@UqDSkl4OBEiC606zGzYd9pmrN!?e$JJvueYxJZG|bNec;_ zm(uq`HU>|ve^Y);H?B`Dd0#Se+Yzj|x7Fn#X*W@Py5AFSktL9cUpJ_hz9(Cz^G8^>}1Jt=7{P zZ6*z2(r_unp?wTR!8oH8Ei_5DUW5>c@$q+peU#Y26^<}=i0UjLZHlMo1)`J+U+oAQ z_kID@2kKE&!cRjUrDcpoV~vrHbd;mC4XH{Hty$ya9w?+8x?mQ1$|QDDJN8%Gy%~xh z21pU!DHPJhpa3m`xlZJA<{e&qV?wo2H>0_j0hTXElv|hzdB@z9_W2VzMVt%>9Q|| z$Pn$E50)#r=#WKLEzYVh#j`o|&WR>%gg-rxbmI|vQ(Ua(dvrC|z^U=?d=p*fc`xhz zz>&5=k~H!yQ-<00EH|KNISgRv8b!M(W4i6g2k`|Lc$^9IGHJ*82r&Lqrd78Ldc^@1 zG1JDWR8Z-Ir|HWYJ(bzq*N4(8edxO5<3n_j3pwd=)n2@K-hT1RpSOSVPyR{!hyT^T zXn*(b{YCqSfAm@V>CaEv32W&K*z(nvt^Mp57wxmp58KO^hk1+m=;)wr?XI^s-h9yZ z_jhTebYSUE4W!QDb$jd0JME1(_S^2xCeGb@`uq6FS8ayQe(%G#+k-dmx8sZR_WbC1 z&i`G}Np}F3ZDG#}D_Ou&aKlgY9SXyfU3EBg!Cn)c|%~3bPKw7sg zLr&`2G;Ib>kT@4j%tQ5CSqBgOA3+RrK06-oNuBb)#zgGBu@~}bN-t7^gDau%EYf1% zfq5Ovfj2yXZngUh4T*D2`V{}`;3f|XGB)KJC_Qr%qW9>OamgB?h^)a9K^d;x_jI9z zdoi%+EiQt%6V!a4^!j+`8prQCJ7fv~jdp^uz6bAlz_)>ymuKLiL$s}6X$7d2Hhpdo zV?#eolaMvWa^Qwwj9oh)B^0ROEH;e`EH|6%{J8_6O)MJN-=TkPQR8U*s1RhVzELSl|Fgn2zOkkf#2zytrTp_ltSrqcIfc_Flt9qs_ z$|jBLavHtAYCF4IZGUeQK3}!ZKK*6;hyU;&w7>uN|Eu=PPo8AM?VI0RZ-47|-)VpF z2j6Qy{H>4k2=|RQmT>Zr4e;E%cc<;_Y%zsr?e3l3wtr`v#rbhNK6%kL{FDoQ^^x!F z{HUFsK5skQYwhhf@3-B}wRV1b*zVuG(+&?`wl6;W3|)BE9=&m=?e4X9a(>ayE>3Y^ z*W1R!Wx2}qYh$1sM(L>C zr48;4a3pcY6=$k=I>O-1l)r|-lX-p*^Ws4F=jLJ5&k=#>63Pg3du=V;n0{Y6!E0+v z)6rh_a|GLwZpF_<-=^2nBlRp3`)eLR`fXaxd7QEZUf+Put2v(F8hP-C`q3X9kDv~y zHf-Ot+6bG+r2Dz98s8LriZ{x1->pN*wcxeKZ*a)2_#0wMU06~7Knwzdkq`&0cRoUs zK~x7Mn$P<2soMD&6ZukQ?=J>W2VtndfaqMl2e|CVo&5w%{q&pP2^?ql?3)gPD?cNCVu}6K3Z+KcE4nLvwuDsk6R{DZ3c+S8Jb z#KbuD@&yF&l_TRA>6EW=W+&u*_BX)H>asr`&!qym_dJUSWEjvDjbeFW0Q|Iw&5!CYBMs z-x)4{hM^h3>w(Ai40Gy|STY$30n)LTH7)rA>b?|fL3kIC=G5tsz?`TR8i>3V2W8Dq z9axbSBiBP-N;ax2J-^XT6hDPmJm0fsyo3|r8JEIo{_5Hqvk@LKX3w0BU-XG#R#qa= zjFdTFyMWfE@42cVF2OLbhm6(Sb57H<4p|FkDwZ6~E=m>#*pFHw$OrM&`05-Civ+tP zbh`g#!G8I4(MpjW=w5WI*!-tVm*96o7ZJ^r+9ZmqPp-hNQW{g8p(J9pas2XC~Ey}J;`pPeIG zFPU*3Cv+Mz>@4EcqqUe5x@_6hL>J_xEUxRROwCF0jd>~lDZ@wlhz+q-#1^{=&QtQZ zQKyEly^q6SW-&u2hoQ`G%w{fs_U=AL8A zWnyr0ql^fn>|8c1I0=;=G!=Iky1}_Eo#UuWU$5splUMSYavlSKmif7C%1#}*lBt5> z;QKR>H$fe}fbdJO-44+kz5GHpoQvw~iDL+4(RpLAbX<)r8_1gniJaiTxMVC5m?S}Y z6;!U7Ri5KHKXaE2Mq~$&Ne;8(K!r;R=>-II_sy3wLw3iK;{xS3zPEM5($b32QPJjGG4z*q6D zIw}?ZB%J~yJ+j920^d!T_W|w2ZIrHKRc4H3AEl6;_25rEd1*oFSXTw|I{FysLSQj3 ztL%W0W|*fBh2H0_i@5R9Px|O3`6F1ze!VWlxc71SH;WUY7cV+g`uv)_0ihvcK4>VN zi?-6=dBl8{52goD^nLa2;dx_~dY!-Q_*Bl;>&{-vOeUuF>>Q~!U)-gzf(Ff=DZ~${n`l8K> z3zTgiFW2?38>77utZx|no6hswL3)pPfU3QV!MvXLqkitg!qWZ9fNP3C77DewFl5B? zrI)N56xoHYv67JayJ%k+VO&>Sa#M0(xqdCr=1}}My>{ocojtG9sq{scliW|s%d?WX z;@5zid>=et0BK!bi;v!empmb|(D4MiY?Llq+z%X1)i{7tV%!L%Q|4v}LFgdB__$dx zz#xPC81(s>9w4|i^l&x|wTv1*ME1;IyhH#TI&>F!sHVYG6#`>O-ZJ;}o4(K=)4)Ts z#p!`}8sa!C;e^)iQxpg=`cSJF>ev;VANlDTeeF;Z=^z&&^)!YmtU@}!7wp$7{pmqE z597PIHkN6COb_D=YGtvgGt#GJ3aX4aRk(toCT@57dj0~yzp|cP9{Vc~M>+2;lR^o` zjiXMIfvW%Ly0H{)3ZGVIA}DO z)jHS0Z~`?zrbls20fq@9I1emm@cWv|y#17SGaLqK<6Gb^GD0uE2grmed^M*B(L%?5 zP1ZcvTu)B0jMFB-d@J4Hj*+`OV9)M;?E)!dG!=Y~*?7=gJVj$+%94-)SGb`;E4>zS%&LnYgpH9sRwrwt-W5zdgd4RKFg-d;yEk(F?UGyf~{zh1;~Z zwYk(bH+s-DPQboSopY+Ls%0XSbo950<_=?cl@9f&ldBwG9Kz7!s zJM{IOw*vR>^0~_sLp^Z!{M$PI#-bp&pjj`IowplMIEMV#xA7)vc9<>G>t%Z3+_x?Z%X?yFW?Mx?>4nE5{)@jza$24x;_m}z%>nn zkAgo8FnI0#&=;}K>In40{K*j+aRiC0KM|=LA?eY3H-%&Le_W3^PXy5P^QU>lW{>i7 z{h*wXUf{J(m3%D7j$UNNUD?GGfswxspB85~<>lhux5$UQ6_k8ZEI`%pTAthh(uSTN z&inxL>$-GM$v_`q9*xu}xsYMrLtM#8>^_jYeJYBYK#)^NX-ZMXAfqnNVLGtvd7eB1 zR?|ZaW^24>uF1=;V$WaX-Gq@h${B8#nS#N`lM2%i9)onteK!y$4@c0+F(&R%9`W{b zJpmYuXABq%AO=VH<|RqoK~Ty-!)tKJsS!YtZQ}K{`fXPgtdDlx=&QH1?4;&G!JuYu z*C0Fds7AcDWAg%ep?e>H=oD5=bwLRrvD2dx4 zxO-V?J>v8Msua%d)R=b*&4O2s=r;uLm5S&x+3N{I`4vp~Hiw(#1(k4=O6R}wFl0ht z?oOc6{03Vlyz&Cn?h^OiSm;>9crfD&Usvqng+?kKl|g6$CA(x2CO-Pa0VnyQ`Z;C6RI{Q~17eR)YqkcHvCkEMo^4{YC=jaP`hsacR zLeT=+PTC)MD-<_EOX8$(ZIMbJ_XF$~X`-{6slb2fSJnIVC|gkdD6o8#KWTCJh|8c` zxB47@j51k$tI(^yj$_Q-^GPrNvL}A(6@1YiDPSXGxYhz&p&UEzdUj+ z-R|GrZXdk&Ui;3+-)Qf@_YO|pMmsw@Zx`oRZF74M*}#dE#`4&mU6lXz@>$#2+h{vG zJMHZBvK=0rK)02)PUlaLi>1DJa(Z&m*4Nhp>KHwS4V=^6NBgbqZgOAXjPxGiL zZ-B7?tGVcP`Hp(lSRi)aLiRfDTv3kvwts*g74* z4`Y_skdF?9%d*N$$xYhq?K#>(=U=Yh;hKJ_eGZ9P(;8K$_IKaMJ zcP7fdOXp+=QbhHiHoIz4lFPDBr6-a_kVR1o%1-|mek1#a`b-qJsGc;&z4--Y_YKaS zIa3L_O%m-HGY+#IpHQLXbjWLkTX}?`Kjx3ugQG&KODn-^@A}Sm)EZN&l!$XR$(!G3XmFd z#ArZp>P0Z*gZf#i^5dWyV?B2ZU!AYC(*q_hE6`<>`4X$jtcW1n#n~+F+4wp_iiSdX zU*Z46;d86axV-=uiwT=2`F@P_Ai3N5magse1*7&2$C}f7><^@ zEXoC@#PHLJe5!(CuEZ8hV@x`MFjT|7WO)D^3NYq%>TW`puAr$7ZE^0zMZL?bGnD^n zyJ*mp_I#{#hJrsmd3)zI`_0e2zfq_wvqIRTiB>)uCJD^BLnh^(PI<7(9=nAz$#XuBpI{$yg`RZ~TqCQC`FEH&55r83B39Xpx>YT^3(PwfAR|)w1!i-)INCst@f>tAL0DnY5O~ni#dOR4m>(Og_JAp z?t_PIYY#fmsY7_Vw!P9Gyt~uxy|dGvy*$W=p08$G(0mPjfD^b?Jlye&AauNU=boHz zpFMfjmhbGhm3#Z`YL`w@uHlegFRisx98QhU<|d9H6TKD?&{~-gxb>HI5@4~M@}-}g z0llo3^Ul!$=g8f;XS?C=EP9yY#5#HIN^UG~P>1^ACA5>jku``2*64 zGmaZ+G;AC_0-tKEWe2qP<>+@%AIN9hmPghneR^-*aj$G8%^2E4=4u1H!$}?IkF__E zO>qV+r#+`mh))5hs*}{9aEwqpDH0tb({pSI$Q?kz2obt4fjXDV?c&rkeGp2XT3O~Z zv7LYl!uiE94Ad)76Da(Q0wv-q^-AXt<)uOx3?82TFt&nuIV(aNg3g~iePc&28Vnfs z)>VllI9uY`frI{xZR7}Dl!SN}*Eay+9@hzuZyFPB=FyiaNR(VxD8b+&+C@bnJzz2< zQKFLXHNoKvPWsLD5(KB!g&*pr?mDw{W5a{o?&Orh*+AKE?yj}XomCY3G75UN?Xq~6 z>wauIP6h^Ac6Y+!G9@0ayRe-P}rV1&Eu!^g*4}LZ#qsi zv=g`e8N1K+r;{&viJ?z93e^{Bs4@gC_XEUNVEMr-uN_&^jf(5p7(l>`Uw~O97VQVbTJsa$q!n5<^woKpFwxRnb17v(q1*upK z&*yy5I(J4zqi`8@0{$U8<0U)gU_1skPf#Y5OLv43-LeI4CMbTCmv2_7@)eIjH@-GZ zWiie{(v*t=d0z&%%K_yL`FvN(a&0{-290w(b;Vn{d+`2s^03Hr5y5rj!Fpwobv(xP z?Km$8SfBEl>ya%0<3D!{;xu$!qEkQ_2MNgn*4MFEN8U0P@nt;PZtJ-)F~;e`jwsj8 zd1E2JwgqgivQVHKHRq5U=#V*|xza;1yx;T%GGWZ0WTgl=Dr+7av=h+D85WahTBflW}h5PV^dv#jUds@;32yMSde@N60LMT$zj>aVoQ8oa@!?$M%|a^bOvGtncDswC zl3}R*{2&en(&WUyl=)$J8HT}Bg*Ac$o-%G-arAb^eVmLTNU0CLZk>#%$v^7Q$N=w! z@>r~>l!=qrUV_&VMCdI?X&D?EA`F&ExhMzl!w?|?)Bq`k#jo5 zepVr?KWJ7fKm?IAod)}{LD5aPzCn3+{WL5J!4-zXHw>4uTY-9BqwmXStf*P(x1$Kg z-Y(^4I^yT_Njga{nwF3DE2^7*hWqr(-Pd@cP#woHd6uWFvLNrJ`33ayW3aCFi*&^k z37)xST6g+1`0iAcLx==|-}WVeqX^BB!+D^7*k@xlZh}^USXmHsJEtJ8;);T697jkx zRbznW|4POktx!(DV)7djYZ#!jkLv32G`Qk~^*X7ynACIS40tc!^SEzJ><&@>y-w`_ z4Bit1+3^EbP`;+uj_|^Y=5*td4D4h}^l;U(j8-d>%u zhCe$iT*`MGz!M6%vX^#H7`kQGp8A6H5S)|qAfF^T%$geg1o?nqm{v|`$%o+Czj_Q@ zN<9u9;~A*sz2eZ>!4NwAq4%JB$%Q*O}ZyM%-1~+S<%mj!%!;;o*y> zKX_+*slD-FyFI*zCwO((UcUH(1=U%*v%gLLO8fGQv-ZoM{j}Y?yV-v5qYvAM-&kqy zf7IHCAMLe07KYEi{Gy#6zrg8J;!oSr=}Tm9xoz)(PnxxLSc`MWg8tyeb69uU_BJot z?zW3fiRr>oW+11TH3axJ_#Ga0)*CsW!=gb?Y8c1XAPd4m9!iFCEPSSZDm+zpdVLe* z2@&$E-75audOf}*Mm8uynUaH&iO$y!Wy_{`3uhqwzAYDvy8I8%jY}5bKZY|p+;n9k z`k>24zjvYIj^T)>psWo2VR@$ie7@5}Z>!p7(6K{H@KJR=pX2HT^0dFctTW2y>j0*8 zC>tXUM690Dejv}3y_%i2%ZoD_z^)Xx36nWEh-6R(0qA+s5}-yeD<=!v|NP+juA%QqRh=O${Ix&=GPq@8}uA;F{>tTK*l<`0iWkb zkYI$5C{;K*$_ktuOL_oY0-STJT}L~Q52P1e(75kxZe-Wb9fMVO5>V_LyBlp4rGCAB z)y{B=j$wo@n~#gP?zZ;ut)=$fH{PWDb$%5f%A1A|4FrU1X({mERR1n@=PX9a!vXzM zAa+?Wpa!5{2MFQ4k9%vfBZTsWSSPR!@|F{*qX<=k-!ZBL4e~-I@Cr+qz*%|PMgA<} z&f_Q^iuHQN+JO-#zmGBZgeU_b0sKRu29WRR>b{h+>BUoNA4iU~I@6^b$n#M~aH97~ zoNMqT9T1=V(`k^mT$iGzN5pz{rO>I|K^jFdV_Xu8kE|FI8d+bh$A>iz>Vn3{E0;KR z0m@&wO9=RwI0``;P;MRBV$$vFW|ugf`I! znZMTQkn0+1m9KWHUgsqQixO8pI{m|E`;zp|6L~xM9sUcZ6+~C8_>)-jl*Qeqb?k$3 zgtIty{F!&hCm2IFX4B8Jc5?Qzy~rnC4)b}R-R+&WwXxkij`yoyewv-Yx88i%{;hxe zUvK~Bzx8|VxBtfX(CM@G{PB}^`1}d-fd;Y|;fJZ*< z#Sy)3n>d~|Nqvb-!rC{DpJ@cL$2j_#q#tOo|Bfx`dx-9&9W2TTV?=*jEsO(a2HQJ8-5^TXN^gLY%!^}6JwK*z1b1SF9W>nNL}4EN*>8JOoKHm%AG*|?!2fYJlD z&2^WJ@Y(b^U#iSJZNk@*D`V4ZzQ3|T5S#^;i>)-~CXOdKa)gNc%tiHiu1Q1COKySG zuQJQmD4cS{y5Y>!q!3CzKglE2fb4pajXVUDE$LYkoit|>VJP(roVYUVmO=_;9GQY& zr}u3(2krSXnPF#ic`aq5}#H3Va2{yt0R2++A%K8y5hi-$ju>XzkI5%k5h~ ze9(UMd*5uo^FR7-`|zVjnbf{v=)~Jt*@CXMTWeaIVPPbI{7WPBk%9YYInDuekBisG zE7`*X=tK|UJv4-Ob&i9YKGO4_JaH?Z$(=Jn@|d*nnSPX@f{d_`ORj~qvqSZq0E}{vdPHk=NWxEWo+m6%`^PlK-f&boXgH@y$8TYz~h7LcEsP9U0T|rKP#mk zNb$Q`^38EtDrxc_hSeiJ#!Y%e$6Rog0;ehEWboK#1%|#b?gS$9B<2-h_iQf8OkRcO zy=eO46={jnt!f`wC~k3Esje5$^X0YmY{Rwy@!ebqbVbTdlr9hl4p1IS;Ugmg_{g5a z8hm%Bww(AY9CmkFpg)VUHSX)$`Va~S{2D#2EV%GF*ZHIU{e7H#4E*EApSPDU&v4GR z+V=J~&YByx}3Qu z?UaKu$VA~CoOFUGcAUx&{GNI5z@4SUJw!&F5Ms?FtKgzQc^bU8T{~hM&gTGm;XgNt zQ*Lo>$m2o^rYul(3gl~cbkxnHXW@Z<5V)l-yykkY>q*ShnK>vg%E*AyA2IZk>tQoW zj&6dV?kO2^F^Cg@9Ax1ExM);I6v62;P@6r_C0+x4U_iC=Rb$HJvJD88#fN&@73EKSHZR|7BWJ*)Kut&1fpH!?A@Wy^j{e2z8!;D_o$7-Tm;6?` z*QGbCSl8i`yl0?uzJaTNbmBTQ43E+E<9d;9Tu?fte1{<)DNB2TIX!PWt@%=AqH9!5J!o_0f`r8+X#^PPw^{14dH44gds=|dh931=k4SWE}>+6 z>kk&upiHXAQXV$V85dRsK2md}K0dtgaUkt3;{euf5v)K0GypP5;u;)?VeA$x;;LW5 zS0M_as&TDi5z6q0m*^E3VR{__u&Z2$O8tHcb4D8n6owLrG1;BiPTIWPW9;OWxt4=- z#v2>ZXcNP|wc6Iab_XB;P8hI+fw-jHY#9e0qj9xy-Okr%?XVrUXBRKpGiZ6W*V==R zw%f;l>%I2lf8~emxBr#zx9|SWhwa1fz1gnTj-mBoJ3BjtUkb0sT%kGixWK~rXt;>M zV0_~Qr>%k$1fE6c7fLgeRImz3F3gISMQ?YJb>#J8+*Qu6#Q-i6#^e@2;ci(O8{qHWf@BY@k_RfcQAnr*!J9yd7 zPtOnl`W4MfA7P^NB>cbjC;<4HyNm1La~5Ek!x|G6uN0Ni1x42pGp|WCj=V&nFJhH? zoI-(X>!|?cq2<#L-*f?s$3|47hLSzxf-$EJ>yTwzx8)=}He>4e$!irFBN2v@pU-8W z&Q}fG^0JI)@=RAYA|LXm%1w>@R33&*WO3KaL?^&^cL6=N;cui{Mj23Um^{&!;#J1B zcBr@RV(qw{F;|0=woflk+qu8g!8q>R*@>g{$N&5<+Q0adKW~>fbI+b0w}0@T{aO3d z|NcvyKR*U7?`ua#CvcVaJxK5G0dH-)I727HkIn6kws-GtTiK*>JFSO+a4rFH#Bk7D zeB=oN#0#(Ju~V&RCe2A9U0Whg2N;aai~dHiTp0Lq@Ei&7rJ=rPtT}2IO3ufw@PH}* zzYa40gJ%KZeT=td7U_epG1~GL5P$JmnOMkyWroazx0X%)QBIyuWncmG#bEGOTH$#; zq;I32mXp?9X9X-ndK^0DMGQV^>WeL(7+D7x{T=6s>&+=_$C5k$r&Ks^>nsx8A@&!% z@^(73(vBCcr8(_sNL?t#GpC3FewG~27aFU%mfN&BLi|Q;Linrvkg5Mc-MsLLjmZ0& zvz3wsO%wNEp&pVh>!>5|60})>?FCP8Px>N{L#rA?jNX|0;s3PE0Pic^zI&aRJo!G# zS6-zJy28HixjqhpzoSZW`5lr5n!$sG*)J!d4Kl7e<2pa3lcgNWIwA;C?!0lq1fn7l9zh=a%Y zd=n>c<3PZn)C*)B<)|~D41etgxI3V-h+_f2%=hiiYvMS5TkvKJ=Xv9@9W9@>qc!Na z-P-;K8|}^SKWg9n-H+RMe*Zh|(Qkjy);`>Am)j@p>Dg!P#o-t2{OXtid2SE7OLBMV z7_1=u5;9{M2=vMuluim{CW4=dQ8btILwSRg$;#vvg_95EedReG9ZhwFdCX{)yyrYU zE|6buA>Dn#ysZ{q6z)t?yFncE1oP?D9OR90cm~wlo(tgb4WJ2P#vt@@WKuIZqNr8U zC_SC8^$qx6`|RKorYSmcZTE+&0BfW|pT>H^F2w#d;H@^jWs+Zn`J!fCko?q>Vo z`}f-4`d2?_zyGg&yZ!CI^PTq1Z$G3C4&cd)IDaedw!kNP$v+y&^dr7<$7h2%Tf2QQRIOlvMP>aoJYopf{w9}mHAWU4a&#d=|ib&TLS0E<5|g)?TFJV0;^VZ(0b-} zj;BzDX6O8$pUsIJTV7eJekJZ{QT~zT-uEsCf#3nCQ>$;TxhaLN!mY6i^LcC;I*}dT zKA)2gFNNCu<(fGw)SG|s*s|Ri3|!^RS=V#Zr4Mw(Jd?S>qVT~ZrH{0sYCJTs-cCm~QE`vDW5g!PJjJONq8>QJ1 zioTZ1T_y;QA&YZl1F{Dy9o;~mG(kBogdWI(0J*q0$M|dX<+Xf8=tCc_S20NHs&WK% z9K5f%j5}?EKVsK|yp2AYget3?C^z8lyw$KqevFxyF4PwM2l{>S-@Yj$gO@<$Mm(cj zmkH9e3(j*F^B(D$1A1P_DGRTaBXmKPB|Uh1pJ=OIOhO;i-;6ghZJvEmwsh*bCau0j zM?V06fy+;X)XRbcsBhb_w;_A7clZ8kd+)>b_Ra^ZEC{eOvlF1sjYpS4D8Ue$kxAMK z9(&;YD*6^-rM+oYBs@nRR3>gdMdL70#HD*NBhO8t(i7SZWuohhIE2J!^qqg&UWVEO zy#r_2c|f@{jcD|__d0*mClX2yCe4+kg<#B zoG)2X4l2&Ia!p?1IbeI3|31POYO&9~Iv$AJG3Xo>0>_f_M0ssV#$jK`i@X>EmdyfI zrl*jDf&lXXBS>|gsun9P6M@QhRzWcjCdnv?Vk3I1Udzdf@I}EdPKz*i3h!%Y{MDM3N4Nv_YA?e`CKUK@HwG1_Wpjf*YWQ` zE*;A-7jLFOD*>-*o_K)yi~E~=UWD4ormXlo7^=NK(HUwSE+$f(zrF%qBi`uFoM*Jw zbOz%PGT%0t*cjb)jc=U70@ErVJSbOji}UaaeqGsZ1Gs++CovSPH-7VLHF*LE^$U_&rtf zL$>GF6PbwZA|4K9Aot=O*XSqe#NZn<#M=EI#{|@K=5@yoW$tHRqTE%^>I{{0cMj#L zx>l#c9YA+mH@DW>qc`rh_deKe?*fnB*l2g|ZMOZp8~HLoTRMYgC+*>b^>%0fsy({b z+Iw%d_UX@`w*Tn=^B=aaKK-=4`{twe+dp`(-MhP=F*-Ou!-3{)vsL7ZMa$YA^K$JF z9dp@s9?&mj{u-To&BEeR-p8Abrx0DM0aq8~kU4ZOzK1=F5E(KNq7fi%jC9FGL3V=` zKNpRcJ|O^b0NrJje?Hc7htjgjUM(=SLm*6Dok!cT4RH4$k1F=UK3Jj0%5HdV{*?EF zuN}01qfGMQZRfxD*}0d0u}xKXESBBjFWKN)oZ&5H1KwAj@}>G6ZHE6Hs!qje*L&I$ zM~r&ftv+!XT4|HBF(E!i>!k8CJvuI<&$jE%U!F)vTkGsDwaxvd_UPTa?c*PO*gpQ= zd+qLnUFww0PY?%#7qrPRi$sCYc`cs|qnxzp>@Od}e9G3b9sjxHL>}Rt?TFIvS6+m# zJ}nwLgElWpPx#(}Nau7{-$bS;)BCXKN7?j6f2vPJi)(OHn%5%_yyAxDxgPfeM!Izc z>x_7m4gac-!*Rku8M18lQN(=KdEocT^wJu z)8{Ac>I{}%uEzn4BY4IN0+G=>Rv@q7XdZ8Y|M>Va4xkENyg9%~e|+h{Z<6^L3p**Z z$|<7*rqH3rVOyP8$oHH&EHlRBGs$!aRyI%=z_Mp8H2N6shLLC({8gNXe3uXK?AF@$T3hjv z@b+rk+}pzGTWYMu+R^1Hikb;~XQw@Q_s#arAAG0%@b~{l`^Im7zukZDZ9Ep};AeL( zPTI@!gLZaxmR+m2-g$u0@HrC7nhvk6Z^Glv?Dl#VGt)(q(H%yEOq5g(Iw=57kfK)! zx#eoRU78ygn69Fi1?G3k1-IXZyk=6LAuDIcXBe^dC@0&F!{7Pkqa}A|iucfpO93o_ zai2cWrgBsF4x;dcul=nEckL8Cn#Gb7~>rEXwuH})tc78%f8-n z*}$*^s~guidl)8QgH^IH?gtFVPn)^Iy$7?G;jugoUr956to}E4%CX!;E;exN*I5*- zGHEsPdpqlG@7{JCO&1Q#Hk>~C;^BPoT&&I7v$L1&2&ZA|jn=;VyKlFD>EHg{_FI4F z`|ZKE_E-$yB;18AIDV(s&oSt}84fR@_}cO|qQBnOmNucE^8y15F1ZwMPS zw3(xQ&iIYV?vtfX@dpBT178kV@yA`G6+GWH2&wa?Qa?MTDAW7skj2c&bvs8UcD8r( zyR{q8#JM(``55Yg`9>dM94*rk8l|t|QMQybWz;qegZGi!9>#TKM4*p~-F$_PP%-Vf zwywIy{4RT5yQ4$XD&8#MxXe2s9ku@lRllexZGWCcRt)|>u;{M z(~XyH{o!SMxig&vv;8(0POIE*d>T;sQ>a;**-{KV>Q6g3938aQWlh zj7-5Fp`14EyX+X7=67Dt&xmyb#f=QA0~EszXd%BY&(ClI=>LW7Dr54Bz9D%~j56wa zc@KTnA#|){qxv@P(@%Np1tFhlQn4`N~?yB9oR~BiTc03Zav9*d0(5~2L7m4aHbd}$QrQhQhC435| zJWDggsc0BZ+9wtx=(%O=&;_#P)BII*&x3dFx9|Se$L&YI^PTp=$1E1#xra>a;8r~! z&HByMhycWtpLrVKDz4+U<6b#E^Jy>$DgCsS(o`NqPiqqZf8%@1S-%(}Zl6x&s}ju5 z3wMU|_!n6`VS)SdH1feHiT#=cV|IMBYkvyFS2B_F(Go8rmzfv!@-ZDte5Tp^t#ID$W%53oS$Dx)HQ&3EU zar7mV4#I`eDFY28y2ONtLf*(VEef5ok~Bp39_UV-J3Q|8Xza7=<0o1$_%-?HHcWJ9 z?@DHFAmB_!oxb%wGP%D-pq8+NS1|SfhwjUR<933<-MF*c-umFZ_MIR7p#9)){8szm z+uv$;-*}T16AB&L9-a&5?bL~>km9^5dHL`3%PjbiCPm=C(a!{d7#X?BRU*E9W@<0cldnlYnqPTT6Xvt zGx<3XpK>ThocJZ2!L|+sb?7%q+k&Eb1Plx3kA?wp?4po%z&8L#vmPx|7QZ~JxHt{9 zIIs^Je#?=zm7BzXZ+oxd5UgOhFKG8@>7+fsJZ@WWuD6f>=DY1*`JevF?f3u9-*4}J z|E;!q59ez2MSFhrtX-~Lv~w03mv{v}Vp1W5=QF?$ueuEYp~nt)HdOS^a5g=(T#H3$ zstiOjP&(3DQVX5-#Rn<}0UL*7y8>DS2ugslH^D93T z4lR&5m9>w8{eGeSo`I;I9Ka7f588`7D2I`Yx*uRLDw)VobDwr-W2719(7tniuHfN6 zFbukiR;6yUQTE2-Qx}A`8U)gmITm@!UUpo>VY%oJbwUTyRx#v0{+I9WMsINMuCqIU zo4$#=$@z@ zXk!NRd_hAeaGd{>@F8D#-^rLi$x0Y>ulam4m}9v`S$LYK0_aPW=j`mN9UmVf6X$Wz zuaU*2Yj?7wJ99_F2{G$aQWBVq0ON`tDxF|F4_;<5W22=X)GI?*l#byRG>LN$Xxw^U z>T#`sue_3-IBQ*I;vB}7lzf;c|082wcAn246{oBYLg5W=@tPmpG#t614)W;tU)Ry& zen&DpKxFUlquZ&MA6MYs%^A;=i_@un#@x~-t?zASA$o!Bx#WKP!FGG&!?)T;Km2BU z|J(1iJMZ3YYw&#u9dzkZ6I+rmN4VS0IHV~SnT~)L-I^E1^qHfY=i;C2cU-RD!CXuga8b{CkEH(Dn^bB$Zz#Ym36-Qi!|{eNRO_7ST1Ozk4Vpk z0>mtRU_E7{e2Ws#;&DP`gvcRDcjC~#^J2u|qu0n|$wHNxLwHPGN z75Vi9LYOOI#=wOjfXFf!*Zwl+0YJzE#8J(JTtgGCK_&c@_Wbjc_T!DyouHc$<*5h{q>*1dqosy0+hZ7|fv=59)EYmauiJ^)NA-O|24VD*1nL)t8 z7)Fd>IIe+10`)Nh9-57k?)T+wFY@QgI*uQrn(bADAL0wkI1fStRI*Db?*YpgdUxio zHEbwf(|n}6x{E>E-@=$PDYrM;70UjM{vBZWUg9htvWmKJCvkVDz5UTU?St=r2gmP6 zzz^F8-}z3v|Ne({7Gf=t}NTKbsB=5oxy#RBQYM~!B+yWpMov^xQrKX_$#>lZobh+E%I z67dJPX6WwF&7H99*uj$kWEqa2<&5FkDC6VcDp%>lDV)XwuRC@+fO+dyNL%F~dcVfX z+ud0mz3sh~wzZ2=!O0u)queZEfUoHD`7+MXE_LtH2oB^yJ8cKcXKnq_W_$MsZ?(Vu z@BBggoqyx^+WSBLMq7Ef)=pMV+S$f=+jzLy9(?$y&EWSHgInI%qP<-V1YT#hs@9>a zJHafk)B`vMc@f-0flEwI+VK%|j5rF_#bb78o&TL@2uOI4IqIbB3xi>Zt;@)AJwEY} zbDGN5j77-VQhV|I2zmAQYVYQ^XtgWXc!{2W6lOSlegxK_-caX2owVg6!7L6H17gKt z$g1hdqo1`H&=8D!_y7v^0y;bp1B|kr8*#uLofv1xBg9x+PKQn-3>|d-RLm&{zfu-w z&@w7xWls6?yiOJvS(WR=n6J?4WVsMV4>lk7#?$>{2`!`De%@;0;>HwUq(I4*kAhSFJ$;pZ$H~(+y27JDb>^^yN{UX zd)OCb$(`Tj{mu618*j94{`h zj3o4RhfZ2vBCpx$>$`mtF0!H=$OFliXTHR~L;w6r3yhP;;lI0x7kyKKdv!xPN3cvjt70E}81hlhoYxsv zVmchVQr$+X;xho+nD_^j3(rY%uB!v!mD77Te932C564Y8sEs7`2of1QuLE_8vQ_04 z=R}RctGob_8}mEvp~D=*%K!G?efWnL*IW2~_b@2?nELjUb2=$@wO?`LNu<0FdQMGlUJV0f$8qt4UasuV~7z7!1nU#4%+e2 zBeGk<0>eE!t$M$*k8X==l%dUxPF-S9-N8H6$;KgC+T3Ebw%7I_K57r&f4_bB-S4$G zKX|Y0y!~!lxqAl2*+@r{=35hac3{v?C4oLfAON7ADp$b7bx2!rrHU7r%ma&yT4jai)Ya2 zyQIob@agP1`Mh+zQdh-{W|&=I$U&bM%6+6rzpi|=kVit?lP5P+XiH8Sa10TU7v%s_ zAf@1O(hFjc=X@iZIFpcAdS>%?EL$)Cw-e{cp?a0=XMS^2Ht6F%*%6R?c@q0uk(PDu)0md zI2yi~<7sa{7oviUbU^PFgjYxZ!hf`V<~-ioW3ljvzU``;p)%v9-K(SHHhcQ4UB5hS z*T>iG3sbW%su8{MW=UFELig8l}t6T(jM-!vMFOmS_ydYRa7}hT<8T8DF;#pcQ7SvvqO zH#XYZy}Rg*!8?1~Z3lez+XX(of%op#*k2bF>IJw* zeAyQZ=J{<{MuH>bB4wo=gY*d9Q#`~em8QtS%dcCb- zlcLj79O(B&XWs&%XxKwyPZ(x2>z|#*=}!t>!bFqAAi4n z@SSh8t+((4kdAAo@r%oL`0TtLJf(l|b{{A7?mo7S;ywbXU!&4>ke@pAv_ZMp z0zFBk1_CG}?nHaP$_o1Ec-Fpp{2U*|+Afm%!cLk%?9`-u?HoJL`&=U~w;ziKDXzQ6%| z+S3!Z(uR8wpd;4-`UEenoErN_!&4@gi^LKoCN&`l#OpE>I4=6 z=nw3^dIuwu) z+-20(Hp$6B9AcA3T+AcaepyWh(a)^tHQbCf-%(PjQsgrRlq*Vb#nPTy4M>RbYp08#l)H+WtVsYS15Ylwu88B>+ZdF_pP_vgLgj& zJbeGdcJI9p+sd6ih(wvLP290NqfvKtR(I|&3HNd0_S)LkE`8Ww%%0JKRytIjb_)0s zbgmCgr@@Kg-MLS62h5Lvi*aTo=EfuTP;ylOKXKv(F}b!UGChf@K!5$FeR zR$Q?$nMt6Zj2{|9vFZbGd9JgFjQD~O&cKTNv^@N@NOlTAUOX(`WU}B&)}AE7H$2@Pm8+xH zj-I#Kv#03s({}n?2k^MPBw79MeA?gN%%kd6=MjpC(NG<`LB6|4zVRvlMVXx)N~r7A z3+@Q5p%Zh?6GG;(7A4N{YA)PmKu6_wZIM?W@2O{`sU(O&gl6GaXe;K)eJIdErr zXS3aT=gs!+w?A$l{^0xV!8hJ-OMX0(xpQ`T(#|i>nTtn}1-~_#-wW1`C=c2{@GG-3 zl-3LeU#;)8WqgRW?fZ<8!6O$}Cr{ex%dgt`!Haf{j(350^nBJ{K9=dMHTKsK!)??Y zV~3x$BvPnfy$~s zf2iqn<4JlKJwrEX4}P6z9mt}q{3SnSizk`CMgGK7$4+$_p7-)4b5$nt*7@lQHvWWd zS|+k2kmfZwMxF9W>>wTQb*dl4{4q;;iOeucl4}8DmC(zWe96L%*UpiZ|JDEEgFkF* zI1AfvxAnbu+sY=+pw(gg1rFfpv(Iq=pS9&vR)4IxP7hGP7=7ueljSPg^C+(JH&iID z-tpL($=PPjgv7w8jC};?7O@1AIqO@@3Y;Ae4_gmQ)y|)zFur(!1;Fm1Kpjd3ZjhgF z&XwT|jbW26&LeCE#aB8;&Ec- zX_?F%J2pO|!;x^My~+f0d}~a$wJm^nV|z27QrO&KwX?f}bA>Y8-^0PX+ctOialUt0 zJ?&y^@3!6h58B?thwb6J@3#BzzTfV?@fP=Qx7|12YO8l}(pgT==#Q&6cL=ZC9ZG#4 z>)vZy`}gPz#(H%NBcj4ASazTcz{jc?t7D49N&_Y~@dY%#TEj8e(g8%l&vyV{;P|<^ zKWMYV8Gw>_$*S^rsh!~f8g};l6pFZHR!9b`;bD<2L1&I+aH614@;U(S?D*|z9|bGe zmS!rYaQKtXTE{FECsBA)JPd!#G>@W=$G8l&J0~Ooakz4>N{5%WP@?twtAhQuJZLZK5Am*Y86E2janQlb zcKYR4hz2gj@l`uNyl6+P@ZI5q?5xjMfP)NsmJ%-PGmK zE4rft#YoT4!=rru%lpoU@GHEl^r#sijvP2+_%P%jj0Q)-Ma_x zzuCV1+rQP`!vWlUa0fYBX=gY{$Jl=zycvA;qU z=emMCtlz_yVTU}-d|3|Q$%`-B`Ah8j8H?5f7N*Z;?ZsChVv6qXuC=?&>rG^Kyy+gf zKoE59&fEcXDwD|Qi2>U4=)eVvn4-2P)b;x#+IWY@+WP9$MMTo%jdp8S*W`5(lYX_uG1~b4Cip3&$aYTe#%yv@IE{@ zT_FR9_q|PJSQ|mn-Y@ba&y{bLl5_Ly8|_-gJj>WVYBS5syO8epj2k`mltsOpVE3CNNiJx|vBvA1ctrV;~!;+h$T=bSYnNW3e`UL2`AC5n$=ek+O#yA{4(iDY)QLs3A z8#s5HI(NkDUNg})cGlW9tC|geSY2RMwY9fHynqc1^9GKe&fnJV9eA+ccJJPAyAK|= zy$284&KqyG&3lh<%vo`JkVD12$|R#>XDUk^NM;QyuI;uAu2r11m95=U${2ecfNNGp zmz4J{-|;5g60tk6%dWto%{6p(5-WvQ(8srcbsSbu^iJfQ3DqM%e}REVxxYMYSIEI7 z6Z!Nd2KtcrcqW3xiYaLgG+%r*X0(lZ;OIj&VrKIk4%9YC~UL7$MV0PHt>BI5M8&IU{LuIETh^=_g*=A}y26eCq2LnWkb4L6klF)Z-`^rqde%YQ{ktD+@Zckt~U0N#hv%! z03vjDl*xR6EIe-~UwzRoUmmyRGtc~9wZnsphA){X*V{YG01F^!egzR?r_Xl(6n<4|q|pO1!g2Iy&qq8!9ova0k{rpYa13SH%E zS|y9T;f&RaSbZW-hFk%}rNk*GZW5Id7fQ-T&h1!+`<&hDGGP5Ugk3I&0*^s4JvhWE z4%@16*3O{)ELh+0JABG3dWOaI{Fh^p4`t7N5})GxEl|(qHQ;&;;|b(5K=u(@oiDH9 z{NbE0Z?vrk@3c2Q`c8ZJt?#w_-~LhCd+(dAJ$Oq-Wj>x99-!Z!wAUnx6BZ3zeP^0_<0rx^Xq_VVd@9@V-dnmKw=&Q=LFIw*`5CCc9@3i}vZ#Fx_x!7nM=sv&3;KoCqI5+^Y ziW8j@`Z@>Q2~s|Y@gL4;D_qQVd7P&X3WoeMuk);Ur7kMECvVDMd0N#fU;ZVHIDG8)fIONn{xbia z`_j(=l>-<#5`tw10A10pW?)E?c3_)$nxB$4jof7I+j|{SkLkc5YNj0 z{(twc|KaBDTR0AHGQr=V7dr@*&&ZG3^~sk^;$OAvqsJ(BH2TSPJ9~NBj$c4Tcph(7 zoj8(L< zaAi!E;I_SnT#z}QUCbMxJB)F6y{%x_)`3l6BiDW+1Y?H-xQ0Wx;?4<*YSq{?cpDzL z2R2cfOb&P0uGe;GpOu+Hi(y~c-K7kU8xEXhE|_7ikgry^+a((GlnHo>)L*TxwM*!{ zigDlAxl8}{nYc{2mAy7wW-|MW4b*WPUV)PKalEn2^20G*Gy8mu?doj?{h7JYY6nGt z>R-Ey5xJYQ9Qiph8GiAcRov4yJ9ycyd^C4>Sw{kn&RK=a73|3VQXct*|MWAT5#gVc z&3{U%3jyzQ#!p9J=468tC<7fp$**B3;bpR51f6tIHGW7CJWf1!6l!AX*vc^R$XnB? ztD%ge#l2_j+?~@{=FvW@LU-_V{F2VKyD0QK=lZ~7b#*s|5ne594@d}f8dMak=E(vK@}gfh@Ys7LV|krQ9uW8K|m@K6VDWoN%_vmki% z{zvU?4EPp?Tc`hmdKb`Ob01l_|A?|X4VKVH9X}QXOIyqfPxvtaWTGDFYpCFdzx{gp zqFvz3UC)k5mj*a}$k!P-FE@~@t%u0;JILAF)J4fdV8_)?p0}%m$L-`X4&WgUAgu8y zz!8fA-_V0(ZD;$s?O^oXA!oGBU;3HBWY6?Dhn=U!Br|{IETtT`bD2K+_*Yu$WSyR# zw3Fjw4F6_(>#aBAAYCI5CnqPtw}LZWkM9af2S96CBVWS{uH_Ne7Ksia(Q(J%lNP5h z`IR1d^4@tQ|Du%XqzC8S5&}Qd8UO!|`UbH)&9aa_@$|{S8C2(AmDg!VS%AtzC31n9yTmH4&XBuhVV)U@cD5=G$If92<^_^N;!a=^o_+voHck~ zZ+yZs{#+>!#L@rI!!jE9j9VG=oG>=(0;Jn4uJ7NwkMpn*hd_rRpP-3_caABC$aH9_ zPLamoB^YN{OBqSJ#xzZa_DQo&_^)h046Y@;V0vQ8dp&qx@fG7$50<=?Oo1b^!?iku zxetj`w&tDJAdEm+#)Mjo<>d*5g!}wHxOk}GoH8%zmbET&hgaP8AKqvBV_&v5+7TDS!5wt&y z&nHhFF>!NZ4H;Y6eh^<`YnM1YxWHC?RSw`wWa|W3c&V7o+RLwe+JFOyOx*R8R_ z*Y3zM*2|@B6#4@U?HwG&9h5jLa8F6&DEe%03B`O)olBg<>y@1xu#F?&?#C_)-Lru^ z4{>7dGM>Bi{XXs82j@Pt!bs~3+J~ssa||pFJqr5j3b;Pb_q_au;3+h_xP)gbtlXAS z2Eg*>yTIGDfs#kTD`43H#96p{@l|{I_>*>d!fO8YY?aG~44DROLH`<-I zK5P%({Z`w$_f{4J=gf->=(5UUW8L$8uHr#Bfc);fw)N>XfZ3msO^KRR`_fgxr`yn{)QUcu0ziZ^-@Qe2HlRs}q zFI=#pfLSDZG$W1_lR5O4_I?h>H{o?q7`unN{paK8JmymtXx&gddIZ|guvs<NjtG)g4_u8G0zTMUzy#-G_^NkLobIwf{VCU#ue--qTf!7m1o9h=W z5Q)*F7alp#&>3iRM&JF;n}*$|dL-ibsXJ5QM;QeUks`#BrisQD0Q6S)#`HaO^`!;O$3KyH-y>6I988pzWE z`r_hfc|+R*|Lp?~-^RUt9QCbsOx}qLy4}0&{s-S|AO7%n+MD0}VOzfM_hE7Bu`jdc zCIpV(22LCH2#UzMxAn=dbgr;d7c2&kE|5FqV&~D@ZU3!rvNm|X zZSKCq`1TMV&xN10%i}NG(UY&*?BKMmoG!Q7OBS^_fnR-!jR)a2i^Ti)w;LjhJRXw- zPvIN0SrLF=(!r;Mv`oMc`!l=LV(g*p{I8G5XgT{XL zOUKW-?=-Y6{zuT{iAm0X^YWw_n2T&!yv6zxhu8fxPjJadKW*E`1|CV+|hh(Jp1&48qz$ zKV-#eXWjqv|K)%Fhu7CTFpEY=Tk=uDG86got9JVMCpds#VE3Q5H3+|oqoCgR5K^{J zAz&OP5ZPdMc_4xWqb&qVXHbTrSSX>sTc?vuJvz(u1=oci@AM@AR&F|hf6E1nPY zk%GHFKz9AO&kEbgNmi9lmRn@{+rKI#fQ6 zV>P|Jx<|b&+T&j3sa&N|C$b)IV}*MMg&aP+RPccBW7yK%04aD#&I z9~Se9mH8#J?HUJgX$dFZUlf5xehz?!QNTEHOMCSF9yZ}E9NxF!>m&NOPufoKTwffw z<%?b=NwMbSHDrVrZJTF41XOu$eXMH`R@wWH>H&iXM9$XI`5f? z(2a6BZ=Pe3C&f7H%U`dnUid9aghD0DK*Lk{>txYbX17z>fX|{EXZmv9kNeciL=2l0 zB?@U3kU#KE6CLfyc1l6&=VB;IbF!)<(d`T)loY?dfaC4R5@`cp4rfj$vR!$YS-J3+S;A> z+s6I(+V(y3Y?2HII=D^J{E%m)R0Lcle4 zh#Sy^k?!n34X&NHRN)%RWb!)CQOnM0(+Mhk9Y2k_t8;h$)|r17mnX>Hat#0W7K^J( z7mu@cigNKWzX!ct<@?*#8dcL=tSXB>GE-Tq)U(rp3`Vx(9fL4W7RBj{Y}hx(rv6c$ zSWq}7@y~YwxXuorN=q4&_o{@*fO0~ltSETm1*dqG6X${Q8>fW!)_mcIdU1k4w+t~? zHhq$Sys*gf*EnYC8W)wG6W!QtYkT+F?)`V#-oy7PV;z0KA!_UF3*qK)fw|z+S0cirpHM?M-MHzGlbK(b@#2dvG;(s?xLRkNx&<# z4Z7tD{c!fQHDtn`T|&JWeC7-8<*JvO_+dvV7!+1jpcUo9x8sI6xr#q)l_o zj@2Vn2K5AN#|Gid!S8iH)5V}o*8%d#&YDLAwzMtFIAW*SwcmY&9>061oiIjbMq9u0 zu-#+P_~u97Z*RQ+-M0PUJqU#yTyL~v8aBRO!WJ!Ki;#^K?Lqp=qWxJ!GvKVo0M9HM|hiALe_!pvuYP(z)`) z?`Ez;vn}npcAr8y7pP3yuzra=EVOAP^AN|^V+EQ2;iWPIFXfl~jye5YHNv|hu z@HO`(<7KOi3+m_*bpXr6Ve@H_a%Ml2BSj!FdCHpd68R??&^cDU#9?&IByPDuwTaze zKKR8IMR^_l;nPQ7ka2-{fq)t3Bks`Uj0N7(_4&Vt*LBQ_>jeUjgRq8TKmDwoy!fO& z{p3&D)xopYp1)}8C%7^v7?~HB?dZ$XcKE`>=pI7W`_!nz0Xn5uy~9l3VHM)b9~Wn= z98db`v8Ck63?_?QS6k3!&%<2M z*cB@=>*@S0`xs^g?deV_lS{Rm`b#K?CL_9TU|~iKCQ3$%V4%plm}&)ibg7RasaIuV?V`61maI zUs{JR`}f=W4oY_S4()BU3nt1HWpxDb23f4!1KlS4#`faRD^nYryQCu*gxWJwgV*T<@1k##!bh;bEv)r>YRX*(8f2!DX$1gMR?{JTOX5cZ9*%??MH*3Jbux>`r=7@ z`GQ_EB{Txg-}?0+hU8)|IB~J58y+#o>lYGSk=tY$A)Q#*ld0)(00rB2^UcF`uCt?z zA)Y&q$_aH;T3ly~iFoK0LySj&YvocNfmAUwjzAlj6w<;SV(ZtZn$RcELZ@t|!+(h^ zuz2)i?wdRA6mP@-9h5#YgTtQ3^*#weRs^vtPG%@Y8nj%|bzH#jxm}ztwKHYm)1)+UPBM1q z48&?@8ahb`O;%P}Fd?g(e)YiD`zib6$+PzK#q;+3$uT+)64)+$L|f4R%eJ2R>7t6TpUTD+uD^+f-YV5HUm!AJ+5w~;q z-FD~A_izfC&&&~!MfaXzCodVd!o7?R0i(^*!YQr3q*G7O$6p|Z&zYAj{7<3b33bT6 zI-@^0|Lf}yScC4j^*!`B_E@=aN5q9F5(|q?kg3nx!54qr4nO;OTVi3be0bSjesa_v z|KhOy`5)7Fc)x$QwfEoOZucLuuvx`^!Pj#ZZ0G2Sk`3m;1vJq<;OyrSFhn~&W&DuM za#5`WcjH&lGx{EJfLs_suan~obiz?PczG7x6PbdPn)cX#c<4q&96f0cKcmLwC)dh= zM+vgg0HI=ASk%bda^}E8y2pLwX%=wG5&5-C2r@;0GG50{IIn517MF6DIVTT*Vg_=q ztZO43oVF9@l}4=os}seu>SB>XXBYzKj{d;r#t!<|4`$=5DNo|VEA<%82}D(QE?pn~ zzd&!V1mfOkm)AsV|MZIY#)9JXz z&Bry!JcM_9l@7Rqa(X zI4YGBL3!$mD=TsCFUh~61HLsoeriYq>^=yXW5`#QP`Yv0P|hf&B@B07jn|^2Lx9>) zVq}{id{;1tD|!)QZ@p!Wy^0)I@&G=7NKpqxN83v}4RT*vTpUB|moWYX6M+@|5(*s! ze=!rzvSscHpeDVJ`hEOUlsYTHHnR`*MO@4(oP~CYGC2Mef8mpM3Y@+8tX-ZwYa3eP zL+FdJjSp-3Q*Lqi{Z$XDJ1HP#0lab5?RVxRq)v-G)me|@uFXX|<`JNLM#P=$uGUKF zGx3k&%4f$K67|;fPGlR()%82fDdv(y*~G(owK)QRF_>Wo~<%!-F@# z#o1xIJUd3IyE?ZFY=%4+7<1Bjtt-$s#(6WU{>SD-bj1Pw#|Pk-HBeEL(+ zf7y0Xju$wDFTQ%h%KjLVFqdY`d+|}fCeU-S%+>PnE zY!KH6>5+vf{Rl=mgIrR)ZSP|EH<4xNv+hqBLaXD$Gl%l(QjH$we zX?f)Do2&MVCOogF6S%H3fYQ+k)Co|f#7Jz&cVz}g5q+W2aKWJRkHL?!chLm9p^2Y| z%3Hc|9H^)aL`Ezx|GkB-$ZzBV07GJB%2ZeAs(PKjwXH2=VLi^Dk4Z03@Voo(L{4_@ z?Bkd1w-sNxUP0+Ix390!5!W8y*rHFns2KEyMmhrN(%=FbpCC6!ZHdJ|JAcxaPM_oa z9l(o|IMX}(Zz2=-khi<-iUo^l02F(9|gE;tXLAre1tmxsS-*GI%JaQ>b@W+8CY zmQPu*un@S`VL(1LM3*iKSiC6;mzPJe8S-2s@6j)R3eah7nmWWdGT|Jj=UTZenixkO zTbru9C~eSbb881)Gmrda5@in$58Klx&)c&XC+!?D6vqb6Qa%#||MkoAI99zvu1;M! z{@O5Tp9KPZg>0Urc;lU1E{>{#MwqIX6qn+=?+IA zYm_H-hq7+EHqUn;;`~AToZCWv+ypp=JW6j$wGO-azdxrCO zg!4B$e%e-1+_*3-f>4IXv$l?M-}Ld+(K+7qIV&*428D1-Jecy{_3fM;rk*G@`e2`eKc zuKn@#@Y!WQWbCY$c(kEco--5HiSs8DL`pq~nMc_D-ZJwE8sVlr9Sib(3Bw(nOVW)I zA%NAgJAFR#T}JWZU}Xi3v3B=w*+(f@2o;z(Z7Xrifad~rzBKl(V4bKq1=dfj^S8w) zF!26v6Ycro&(2B=(VfU{Nlhaw7W)I`^cVQAV^GBoIn-4KNEBW zz7rL$=*X9ku#H|bMvR!{FIT+rR{RdZaw>Z1<^n+F z?;|K_D_zeiaCFL2%gs>cv%J~f-f4S#d%0J~{OXfW+woa6F+GzQ9*^5sY7uRI62 zgcGO^L7qrrZUC~1G5Kj6Nva~x$GIsp96)yjoy*ZX=oB4->Ypi)R1 z_Q}AVcW9Hv;mR(Kr}E;GfS$tBRd-Zh!tpPlL~k3+>xm-3DmIx zb%L>Mped(x$$(Cw%1stqo;W&$^lW69PX59H#Ml$Z2^6Rhoe~)Yx5FbiOy%7~&yg#o zGj*(UK}QbSu5aJL;oZi!!;Vt-3Io5DVZ zRQ_(fySdR1o@E1197CO990c`A97JTrdCOE~-upF#O?(l5-Ds(u9GZloSY}hf;gBuI)cSpVy7sv_&oxrzR`~;haY)BW}-icvw%n%1n+UCI6TM` zCh%BB)sQ`dn*Nkgzu;4FGwh4~@e#M7SXhfiUywR?qHw=VNA*8u&?V-R1)xubeDTx` zE7xp3Iq@@dyM8_5`Y-;E*Uz8*8n5`X_Cjy{`LChui?+>*=H3q8GYzj|*kzi(5U{R; za_XCRDs@(*G6ISh;q}(Nmst)1A_1PI&=K^EhW&SE?hHe8#%#|a|4llLQPu$K16$8m z_C4g76&CkS==>;jMo&?RPeBc}lSl@{0kkYc$(vJf*7I(D2-CS#4xp=yaugTmwZva- z)NT-j1fsZUKTL=L?*ulTd)(qoMx9`tKOfhw;8?k1=cCjmAE%;_-KksBxw8z7(PLs5 z=LfcI97Zz*yR+zOg}Ny0W#0rQJx+s;pI)*`)tJH5iVoqy!CUghohu*hy=3C}vWLH# zfP=>PnIDYTUj^A?0(*cQqd~uxFNq=C>?fdPfi*|J6M5Y`lbHolJ>n5-8*MqA*j?RyV zlQ_((*4nlA6;PYhC5pxS|Yv|ap<+^FdZnP|v^q|U*5`HtM> zte-`)dY2U{VXr}un6yF>etBOq=j1JAs&nax+#NK1$c~Sy?W-$(Kigxc^R_p%QeONP z-x^MzPTjhE!STvBI5E8L?)U2IJ zvv&T~uiEop{CPY0)z91IvnOrE1N>TMoTOcx!2Lbs3wr4M%Qw&OUBKVkC4mRdMf8R{ z#Y-3y=K<=1zG1}O0Yrh914uo(na4do%5ZM@eNfK|gG1-dSO?IbIuwWPdRBKsLr!}> zc~I%Q<8*Lv)Sf;$Xa_GL4zl43LK}FEI{yB`1wDX&AYmMfl$PtBZ0P4Zk?mfgXDZI_F>}D6|CJ$%!KfO?UVA+YXMByUx#_9k<7iU$%o6 z*d8i}w@x#7m&gC`QaswMECA5~kq7f#G{RR{o_ZSiasVx(T|f(H@MW(?o^;PqDrY%g z>gs}eIn|)efxp@HA@)pR&aO$Jw5>z}D3FznI`{4Ij}zvEPM}Ycd~r~nvAK(rPv1_N z6Tb0#_s#d)@}0M6>n>wdDA6D83L~V^fq=5Eqqd}xj%S7Rc+StKMCUkt=jear;|zW8 zn0z^HZNu;S`Ldy(1q0tT3sf94Mg<<9E_nX)%Xa$oSMA`7&)UiJ$L;X3-~VG#fxO+> zT5r34I*qn9_0CZjC#UEnZHO<2slT(s$GrB_FS8Smk$@U~AmMyhz+(ig`|GI%dclp8 z`Ya6Pk%z)jn+gW`=Weg_)u)o`&P)Tq$HB*bb>x@@5%^M;MOWEm;LOD@>HCU5JG}}jD19C@)YDof{m~}f&F3+QWaS3!BM``+B{*(Rl(`SJ4jz}5S zzZpjhAnPHlHWwwJMOWwyNSls2*Jh)`C3|}ukK^(FTLvz%%j_P4Kpz9!rl$)Xvv}O? z$2{DWS?4`>=?M)7fD|kxD=LFOG6Pr?W@}i5aT`4uFW3#)aU6DLI(s@H9lXXU;PP*e z{EZ5)!&X2q!u6He35}7DvbKzOdY0>oqm zw$7}d#rXws!-+`%C2uwyK+lO0DwmFd>*(Bb!Dh*y;GJ1OGZr57kL^Rie|q^0T*Iw; zw%aj42m+pmnJvU%s{nZoU@uqw8;7Eja9uZ6H+m~`jhvb_eu(k?uQ9v- z7LOl)hU|}`0)wmW768>Mj(RxzZj0we)*KQzjY<&9AON`v(2`Dd!c_jsrGE?#xs~fv zRCX8{trLhOQ2B5Bg(G+UkmxJqWO6FHfJlGoEO_Ti97UHDzwk@)SRG@`5}1VJ5H`0yHq;LSF2(_9sEzYe_D_1N37J-ssbk?DLH7B;inu z*}h))7=0k(pRMD$KZ@xHz2F)W1ADGbd((0AQ&fX13#Plw@HpI4fIpvOMv??X#@_`l zNo)(u5qt~1syVaVfL0SzpSV`m5JMCsraJz_n-?9a3GlpgM}EL_W%i!{0mU`D?`&*W z1uzIGW4q1QC7;Y{aTB*kD}u!yzX5Nmhun)G0;ey=_(WWld)RNt(;yK-@1!nuVmc?V z!^xYquM=!`xwhBOdO--5OGEjLP71M3JS2+a#~6M47?W>bWBluvD9tCanvP>J?eos} zym~b6;IIN&CCIdY3GgfU6K!4MZeU~|I}28u)?aKPe6K^m8wj8^fh(Mux{(ki5y%6L z*T2v3xbWu`(ZphKBn%dUdmYcYwwxe zWT?2&R<3sT9$~k5Aw5pt%0}*$ldA1#oil-U{XXHQKyg z4iMTMMB*lv55L6V^UpE9xsCm3hUcQ~Qv$-poM*%)o29h5PS-UYkvGhK1(rzKwUHdT zLl-kBL?4zj$v^ji2=2fGIs#H?nUUv2@K2tK&PCUA9Z5)H@(+HW*MbcCN;u~JK9l;~ zKp(0+m!(?j(`+`6>2!*((w`}3)Be(!H- zS!OkhEMie6Qs|FA6I+U`h<_J;<8?$Z113*G0;vx#FJeSRX6C;Ys-3I@ zDelE@6f*ZqgGBKDJF`1nJeM-Tf?XFahoS^!9$)8U7RP;2Gfj(O$ha#KK%%X^by+z1 ztxj7F*;^aPb#|JcfQs_dRug#@BI8^F1f|TOW9$2H%4QE=hfZum3SJ7GccAawoB0SwcEI(`7J!PGJ>&s+erHi)F34A4e~!(#h~6f5pJMd& zL(HEZVm%o}8Ns=4r!zn4mgu23Cnshnc`|^<&B2Yp(izfcsDk2$2-05ekg0j=I0W?> z|8}CliuU<9$VM3!2fx=b^LT}xnSnAJ!nOHN*(*0E`Mho^<_s^hjYe-e<<}uT*M*zU z=^w6}c0~83G4r0rMq8bYr*1hZL>=(^1b5C+_l(e-38ube+MPxg#;LJNVALUJ$Vu^N zyW}yyONHbxNT4s!4`*w-^pDGP7|mDF6PIymAD#o=N9fT3I#rA17JcFKdiyj%*Iih) z>JD<-Xln);I0dasIhHF#?zv5aPSoMFG2fvR5Wuw=9%q2tM%u0Os}fk0aR^m(!+O#U zK|z&vLB;R`vn2YdUpVv_5(wOWjltcw=zoRy4g1l;_UlG-0Qz#yy|D@VU-=mkO9U_8 z97gxJ6_e$dXToE@5abL_w;9rY}k{gaqC_Jm(Ojy5ZqydIPXC1C&MF z$kP%O^}v582}B>%uL86s0O||Rq3rp$HN?4vpVxs5I?=%Xc-5s`Q2>Xby=Q;$TN|jZ zs5@MczXd#reI4@W!RKa(J1!7^oD(pd1#X5|KwHr7RhW+J^A%Z{9?$cdo#FR%MzNEU z3uyDeJBi+qKAzIoPV(Ths`h6)n)Cq#iNkdwbt>XKE#P;v*pHvVhHtSQ+{g0iE{5Me z;pA^(KOEuY=_l^Bm`!3bz&Rr;G2-YHd+b7{+Lfpu5Om=9t=Ka#NU8F;E&3`6AOwG( z@>c#}1p#Abf+6l3-jf6(TM44sK(j*1dcTDjaX;JYu|c2o`LA~0cBvTy2lU1)caJ{Q zQ7$H{7>vi!A3pP)-+K+(#BZuJEZ1-30+N;_@i@ZN12Z}5Mv{9c(Y$;vVMN~PtFlyp zfAe{f{VpgZZJFtI!jMiu{g}Me4bL5t<{Zt>(zO&y3Wz&l z?*-YDODJbLgG2Z1zfD@X?3k-!WVt}(0RCwsaDWsPXBlSUgza=<9 zpuT|KK>{pfu{=Nkx6rznu8%r$u^cAj|2=ZJjt;UgGE?l_S0UI@B2pR!Ebc9dK8p3LBPg2Ea*Lq*tmwX zhdD>7m|aV9EBP~u*Wn|NVqymdD*-H7>$oDicE%+Ri1sw=$LK9WClb^t&@g@{I&z&9 z1P&mEvHJEQhPR(%_HYxcdyIE9h&{$&R9_Zlxvn)kMlT)g}&14nt z^r$jP0QUz)8Kk46>a}tDkSFh;)ytl?m7Zt|JPjY7@-R>NrDkpfr6LbWJ%i(eiW@>ZBC7mc>H*K!<1d^@tw+;Z zoP+bS4{!{*i0@{KcO6DN-NckAesudS2H(C#X^F0Z-uv|`BYuVBdVdyBx9YXHzP_f9 z*Kv>jXj6wLHKNRRv~c<^m*fzcSz?za@VA1SGuf1j!{D|f)lx$RymQ7HL4rh325pUy zWI)^T*$pal=NO~@Exn*a0Ap6*j!>bTUt*ke=7M;$ZdM&#LQM=WsP77RXh`Z)m({E-MWTYT=2F#VAG zfIFnZZ)iR;#(s1Num`h%PWrN@&xswm>`L41Aw69Fr-xl}9^^f72jF)r$;`;C2rTwp z^!1pwVWc+7`bLNK%mAYo4(YAtefkq3s4RGOx`(vcB}O2Q=-Lh)wC`%#h&C{O%;0eH z^_O`3@VBvkG}AMV?RZ2$H%)xlte5Gu6Q1mUZmmuE`<)~hA1XKL9D_wJ(}R$-pLCE0 zu@FFgg_+tC0k5klSSqkwfDyB0tgH_um@_s}ei;nVe24osE6&f%PdUk-q``MCnK+W9 z%V$A&22NtR0e3YsYgI_}Du$D342L*=bWRcHwvY%{EOTqMly5q6@r-BV-GETP)P(Hi zTA=ASbncP^bm7JM8(6%OhFY^AeVK^BZn7+Z3#u#LE7!I(Ye+D`onj8dv1niUo7po1 z?1J8Af8Fg#oT&D6=I;4^lo@?9zYd9RBy8wYK^e3acf`=IJCI!X0N3Y>6~PdJ+H6Un zXoq1VCOXWP8W2=0F`%#bKRT4(rA`^GO=B^-joJM#F@E?pmcy^88vX*JSDGQuF?LHZ zFc~fg3?%)?pP-<3O8+)0X%pRU6OsvGp$`qR-K0RQ&3}st;*-y!ziGMXh8sSn1kIohVb)p4Lx=^M-hzxa$yVDUd56fCBHEv2Dgx z=sh~3TwRCQz;X0nyxYsFSF;tsi?d%k{A!W3GpZanM+`)9(0Oiz;1QHA-U!7MyvAp? z#?Ix+f9iNUxme$igLlc`4o%nt<{GG{=ahUpPs{Ux>;oOWKbCMN>GMMNjh&$Jq;YvJ zo$)8s;r@QlZSl2$pahWL(6Kt9jJ&y)=h!^l55H14A{0QK((op<&Cb=)av)aj!Ed>M zL%otXZjLY^aTsH*2D!=@SOE9k>>byX076bY-(r8!5Rn&T@&$F`XnyhVm>QZ40G~)m7rM~%T zaeWNIzd5fs3R0?!9R^rt79cexUzx5q%BQUbu@oeA<{F*B5BKNYhWnnukh+&fDlz5# zA2@~AS}^rT{n9{PlgkN0?%BJij|A|BL%tYiE|Oa7#-h}XO|=Lf9L95-HMiR`kZ?kf zL!4>kbWHJFww`;^)-tlJ5&%@3>05RvXUuaxL3$@df}CT3Vnzt^*Jz%hR{#P8+_C`m zd%t$ERfK^}>*VA43#9Lt7=8iNzy2EQ;V>HXX+;B22_$SuwqGJ-8gt>UBxjdCaNI!v z2ZKKU+(rAS5xwJf9G>%>kR+Xuo5>pun;CJ)Nx8U!KtbdLW^g2He*}0P0Kf+MbB}4k z-UY{V5&_?Dk*7AfUl-ZI!eQ7xuftdQjs|j?vPqD4Xb+j&Zl7a?O*{|K^F=X((7tUT zcd^e*kg_fSpL;8A`*U9AkJx5hs z#R0DD3vUc2l)#iKPPc)6B!D*{fSK_lAgp$i{N=iPWr7Glt8?&P2FR;9Rge2;xra)^ zgO|_=0=(^R1nGUo5kKSLCaP$(ArbA?A=h$CJsbkICW*6e%!Cr5g|mCdw;$r^*WbnJ zfk42zzy5R7u<15^>WTt=@WM>2rsC3HhrJ`7-P*i)OxNR>iXZeT{5!KhjTW|p)0LFB zAg^vg=sndh<%Z(&f81Yx!iASOV(}pzKBO=+fReu#hwreUdScDk>kweBNFavUFs@ZN ze*Vcz3@#i#HlRl)C|jUFi^(EJqY2I*z2y4J+l;SmQ-567G#xmfyPQ*Akf7U1j;ITI zA@S!UbRkz7pp$`s{NCT>60eXQ*P8Vlmk={hZad4Lb`=?Ab(7!W2dl32*lOjX-WdRN zj|*LB62uW0n%&ufA+^J|=#AvB$3>h3)}reOJh`Yg2V%^)a=v763#3gbRP-c}S08fF#$a?U3|7+a+@;4B_0h+nW34Q_joAwvP z4aIIiyJ8)7WGNfI(D-uCgPCB7Y27I<5M-7N3 zN|u6HFAOGF!zr%2Aov28R+Nn(8Z*h9=Mqx-Z!y5(bur3U@)Yq50a<^j-*@-2W|Lx4dfS|nhVnp;VhD%spdfuk5b2U?@|oguv&h@% z@ZA1g!e(;hk>95dsXtslYeV_lvMOt5UHY!pg1Dgz0Or#YFg zgk8J3M~)_SPT|EpR!csImbq4mc|H8FgD#vhh-Mxg_OJ!z}Mm59DdDc zjLt^@>8KQTN)BOjvO`BYVk6|N)q_>nG0-ZYT+P{bShrCJhr@M9gErxuaNxxx4UL{_ znfc=yk~}AbNEDYScCBV@3dU=y-7KIQkk60tx&|M|9x%6FW9v>FM7V;lQ{}D6baB)Y zzppip^05A}m~?{rYuFavIRvDmUkxHK-r?idoY=8``huUB5D1QAGn(@6Rct42w>9Uv z-BBXq{B1qXzrTv(bDdH-CX-Q27gNBEzyPIgIqb^6x3&qAStGi$a1=KlOA%Xnrt#4a zrm1nZSrULgRCwN%4p@LEFz|GFs@UbrpQ>3&12vA9!wDC@eE#C)_4ym){)gvjP3odc zh)6gbCge}POYvenlFY*Sr%rL1OwIFmW}-z8#33Q@-JnBVafN(;pMem1l_W!?Ln)C; zl5sN(J2N~)ml|TDd&F@Dpc|>TF~nvpiNN+m?&?4_7X?Rt4i5u%G?nY2d;BNiE(7Lf ze_c~g0_74et(5BweVA~V5eC$ed$qweIb7H~_5=ZC?unih4{zt96FT|9UF@H~#pvNn z3?DwmjAQY9m+So1vE4fQ4@A*NFGKnCquH;6!^50yd*}jQV8EUz|Ka{I?(QBEG*NR% zOgYZqoJJ4O?;JUMRbi^f=rE*JfVV)|%#8Zs->(zNj8hCM6YQ-61E*i(7blD8+|3qc zT~J2+1>if}l*Qwc#3Zb~OYY6$Rnb)gS_z?mTZ_pQhlSIcL1e5AOUy#nM)aN|VdSp# zKZIM1<4@(EI0b-L>q}LP&kF2P=X4OcN77OM;54e8Vi_KXW5ts#j@>mP_mDm7NL}O4;l9Prk`n?(EW~VF&fs-uuk51l z)0nRwlKjoh`q2*!u&V_|bY1$%jFE)Vp=UuG9YT;eafsiypNR*4iP_DkD2;LOfVGF% zum^Ws(rbkCoFTe;w-QGO$8mCU!ht@tc~B>kK>!~HxA=((P8z}SqDyIeks-}8o%~y3 zUdYf90R&&zBRpW zUdqYLu)(WqT-x^%P6L6_XpHlpK`zvp;(X=)IzdFDmNFKVB==e4#f`-Vg9UW~QZM<} z>8k@;aAtG3jkc44C4q#sp=Lxgz~uSGkHif+soui3bj|v?aR9*~4!ztaFlZO00Oj0s zm%eVCbK@7^;el_-`f1mDh4@(qyf2Mu?}X>Uxm)XpF}cw~3HvZ0bTlA07?3a!fVf&k zYW#K;O`baz_>4J$-S{DvkDp?R-`Eli>?Xt54W6UCaygY^We?>sc%DapKnsvh_n;nE zZ%^X=Z_eZ3g7%^}Hy^*o$3Nc2u)m7alX`9e*E?wQ%r0h3u+*UaJBT=K)fRUz_Dk=h z+vrK&2cLoe&@UStx^ARd!u1OLRrS;f?(YbKSfC!zEmDO-w-A(a%pj3No2^5D8;~h| zjTkatu5tpIb+%$o@_z9@{e%etf<63UCJyMaS05sE$b~lY(MB7bkX1wf9oa4YKmS*;A0T5HH0{WS@jTgKv;6bWtoySgwG~0q&Mgivz^D9M5+$&jS+w>ihx1;5-l9uS^_A<|@UjE)njDh6 ze9@U2Vs4R}IZA!rb|&DJ%LoZx^HgfLaOXA|Kz+QpV|C9^zc zE9n}ugy{@4{8c|7lnO^hDDzyWV!Ie3VM>$FJr+^kavOT_*BZ-auApA z-$eU_Kj_jmR`v8eh?^T6Jpgci)PxAsu#VdZEX)F8tbSh6q3_WLGwM1q1Bldjn&Xgvc}^QJ zR{C^HG+#{g0U#Gs`ff@jTtv)i*j%gX+HH`&Y6}Ok@|iRWAI;yrWc(%%vHtQghTndT z$6JWs^f4-HbPhsUCb}kY&AwM39iH={TfJ@^p$i?}ok_nYN*?yd@%%WAsq3skqOzuo z|M+K;o|DT~T))Es0QA)+gt^9Z5JUV^k@ zCjs0b84TJCK`x4$j$a30JLpoLVWD$Ex0IK7W`@^&$s5`;&d>F;mXOvl0npf`t+-FZ z2VEvvOy>-s8;lm~5K4j}58z^@?hp>|Vh9&c{X{Qay}%&Fi6mlF8SJTJCuNQueNqDX zYljE1ZPSKEE86HtqtnY;t_n^bFHe8BunG0eQ3dRTzjJ0U!Gn0@-|JF`HfawI?=5M! zC-Urdoo(Yl+yzhZd|wG^xb8A_vS66gb%WR5P-^4;biW;nvHOz&yYay zAju<=_LgGIp~P2Nw6dR7QOgN77^gl$+|bNlCmvc8YUalbkYxdjIm8g0fP)kce~mtv z1r)>yHr0V7j}S@i{gni&3p$QmRta3r{pj@pG-?XTbx3$J1t%~UA;t5BhGL(4{XyaQ ztNI{1#pY?Nt}E(RlsazLl!POo)#yCG&(Q*L16{H{-HAic*~|vJ=m&6-OPm)v~L z10U80 z1trl~G(w~EJ&r$@_>dT3JL&xSPL`iwr*P;~4~;52nLoUS*Ub8%{K)^?V6*8hI5lmoB1<3ZxZRCWW|s$zvZPMi{Ee#9pm|4Jl7;lN6+WwVo0`5=hleIayX_` zPtdhqX5%_YMA5l8GmhKgHOXJj_~rL1#f~GROe8CqJ4|dA&}sD5I&2*SE?ej?b`tHD zA=echWCchQCXTdM|na4C=6px+E4LKftl!72IM!R*I3F@N|F zvwNeryCQO%f#5_@H4JA4*!BAYwEe;VxWvI}Gv0ppCXU~sL>9v0=j}OCm zexAjG=Jj*}-1hje5|>wJaeUSVq%a<$xTr$}c#fUBz3`u);;R5pbOV4k6Ig(|P8`EV z=Uft`nCj0T7;)AIsU!B!3*oD3s2Gvg@ox>#f4?4_Sm+2!L5mBLO9Jzm zdFkw%IBA_wp6`d~h8adPI2H{%=|$s}+|YWS3j=Mdf5^FD1N@tJh@XYG&eE&!UOxc1 zJ7-D$a#kJ=+&V2I?wqmbG8+aAJ}%Fx5Y!tZNS!w==HZan%W#g7y-~b7Y%C_@viR{VCxVJCq~cU&xVmCsydlY0CzHcTd>@%>ACe-vIb8nI82+GH4KG zHZa$lgZM2a65x=wV@6Q*D9D|CMqrm2v|>i{L?<>XbX!6pjx@lKdJBS}E%RhqE+D}} zAI$1x&6t@!aK%X^5<>iYK1;8It@F3_ej9>}RTHPed6k1^GzIVT>u4RFg1c^@kK7C{ z4J6eEochM`Qyg=yDuCV;*?olKBoF&WedA06y^6aoSOdCx!dX2L6bxdr7-w;P4*|5A z1R?=}+=^BFj($ppvlzzQdanN07~lROrjH-dlR>n$o2b*N75aJn%sG=4_o+gVAZ0Y` zg23?d&whyJ0c`_gCxhqcKf8eNB6^4II5>o0WR0ACk9_IS#eB+jTxi+4bAki2(@W$+tQ^NDt>_RG^bV^8jQHKQ z0WkrbqXz1b0RgzKj!4p$Gkgs8pM-B^DL|zN6wMa%?&KmjC0M(&j0pxlQgt5@M=zASL)>DH zL4c!{Sx1O0I+lOQak$qGQK}2BA6m>V$2ZDh@HqzC?&7mVS6vs@jGx5ME%+J-1o~|N zwtfJSGk7$+e~F5m(E$XA1VhOi?6aB=ZnD4;BbN$;0RC71o1?v??&zdJglHoHOpLE^ z#v1<`$3KaO+i?sZd14gh9Af$Q`Xnx{UAz`Yh=OPFCJN~CAkI8=eJ6oj<&;N^N=3Fy}O5p_xUij;j5ATU$I??qHQ#4)a|^?omf+xrp3Z^-@J z+HIGlPcqsdGPKSwiJuQ>h9{#xo=u`P??dvQV)FP42Kz0R51(Swe~9vY78O{}Zd^oQ zI(pOh&(m$-U*qtq9B+U6E-tRFqSk|$AhYq)DDH2F-o8G>-RD^hpV2XHr>^Du*;-lz_Us3Caqs{UH4I6L(z<21ykU5>%^6&;>w_D(V--#R?cp&PS&X8bI` zO~NOLBR98e%7xVF1KTM$>og>vux^}Ju~ft6W!VnvJzcgZ7dXe0xrelie72en-RKxR z0P{@4(kFuX5_X1@kI_R+Z$8A}=GT}!-Na`26m^-70GSyQbRdUNX&KM#4Cu3y(>OYk zJhae92s4g%I-AGs{X^W|S_*)OX|GMLLROmSzDq|rJmwA{3(%II6q79gLbJ+O?+)Vf z%`p)_w$i1I=!Vg#4hpHHJh4EY&w3@k*PzjX9pJuR0QPfnMEUXWmu#THf~t`u0a;j= zEa)j)-;+Sn$z}yo=M)*2c9ywvZkY+fW?d#{PGB^8o@PDRXpDnVKW!#`;*gJ9E~UfZ z@1k^t!y!G_|3hvyKwJkP31~xxJ!j3|3-oRQGu(C?(Y-j2!|OM3@xxEiK0GZLvi2)s zmrG{N2%xuC2BsDcx6sQ2RP66fqp z_DYN=uB~?;508*Y9I{*@eaS&9hxW|;I?N{q@8@Qr2xjmNV(*Z^!=Wtg(Fq$Zh<4LG zO&u!LPB(>~d)RKty}~GJyzm>yJj((I7?(K=D9J;%kP^?!wcr$eBNcUz)ElQKXZqX+IB0d%G=s0U6y^T*dU;AY$>7}!LO{&bJ$*)x8iPw=*?#Avw58NNqnhw;;Ie;XHXuOK8oHp)WeY=M;h%06s>@_SUI}JlBt!uHKR$%XQ z2*7hZ-r_L0jt~CkU4`hi7Kg_;A%HD+MsRo-g>wxsqaF10Pn~ITw!?oKd?_70z-g2w zdTZk-p>-gBuTXS40<|wY*I{A_U}geUdO+9u8fRgtK>v^crd}f;37!$SL%}InfJkHT zdm}T?&EIRByzK$>oS1@iYY;$g0@ONtt)64(Iy2YDvi7gly5xHcW+ibJ-2>DK)-~D( zi1Qq{G=7VKA$%nWK*brEkbrWMK~v4#&u7f7*R0QQw%!2H9i&6#2~eP-Slfj-|C9+x z$3Qy`k9G8J{k4TCEQ+c5tI;Ef!m3xp1;LbZdOf_`!;J$625oE*aynlLjjRlqjYH zGnL0{@0St=bxi%>Gv5mm$iI~%uN*Q+f>qQTDQJm-4#gQ?3uhaumjVXY7rY(HIXXVz zx9BA8&LvIEI%6kp0TdYYu2qeN!IH)aa5oN4!&ufcJgyZV3@y0#;d zK@aU0ggbwXf*W; zhv>%T_s$mPvsN8>(8uV%eGOC>f&dpv=virt%(CW>Z#Fz9x}r0m6O|Vkp=DvV>iJ&&TOn@iw?T_*vBLXD}gQU+|C9_qT z#Zm5N|HKgFR;}VB2@LS>;D9?_tfJD!Nz+G_!(Oy5ucCv4Jb3#S5_k~}qWDaq6D&GW z&aJ(~78im>Tcbr}UrZV^3s_)`BMkz(HGZ+X;enp89c@rYYUa$qwU^5XHJtTF8$mWy zMkl8bAYpxUV)%u?@YkIEKfJk(7|-GW9PDwwrTcn6k8+XRsdkA|bE&E}I`QVsRqDoM zIF3L39luAH+>=$cv>(J@egUzGIDb=*!;?;&T=e4js7bpBT5xU#QeyLDFo5vVcJxc0 zrt{1tQy|J&s|jh!04|wcVXx^Ylq)w(QinWqVvvEr%jm(@dQLt!Qo8a;B72Z!ZG zVy~~gBLn3nO+c=Yy{!v-uU!k)pW;sVhdu5Fgh`Z(MO0m8@`zx2Z;q~tIE@~`6bJp=?+_4UK= z;+GG9jLB$BoPiu5OKots*W%ge^yM7#NZ&V`5@oZ#*sA^>|G(5Okq6u+jxL%6imf<4 zBZ%o5FuT%)BaQeD+HQ@qK0$p*Y(UNih|5_q^ee8L1%A~X&oRigq{PW0`%SS9;Ckg` zO66Z*e@+0RO_D(qKriWAFa-Z^fH);U1TVAf;2*qP>sXy_@T}^we(rU10rNp}74^gU z4(=!2h0wbOWUh?uZ0I`5jh}R)rAx$E{^M_Qf^3UEaJ1mUQG@fKLt+Cja4pxUp2BM& zh3)Uql~b^}362z`)U`IN0s9Vce|JxtUF3U^zGXZeq5}WwEn12JDG>;V88DrwO73u6 z6>u-FLHb!0XToLfiTJ(@qyLB_n3%SWI6VhAPI^Rr^>FPcu!`#-XbaQzs=PETBkWAw zBLIn?!wXIn(Lr1Dli-a&wRa8wHCoSu&uCh9vINj&I&#H*nYR(R9r;26EwHtAOY$dX z2ud2Nb|Y|S7Lb3ZK^kphtWN9pTyyqjj&k$$6g(&LZuW2Ok;cd87-OBNY+vRb2b`oV z^SFG^g>1izo;qX48J!Y9>#}MHOd^+>fPqTfToHe@#Nj)G6Jy*MouibwQv}gk0}|1+ z_M>*l`GAf?LuR}L07<(GcusNl<8QGT-NhQ?-A;0`f8oXgNSG9Yni!3yBHm z5@DA0BrhPZiV70yh(j>eL<+>d6u)9s5A6HGaqtBsL>%T<`JL%~70K@`{MGOsF4P(5 zuxC7%D(m(5SptHy_{<9Co{%~y4VGgJ*_oo4ZqwF0Jd5MY_tE>)#_L3At_P`sT5ylk zcAsaL`Y4t^;UfVf!N7cv-U{NkLl3Z<-F8a5jNT2#>>wOsW`GGe0CU-wOUUfZTxF!= zHPC;4vvab~@+roTzvQCci-)hVpNyjpv2ic&YA&a+jK|?4I+{PFU$EicX`Gx~#6i~# zGm$Sk`1tr3H($TS^P{^bpmwyr+=H#BsiCJuljqkXWX+^plsJJGqmjEmp?S#*E=z5va(q?hO5 z<^~@N+G3z-sYw$8S8VBItGEWA`z!@cqT3v${W#{+KV~%VvpMomablXohSft3f(;2{ z&OV^c?&&?fAtv|`k2ima$>XOe4etmH$8d;kG&b}V@|pH=ZUe|9vNjfTr-|O_X`EhO zM7P_82o2)nufN9AZNJDDa0tipSXXsep-d(iwM%>}qyzjouEoVwFD?lT4~`s(u@jx- zhAT&3vaT7UlL#VCB61dU#s z-#N24XP28mKv`WRx}i;*83uT)_40cYBn|LYyU;~!(T~pAF%JDA4sq%`heRFj?;c0@ z^1G;^XMm!s6jmmJ01h4^fk~VIxlZaY%K5{`ZGVFkjOuvSKH1F5>L` zB7Xe-C;Fisj~{=HKm7jh;^F2V^2aUc$5U{>Rqy5KbZNiFccbyxxtN1eLjoI#%SDi` z93f~NmU4*|KoPiFi?hoE$e=rta1MIokg!57q5Q56AU;a=#PKya=cs_In&bo^_2cC` zv&CYDzFN+!UgSOhq*pYHc8ULhQ0jsGZt}oqv{rBdez>^&2!HC(vct?tAo;DhpuEL( z14V1c?XgruIEy>NG{p@3XhV5(UM8m+*tCb7#&`UrTT7Z$YY{viU0mT(oZ*X&o6+w$ za)6)da6tZIe}JAG737Z~(WX}`$PnGw@1DU=WK6KQB|uosEfqocwX5CVbj1^XKtuQd zf?ohALM~fmy{^P&v?jpVMI8fb?OPBH*yF=IKK}kWX6T^(=>qa+7cTwKiS7yK$r|c7 zc~HU>bTKs_A#hFC?{YKol4woO+39J}fLsmBT-_c=C$Z?Pj{i^(J^5WNjb zIv=iL44^x$-C;fh8Y3?Y(a(Q)7u}=dXrow?+~MOWKK}AKKK%SKp6>xDZsoj=9`|g~ z2NjIS*@gmgwSl7X8%geZIp^Bw2#48xhm4#BMlc)4=hZmA2GmYl(YvUlAI>J{5y~@U z;4CZ14)S$4&WwtgK-d2g%-!Nlqjl*Z^}?Z?oE7Hq59n|Ix|@Xkt@>zuSzwzUuXrhI zq>7Bx8Ga|YaI%NPe#+WHaEE=2ZY2j(X97Ag0NqAoaBTDeBJXrv^Rb4^(PIpHgTvc* zT17qA#oMT#zlqA>C92>|tTP(LgE}+|`Lq1N`{(||=$b=64i6$k)O3YYcYQW=06o~P zIp}8{qu}F^jdg>r&6U&ljj(91^vbM-*T@MTOP%~9K>j(iJZp~Kc*rru$wS8$M8Ff5 zQQ#N!`v(t;XAdP;NXWL3zvnH6P1M5-6NPZn^al60VGv=n9t0e2<2Fa8 z)5&w{iq6w@{2DDu^aXI`q#_rn$9VHWX{^Lx^eu+Be~5=~zmM_rx2Vjf(dEJG63;39 z=j4vZY0O7hmR--Yon4;ebRCB4=DKvx&(C>GCes`(gv%t^01gsbeF4|>v!O^eC)jA8 zPK4GnXXtIWnD&AsSpuuHgRDr46{gvEJ6~Fgggqas54qiuEtX)atp( z1|3AM8z|O+#SPkE&8S({r~V*!mKhBTzoecU2U{cPaG+RbhRRG(oxl;8DKdZu7VjhL zHs=r&oP76v9KCr97I)*>p-G(j@%2wpJAx3pgcou&fndWN#xvVzE$@Ca;u*%6h{OGp zSnLL|cC`p67=RVk>M?CNrQ1)zY64K#ee*hYh7YE)Z}Afge8%)^%=>pSxdSsE(Tl~1 zV1V=1i=4RW#H-$!MKpPypluW&e z|HB>{=!P*{#bg7%X2*MjXEji$9~=-QSV{p-bdYaTKl20q;NpsOj->%67*t+xrCgPq z-XUr;evgQA$g`SxT_KxR>a$UIY4vvv0#OWy#<>2EEZ3nV)8s}{jwV&n@WvK!H}#Gd zY^Q+xj0ky9i~E~V+;YG#cqpU2QVQzu3`2(qIuXD{i#I5p5N?N>N?s!nbRijhz7T#9 zCkXY?TGr`ME8Z5mn_7?~zPgco4dGVsl9E4_QZRS@Kchc{ zx*h!j5BvuCv(E1}DmaC@1QMm*5zRl{k7G99Il7axGM(&odUY7*Z%@-Xl~F9itP#Nf z<>P&P`Smdd4~tyu(H5qf9!0;w!F6w>vF}8z8 z^kEi2M$`d@B_Q6vpTyu9+r^Hm5S8A^K^&hR<&dxSbCSKmU_=D}7>|$c9Dz(EH#~G^ zF(5X7B6v#)*D|wRf};ItAN!n=pPZz_M`p3CRT3C2_RhUG0nHfzJws+zGPrZZ_1lAZ z``t;LoDncJA?OZk;qY7#UZR`j1Kbx$b4_fSKG?3UO{6{OyxAiG-l08*e+(RQ@PT`n z1vC;Y$O4VB#Dvc+C(%I|XzKWN0K$>Mgpqy|&r<{m04q8%*OoA*;Q)d>;aL=yddF|o zG}iz$!z{jRY2%w8-^34p^;7)#-~RKczQfjz0O<}6lV^EePEc)7mwPnphhW4Z_k!S? zHO7&d9bRuC*`9+jxO~orKyf)6#3GliS>Rwg(QF-~A7@~mL85`Efg&#-grH(GdWc#7 zQ%s-Sz2ien9=@S3^BnH2W1zdSlYWpV&UXCh#3C@fTg%MOF^6l`4X2a1xx0=2liLca z6X-Jilj~8Uhr(*&F7L&y4b%*zkq>>jL2g@QS#59e3FWK zgX?04L;6|Ug%U}~8_wLuS?2ay^oPTnf{QX$HrlYZn+by#e=(nmlgJ!Bko1+-5PF9S zZ6DXR#&CnjcY>m^mb#MulWSx~5Pi+ek6CtnLT)!H+vQ~vqkr$P@G6GmN!G*qTkWM) z$8j4B5d1q#tdHTzVqGI(!v$P^e;sfC;y1DFwqv7Bb+N(Ax6!$HhaW%2FZI9=XZh+6 zX^&~vm}66B_y*kjnddT4oblWcAOL&EJ$AI!rKBp=OJs2#mE8%tgQKUdISz}@agxYx z(dW;*m_Ph3=8x#b<2^oo5>@n~$#a*mrR8LSp3`RfgeDLdR-<=(LI8grC+BAnlH*tn z7IE|CTYUcI6Fy{+NyQcfxB>oF>f)0Y^ETz5q8hdS4i2`U$RQsfUw5BxvGrmJFzr z;J|(bb}SujG6>*)Vg@9ROXWlR2!+>EpNph{K1IBfY*woUSCS`RTG1S^;Te2J z6eoY<$dLhoWYD!nvwj$YxYxdGiyZQHg_Xu(J=#YH(L6bh_8CDP0hsmpEBbI-?cl>t zi2o&gJ&f*({uAK~UX)GUf$z>A*jWpD54JtwkJTB1rW{3TgXh*fcf*C|OY4s(d+Yql zd)TT)S`R0#ed+x59q zpZJMGfZAsQ6u{+zzY@S?1s!3m9R6}O;(4BlbZ>bE(=oKS z>dY)6d45}~pK*PKj69N%=xI2wM8va#Fgnybu&(Rps7?n2a}#i38Z~F=q0EcH1V=@5 zVkQLg1vic6K^4$FOXDe>;&GkbOBDNb_ZYwa@mt({o@X}KpuE>Shz`%{?92*)Y;n6B z*kvs;%Syj1t<037;M}G7oPTLxW>g&F9F74I*IGj-HavzC9gi=X@%H;Sagk1d{;vSi zE?==jrvy12JYA*nxzKM8n{usU=BLIhAy6+ca&*E)KK(2Y&dY9A+`MUc1u^j@AZU*- z0QB<8HRSSs{KBjcQNF`z8dV)Ym542Hkdw(gM%G3_q

    >CJCe%e;6>UEbzl>hI`4gE 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

  • ?5i<79jWFG`+L}EE|p98md7!+lR(gfHu2uDJ@8eQf{u-TFBc0p$1`y zuTqo%r+=UoVSLsOF>0Yq*s)cC4h1mVV?_u6e$kOy8T#F)ZxW#McKYf-XFAX8iB7P- zKgw&R_(nZrVp9aH9<{91qCfvnw1`aX7_S%C%JG*-C*_;PrTr(ap;hG04S9?fm2W=S zC;Cdlzrm(@#scvOqLV?l$vS-jpjLfYV@@oBmS^v>YM=46(tIe$p>79(I0V`E zZ#aTho#jhS^I1C`7YIQ+#nkRVZe+HwxnGgB0?n-RyH`EKD>nu%mwoqbP-%TeD1f|H zrJ0TFrQhudHG2z4L*AH>bXO)wqY?2ISKib^?@-C>i2o!0kN7|0|A_x1{*U-S;{S;M OBmR&0KjQzDJO}_=+ZKBO literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..d3a74cb8dedcacc7150263ada40cce92d9680a31 GIT binary patch literal 9060 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 z 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 Warb_eaO3cm0jU^L{CN~v(*OWas%i58 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/values-night/styles.xml b/android/app/src/main/res/values-night/styles.xml new file mode 100644 index 0000000..7c806c6 --- /dev/null +++ b/android/app/src/main/res/values-night/styles.xml @@ -0,0 +1,19 @@ + + + + + + + \ No newline at end of file diff --git a/android/app/src/main/res/values/ic_launcher_background.xml b/android/app/src/main/res/values/ic_launcher_background.xml new file mode 100644 index 0000000..2a56f10 --- /dev/null +++ b/android/app/src/main/res/values/ic_launcher_background.xml @@ -0,0 +1,4 @@ + + + #F6F6F8 + \ No newline at end of file diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..00fa441 --- /dev/null +++ b/android/app/src/main/res/values/styles.xml @@ -0,0 +1,8 @@ + + + + diff --git a/android/app/src/main/res/xml/automotive_app_desc.xml b/android/app/src/main/res/xml/automotive_app_desc.xml new file mode 100644 index 0000000..dd5581b --- /dev/null +++ b/android/app/src/main/res/xml/automotive_app_desc.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/android/app/src/main/res/xml/locale_config.xml b/android/app/src/main/res/xml/locale_config.xml new file mode 100644 index 0000000..240911b --- /dev/null +++ b/android/app/src/main/res/xml/locale_config.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/android/build.gradle.kts b/android/build.gradle.kts new file mode 100644 index 0000000..89176ef --- /dev/null +++ b/android/build.gradle.kts @@ -0,0 +1,21 @@ +allprojects { + repositories { + google() + mavenCentral() + } +} + +val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() +rootProject.layout.buildDirectory.value(newBuildDir) + +subprojects { + val newSubprojectBuildDir: Directory = newBuildDir.dir(project.name) + project.layout.buildDirectory.value(newSubprojectBuildDir) +} +subprojects { + project.evaluationDependsOn(":app") +} + +tasks.register("clean") { + delete(rootProject.layout.buildDirectory) +} diff --git a/android/fastlane/Appfile b/android/fastlane/Appfile new file mode 100644 index 0000000..872e078 --- /dev/null +++ b/android/fastlane/Appfile @@ -0,0 +1,2 @@ +json_key_file("keys.json") # Path to the json secret file - Follow https://docs.fastlane.tools/actions/supply/#setup to get one +package_name("chat.fluffy.fluffychat") # e.g. com.krausefx.app diff --git a/android/fastlane/Fastfile b/android/fastlane/Fastfile new file mode 100644 index 0000000..804cd4b --- /dev/null +++ b/android/fastlane/Fastfile @@ -0,0 +1,71 @@ +# This file contains the fastlane.tools configuration +# You can find the documentation at https://docs.fastlane.tools +# +# For a list of all available actions, check out +# +# https://docs.fastlane.tools/actions +# +# For a list of all available plugins, check out +# +# https://docs.fastlane.tools/plugins/available-plugins +# + +# Workaround for https://github.com/fastlane/fastlane/issues/21507#issuecomment-1723116829 +ENV['SUPPLY_UPLOAD_MAX_RETRIES']='5' + +# Uncomment the line if you want fastlane to automatically update itself +update_fastlane + +default_platform(:android) + +platform :android do + lane :set_build_code_internal do + versions = google_play_track_version_codes( + track: "internal", + json_key: "./keys.json" + ) + last_version = versions[0].to_i + Dir.chdir("../..") do + re = /version:\s([0-9]*\.[0-9]*\.[0-9]*)\+[0-9]*/i + config = File.read("./pubspec.yaml") + version_name = config.match(re).captures + + subst = "version: #{version_name[0]}+#{last_version+2}" + + result = config.gsub(re, subst) + + File.open("./pubspec.yaml", 'w') { |file| file.write(result) } + end + end + + lane :deploy_internal_test do + versions = google_play_track_version_codes( + track: "internal", + json_key: "./keys.json" + ) + last_version = versions[0].to_i + upload_to_play_store( + track: 'internal', + aab: '../build/app/outputs/bundle/release/app-release.aab', + version_code: "#{last_version+1}", + ) + end + + lane :deploy_candidate do + upload_to_play_store( + track: 'internal', + track_promote_to: "beta", + deactivate_on_promote: false, + skip_upload_changelogs: true, + ) + end + + lane :deploy_release do + upload_to_play_store( + track: 'internal', + track_promote_to: "production", + deactivate_on_promote: false, + skip_upload_changelogs: true, + ) + end +end diff --git a/android/fastlane/README.md b/android/fastlane/README.md new file mode 100644 index 0000000..300ccee --- /dev/null +++ b/android/fastlane/README.md @@ -0,0 +1,56 @@ +fastlane documentation +---- + +# Installation + +Make sure you have the latest version of the Xcode command line tools installed: + +```sh +xcode-select --install +``` + +For _fastlane_ installation instructions, see [Installing _fastlane_](https://docs.fastlane.tools/#installing-fastlane) + +# Available Actions + +## Android + +### android set_build_code_internal + +```sh +[bundle exec] fastlane android set_build_code_internal +``` + + + +### android deploy_internal_test + +```sh +[bundle exec] fastlane android deploy_internal_test +``` + + + +### android deploy_candidate + +```sh +[bundle exec] fastlane android deploy_candidate +``` + + + +### android deploy_release + +```sh +[bundle exec] fastlane android deploy_release +``` + + + +---- + +This README.md is auto-generated and will be re-generated every time [_fastlane_](https://fastlane.tools) is run. + +More information about _fastlane_ can be found on [fastlane.tools](https://fastlane.tools). + +The documentation of _fastlane_ can be found on [docs.fastlane.tools](https://docs.fastlane.tools). diff --git a/android/fastlane/metadata/android/en-US/changelogs/default.txt b/android/fastlane/metadata/android/en-US/changelogs/default.txt new file mode 100644 index 0000000..01a3355 --- /dev/null +++ b/android/fastlane/metadata/android/en-US/changelogs/default.txt @@ -0,0 +1,3 @@ +FluffyChat 2.3.0 fixes a possible database corruption bug, also fixes a +major performance leak and introduces polls and threads. +Several other bugs have also been fixed including importing sticker packgs. \ No newline at end of file diff --git a/android/fastlane/metadata/android/en-US/full_description.txt b/android/fastlane/metadata/android/en-US/full_description.txt new file mode 100644 index 0000000..64d6b1c --- /dev/null +++ b/android/fastlane/metadata/android/en-US/full_description.txt @@ -0,0 +1,32 @@ +FluffyChat is an open, nonprofit and cute Matrix messenger app for Ubuntu Touch, Android and iOS. + +Open +Opensource and open development where everyone can join. + +Nonprofit +FluffyChat is donation funded. + +Cute ♥ +Cute design and many theme settings including a dark mode. + +One-to-one and group chats +Unlimited groups and direct chats. + +Easy +FluffyChat is made as simple to use as possible. + +Free +Free to use for everyone without ads. + +Decentralized +There is no "FluffyChat server" you are forced to use. Use the server you find trustworthy or host your own. + +Compatible +Compatible with Element, Fractal, Nheko and all Matrix messengers. + + +FluffyChat comes with a dream + +Imagine a world where everyone can choose the messenger they like and is still able to chat with all of their friends. +A world where there are no companies spying on you when you send selfies to friends and your loved. +And a world where apps are made for fluffyness and not for profit. ♥ diff --git a/android/fastlane/metadata/android/en-US/images/featureGraphic.png b/android/fastlane/metadata/android/en-US/images/featureGraphic.png new file mode 100644 index 0000000000000000000000000000000000000000..bafa74332b95a60fdc301935c446d2ff4fc6da13 GIT binary patch literal 238433 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 literal 0 HcmV?d00001 diff --git a/android/fastlane/metadata/android/en-US/images/icon.png b/android/fastlane/metadata/android/en-US/images/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3c730b97b90d470bf00fa38be0ca4b036a3cd0c0 GIT binary patch literal 32247 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 + + + + + + + + + + + + + + + + + + + + + + diff --git a/android/gradle.properties b/android/gradle.properties new file mode 100644 index 0000000..975e44b --- /dev/null +++ b/android/gradle.properties @@ -0,0 +1,4 @@ +org.gradle.jvmargs=-Xmx4608m +android.useAndroidX=true +android.enableJetifier=true +kotlin.jvm.target.validation.mode=IGNORE \ No newline at end of file diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..b471d50 --- /dev/null +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Mon Mar 17 08:36:03 CET 2025 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-all.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/android/settings.gradle.kts b/android/settings.gradle.kts new file mode 100644 index 0000000..0b29692 --- /dev/null +++ b/android/settings.gradle.kts @@ -0,0 +1,28 @@ +pluginManagement { + val flutterSdkPath = run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } + + includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") + + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} + +plugins { + id("dev.flutter.flutter-plugin-loader") version "1.0.0" + id("com.android.application") version "8.13.1" apply false + id("org.jetbrains.kotlin.android") version "2.1.0" apply false + if (file("app/google-services.json").exists()) { + id("com.google.gms.google-services") version "4.3.8" apply false + } +} + +include(":app") diff --git a/assets/banner.png b/assets/banner.png new file mode 100644 index 0000000000000000000000000000000000000000..6f80cbe28c3793a0d96a05e45a0c3d415e87e902 GIT binary patch literal 847289 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 z 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